]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/arm/mach-omap2/board-zoom2.c
Merge branch 'for-2.6.36' into for-2.6.37
[net-next-2.6.git] / arch / arm / mach-omap2 / board-zoom2.c
index 3ad9ecf7f5e2b32d2361ae1df84aaa54b63013f8..efbcd8fb21ece91f0141c2a95807a32e827da7d5 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/platform_device.h>
 #include <linux/input.h>
 #include <linux/gpio.h>
+#include <linux/i2c/twl.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -34,8 +35,11 @@ static void __init omap_zoom2_init_irq(void)
        omap_gpio_init();
 }
 
-/* REVISIT: These audio entries can be removed once MFD code is merged */
-#if 0
+/* EXTMUTE callback function */
+void zoom2_set_hs_extmute(int mute)
+{
+       gpio_set_value(ZOOM2_HEADSET_EXTMUTE_GPIO, mute);
+}
 
 static struct twl4030_madc_platform_data zoom2_madc_data = {
        .irq_line       = 1,
@@ -43,6 +47,9 @@ static struct twl4030_madc_platform_data zoom2_madc_data = {
 
 static struct twl4030_codec_audio_data zoom2_audio_data = {
        .audio_mclk = 26000000,
+       .ramp_delay_value = 3,  /* 161 ms */
+       .hs_extmute = 1,
+       .set_hs_extmute = zoom2_set_hs_extmute,
 };
 
 static struct twl4030_codec_data zoom2_codec_data = {
@@ -64,10 +71,24 @@ static struct twl4030_platform_data zoom2_twldata = {
        .vmmc1          = &zoom2_vmmc1,
        .vmmc2          = &zoom2_vmmc2,
        .vsim           = &zoom2_vsim,
+};
 
+static struct i2c_board_info __initdata zoom2_i2c_boardinfo[] = {
+       {
+               I2C_BOARD_INFO("twl4030", 0x48),
+               .flags = I2C_CLIENT_WAKE,
+               .irq = INT_34XX_SYS_NIRQ,
+               .platform_data = &zoom2_twldata,
+       },
 };
 
-#endif
+static int __init omap3_zoom2_i2c_init(void)
+{
+       omap_register_i2c_bus(1, 2600, zoom2_i2c_boardinfo,
+                       ARRAY_SIZE(zoom2_i2c_boardinfo));
+       return 0;
+}
+
 
 #ifdef CONFIG_OMAP_MUX
 static struct omap_board_mux board_mux[] __initdata = {
@@ -135,6 +156,7 @@ static void __init omap_zoom2_init(void)
 {
        omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
        zoom_peripherals_init();
+       omap3_zoom2_i2c_init();
        board_nand_init(zoom_nand_partitions,
                        ARRAY_SIZE(zoom_nand_partitions), ZOOM_NAND_CS);
        zoom_debugboard_init();