diff options
Diffstat (limited to 'drivers/mfd/twl-core.c')
| -rw-r--r-- | drivers/mfd/twl-core.c | 70 | 
1 files changed, 32 insertions, 38 deletions
diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c index 89ab4d970643..7f150d94d295 100644 --- a/drivers/mfd/twl-core.c +++ b/drivers/mfd/twl-core.c @@ -118,7 +118,7 @@  #define TWL6030_BASEADD_GASGAUGE	0x00C0  #define TWL6030_BASEADD_PIH		0x00D0  #define TWL6030_BASEADD_CHARGER		0x00E0 -#define TWL6025_BASEADD_CHARGER		0x00DA +#define TWL6032_BASEADD_CHARGER		0x00DA  #define TWL6030_BASEADD_LED		0x00F4  /* subchip/slave 2 0x4A - DFT */ @@ -718,9 +718,9 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,  					| REGULATOR_CHANGE_STATUS,  			}; -			if (features & TWL6025_SUBCLASS) { +			if (features & TWL6032_SUBCLASS) {  				usb3v3.supply =	"ldousb"; -				regulator = TWL6025_REG_LDOUSB; +				regulator = TWL6032_REG_LDOUSB;  			} else {  				usb3v3.supply = "vusb";  				regulator = TWL6030_REG_VUSB; @@ -747,8 +747,8 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,  			usb3v3.dev_name = dev_name(child);  	} else if (IS_ENABLED(CONFIG_REGULATOR_TWL4030) &&  		   twl_class_is_6030()) { -		if (features & TWL6025_SUBCLASS) -			child = add_regulator(TWL6025_REG_LDOUSB, +		if (features & TWL6032_SUBCLASS) +			child = add_regulator(TWL6032_REG_LDOUSB,  						pdata->ldousb, features);  		else  			child = add_regulator(TWL6030_REG_VUSB, @@ -872,7 +872,7 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,  	/* twl6030 regulators */  	if (IS_ENABLED(CONFIG_REGULATOR_TWL4030) && twl_class_is_6030() && -			!(features & TWL6025_SUBCLASS)) { +			!(features & TWL6032_SUBCLASS)) {  		child = add_regulator(TWL6030_REG_VDD1, pdata->vdd1,  					features);  		if (IS_ERR(child)) @@ -952,60 +952,60 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,  			return PTR_ERR(child);  	} -	/* twl6025 regulators */ +	/* twl6032 regulators */  	if (IS_ENABLED(CONFIG_REGULATOR_TWL4030) && twl_class_is_6030() && -			(features & TWL6025_SUBCLASS)) { -		child = add_regulator(TWL6025_REG_LDO5, pdata->ldo5, +			(features & TWL6032_SUBCLASS)) { +		child = add_regulator(TWL6032_REG_LDO5, pdata->ldo5,  					features);  		if (IS_ERR(child))  			return PTR_ERR(child); -		child = add_regulator(TWL6025_REG_LDO1, pdata->ldo1, +		child = add_regulator(TWL6032_REG_LDO1, pdata->ldo1,  					features);  		if (IS_ERR(child))  			return PTR_ERR(child); -		child = add_regulator(TWL6025_REG_LDO7, pdata->ldo7, +		child = add_regulator(TWL6032_REG_LDO7, pdata->ldo7,  					features);  		if (IS_ERR(child))  			return PTR_ERR(child); -		child = add_regulator(TWL6025_REG_LDO6, pdata->ldo6, +		child = add_regulator(TWL6032_REG_LDO6, pdata->ldo6,  					features);  		if (IS_ERR(child))  			return PTR_ERR(child); -		child = add_regulator(TWL6025_REG_LDOLN, pdata->ldoln, +		child = add_regulator(TWL6032_REG_LDOLN, pdata->ldoln,  					features);  		if (IS_ERR(child))  			return PTR_ERR(child); -		child = add_regulator(TWL6025_REG_LDO2, pdata->ldo2, +		child = add_regulator(TWL6032_REG_LDO2, pdata->ldo2,  					features);  		if (IS_ERR(child))  			return PTR_ERR(child); -		child = add_regulator(TWL6025_REG_LDO4, pdata->ldo4, +		child = add_regulator(TWL6032_REG_LDO4, pdata->ldo4,  					features);  		if (IS_ERR(child))  			return PTR_ERR(child); -		child = add_regulator(TWL6025_REG_LDO3, pdata->ldo3, +		child = add_regulator(TWL6032_REG_LDO3, pdata->ldo3,  					features);  		if (IS_ERR(child))  			return PTR_ERR(child); -		child = add_regulator(TWL6025_REG_SMPS3, pdata->smps3, +		child = add_regulator(TWL6032_REG_SMPS3, pdata->smps3,  					features);  		if (IS_ERR(child))  			return PTR_ERR(child); -		child = add_regulator(TWL6025_REG_SMPS4, pdata->smps4, +		child = add_regulator(TWL6032_REG_SMPS4, pdata->smps4,  					features);  		if (IS_ERR(child))  			return PTR_ERR(child); -		child = add_regulator(TWL6025_REG_VIO, pdata->vio6025, +		child = add_regulator(TWL6032_REG_VIO, pdata->vio6025,  					features);  		if (IS_ERR(child))  			return PTR_ERR(child); @@ -1023,6 +1023,14 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,  			return PTR_ERR(child);  	} +	if (IS_ENABLED(CONFIG_TWL4030_POWER) && pdata->power) { +		child = add_child(TWL_MODULE_PM_MASTER, "twl4030_power", +				  pdata->power, sizeof(*pdata->power), false, +				  0, 0); +		if (IS_ERR(child)) +			return PTR_ERR(child); +	} +  	return 0;  } @@ -1176,10 +1184,10 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id)  	if ((id->driver_data) & TWL6030_CLASS) {  		twl_priv->twl_id = TWL6030_CLASS_ID;  		twl_priv->twl_map = &twl6030_map[0]; -		/* The charger base address is different in twl6025 */ -		if ((id->driver_data) & TWL6025_SUBCLASS) +		/* The charger base address is different in twl6032 */ +		if ((id->driver_data) & TWL6032_SUBCLASS)  			twl_priv->twl_map[TWL_MODULE_MAIN_CHARGE].base = -							TWL6025_BASEADD_CHARGER; +							TWL6032_BASEADD_CHARGER;  		twl_regmap_config = twl6030_regmap_config;  	} else {  		twl_priv->twl_id = TWL4030_CLASS_ID; @@ -1234,10 +1242,6 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id)  		WARN(status < 0, "Error: reading twl_idcode register value\n");  	} -	/* load power event scripts */ -	if (IS_ENABLED(CONFIG_TWL4030_POWER) && pdata && pdata->power) -		twl4030_power_init(pdata->power); -  	/* Maybe init the T2 Interrupt subsystem */  	if (client->irq) {  		if (twl_class_is_4030()) { @@ -1292,7 +1296,7 @@ static const struct i2c_device_id twl_ids[] = {  	{ "tps65921", TPS_SUBSET },	/* fewer LDOs; no codec, no LED  					   and vibrator. Charger in USB module*/  	{ "twl6030", TWL6030_CLASS },	/* "Phoenix power chip" */ -	{ "twl6025", TWL6030_CLASS | TWL6025_SUBCLASS }, /* "Phoenix lite" */ +	{ "twl6032", TWL6030_CLASS | TWL6032_SUBCLASS }, /* "Phoenix lite" */  	{ /* end of list */ },  };  MODULE_DEVICE_TABLE(i2c, twl_ids); @@ -1305,17 +1309,7 @@ static struct i2c_driver twl_driver = {  	.remove		= twl_remove,  }; -static int __init twl_init(void) -{ -	return i2c_add_driver(&twl_driver); -} -subsys_initcall(twl_init); - -static void __exit twl_exit(void) -{ -	i2c_del_driver(&twl_driver); -} -module_exit(twl_exit); +module_i2c_driver(twl_driver);  MODULE_AUTHOR("Texas Instruments, Inc.");  MODULE_DESCRIPTION("I2C Core interface for TWL");  | 
