Merge branch 'agp-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied...
[pandora-kernel.git] / arch / arm / mach-bcmring / include / mach / csp / cap_inline.h
1 /*****************************************************************************
2 * Copyright 2009 Broadcom Corporation.  All rights reserved.
3 *
4 * Unless you and Broadcom execute a separate written software license
5 * agreement governing use of this software, this software is licensed to you
6 * under the terms of the GNU General Public License version 2, available at
7 * http://www.broadcom.com/licenses/GPLv2.php (the "GPL").
8 *
9 * Notwithstanding the above, under no circumstances may you combine this
10 * software in any way with any other Broadcom software provided under a
11 * license other than the GPL, without Broadcom's express prior written
12 * consent.
13 *****************************************************************************/
14
15 #ifndef CAP_INLINE_H
16 #define CAP_INLINE_H
17
18 /* ---- Include Files ---------------------------------------------------- */
19 #include <mach/csp/cap.h>
20 #include <cfg_global.h>
21
22 /* ---- Public Constants and Types --------------------------------------- */
23 #define CAP_CONFIG0_VPM_DIS          0x00000001
24 #define CAP_CONFIG0_ETH_PHY0_DIS     0x00000002
25 #define CAP_CONFIG0_ETH_PHY1_DIS     0x00000004
26 #define CAP_CONFIG0_ETH_GMII0_DIS    0x00000008
27 #define CAP_CONFIG0_ETH_GMII1_DIS    0x00000010
28 #define CAP_CONFIG0_ETH_SGMII0_DIS   0x00000020
29 #define CAP_CONFIG0_ETH_SGMII1_DIS   0x00000040
30 #define CAP_CONFIG0_USB0_DIS         0x00000080
31 #define CAP_CONFIG0_USB1_DIS         0x00000100
32 #define CAP_CONFIG0_TSC_DIS          0x00000200
33 #define CAP_CONFIG0_EHSS0_DIS        0x00000400
34 #define CAP_CONFIG0_EHSS1_DIS        0x00000800
35 #define CAP_CONFIG0_SDIO0_DIS        0x00001000
36 #define CAP_CONFIG0_SDIO1_DIS        0x00002000
37 #define CAP_CONFIG0_UARTB_DIS        0x00004000
38 #define CAP_CONFIG0_KEYPAD_DIS       0x00008000
39 #define CAP_CONFIG0_CLCD_DIS         0x00010000
40 #define CAP_CONFIG0_GE_DIS           0x00020000
41 #define CAP_CONFIG0_LEDM_DIS         0x00040000
42 #define CAP_CONFIG0_BBL_DIS          0x00080000
43 #define CAP_CONFIG0_VDEC_DIS         0x00100000
44 #define CAP_CONFIG0_PIF_DIS          0x00200000
45 #define CAP_CONFIG0_RESERVED1_DIS    0x00400000
46 #define CAP_CONFIG0_RESERVED2_DIS    0x00800000
47
48 #define CAP_CONFIG1_APMA_DIS         0x00000001
49 #define CAP_CONFIG1_APMB_DIS         0x00000002
50 #define CAP_CONFIG1_APMC_DIS         0x00000004
51 #define CAP_CONFIG1_CLCD_RES_MASK    0x00000600
52 #define CAP_CONFIG1_CLCD_RES_SHIFT   9
53 #define CAP_CONFIG1_CLCD_RES_WVGA    (CAP_LCD_WVGA << CAP_CONFIG1_CLCD_RES_SHIFT)
54 #define CAP_CONFIG1_CLCD_RES_VGA     (CAP_LCD_VGA << CAP_CONFIG1_CLCD_RES_SHIFT)
55 #define CAP_CONFIG1_CLCD_RES_WQVGA   (CAP_LCD_WQVGA << CAP_CONFIG1_CLCD_RES_SHIFT)
56 #define CAP_CONFIG1_CLCD_RES_QVGA    (CAP_LCD_QVGA << CAP_CONFIG1_CLCD_RES_SHIFT)
57
58 #define CAP_CONFIG2_SPU_DIS          0x00000010
59 #define CAP_CONFIG2_PKA_DIS          0x00000020
60 #define CAP_CONFIG2_RNG_DIS          0x00000080
61
62 #if   (CFG_GLOBAL_CHIP == BCM11107)
63 #define capConfig0 0
64 #define capConfig1 CAP_CONFIG1_CLCD_RES_WVGA
65 #define capConfig2 0
66 #define CAP_APM_MAX_NUM_CHANS 3
67 #elif (CFG_GLOBAL_CHIP == FPGA11107)
68 #define capConfig0 0
69 #define capConfig1 CAP_CONFIG1_CLCD_RES_WVGA
70 #define capConfig2 0
71 #define CAP_APM_MAX_NUM_CHANS 3
72 #elif (CFG_GLOBAL_CHIP == BCM11109)
73 #define capConfig0 (CAP_CONFIG0_USB1_DIS | CAP_CONFIG0_EHSS1_DIS | CAP_CONFIG0_SDIO1_DIS | CAP_CONFIG0_GE_DIS | CAP_CONFIG0_BBL_DIS | CAP_CONFIG0_VDEC_DIS)
74 #define capConfig1 (CAP_CONFIG1_APMC_DIS | CAP_CONFIG1_CLCD_RES_WQVGA)
75 #define capConfig2 (CAP_CONFIG2_SPU_DIS | CAP_CONFIG2_PKA_DIS)
76 #define CAP_APM_MAX_NUM_CHANS 2
77 #elif (CFG_GLOBAL_CHIP == BCM11170)
78 #define capConfig0 (CAP_CONFIG0_ETH_GMII0_DIS | CAP_CONFIG0_ETH_GMII1_DIS | CAP_CONFIG0_USB0_DIS | CAP_CONFIG0_USB1_DIS | CAP_CONFIG0_TSC_DIS | CAP_CONFIG0_EHSS1_DIS | CAP_CONFIG0_SDIO0_DIS | CAP_CONFIG0_SDIO1_DIS | CAP_CONFIG0_UARTB_DIS | CAP_CONFIG0_CLCD_DIS | CAP_CONFIG0_GE_DIS | CAP_CONFIG0_BBL_DIS | CAP_CONFIG0_VDEC_DIS)
79 #define capConfig1 (CAP_CONFIG1_APMC_DIS | CAP_CONFIG1_CLCD_RES_WQVGA)
80 #define capConfig2 (CAP_CONFIG2_SPU_DIS | CAP_CONFIG2_PKA_DIS)
81 #define CAP_APM_MAX_NUM_CHANS 2
82 #elif (CFG_GLOBAL_CHIP == BCM11110)
83 #define capConfig0 (CAP_CONFIG0_USB1_DIS | CAP_CONFIG0_TSC_DIS | CAP_CONFIG0_EHSS1_DIS | CAP_CONFIG0_SDIO0_DIS | CAP_CONFIG0_SDIO1_DIS | CAP_CONFIG0_UARTB_DIS | CAP_CONFIG0_GE_DIS | CAP_CONFIG0_BBL_DIS | CAP_CONFIG0_VDEC_DIS)
84 #define capConfig1 CAP_CONFIG1_APMC_DIS
85 #define capConfig2 (CAP_CONFIG2_SPU_DIS | CAP_CONFIG2_PKA_DIS)
86 #define CAP_APM_MAX_NUM_CHANS 2
87 #elif (CFG_GLOBAL_CHIP == BCM11211)
88 #define capConfig0 (CAP_CONFIG0_ETH_PHY0_DIS | CAP_CONFIG0_ETH_GMII0_DIS | CAP_CONFIG0_ETH_GMII1_DIS | CAP_CONFIG0_ETH_SGMII0_DIS | CAP_CONFIG0_ETH_SGMII1_DIS | CAP_CONFIG0_CLCD_DIS)
89 #define capConfig1 CAP_CONFIG1_APMC_DIS
90 #define capConfig2 0
91 #define CAP_APM_MAX_NUM_CHANS 2
92 #else
93 #error CFG_GLOBAL_CHIP type capabilities not defined
94 #endif
95
96 #if   ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == FPGA11107))
97 #define CAP_HW_CFG_ARM_CLK_HZ 500000000
98 #elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110))
99 #define CAP_HW_CFG_ARM_CLK_HZ 300000000
100 #elif (CFG_GLOBAL_CHIP == BCM11211)
101 #define CAP_HW_CFG_ARM_CLK_HZ 666666666
102 #else
103 #error CFG_GLOBAL_CHIP type capabilities not defined
104 #endif
105
106 #if ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == BCM11211) || (CFG_GLOBAL_CHIP == FPGA11107))
107 #define CAP_HW_CFG_VPM_CLK_HZ 333333333
108 #elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110))
109 #define CAP_HW_CFG_VPM_CLK_HZ 200000000
110 #else
111 #error CFG_GLOBAL_CHIP type capabilities not defined
112 #endif
113
114 /* ---- Public Variable Externs ------------------------------------------ */
115 /* ---- Public Function Prototypes --------------------------------------- */
116
117 /****************************************************************************
118 *  cap_isPresent -
119 *
120 *  PURPOSE:
121 *     Determines if the chip has a certain capability present
122 *
123 *  PARAMETERS:
124 *     capability - type of capability to determine if present
125 *
126 *  RETURNS:
127 *     CAP_PRESENT or CAP_NOT_PRESENT
128 ****************************************************************************/
129 static inline CAP_RC_T cap_isPresent(CAP_CAPABILITY_T capability, int index)
130 {
131         CAP_RC_T returnVal = CAP_NOT_PRESENT;
132
133         switch (capability) {
134         case CAP_VPM:
135                 {
136                         if (!(capConfig0 & CAP_CONFIG0_VPM_DIS)) {
137                                 returnVal = CAP_PRESENT;
138                         }
139                 }
140                 break;
141
142         case CAP_ETH_PHY:
143                 {
144                         if ((index == 0)
145                             && (!(capConfig0 & CAP_CONFIG0_ETH_PHY0_DIS))) {
146                                 returnVal = CAP_PRESENT;
147                         }
148                         if ((index == 1)
149                             && (!(capConfig0 & CAP_CONFIG0_ETH_PHY1_DIS))) {
150                                 returnVal = CAP_PRESENT;
151                         }
152                 }
153                 break;
154
155         case CAP_ETH_GMII:
156                 {
157                         if ((index == 0)
158                             && (!(capConfig0 & CAP_CONFIG0_ETH_GMII0_DIS))) {
159                                 returnVal = CAP_PRESENT;
160                         }
161                         if ((index == 1)
162                             && (!(capConfig0 & CAP_CONFIG0_ETH_GMII1_DIS))) {
163                                 returnVal = CAP_PRESENT;
164                         }
165                 }
166                 break;
167
168         case CAP_ETH_SGMII:
169                 {
170                         if ((index == 0)
171                             && (!(capConfig0 & CAP_CONFIG0_ETH_SGMII0_DIS))) {
172                                 returnVal = CAP_PRESENT;
173                         }
174                         if ((index == 1)
175                             && (!(capConfig0 & CAP_CONFIG0_ETH_SGMII1_DIS))) {
176                                 returnVal = CAP_PRESENT;
177                         }
178                 }
179                 break;
180
181         case CAP_USB:
182                 {
183                         if ((index == 0)
184                             && (!(capConfig0 & CAP_CONFIG0_USB0_DIS))) {
185                                 returnVal = CAP_PRESENT;
186                         }
187                         if ((index == 1)
188                             && (!(capConfig0 & CAP_CONFIG0_USB1_DIS))) {
189                                 returnVal = CAP_PRESENT;
190                         }
191                 }
192                 break;
193
194         case CAP_TSC:
195                 {
196                         if (!(capConfig0 & CAP_CONFIG0_TSC_DIS)) {
197                                 returnVal = CAP_PRESENT;
198                         }
199                 }
200                 break;
201
202         case CAP_EHSS:
203                 {
204                         if ((index == 0)
205                             && (!(capConfig0 & CAP_CONFIG0_EHSS0_DIS))) {
206                                 returnVal = CAP_PRESENT;
207                         }
208                         if ((index == 1)
209                             && (!(capConfig0 & CAP_CONFIG0_EHSS1_DIS))) {
210                                 returnVal = CAP_PRESENT;
211                         }
212                 }
213                 break;
214
215         case CAP_SDIO:
216                 {
217                         if ((index == 0)
218                             && (!(capConfig0 & CAP_CONFIG0_SDIO0_DIS))) {
219                                 returnVal = CAP_PRESENT;
220                         }
221                         if ((index == 1)
222                             && (!(capConfig0 & CAP_CONFIG0_SDIO1_DIS))) {
223                                 returnVal = CAP_PRESENT;
224                         }
225                 }
226                 break;
227
228         case CAP_UARTB:
229                 {
230                         if (!(capConfig0 & CAP_CONFIG0_UARTB_DIS)) {
231                                 returnVal = CAP_PRESENT;
232                         }
233                 }
234                 break;
235
236         case CAP_KEYPAD:
237                 {
238                         if (!(capConfig0 & CAP_CONFIG0_KEYPAD_DIS)) {
239                                 returnVal = CAP_PRESENT;
240                         }
241                 }
242                 break;
243
244         case CAP_CLCD:
245                 {
246                         if (!(capConfig0 & CAP_CONFIG0_CLCD_DIS)) {
247                                 returnVal = CAP_PRESENT;
248                         }
249                 }
250                 break;
251
252         case CAP_GE:
253                 {
254                         if (!(capConfig0 & CAP_CONFIG0_GE_DIS)) {
255                                 returnVal = CAP_PRESENT;
256                         }
257                 }
258                 break;
259
260         case CAP_LEDM:
261                 {
262                         if (!(capConfig0 & CAP_CONFIG0_LEDM_DIS)) {
263                                 returnVal = CAP_PRESENT;
264                         }
265                 }
266                 break;
267
268         case CAP_BBL:
269                 {
270                         if (!(capConfig0 & CAP_CONFIG0_BBL_DIS)) {
271                                 returnVal = CAP_PRESENT;
272                         }
273                 }
274                 break;
275
276         case CAP_VDEC:
277                 {
278                         if (!(capConfig0 & CAP_CONFIG0_VDEC_DIS)) {
279                                 returnVal = CAP_PRESENT;
280                         }
281                 }
282                 break;
283
284         case CAP_PIF:
285                 {
286                         if (!(capConfig0 & CAP_CONFIG0_PIF_DIS)) {
287                                 returnVal = CAP_PRESENT;
288                         }
289                 }
290                 break;
291
292         case CAP_APM:
293                 {
294                         if ((index == 0)
295                             && (!(capConfig1 & CAP_CONFIG1_APMA_DIS))) {
296                                 returnVal = CAP_PRESENT;
297                         }
298                         if ((index == 1)
299                             && (!(capConfig1 & CAP_CONFIG1_APMB_DIS))) {
300                                 returnVal = CAP_PRESENT;
301                         }
302                         if ((index == 2)
303                             && (!(capConfig1 & CAP_CONFIG1_APMC_DIS))) {
304                                 returnVal = CAP_PRESENT;
305                         }
306                 }
307                 break;
308
309         case CAP_SPU:
310                 {
311                         if (!(capConfig2 & CAP_CONFIG2_SPU_DIS)) {
312                                 returnVal = CAP_PRESENT;
313                         }
314                 }
315                 break;
316
317         case CAP_PKA:
318                 {
319                         if (!(capConfig2 & CAP_CONFIG2_PKA_DIS)) {
320                                 returnVal = CAP_PRESENT;
321                         }
322                 }
323                 break;
324
325         case CAP_RNG:
326                 {
327                         if (!(capConfig2 & CAP_CONFIG2_RNG_DIS)) {
328                                 returnVal = CAP_PRESENT;
329                         }
330                 }
331                 break;
332
333         default:
334                 {
335                 }
336                 break;
337         }
338         return returnVal;
339 }
340
341 /****************************************************************************
342 *  cap_getMaxArmSpeedHz -
343 *
344 *  PURPOSE:
345 *     Determines the maximum speed of the ARM CPU
346 *
347 *  PARAMETERS:
348 *     none
349 *
350 *  RETURNS:
351 *     clock speed in Hz that the ARM processor is able to run at
352 ****************************************************************************/
353 static inline uint32_t cap_getMaxArmSpeedHz(void)
354 {
355 #if   ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == FPGA11107))
356         return 500000000;
357 #elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110))
358         return 300000000;
359 #elif (CFG_GLOBAL_CHIP == BCM11211)
360         return 666666666;
361 #else
362 #error CFG_GLOBAL_CHIP type capabilities not defined
363 #endif
364 }
365
366 /****************************************************************************
367 *  cap_getMaxVpmSpeedHz -
368 *
369 *  PURPOSE:
370 *     Determines the maximum speed of the VPM
371 *
372 *  PARAMETERS:
373 *     none
374 *
375 *  RETURNS:
376 *     clock speed in Hz that the VPM is able to run at
377 ****************************************************************************/
378 static inline uint32_t cap_getMaxVpmSpeedHz(void)
379 {
380 #if ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == BCM11211) || (CFG_GLOBAL_CHIP == FPGA11107))
381         return 333333333;
382 #elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110))
383         return 200000000;
384 #else
385 #error CFG_GLOBAL_CHIP type capabilities not defined
386 #endif
387 }
388
389 /****************************************************************************
390 *  cap_getMaxLcdRes -
391 *
392 *  PURPOSE:
393 *     Determines the maximum LCD resolution capabilities
394 *
395 *  PARAMETERS:
396 *     none
397 *
398 *  RETURNS:
399 *   CAP_LCD_WVGA, CAP_LCD_VGA, CAP_LCD_WQVGA or CAP_LCD_QVGA
400 *
401 ****************************************************************************/
402 static inline CAP_LCD_RES_T cap_getMaxLcdRes(void)
403 {
404         return (CAP_LCD_RES_T)
405                 ((capConfig1 & CAP_CONFIG1_CLCD_RES_MASK) >>
406                  CAP_CONFIG1_CLCD_RES_SHIFT);
407 }
408
409 #endif