twl4030: create regulator devices
PATCH 3/4 twl4030: create regulator devices
Initial code to create twl4030 voltage regulator devices, using the new regulator framework. Note that this now starts to care what name is used to declare the TWL chip:
- TWL4030 is the "old" chip; all newer ones have a bigger variety of VAUX2 voltages. (Boards using the newer chip include at least Overo and Pandora; udpated here to report they're using catalog versions of the TWL5030.)
- The tps65930 and tps65920 are cost-reduced catalog versions of the TWL5030 parts ... they don't have as many regulators, have no battery charger, and trim audio corners too. (Beagle rev C is rumored to use the '30 part.)
Code that could ("should"?) leverage the regulator stuff include twl4030 USB transceiver support and MMC glue, and LCD support for 3430SDP and Labrador boards. Setup will need more work, some of it board-specific.
--- arch/arm/mach-omap2/board-omap3pandora.c | 2 arch/arm/mach-omap2/board-overo.c | 2 drivers/mfd/twl4030-core.c | 188 +++++++++++++++++++++++++++-- include/linux/i2c/twl4030.h | 12 + 4 files changed, 192 insertions(+), 12 deletions(-)
arch/arm/mach-omap2/board-omap3pandora.c +1 -1
@@ -162,7 +162,7 @@ static struct twl4030_platform_data omapstatic struct i2c_board_info __initdata omap3pandora_i2c_boardinfo[] = { { -I2C_BOARD_INFO ("twl4030" ,0x48 ), +I2C_BOARD_INFO ("tps65950" ,0x48 ), .flags =I2C_CLIENT_WAKE , .irq =INT_34XX_SYS_NIRQ , .platform_data = &omap3pandora_twldata,
arch/arm/mach-omap2/board-overo.c +1 -1
@@ -167,7 +167,7 @@ static struct twl4030_platform_data overstatic struct i2c_board_info __initdata overo_i2c_boardinfo[] = { { -I2C_BOARD_INFO ("twl4030" ,0x48 ), +I2C_BOARD_INFO ("tps65950" ,0x48 ), .flags =I2C_CLIENT_WAKE , .irq =INT_34XX_SYS_NIRQ , .platform_data = &overo_twldata,
drivers/mfd/twl4030-core.c +178 -10
251 lines not on this page · raw message
include/linux/i2c/twl4030.h +12 -0
@@ -345,6 +345,18 @@ struct twl4030_platform_data {struct twl4030_usb_data *usb;struct twl4030_power_data *power; +/* LDO regulators */ +struct regulator_init_data *vdac; +struct regulator_init_data *vpll1; +struct regulator_init_data *vpll2; +struct regulator_init_data *vmmc1; +struct regulator_init_data *vmmc2; +struct regulator_init_data *vsim; +struct regulator_init_data *vaux1; +struct regulator_init_data *vaux2; +struct regulator_init_data *vaux3; +struct regulator_init_data *vaux4; +/* REVISIT more to come ... _nothing_ should be hard-wired */ };