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 */
24 #define REG_SETCLRBIT(_reg_addr, _set_bit, _clr_bit) \
26 unsigned int reg_val = 0; \
27 reg_val = ANA_REG_GET(_reg_addr); \
28 reg_val |= (_set_bit); \
29 reg_val &= ~(_clr_bit); \
30 ANA_REG_SET(_reg_addr,reg_val); \
33 /* set the value of register bits corresponding with bit_mask */
34 #define REG_SETBIT(_reg_addr, _bit_mask, _bit_set) ANA_REG_MSK_OR(_reg_addr, _bit_set, _bit_mask);
36 /* macro used to get voltage level(one bit level) */
40 #define GET_LEVELBIT(_reg_addr, _bit_mask, _bit_set, _level_var) \
43 ((ANA_REG_GET(_reg_addr)&(_bit_mask))?(_bit_set):0); \
46 /* macro used to get voltage level */
50 #define GET_LEVEL(_reg_addr, _bit0_mask, _bit1_mask, _level_var) \
53 (((ANA_REG_GET(_reg_addr)&(_bit0_mask))?(BIT_0):0)| \
54 ((ANA_REG_GET(_reg_addr)&(_bit1_mask))?(BIT_1):0)); \
57 /* macro used to set voltage level according to bit field */
58 #define SET_LEVELBIT(_reg_addr, _bit_mask, _set_bit, _rst_bit) \
62 (_set_bit) | (_rst_bit), \
63 ((_set_bit)&(_bit_mask)) | ((_rst_bit)&(~_bit_mask)) \
67 /* macro used to set voltage level according to two bits */
68 #define SET_LEVEL(_reg_addr, _bit0_mask, _bit1_mask, _set_bit0, \
69 _rst_bit0, _set_bit1, _rst_bit1) \
73 ((_set_bit0)|(_rst_bit0) | (_set_bit1)|(_rst_bit1)), \
74 (((_set_bit0)&(_bit0_mask)) | ((_rst_bit0)&(~_bit0_mask))| \
75 ((_set_bit1)&(_bit1_mask)) | ((_rst_bit1)&(~_bit1_mask))) \
79 #define LDO_REG_OR ANA_REG_OR
80 #define LDO_REG_AND ANA_REG_AND
81 #define LDO_REG_GET ANA_REG_GET
83 /**---------------------------------------------------------------------------*
85 **---------------------------------------------------------------------------*/
89 LDO_LDO_NULL = 0, //id for NULL
91 LDO_LDO_IO18 , //VDDIO18
92 LDO_LDO_IO28 , //VDDIO28
94 LDO_LDO_MEM , //VDDMEM
95 LDO_LDO_CORE , //VDDCORE
96 LDO_LDO_CORE_SLP, //VDDCORE Sleep
97 LDO_LDO_AUX1 , //Sensor core voltage used by sc6600l
98 LDO_LDO_AUX2 , //Sensor analog voltage used by sc6600l
99 LDO_LDO_SIM0 , //VDD SIM0
100 LDO_LDO_SIM1 , //VDD SIM1
101 LDO_LDO_USB , //VDDUSB
102 LDO_LDO_RF , //LDORF (LDO1)
103 LDO_LDO_LCD , //LDOLCD
105 LDO_LDO_RTC , //VDDRTC
106 LDO_LDO_ABB , //AVDDBB
107 LDO_LDO_PLL , //VDDPLL
108 LDO_LDO_AVB , //LDOVB
109 LDO_LDO_AVBO , //LDOVBO
113 LDO_LDO_VREFRF , //VREFRF
114 LDO_LDO_VREF , //VREF
115 LDO_LDO_VREF27 , //VREF27
116 LDO_LDO_SDIO , //SDIO
124 LDO_LDO_CAMD0 = LDO_LDO_CAMD,
126 LDO_LDO_CAMD1 = LDO_LDO_CAMIO,
154 LDO_LDO_MAX //id for calculate LDO number only!
157 #define LDO_LDO_LCM LDO_LDO_AUX1
158 #define LDO_LDO_CMR LDO_LDO_AUX2
188 LDO_VOLT_LEVEL_FAULT_MAX
191 //LDO error flag definition
195 LDO_ERR_INVALID_HANDLE,
196 LDO_ERR_INVALID_OPERATION,
200 /**---------------------------------------------------------------------------*
201 ** Constant Variables *
202 **---------------------------------------------------------------------------*/
205 /**---------------------------------------------------------------------------*
206 ** Function Prototypes *
207 **---------------------------------------------------------------------------*/
210 /*****************************************************************************/
211 // Description: Turn on the LDO specified by input parameter ldo_id
212 // Global resource dependence: NONE
214 // Note: return value = LDO_ERR_OK if operation is executed successfully
215 /*****************************************************************************/
216 LDO_ERR_E LDO_TurnOnLDO(LDO_ID_E ldo_id);
218 /*****************************************************************************/
219 // Description: Turo off the LDO specified by parameter ldo_id
220 // Global resource dependence: NONE
223 /*****************************************************************************/
224 LDO_ERR_E LDO_TurnOffLDO(LDO_ID_E ldo_id);
226 /*****************************************************************************/
227 // Description: Find the LDO status -- ON or OFF
228 // Global resource dependence:
230 // Note: return SCI_TRUE means LDO is ON, SCI_FALSE is OFF
231 /*****************************************************************************/
232 int LDO_IsLDOOn(LDO_ID_E ldo_id);
234 /*****************************************************************************/
235 // Description: Get LDO voltage level
236 // Global resource dependence:
239 /*****************************************************************************/
240 LDO_VOLT_LEVEL_E LDO_GetVoltLevel(LDO_ID_E ldo_id);
242 /*****************************************************************************/
243 // Description: This function could be invoked by customer for LDO voltage
244 // level & referece voltage level initiation.
245 // Global resource dependence:
248 /*****************************************************************************/
249 LDO_ERR_E LDO_SetVoltLevel(LDO_ID_E ldo_id, LDO_VOLT_LEVEL_E level);
251 /*****************************************************************************/
252 // Description: Control The VCAM Domain PAD to avoid VCAM Domain PAD input not floating
253 // Global resource dependence: NONE
254 // Author: Tao.Feng && Yi.Qiu
255 // Note: return value = LDO_ERR_OK if operation is executed successfully
256 /*****************************************************************************/
257 LDO_ERR_E LDO_ControVCAMPad(int pad_on);
259 /*****************************************************************************/
260 // Description: Shut down any LDO that do not used when system enters deepsleep
261 // Global resource dependence: s_ldo_reopen[]
264 /*****************************************************************************/
265 void LDO_DeepSleepInit(void);
266 void LDO_TurnOffAllLDO(void);
268 /**---------------------------------------------------------------------------*
270 **---------------------------------------------------------------------------*/
272 #endif // _LDO_MANAGER_H_