1 /******************************************************************************
2 ** File Name: ldo_manager_sc6600l.h *
5 ** Copyright: 2007 Spreatrum, Incoporated. All Rights Reserved. *
6 ** Description: This file defines the basic function for ldo management. *
7 ******************************************************************************/
9 /******************************************************************************
11 ** ------------------------------------------------------------------------- *
12 ** DATE NAME DESCRIPTION *
13 ** 07/09/2007 jiexia.yu Create. *
14 ******************************************************************************/
18 #include <asm/arch/adi_hal_internal.h>
20 /* set or clear the bit of register in reg_addr address */
21 #define REG_SETCLRBIT(_reg_addr, _set_bit, _clr_bit) \
23 unsigned int reg_val = 0; \
24 reg_val = ANA_REG_GET(_reg_addr); \
25 reg_val |= (_set_bit); \
26 reg_val &= ~(_clr_bit); \
27 ANA_REG_SET(_reg_addr,reg_val); \
30 /* set the value of register bits corresponding with bit_mask */
31 #define REG_SETBIT(_reg_addr, _bit_mask, _bit_set) ANA_REG_MSK_OR(_reg_addr, _bit_set, _bit_mask);
33 /* macro used to get voltage level(one bit level) */
34 #define GET_LEVELBIT(_reg_addr, _bit_mask, _bit_set, _level_var) \
37 ((ANA_REG_GET(_reg_addr)&(_bit_mask))?(_bit_set):0); \
40 /* macro used to get voltage level */
41 #define GET_LEVEL(_reg_addr, _bit0_mask, _bit1_mask, _level_var) \
44 (((ANA_REG_GET(_reg_addr)&(_bit0_mask))?(BIT_0):0)| \
45 ((ANA_REG_GET(_reg_addr)&(_bit1_mask))?(BIT_1):0)); \
48 /* macro used to set voltage level according to bit field */
49 #define SET_LEVELBIT(_reg_addr, _bit_mask, _set_bit, _rst_bit) \
53 (_set_bit) | (_rst_bit), \
54 ((_set_bit)&(_bit_mask)) | ((_rst_bit)&(~_bit_mask)) \
58 /* macro used to set voltage level according to two bits */
59 #define SET_LEVEL(_reg_addr, _bit0_mask, _bit1_mask, _set_bit0, \
60 _rst_bit0, _set_bit1, _rst_bit1) \
64 ((_set_bit0)|(_rst_bit0) | (_set_bit1)|(_rst_bit1)), \
65 (((_set_bit0)&(_bit0_mask)) | ((_rst_bit0)&(~_bit0_mask))| \
66 ((_set_bit1)&(_bit1_mask)) | ((_rst_bit1)&(~_bit1_mask))) \
70 #define LDO_REG_OR ANA_REG_OR
71 #define LDO_REG_AND ANA_REG_AND
72 #define LDO_REG_GET ANA_REG_GET
74 /**---------------------------------------------------------------------------*
76 **---------------------------------------------------------------------------*/
80 LDO_LDO_NULL = 0, //id for NULL
82 LDO_LDO_IO18 , //VDDIO18
83 LDO_LDO_IO28 , //VDDIO28
85 LDO_LDO_MEM , //VDDMEM
86 LDO_LDO_CORE , //VDDCORE
87 LDO_LDO_CORE_SLP, //VDDCORE Sleep
88 LDO_LDO_AUX1 , //Sensor core voltage used by sc6600l
89 LDO_LDO_AUX2 , //Sensor analog voltage used by sc6600l
90 LDO_LDO_SIM0 , //VDD SIM0
91 LDO_LDO_SIM1 , //VDD SIM1
92 LDO_LDO_USB , //VDDUSB
93 LDO_LDO_RF , //LDORF (LDO1)
94 LDO_LDO_LCD , //LDOLCD
96 LDO_LDO_RTC , //VDDRTC
97 LDO_LDO_ABB , //AVDDBB
98 LDO_LDO_PLL , //VDDPLL
100 LDO_LDO_AVBO , //LDOVBO
104 LDO_LDO_VREFRF , //VREFRF
105 LDO_LDO_VREF , //VREF
106 LDO_LDO_VREF27 , //VREF27
107 LDO_LDO_SDIO , //SDIO
115 LDO_LDO_CAMD0 = LDO_LDO_CAMD,
117 LDO_LDO_CAMD1 = LDO_LDO_CAMIO,
144 LDO_LDO_MAX //id for calculate LDO number only!
147 #define LDO_LDO_LCM LDO_LDO_AUX1
148 #define LDO_LDO_CMR LDO_LDO_AUX2
156 LDO_VOLT_LEVEL_FAULT_MAX
159 //LDO error flag definition
163 LDO_ERR_INVALID_HANDLE,
164 LDO_ERR_INVALID_OPERATION,
168 /**---------------------------------------------------------------------------*
169 ** Constant Variables *
170 **---------------------------------------------------------------------------*/
173 /**---------------------------------------------------------------------------*
174 ** Function Prototypes *
175 **---------------------------------------------------------------------------*/
178 /*****************************************************************************/
179 // Description: Turn on the LDO specified by input parameter ldo_id
180 // Global resource dependence: NONE
182 // Note: return value = LDO_ERR_OK if operation is executed successfully
183 /*****************************************************************************/
184 LDO_ERR_E LDO_TurnOnLDO(LDO_ID_E ldo_id);
186 /*****************************************************************************/
187 // Description: Turo off the LDO specified by parameter ldo_id
188 // Global resource dependence: NONE
191 /*****************************************************************************/
192 LDO_ERR_E LDO_TurnOffLDO(LDO_ID_E ldo_id);
194 /*****************************************************************************/
195 // Description: Find the LDO status -- ON or OFF
196 // Global resource dependence:
198 // Note: return SCI_TRUE means LDO is ON, SCI_FALSE is OFF
199 /*****************************************************************************/
200 int LDO_IsLDOOn(LDO_ID_E ldo_id);
202 /*****************************************************************************/
203 // Description: Get LDO voltage level
204 // Global resource dependence:
207 /*****************************************************************************/
208 LDO_VOLT_LEVEL_E LDO_GetVoltLevel(LDO_ID_E ldo_id);
210 /*****************************************************************************/
211 // Description: This function could be invoked by customer for LDO voltage
212 // level & referece voltage level initiation.
213 // Global resource dependence:
216 /*****************************************************************************/
217 LDO_ERR_E LDO_SetVoltLevel(LDO_ID_E ldo_id, LDO_VOLT_LEVEL_E level);
219 /*****************************************************************************/
220 // Description: Control The VCAM Domain PAD to avoid VCAM Domain PAD input not floating
221 // Global resource dependence: NONE
222 // Author: Tao.Feng && Yi.Qiu
223 // Note: return value = LDO_ERR_OK if operation is executed successfully
224 /*****************************************************************************/
225 LDO_ERR_E LDO_ControVCAMPad(int pad_on);
227 /*****************************************************************************/
228 // Description: Shut down any LDO that do not used when system enters deepsleep
229 // Global resource dependence: s_ldo_reopen[]
232 /*****************************************************************************/
233 void LDO_DeepSleepInit(void);
234 void LDO_TurnOffAllLDO(void);
236 /**---------------------------------------------------------------------------*
238 **---------------------------------------------------------------------------*/
240 #endif // _LDO_MANAGER_H_