Merge tag 'sound-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-omap2 / twl-common.c
index bd81bf40e7119deb59ee4a8303097a85f0fffa1f..18a8519594252df8b9a383373b9f5ccd0755044f 100644 (file)
@@ -29,6 +29,7 @@
 #include <plat/i2c.h>
 #include <plat/usb.h>
 
+#include "soc.h"
 #include "twl-common.h"
 #include "pm.h"
 #include "voltage.h"
@@ -39,16 +40,6 @@ static struct i2c_board_info __initdata pmic_i2c_board_info = {
        .flags          = I2C_CLIENT_WAKE,
 };
 
-static struct i2c_board_info __initdata omap4_i2c1_board_info[] = {
-       {
-               .addr           = 0x48,
-               .flags          = I2C_CLIENT_WAKE,
-       },
-       {
-               I2C_BOARD_INFO("twl6040", 0x4b),
-       },
-};
-
 #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
 static int twl_set_voltage(void *data, int target_uV)
 {
@@ -78,30 +69,25 @@ void __init omap_pmic_init(int bus, u32 clkrate,
 
 void __init omap4_pmic_init(const char *pmic_type,
                    struct twl4030_platform_data *pmic_data,
-                   struct twl6040_platform_data *twl6040_data, int twl6040_irq)
+                   struct i2c_board_info *devices, int nr_devices)
 {
        /* PMIC part*/
        omap_mux_init_signal("sys_nirq1", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE);
-       strncpy(omap4_i2c1_board_info[0].type, pmic_type,
-               sizeof(omap4_i2c1_board_info[0].type));
-       omap4_i2c1_board_info[0].irq = OMAP44XX_IRQ_SYS_1N;
-       omap4_i2c1_board_info[0].platform_data = pmic_data;
-
-       /* TWL6040 audio IC part */
-       omap4_i2c1_board_info[1].irq = twl6040_irq;
-       omap4_i2c1_board_info[1].platform_data = twl6040_data;
-
-       omap_register_i2c_bus(1, 400, omap4_i2c1_board_info, 2);
+       omap_pmic_init(1, 400, pmic_type, 7 + OMAP44XX_IRQ_GIC_START, pmic_data);
 
+       /* Register additional devices on i2c1 bus if needed */
+       if (devices)
+               i2c_register_board_info(1, devices, nr_devices);
 }
 
 void __init omap_pmic_late_init(void)
 {
-       /* Init the OMAP TWL parameters (if PMIC has been registered) */
-       if (pmic_i2c_board_info.irq)
-               omap3_twl_init();
-       if (omap4_i2c1_board_info[0].irq)
-               omap4_twl_init();
+       /* Init the OMAP TWL parameters (if PMIC has been registerd) */
+       if (!pmic_i2c_board_info.irq)
+               return;
+
+       omap3_twl_init();
+       omap4_twl_init();
 }
 
 #if defined(CONFIG_ARCH_OMAP3)
@@ -251,11 +237,6 @@ void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,
 
 #if defined(CONFIG_ARCH_OMAP4)
 static struct twl4030_usb_data omap4_usb_pdata = {
-       .phy_init       = omap4430_phy_init,
-       .phy_exit       = omap4430_phy_exit,
-       .phy_power      = omap4430_phy_power,
-       .phy_set_clock  = omap4430_phy_set_clk,
-       .phy_suspend    = omap4430_phy_suspend,
 };
 
 static struct regulator_init_data omap4_vdac_idata = {