diff options
Diffstat (limited to 'arch/arm/mach-omap2/twl-common.c')
| -rw-r--r-- | arch/arm/mach-omap2/twl-common.c | 37 | 
1 files changed, 32 insertions, 5 deletions
diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index 4b57757bf9d..7a7b89304c4 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c @@ -37,6 +37,16 @@ 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), +	}, +}; +  void __init omap_pmic_init(int bus, u32 clkrate,  			   const char *pmic_type, int pmic_irq,  			   struct twl4030_platform_data *pmic_data) @@ -49,14 +59,31 @@ void __init omap_pmic_init(int bus, u32 clkrate,  	omap_register_i2c_bus(bus, clkrate, &pmic_i2c_board_info, 1);  } +void __init omap4_pmic_init(const char *pmic_type, +		    struct twl4030_platform_data *pmic_data, +		    struct twl6040_platform_data *twl6040_data, int twl6040_irq) +{ +	/* PMIC part*/ +	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); + +} +  void __init omap_pmic_late_init(void)  {  	/* Init the OMAP TWL parameters (if PMIC has been registerd) */ -	if (!pmic_i2c_board_info.irq) -		return; - -	omap3_twl_init(); -	omap4_twl_init(); +	if (pmic_i2c_board_info.irq) +		omap3_twl_init(); +	if (omap4_i2c1_board_info[0].irq) +		omap4_twl_init();  }  #if defined(CONFIG_ARCH_OMAP3)  |