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) \
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
119 LDO_LDO_MAX //id for calculate LDO number only!
122 #define LDO_LDO_LCM LDO_LDO_AUX1
123 #define LDO_LDO_CMR LDO_LDO_AUX2
127 SLP_LDO_NULL = 0, //id for NULL
128 SLP_LDO_ABB, //id for abb
129 SLP_LDO_VBO, //id for voice band
130 SLP_LDO_AUX1, //id for sensor core
131 SLP_LDO_AUX2, //id for sensor analog and io
132 SLP_LDO_USB, //id for USB
133 SLP_LDO_RF, //id for RF
134 SLP_LDO_COREV, //id for ldo core
137 SLP_LDO_SDIO, //id for ldo sdio
138 SLP_LDO_IO18, //id for vddio18
139 SLP_LDO_IO28, //id for vddio28
140 SLP_LDO_BG, //id for ldo BG
167 //LDO error flag definition
171 LDO_ERR_INVALID_HANDLE,
172 LDO_ERR_INVALID_OPERATION,
176 /**---------------------------------------------------------------------------*
177 ** Constant Variables *
178 **---------------------------------------------------------------------------*/
181 /**---------------------------------------------------------------------------*
182 ** Function Prototypes *
183 **---------------------------------------------------------------------------*/
186 /*****************************************************************************/
187 // Description: Turn on the LDO specified by input parameter ldo_id
188 // Global resource dependence: NONE
190 // Note: return value = LDO_ERR_OK if operation is executed successfully
191 /*****************************************************************************/
192 LDO_ERR_E LDO_TurnOnLDO(LDO_ID_E ldo_id);
194 /*****************************************************************************/
195 // Description: Turo off the LDO specified by parameter ldo_id
196 // Global resource dependence: NONE
199 /*****************************************************************************/
200 LDO_ERR_E LDO_TurnOffLDO(LDO_ID_E ldo_id);
202 /*****************************************************************************/
203 // Description: Find the LDO status -- ON or OFF
204 // Global resource dependence:
206 // Note: return SCI_TRUE means LDO is ON, SCI_FALSE is OFF
207 /*****************************************************************************/
208 int LDO_IsLDOOn(LDO_ID_E ldo_id);
210 /*****************************************************************************/
211 // Description: Get LDO voltage level
212 // Global resource dependence:
215 /*****************************************************************************/
216 LDO_VOLT_LEVEL_E LDO_GetVoltLevel(LDO_ID_E ldo_id);
218 /*****************************************************************************/
219 // Description: This function could be invoked by customer for LDO voltage
220 // level & referece voltage level initiation.
221 // Global resource dependence:
224 /*****************************************************************************/
225 LDO_ERR_E LDO_SetVoltLevel(LDO_ID_E ldo_id, LDO_VOLT_LEVEL_E level);
227 /*****************************************************************************/
228 // Description: Control The VCAM Domain PAD to avoid VCAM Domain PAD input not floating
229 // Global resource dependence: NONE
230 // Author: Tao.Feng && Yi.Qiu
231 // Note: return value = LDO_ERR_OK if operation is executed successfully
232 /*****************************************************************************/
233 LDO_ERR_E LDO_ControVCAMPad(int pad_on);
235 /*****************************************************************************/
236 // Description: Shut down any LDO that do not used when system enters deepsleep
237 // Global resource dependence: s_ldo_reopen[]
240 /*****************************************************************************/
241 void LDO_DeepSleepInit(void);
242 void LDO_TurnOffAllLDO(void);
244 /**---------------------------------------------------------------------------*
246 **---------------------------------------------------------------------------*/
248 #endif // _LDO_MANAGER_H_