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
133 LDO_LDO_MAX //id for calculate LDO number only!
136 #define LDO_LDO_LCM LDO_LDO_AUX1
137 #define LDO_LDO_CMR LDO_LDO_AUX2
167 LDO_VOLT_LEVEL_FAULT_MAX
170 //LDO error flag definition
174 LDO_ERR_INVALID_HANDLE,
175 LDO_ERR_INVALID_OPERATION,
179 /**---------------------------------------------------------------------------*
180 ** Constant Variables *
181 **---------------------------------------------------------------------------*/
184 /**---------------------------------------------------------------------------*
185 ** Function Prototypes *
186 **---------------------------------------------------------------------------*/
189 /*****************************************************************************/
190 // Description: Turn on the LDO specified by input parameter ldo_id
191 // Global resource dependence: NONE
193 // Note: return value = LDO_ERR_OK if operation is executed successfully
194 /*****************************************************************************/
195 LDO_ERR_E LDO_TurnOnLDO(LDO_ID_E ldo_id);
197 /*****************************************************************************/
198 // Description: Turo off the LDO specified by parameter ldo_id
199 // Global resource dependence: NONE
202 /*****************************************************************************/
203 LDO_ERR_E LDO_TurnOffLDO(LDO_ID_E ldo_id);
205 /*****************************************************************************/
206 // Description: Find the LDO status -- ON or OFF
207 // Global resource dependence:
209 // Note: return SCI_TRUE means LDO is ON, SCI_FALSE is OFF
210 /*****************************************************************************/
211 int LDO_IsLDOOn(LDO_ID_E ldo_id);
213 /*****************************************************************************/
214 // Description: Get LDO voltage level
215 // Global resource dependence:
218 /*****************************************************************************/
219 LDO_VOLT_LEVEL_E LDO_GetVoltLevel(LDO_ID_E ldo_id);
221 /*****************************************************************************/
222 // Description: This function could be invoked by customer for LDO voltage
223 // level & referece voltage level initiation.
224 // Global resource dependence:
227 /*****************************************************************************/
228 LDO_ERR_E LDO_SetVoltLevel(LDO_ID_E ldo_id, LDO_VOLT_LEVEL_E level);
230 /*****************************************************************************/
231 // Description: Control The VCAM Domain PAD to avoid VCAM Domain PAD input not floating
232 // Global resource dependence: NONE
233 // Author: Tao.Feng && Yi.Qiu
234 // Note: return value = LDO_ERR_OK if operation is executed successfully
235 /*****************************************************************************/
236 LDO_ERR_E LDO_ControVCAMPad(int pad_on);
238 /*****************************************************************************/
239 // Description: Shut down any LDO that do not used when system enters deepsleep
240 // Global resource dependence: s_ldo_reopen[]
243 /*****************************************************************************/
244 void LDO_DeepSleepInit(void);
245 void LDO_TurnOffAllLDO(void);
247 /**---------------------------------------------------------------------------*
249 **---------------------------------------------------------------------------*/
251 #endif // _LDO_MANAGER_H_