regulator: ab8500: Further populate initialisation registers

This patch supplies access to some extra settings provided by the
AB8500 regulator device. We also update some of the existing
initialisation values in accordance with internal ST-Ericsson code
submissions. This single patch was originally a collection of updates
which have been squashed together to aid with clarity.

Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
Lee Jones 2013-03-21 15:58:58 +00:00 committed by Mark Brown
parent a937536b86
commit d79df329d0
3 changed files with 81 additions and 6 deletions

View file

@ -126,6 +126,7 @@ struct ab8500_regulator_reg_init
ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS] = {
/*
* VanaRequestCtrl = HP/LP depending on VxRequest
* VpllRequestCtrl = HP/LP depending on VxRequest
* VextSupply1RequestCtrl = HP/LP depending on VxRequest
*/
INIT_REGULATOR_REGISTER(AB8500_REGUREQUESTCTRL2, 0x00),
@ -142,12 +143,16 @@ ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS] = {
*/
INIT_REGULATOR_REGISTER(AB8500_REGUREQUESTCTRL4, 0x00),
/*
* Vsmps1SysClkReq1HPValid = enabled
* Vsmps2SysClkReq1HPValid = enabled
* Vsmps3SysClkReq1HPValid = enabled
* VanaSysClkReq1HPValid = disabled
* VpllSysClkReq1HPValid = enabled
* Vaux1SysClkReq1HPValid = disabled
* Vaux2SysClkReq1HPValid = disabled
* Vaux3SysClkReq1HPValid = disabled
*/
INIT_REGULATOR_REGISTER(AB8500_REGUSYSCLKREQ1HPVALID1, 0x00),
INIT_REGULATOR_REGISTER(AB8500_REGUSYSCLKREQ1HPVALID1, 0x17),
/*
* VextSupply1SysClkReq1HPValid = disabled
* VextSupply2SysClkReq1HPValid = disabled
@ -233,6 +238,34 @@ ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS] = {
* Vamic2_dzout = high-Z when Vamic2 is disabled
*/
INIT_REGULATOR_REGISTER(AB8500_REGUCTRL1VAMIC, 0x00),
/*
* VBBN = force OFF
* VBBP = force OFF
* NOTE! PRCMU register
*/
INIT_REGULATOR_REGISTER(AB8500_ARMREGU2, 0x00),
/*
* VBBNSel1 = VBBP = VBBPFB
* VBBPSel1 = 0 V
* NOTE! PRCMU register
*/
INIT_REGULATOR_REGISTER(AB8500_VBBSEL1, 0x00),
/*
* VBBNSel2 = VBBP = VBBPFB
* VBBPSel2 = 0 V
* NOTE! PRCMU register
*/
INIT_REGULATOR_REGISTER(AB8500_VBBSEL2, 0x00),
/*
* Vsmps1Regu = HW control
* Vsmps1SelCtrl = Vsmps1 voltage defined by Vsmsp1Sel2
*/
INIT_REGULATOR_REGISTER(AB8500_VSMPS1REGU, 0x06),
/*
* Vsmps2Regu = HW control
* Vsmps2SelCtrl = Vsmps2 voltage defined by Vsmsp2Sel2
*/
INIT_REGULATOR_REGISTER(AB8500_VSMPS2REGU, 0x06),
/*
* VPll = Hw controlled
* VanaRegu = force off
@ -257,9 +290,10 @@ ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS] = {
*/
INIT_REGULATOR_REGISTER(AB8500_VAUX12REGU, 0x01),
/*
* Vaux3regu = force off
* Vrf1Regu = HW control
* Vaux3Regu = force off
*/
INIT_REGULATOR_REGISTER(AB8500_VRF1VAUX3REGU, 0x00),
INIT_REGULATOR_REGISTER(AB8500_VRF1VAUX3REGU, 0x08),
/*
* Vsmps1 = 1.15V
*/

View file

@ -477,7 +477,7 @@ struct ab8500_reg_init {
static struct ab8500_reg_init ab8500_reg_init[] = {
/*
* 0x30, VanaRequestCtrl
* 0x0C, VpllRequestCtrl
* 0x0c, VpllRequestCtrl
* 0xc0, VextSupply1RequestCtrl
*/
REG_INIT(AB8500_REGUREQUESTCTRL2, 0x03, 0x04, 0xfc),
@ -494,12 +494,16 @@ static struct ab8500_reg_init ab8500_reg_init[] = {
*/
REG_INIT(AB8500_REGUREQUESTCTRL4, 0x03, 0x06, 0x07),
/*
* 0x01, Vsmps1SysClkReq1HPValid
* 0x02, Vsmps2SysClkReq1HPValid
* 0x04, Vsmps3SysClkReq1HPValid
* 0x08, VanaSysClkReq1HPValid
* 0x10, VpllSysClkReq1HPValid
* 0x20, Vaux1SysClkReq1HPValid
* 0x40, Vaux2SysClkReq1HPValid
* 0x80, Vaux3SysClkReq1HPValid
*/
REG_INIT(AB8500_REGUSYSCLKREQ1HPVALID1, 0x03, 0x07, 0xe8),
REG_INIT(AB8500_REGUSYSCLKREQ1HPVALID1, 0x03, 0x07, 0xff),
/*
* 0x10, VextSupply1SysClkReq1HPValid
* 0x20, VextSupply2SysClkReq1HPValid
@ -577,6 +581,34 @@ static struct ab8500_reg_init ab8500_reg_init[] = {
* 0x02, Vamic2_dzout
*/
REG_INIT(AB8500_REGUCTRL1VAMIC, 0x03, 0x84, 0x03),
/*
* 0x0c, VBBNRegu
* 0x03, VBBPRegu
* NOTE! PRCMU register
*/
REG_INIT(AB8500_ARMREGU2, 0x04, 0x01, 0x0f),
/*
* 0x0c, VBBPSel1
* 0x03, VBBNSel1
* NOTE! PRCMU register
*/
REG_INIT(AB8500_VBBSEL1, 0x04, 0x11, 0x0f),
/*
* 0x0c, VBBNSel2
* 0x03, VBBPSel2
* NOTE! PRCMU register
*/
REG_INIT(AB8500_VBBSEL2, 0x04, 0x12, 0x0f),
/*
* 0x03, Vsmps1Regu
* 0x0c, Vsmps1SelCtrl
*/
REG_INIT(AB8500_VSMPS1REGU, 0x04, 0x03, 0x0f),
/*
* 0x03, Vsmps2Regu
* 0x0c, Vsmps2SelCtrl
*/
REG_INIT(AB8500_VSMPS2REGU, 0x04, 0x04, 0x0f),
/*
* 0x0c, VanaRegu
* 0x03, VpllRegu
@ -601,9 +633,10 @@ static struct ab8500_reg_init ab8500_reg_init[] = {
*/
REG_INIT(AB8500_VAUX12REGU, 0x04, 0x09, 0x0f),
/*
* 0x0c, Vrf1Regu
* 0x03, Vaux3Regu
*/
REG_INIT(AB8500_VRF1VAUX3REGU, 0x04, 0x0a, 0x03),
REG_INIT(AB8500_VRF1VAUX3REGU, 0x04, 0x0a, 0x0f),
/*
* 0x3f, Vsmps1Sel1
*/

View file

@ -86,7 +86,15 @@ enum ab8500_regulator_reg {
AB8500_REGUCTRL2SPARE,
AB8500_REGUCTRLDISCH,
AB8500_REGUCTRLDISCH2,
AB8500_ARMREGU2, /* NOTE! PRCMU register */
AB8500_VBBSEL1, /* NOTE! PRCMU register */
AB8500_VBBSEL2, /* NOTE! PRCMU register */
AB8500_VSMPS1REGU,
AB8500_VSMPS2REGU,
AB8500_VSMPS3REGU, /* NOTE! PRCMU register */
AB8500_VSMPS1SEL1,
AB8500_VSMPS3SEL1, /* NOTE! PRCMU register */
AB8500_VSMPS3SEL2, /* NOTE! PRCMU register */
AB8500_NUM_REGULATOR_REGISTERS,
};