diff options
Diffstat (limited to 'include/linux/regulator/ab8500.h')
| -rw-r--r-- | include/linux/regulator/ab8500.h | 217 | 
1 files changed, 209 insertions, 8 deletions
diff --git a/include/linux/regulator/ab8500.h b/include/linux/regulator/ab8500.h index 7bd73bbdfd1..7c5ff0c5577 100644 --- a/include/linux/regulator/ab8500.h +++ b/include/linux/regulator/ab8500.h @@ -5,11 +5,14 @@   *   * Authors: Sundar Iyer <sundar.iyer@stericsson.com> for ST-Ericsson   *          Bengt Jonsson <bengt.g.jonsson@stericsson.com> for ST-Ericsson + *          Daniel Willerud <daniel.willerud@stericsson.com> for ST-Ericsson   */  #ifndef __LINUX_MFD_AB8500_REGULATOR_H  #define __LINUX_MFD_AB8500_REGULATOR_H +#include <linux/platform_device.h> +  /* AB8500 regulators */  enum ab8500_regulator_id {  	AB8500_LDO_AUX1, @@ -17,7 +20,6 @@ enum ab8500_regulator_id {  	AB8500_LDO_AUX3,  	AB8500_LDO_INTCORE,  	AB8500_LDO_TVOUT, -	AB8500_LDO_USB,  	AB8500_LDO_AUDIO,  	AB8500_LDO_ANAMIC1,  	AB8500_LDO_ANAMIC2, @@ -26,7 +28,28 @@ enum ab8500_regulator_id {  	AB8500_NUM_REGULATORS,  }; -/* AB9450 regulators */ +/* AB8505 regulators */ +enum ab8505_regulator_id { +	AB8505_LDO_AUX1, +	AB8505_LDO_AUX2, +	AB8505_LDO_AUX3, +	AB8505_LDO_AUX4, +	AB8505_LDO_AUX5, +	AB8505_LDO_AUX6, +	AB8505_LDO_INTCORE, +	AB8505_LDO_ADC, +	AB8505_LDO_USB, +	AB8505_LDO_AUDIO, +	AB8505_LDO_ANAMIC1, +	AB8505_LDO_ANAMIC2, +	AB8505_LDO_AUX8, +	AB8505_LDO_ANA, +	AB8505_SYSCLKREQ_2, +	AB8505_SYSCLKREQ_4, +	AB8505_NUM_REGULATORS, +}; + +/* AB9540 regulators */  enum ab9540_regulator_id {  	AB9540_LDO_AUX1,  	AB9540_LDO_AUX2, @@ -45,16 +68,39 @@ enum ab9540_regulator_id {  	AB9540_NUM_REGULATORS,  }; -/* AB8500 and AB9540 register initialization */ +/* AB8540 regulators */ +enum ab8540_regulator_id { +	AB8540_LDO_AUX1, +	AB8540_LDO_AUX2, +	AB8540_LDO_AUX3, +	AB8540_LDO_AUX4, +	AB8540_LDO_AUX5, +	AB8540_LDO_AUX6, +	AB8540_LDO_INTCORE, +	AB8540_LDO_TVOUT, +	AB8540_LDO_AUDIO, +	AB8540_LDO_ANAMIC1, +	AB8540_LDO_ANAMIC2, +	AB8540_LDO_DMIC, +	AB8540_LDO_ANA, +	AB8540_LDO_SDIO, +	AB8540_SYSCLKREQ_2, +	AB8540_SYSCLKREQ_4, +	AB8540_NUM_REGULATORS, +}; + +/* AB8500, AB8505, and AB9540 register initialization */  struct ab8500_regulator_reg_init {  	int id; +	u8 mask;  	u8 value;  }; -#define INIT_REGULATOR_REGISTER(_id, _value)	\ -	{					\ -		.id = _id,			\ -		.value = _value,		\ +#define INIT_REGULATOR_REGISTER(_id, _mask, _value)	\ +	{						\ +		.id = _id,				\ +		.mask = _mask,				\ +		.value = _value,			\  	}  /* AB8500 registers */ @@ -86,10 +132,58 @@ enum ab8500_regulator_reg {  	AB8500_REGUCTRL2SPARE,  	AB8500_REGUCTRLDISCH,  	AB8500_REGUCTRLDISCH2, -	AB8500_VSMPS1SEL1,  	AB8500_NUM_REGULATOR_REGISTERS,  }; +/* AB8505 registers */ +enum ab8505_regulator_reg { +	AB8505_REGUREQUESTCTRL1, +	AB8505_REGUREQUESTCTRL2, +	AB8505_REGUREQUESTCTRL3, +	AB8505_REGUREQUESTCTRL4, +	AB8505_REGUSYSCLKREQ1HPVALID1, +	AB8505_REGUSYSCLKREQ1HPVALID2, +	AB8505_REGUHWHPREQ1VALID1, +	AB8505_REGUHWHPREQ1VALID2, +	AB8505_REGUHWHPREQ2VALID1, +	AB8505_REGUHWHPREQ2VALID2, +	AB8505_REGUSWHPREQVALID1, +	AB8505_REGUSWHPREQVALID2, +	AB8505_REGUSYSCLKREQVALID1, +	AB8505_REGUSYSCLKREQVALID2, +	AB8505_REGUVAUX4REQVALID, +	AB8505_REGUMISC1, +	AB8505_VAUDIOSUPPLY, +	AB8505_REGUCTRL1VAMIC, +	AB8505_VSMPSAREGU, +	AB8505_VSMPSBREGU, +	AB8505_VSAFEREGU, /* NOTE! PRCMU register */ +	AB8505_VPLLVANAREGU, +	AB8505_EXTSUPPLYREGU, +	AB8505_VAUX12REGU, +	AB8505_VRF1VAUX3REGU, +	AB8505_VSMPSASEL1, +	AB8505_VSMPSASEL2, +	AB8505_VSMPSASEL3, +	AB8505_VSMPSBSEL1, +	AB8505_VSMPSBSEL2, +	AB8505_VSMPSBSEL3, +	AB8505_VSAFESEL1, /* NOTE! PRCMU register */ +	AB8505_VSAFESEL2, /* NOTE! PRCMU register */ +	AB8505_VSAFESEL3, /* NOTE! PRCMU register */ +	AB8505_VAUX1SEL, +	AB8505_VAUX2SEL, +	AB8505_VRF1VAUX3SEL, +	AB8505_VAUX4REQCTRL, +	AB8505_VAUX4REGU, +	AB8505_VAUX4SEL, +	AB8505_REGUCTRLDISCH, +	AB8505_REGUCTRLDISCH2, +	AB8505_REGUCTRLDISCH3, +	AB8505_CTRLVAUX5, +	AB8505_CTRLVAUX6, +	AB8505_NUM_REGULATOR_REGISTERS, +};  /* AB9540 registers */  enum ab9540_regulator_reg { @@ -139,4 +233,111 @@ enum ab9540_regulator_reg {  	AB9540_NUM_REGULATOR_REGISTERS,  }; +/* AB8540 registers */ +enum ab8540_regulator_reg { +	AB8540_REGUREQUESTCTRL1, +	AB8540_REGUREQUESTCTRL2, +	AB8540_REGUREQUESTCTRL3, +	AB8540_REGUREQUESTCTRL4, +	AB8540_REGUSYSCLKREQ1HPVALID1, +	AB8540_REGUSYSCLKREQ1HPVALID2, +	AB8540_REGUHWHPREQ1VALID1, +	AB8540_REGUHWHPREQ1VALID2, +	AB8540_REGUHWHPREQ2VALID1, +	AB8540_REGUHWHPREQ2VALID2, +	AB8540_REGUSWHPREQVALID1, +	AB8540_REGUSWHPREQVALID2, +	AB8540_REGUSYSCLKREQVALID1, +	AB8540_REGUSYSCLKREQVALID2, +	AB8540_REGUVAUX4REQVALID, +	AB8540_REGUVAUX5REQVALID, +	AB8540_REGUVAUX6REQVALID, +	AB8540_REGUVCLKBREQVALID, +	AB8540_REGUVRF1REQVALID, +	AB8540_REGUMISC1, +	AB8540_VAUDIOSUPPLY, +	AB8540_REGUCTRL1VAMIC, +	AB8540_VHSIC, +	AB8540_VSDIO, +	AB8540_VSMPS1REGU, +	AB8540_VSMPS2REGU, +	AB8540_VSMPS3REGU, +	AB8540_VPLLVANAREGU, +	AB8540_EXTSUPPLYREGU, +	AB8540_VAUX12REGU, +	AB8540_VRF1VAUX3REGU, +	AB8540_VSMPS1SEL1, +	AB8540_VSMPS1SEL2, +	AB8540_VSMPS1SEL3, +	AB8540_VSMPS2SEL1, +	AB8540_VSMPS2SEL2, +	AB8540_VSMPS2SEL3, +	AB8540_VSMPS3SEL1, +	AB8540_VSMPS3SEL2, +	AB8540_VAUX1SEL, +	AB8540_VAUX2SEL, +	AB8540_VRF1VAUX3SEL, +	AB8540_REGUCTRL2SPARE, +	AB8540_VAUX4REQCTRL, +	AB8540_VAUX4REGU, +	AB8540_VAUX4SEL, +	AB8540_VAUX5REQCTRL, +	AB8540_VAUX5REGU, +	AB8540_VAUX5SEL, +	AB8540_VAUX6REQCTRL, +	AB8540_VAUX6REGU, +	AB8540_VAUX6SEL, +	AB8540_VCLKBREQCTRL, +	AB8540_VCLKBREGU, +	AB8540_VCLKBSEL, +	AB8540_VRF1REQCTRL, +	AB8540_REGUCTRLDISCH, +	AB8540_REGUCTRLDISCH2, +	AB8540_REGUCTRLDISCH3, +	AB8540_REGUCTRLDISCH4, +	AB8540_VSIMSYSCLKCTRL, +	AB8540_VANAVPLLSEL, +	AB8540_NUM_REGULATOR_REGISTERS, +}; + +/* AB8500 external regulators */ +struct ab8500_ext_regulator_cfg { +	bool hwreq; /* requires hw mode or high power mode */ +}; + +enum ab8500_ext_regulator_id { +	AB8500_EXT_SUPPLY1, +	AB8500_EXT_SUPPLY2, +	AB8500_EXT_SUPPLY3, +	AB8500_NUM_EXT_REGULATORS, +}; + +/* AB8500 regulator platform data */ +struct ab8500_regulator_platform_data { +	int num_reg_init; +	struct ab8500_regulator_reg_init *reg_init; +	int num_regulator; +	struct regulator_init_data *regulator; +	int num_ext_regulator; +	struct regulator_init_data *ext_regulator; +}; + +#ifdef CONFIG_REGULATOR_AB8500_DEBUG +int ab8500_regulator_debug_init(struct platform_device *pdev); +int ab8500_regulator_debug_exit(struct platform_device *pdev); +#else +static inline int ab8500_regulator_debug_init(struct platform_device *pdev) +{ +	return 0; +} +static inline int ab8500_regulator_debug_exit(struct platform_device *pdev) +{ +	return 0; +} +#endif + +/* AB8500 external regulator functions. */ +int ab8500_ext_regulator_init(struct platform_device *pdev); +void ab8500_ext_regulator_exit(struct platform_device *pdev); +  #endif  |