arm: sc8830: fix redefined macro warnings
[profile/mobile/platform/kernel/u-boot-tm1.git] / arch / arm / include / asm / arch-sc8830 / ldo.h
1 /******************************************************************************
2  ** File Name:      ldo_manager_sc6600l.h                                             *
3  ** Author:         jiexia.yu                                                 *
4  ** DATE:           07/09/2007                                                *
5  ** Copyright:      2007 Spreatrum, Incoporated. All Rights Reserved.         *
6  ** Description:    This file defines the basic function for ldo management.  *
7  ******************************************************************************/
8
9 /******************************************************************************
10  **                        Edit History                                       *
11  ** ------------------------------------------------------------------------- *
12  ** DATE           NAME             DESCRIPTION                               *
13  ** 07/09/2007     jiexia.yu        Create.                                   *
14  ******************************************************************************/
15 #ifndef _LDO_DRV_H_
16 #define _LDO_DRV_H_
17
18 #include <asm/arch/adi_hal_internal.h>
19
20 /* set or clear the bit of register in reg_addr address */
21 #ifdef REG_SETCLRBIT
22 #undef REG_SETCLRBIT
23 #endif
24 #define REG_SETCLRBIT(_reg_addr, _set_bit, _clr_bit)    \
25         do {                                            \
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);   \
31         }while(0);
32                 
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);
35
36 /* macro used to get voltage level(one bit level) */
37 #ifdef GET_LEVELBIT
38 #undef GET_LEVELBIT
39 #endif
40 #define GET_LEVELBIT(_reg_addr, _bit_mask, _bit_set, _level_var)   \
41         do {                                                    \
42                 (_level_var) |= \
43                         ((ANA_REG_GET(_reg_addr)&(_bit_mask))?(_bit_set):0);    \
44         } while (0)
45
46 /* macro used to get voltage level */
47 #ifdef GET_LEVEL
48 #undef GET_LEVEL
49 #endif
50 #define GET_LEVEL(_reg_addr, _bit0_mask, _bit1_mask, _level_var)    \
51         do {                                                    \
52                 (_level_var) |= \
53                         (((ANA_REG_GET(_reg_addr)&(_bit0_mask))?(BIT_0):0)|    \
54                          ((ANA_REG_GET(_reg_addr)&(_bit1_mask))?(BIT_1):0)); \
55         } while (0)
56
57 /* macro used to set voltage level according to bit field */
58 #define SET_LEVELBIT(_reg_addr, _bit_mask, _set_bit, _rst_bit)  \
59         {       \
60                 REG_SETBIT(     \
61                         _reg_addr,      \
62                         (_set_bit) | (_rst_bit),        \
63                         ((_set_bit)&(_bit_mask)) | ((_rst_bit)&(~_bit_mask))    \
64                         )       \
65         }
66
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)    \
70         {       \
71                 REG_SETBIT(     \
72                         (_reg_addr),    \
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)))       \
76                         )       \
77         }
78
79 #define LDO_REG_OR ANA_REG_OR
80 #define LDO_REG_AND ANA_REG_AND
81 #define LDO_REG_GET  ANA_REG_GET
82
83 /**---------------------------------------------------------------------------*
84  **                         Defines                                           *
85  **---------------------------------------------------------------------------*/
86
87 typedef enum 
88 {
89     LDO_LDO_NULL  = 0,   //id for NULL
90     LDO_LDO_IO     ,       //VDDIO
91     LDO_LDO_IO18     ,       //VDDIO18
92     LDO_LDO_IO28     ,       //VDDIO28
93     LDO_LDO_NF      ,      //LDONF
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
104     LDO_LDO_VIDEO,
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
110     LDO_LDO_BP18,
111     LDO_LDO_D3V,
112     LDO_LDO_DVD18,
113     LDO_LDO_VREFRF  ,  //VREFRF
114     LDO_LDO_VREF    ,  //VREF
115     LDO_LDO_VREF27  ,  //VREF27
116     LDO_LDO_SDIO  ,  //SDIO
117     ///SC8800G
118     LDO_LDO_VBAT_RES,
119     LDO_LDO_VBAT_V,
120     LDO_LDO_CLSG,
121     LDO_LDO_CAMMOT,
122     LDO_LDO_CAMA    ,
123     LDO_LDO_CAMD    ,
124     LDO_LDO_CAMD0   = LDO_LDO_CAMD,
125     LDO_LDO_CAMIO   ,
126     LDO_LDO_CAMD1   = LDO_LDO_CAMIO,
127     LDO_LDO_CAMM    ,
128     LDO_LDO_AVDD18  ,
129     LDO_LDO_VDD18   ,
130     LDO_LDO_VDD25   ,
131     LDO_LDO_VDD28   ,
132     LDO_LDO_RF0     ,
133     LDO_LDO_RF1     ,
134     LDO_LDO_RF2     ,
135     LDO_LDO_USBD    ,
136     ////end SC8800G
137     //sc8810 
138     LDO_DCDCARM,
139     LDO_DCDC,
140     LDO_LDO_BG,
141     LDO_LDO_SDIO0,
142     LDO_LDO_SIM3,
143     LDO_LDO_SIM2,
144     LDO_LDO_WIF1,
145     LDO_LDO_WIF0,
146     LDO_LDO_SDIO1,
147     LDO_LDO_SDIO3,
148     LDO_LDO_VDD30,
149     LDO_LDO_EMMCCORE,
150     LDO_LDO_EMMCIO,
151     LDO_LDO_WIFIPA,
152     //end sc8810
153
154     LDO_LDO_MAX     //id for calculate LDO number only!
155 }LDO_ID_E;
156
157 #define LDO_LDO_LCM             LDO_LDO_AUX1
158 #define LDO_LDO_CMR     LDO_LDO_AUX2
159
160 typedef enum 
161 {
162     //SPRD
163     SLP_LDO_SDIO1,
164     SLP_LDO_VDD25,
165     SLP_LDO_VDD18,
166     SLP_LDO_VDD28,
167     SLP_LDO_AVDDBB,
168     SLP_LDO_SDIO0,
169     SLP_LDO_VB,
170     SLP_LDO_CAMA,
171     SLP_LDO_CAMD1,
172     SLP_LDO_CAMD0,
173     SLP_LDO_USBH,
174     SLP_LDO_SIM1,
175     SLP_LDO_SIM0,
176     SLP_LDO_RF1,
177     SLP_LDO_RF0,
178    //end sprd
179     SLP_LDO_MAX
180 }SLP_LDO_E;
181
182 typedef enum
183 {
184         LDO_VOLT_LEVEL0 = 0,
185         LDO_VOLT_LEVEL1,
186         LDO_VOLT_LEVEL2,
187         LDO_VOLT_LEVEL3,
188         LDO_VOLT_LEVEL_FAULT_MAX
189 }LDO_VOLT_LEVEL_E;
190
191 //LDO error flag definition
192 typedef enum
193 {
194     LDO_ERR_OK,
195     LDO_ERR_INVALID_HANDLE,
196     LDO_ERR_INVALID_OPERATION,
197     LDO_ERR_ERR
198 }LDO_ERR_E;
199
200 /**---------------------------------------------------------------------------*
201  **                         Constant Variables                                *
202  **---------------------------------------------------------------------------*/
203
204
205 /**---------------------------------------------------------------------------*
206  **                         Function Prototypes                               *
207  **---------------------------------------------------------------------------*/
208
209
210 /*****************************************************************************/
211 //  Description:  Turn on the LDO specified by input parameter ldo_id  
212 //      Global resource dependence: NONE
213 //  Author:  jiexia.yu
214 //      Note:    return value = LDO_ERR_OK if operation is executed successfully           
215 /*****************************************************************************/
216  LDO_ERR_E LDO_TurnOnLDO(LDO_ID_E ldo_id);
217
218 /*****************************************************************************/
219 //  Description:  Turo off the LDO specified by parameter ldo_id
220 //      Global resource dependence: NONE
221 //  Author: jiexia.yu
222 //      Note:           
223 /*****************************************************************************/
224  LDO_ERR_E LDO_TurnOffLDO(LDO_ID_E ldo_id);
225
226 /*****************************************************************************/
227 //  Description: Find the LDO status -- ON or OFF
228 //      Global resource dependence: 
229 //  Author: jiexia.yu         
230 //      Note: return SCI_TRUE means LDO is ON, SCI_FALSE is OFF        
231 /*****************************************************************************/
232  int LDO_IsLDOOn(LDO_ID_E ldo_id);
233
234 /*****************************************************************************/
235 //  Description: Get LDO voltage level
236 //      Global resource dependence: 
237 //  Author: jiexia.yu
238 //      Note:           
239 /*****************************************************************************/
240  LDO_VOLT_LEVEL_E LDO_GetVoltLevel(LDO_ID_E ldo_id);
241
242 /*****************************************************************************/
243 //  Description:  This function could be invoked by customer for LDO voltage
244 //                level & referece voltage level initiation.
245 //      Global resource dependence: 
246 //  Author: jiexia.yu         
247 //      Note:           
248 /*****************************************************************************/
249  LDO_ERR_E LDO_SetVoltLevel(LDO_ID_E ldo_id, LDO_VOLT_LEVEL_E level);
250
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);
258
259 /*****************************************************************************/
260 //  Description:  Shut down any LDO that do not used when system enters deepsleep
261 //      Global resource dependence: s_ldo_reopen[]
262 //  Author: jiexia.yu     
263 //      Note:           
264 /*****************************************************************************/
265  void LDO_DeepSleepInit(void);
266  void LDO_TurnOffAllLDO(void);
267
268 /**---------------------------------------------------------------------------*
269  **                         Compiler Flag                                     *
270  **---------------------------------------------------------------------------*/
271
272 #endif // _LDO_MANAGER_H_
273
274