diff options
59 files changed, 453 insertions, 1204 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 01790958e69b..24d955c21d35 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -920,6 +920,7 @@ config ARCH_U300 | |||
920 | select COMMON_CLK | 920 | select COMMON_CLK |
921 | select GENERIC_GPIO | 921 | select GENERIC_GPIO |
922 | select ARCH_REQUIRE_GPIOLIB | 922 | select ARCH_REQUIRE_GPIOLIB |
923 | select SPARSE_IRQ | ||
923 | help | 924 | help |
924 | Support for ST-Ericsson U300 series mobile platforms. | 925 | Support for ST-Ericsson U300 series mobile platforms. |
925 | 926 | ||
diff --git a/arch/arm/mach-bcmring/arch.c b/arch/arm/mach-bcmring/arch.c index 45c97b1ee9b1..7799e910e271 100644 --- a/arch/arm/mach-bcmring/arch.c +++ b/arch/arm/mach-bcmring/arch.c | |||
@@ -38,7 +38,7 @@ | |||
38 | #include <mach/csp/chipcHw_def.h> | 38 | #include <mach/csp/chipcHw_def.h> |
39 | #include <mach/csp/chipcHw_inline.h> | 39 | #include <mach/csp/chipcHw_inline.h> |
40 | 40 | ||
41 | #include <cfg_global.h> | 41 | #include <mach/cfg_global.h> |
42 | 42 | ||
43 | #include "core.h" | 43 | #include "core.h" |
44 | 44 | ||
diff --git a/arch/arm/mach-bcmring/core.c b/arch/arm/mach-bcmring/core.c index adbfb1994582..4b50228a6771 100644 --- a/arch/arm/mach-bcmring/core.c +++ b/arch/arm/mach-bcmring/core.c | |||
@@ -43,11 +43,10 @@ | |||
43 | #include <asm/mach/time.h> | 43 | #include <asm/mach/time.h> |
44 | #include <asm/mach/map.h> | 44 | #include <asm/mach/map.h> |
45 | 45 | ||
46 | #include <cfg_global.h> | 46 | #include <mach/cfg_global.h> |
47 | 47 | ||
48 | #include "clock.h" | 48 | #include "clock.h" |
49 | 49 | ||
50 | #include <csp/secHw.h> | ||
51 | #include <mach/csp/secHw_def.h> | 50 | #include <mach/csp/secHw_def.h> |
52 | #include <mach/csp/chipcHw_inline.h> | 51 | #include <mach/csp/chipcHw_inline.h> |
53 | #include <mach/csp/tmrHw_reg.h> | 52 | #include <mach/csp/tmrHw_reg.h> |
diff --git a/arch/arm/mach-bcmring/csp/chipc/chipcHw.c b/arch/arm/mach-bcmring/csp/chipc/chipcHw.c index 96273ff34956..5050833817b7 100644 --- a/arch/arm/mach-bcmring/csp/chipc/chipcHw.c +++ b/arch/arm/mach-bcmring/csp/chipc/chipcHw.c | |||
@@ -26,15 +26,15 @@ | |||
26 | 26 | ||
27 | /* ---- Include Files ---------------------------------------------------- */ | 27 | /* ---- Include Files ---------------------------------------------------- */ |
28 | 28 | ||
29 | #include <csp/errno.h> | 29 | #include <linux/errno.h> |
30 | #include <csp/stdint.h> | 30 | #include <linux/types.h> |
31 | #include <csp/module.h> | 31 | #include <linux/export.h> |
32 | 32 | ||
33 | #include <mach/csp/chipcHw_def.h> | 33 | #include <mach/csp/chipcHw_def.h> |
34 | #include <mach/csp/chipcHw_inline.h> | 34 | #include <mach/csp/chipcHw_inline.h> |
35 | 35 | ||
36 | #include <csp/reg.h> | 36 | #include <mach/csp/reg.h> |
37 | #include <csp/delay.h> | 37 | #include <linux/delay.h> |
38 | 38 | ||
39 | /* ---- Private Constants and Types --------------------------------------- */ | 39 | /* ---- Private Constants and Types --------------------------------------- */ |
40 | 40 | ||
@@ -61,21 +61,21 @@ static int chipcHw_divide(int num, int denom) | |||
61 | /****************************************************************************/ | 61 | /****************************************************************************/ |
62 | chipcHw_freq chipcHw_getClockFrequency(chipcHw_CLOCK_e clock /* [ IN ] Configurable clock */ | 62 | chipcHw_freq chipcHw_getClockFrequency(chipcHw_CLOCK_e clock /* [ IN ] Configurable clock */ |
63 | ) { | 63 | ) { |
64 | volatile uint32_t *pPLLReg = (uint32_t *) 0x0; | 64 | uint32_t __iomem *pPLLReg = NULL; |
65 | volatile uint32_t *pClockCtrl = (uint32_t *) 0x0; | 65 | uint32_t __iomem *pClockCtrl = NULL; |
66 | volatile uint32_t *pDependentClock = (uint32_t *) 0x0; | 66 | uint32_t __iomem *pDependentClock = NULL; |
67 | uint32_t vcoFreqPll1Hz = 0; /* Effective VCO frequency for PLL1 in Hz */ | 67 | uint32_t vcoFreqPll1Hz = 0; /* Effective VCO frequency for PLL1 in Hz */ |
68 | uint32_t vcoFreqPll2Hz = 0; /* Effective VCO frequency for PLL2 in Hz */ | 68 | uint32_t vcoFreqPll2Hz = 0; /* Effective VCO frequency for PLL2 in Hz */ |
69 | uint32_t dependentClockType = 0; | 69 | uint32_t dependentClockType = 0; |
70 | uint32_t vcoHz = 0; | 70 | uint32_t vcoHz = 0; |
71 | 71 | ||
72 | /* Get VCO frequencies */ | 72 | /* Get VCO frequencies */ |
73 | if ((pChipcHw->PLLPreDivider & chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_MASK) != chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_INTEGER) { | 73 | if ((readl(&pChipcHw->PLLPreDivider) & chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_MASK) != chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_INTEGER) { |
74 | uint64_t adjustFreq = 0; | 74 | uint64_t adjustFreq = 0; |
75 | 75 | ||
76 | vcoFreqPll1Hz = chipcHw_XTAL_FREQ_Hz * | 76 | vcoFreqPll1Hz = chipcHw_XTAL_FREQ_Hz * |
77 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * | 77 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * |
78 | ((pChipcHw->PLLPreDivider & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> | 78 | ((readl(&pChipcHw->PLLPreDivider) & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> |
79 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); | 79 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); |
80 | 80 | ||
81 | /* Adjusted frequency due to chipcHw_REG_PLL_DIVIDER_NDIV_f_SS */ | 81 | /* Adjusted frequency due to chipcHw_REG_PLL_DIVIDER_NDIV_f_SS */ |
@@ -86,13 +86,13 @@ chipcHw_freq chipcHw_getClockFrequency(chipcHw_CLOCK_e clock /* [ IN ] Configur | |||
86 | } else { | 86 | } else { |
87 | vcoFreqPll1Hz = chipcHw_XTAL_FREQ_Hz * | 87 | vcoFreqPll1Hz = chipcHw_XTAL_FREQ_Hz * |
88 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * | 88 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * |
89 | ((pChipcHw->PLLPreDivider & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> | 89 | ((readl(&pChipcHw->PLLPreDivider) & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> |
90 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); | 90 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); |
91 | } | 91 | } |
92 | vcoFreqPll2Hz = | 92 | vcoFreqPll2Hz = |
93 | chipcHw_XTAL_FREQ_Hz * | 93 | chipcHw_XTAL_FREQ_Hz * |
94 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * | 94 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * |
95 | ((pChipcHw->PLLPreDivider2 & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> | 95 | ((readl(&pChipcHw->PLLPreDivider2) & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> |
96 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); | 96 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); |
97 | 97 | ||
98 | switch (clock) { | 98 | switch (clock) { |
@@ -187,51 +187,51 @@ chipcHw_freq chipcHw_getClockFrequency(chipcHw_CLOCK_e clock /* [ IN ] Configur | |||
187 | 187 | ||
188 | if (pPLLReg) { | 188 | if (pPLLReg) { |
189 | /* Obtain PLL clock frequency */ | 189 | /* Obtain PLL clock frequency */ |
190 | if (*pPLLReg & chipcHw_REG_PLL_CLOCK_BYPASS_SELECT) { | 190 | if (readl(pPLLReg) & chipcHw_REG_PLL_CLOCK_BYPASS_SELECT) { |
191 | /* Return crystal clock frequency when bypassed */ | 191 | /* Return crystal clock frequency when bypassed */ |
192 | return chipcHw_XTAL_FREQ_Hz; | 192 | return chipcHw_XTAL_FREQ_Hz; |
193 | } else if (clock == chipcHw_CLOCK_DDR) { | 193 | } else if (clock == chipcHw_CLOCK_DDR) { |
194 | /* DDR frequency is configured in PLLDivider register */ | 194 | /* DDR frequency is configured in PLLDivider register */ |
195 | return chipcHw_divide (vcoHz, (((pChipcHw->PLLDivider & 0xFF000000) >> 24) ? ((pChipcHw->PLLDivider & 0xFF000000) >> 24) : 256)); | 195 | return chipcHw_divide (vcoHz, (((readl(&pChipcHw->PLLDivider) & 0xFF000000) >> 24) ? ((readl(&pChipcHw->PLLDivider) & 0xFF000000) >> 24) : 256)); |
196 | } else { | 196 | } else { |
197 | /* From chip revision number B0, LCD clock is internally divided by 2 */ | 197 | /* From chip revision number B0, LCD clock is internally divided by 2 */ |
198 | if ((pPLLReg == &pChipcHw->LCDClock) && (chipcHw_getChipRevisionNumber() != chipcHw_REV_NUMBER_A0)) { | 198 | if ((pPLLReg == &pChipcHw->LCDClock) && (chipcHw_getChipRevisionNumber() != chipcHw_REV_NUMBER_A0)) { |
199 | vcoHz >>= 1; | 199 | vcoHz >>= 1; |
200 | } | 200 | } |
201 | /* Obtain PLL clock frequency using VCO dividers */ | 201 | /* Obtain PLL clock frequency using VCO dividers */ |
202 | return chipcHw_divide(vcoHz, ((*pPLLReg & chipcHw_REG_PLL_CLOCK_MDIV_MASK) ? (*pPLLReg & chipcHw_REG_PLL_CLOCK_MDIV_MASK) : 256)); | 202 | return chipcHw_divide(vcoHz, ((readl(pPLLReg) & chipcHw_REG_PLL_CLOCK_MDIV_MASK) ? (readl(pPLLReg) & chipcHw_REG_PLL_CLOCK_MDIV_MASK) : 256)); |
203 | } | 203 | } |
204 | } else if (pClockCtrl) { | 204 | } else if (pClockCtrl) { |
205 | /* Obtain divider clock frequency */ | 205 | /* Obtain divider clock frequency */ |
206 | uint32_t div; | 206 | uint32_t div; |
207 | uint32_t freq = 0; | 207 | uint32_t freq = 0; |
208 | 208 | ||
209 | if (*pClockCtrl & chipcHw_REG_DIV_CLOCK_BYPASS_SELECT) { | 209 | if (readl(pClockCtrl) & chipcHw_REG_DIV_CLOCK_BYPASS_SELECT) { |
210 | /* Return crystal clock frequency when bypassed */ | 210 | /* Return crystal clock frequency when bypassed */ |
211 | return chipcHw_XTAL_FREQ_Hz; | 211 | return chipcHw_XTAL_FREQ_Hz; |
212 | } else if (pDependentClock) { | 212 | } else if (pDependentClock) { |
213 | /* Identify the dependent clock frequency */ | 213 | /* Identify the dependent clock frequency */ |
214 | switch (dependentClockType) { | 214 | switch (dependentClockType) { |
215 | case PLL_CLOCK: | 215 | case PLL_CLOCK: |
216 | if (*pDependentClock & chipcHw_REG_PLL_CLOCK_BYPASS_SELECT) { | 216 | if (readl(pDependentClock) & chipcHw_REG_PLL_CLOCK_BYPASS_SELECT) { |
217 | /* Use crystal clock frequency when dependent PLL clock is bypassed */ | 217 | /* Use crystal clock frequency when dependent PLL clock is bypassed */ |
218 | freq = chipcHw_XTAL_FREQ_Hz; | 218 | freq = chipcHw_XTAL_FREQ_Hz; |
219 | } else { | 219 | } else { |
220 | /* Obtain PLL clock frequency using VCO dividers */ | 220 | /* Obtain PLL clock frequency using VCO dividers */ |
221 | div = *pDependentClock & chipcHw_REG_PLL_CLOCK_MDIV_MASK; | 221 | div = readl(pDependentClock) & chipcHw_REG_PLL_CLOCK_MDIV_MASK; |
222 | freq = div ? chipcHw_divide(vcoHz, div) : 0; | 222 | freq = div ? chipcHw_divide(vcoHz, div) : 0; |
223 | } | 223 | } |
224 | break; | 224 | break; |
225 | case NON_PLL_CLOCK: | 225 | case NON_PLL_CLOCK: |
226 | if (pDependentClock == (uint32_t *) &pChipcHw->ACLKClock) { | 226 | if (pDependentClock == &pChipcHw->ACLKClock) { |
227 | freq = chipcHw_getClockFrequency (chipcHw_CLOCK_BUS); | 227 | freq = chipcHw_getClockFrequency (chipcHw_CLOCK_BUS); |
228 | } else { | 228 | } else { |
229 | if (*pDependentClock & chipcHw_REG_DIV_CLOCK_BYPASS_SELECT) { | 229 | if (readl(pDependentClock) & chipcHw_REG_DIV_CLOCK_BYPASS_SELECT) { |
230 | /* Use crystal clock frequency when dependent divider clock is bypassed */ | 230 | /* Use crystal clock frequency when dependent divider clock is bypassed */ |
231 | freq = chipcHw_XTAL_FREQ_Hz; | 231 | freq = chipcHw_XTAL_FREQ_Hz; |
232 | } else { | 232 | } else { |
233 | /* Obtain divider clock frequency using XTAL dividers */ | 233 | /* Obtain divider clock frequency using XTAL dividers */ |
234 | div = *pDependentClock & chipcHw_REG_DIV_CLOCK_DIV_MASK; | 234 | div = readl(pDependentClock) & chipcHw_REG_DIV_CLOCK_DIV_MASK; |
235 | freq = chipcHw_divide (chipcHw_XTAL_FREQ_Hz, (div ? div : 256)); | 235 | freq = chipcHw_divide (chipcHw_XTAL_FREQ_Hz, (div ? div : 256)); |
236 | } | 236 | } |
237 | } | 237 | } |
@@ -242,7 +242,7 @@ chipcHw_freq chipcHw_getClockFrequency(chipcHw_CLOCK_e clock /* [ IN ] Configur | |||
242 | freq = chipcHw_XTAL_FREQ_Hz; | 242 | freq = chipcHw_XTAL_FREQ_Hz; |
243 | } | 243 | } |
244 | 244 | ||
245 | div = *pClockCtrl & chipcHw_REG_DIV_CLOCK_DIV_MASK; | 245 | div = readl(pClockCtrl) & chipcHw_REG_DIV_CLOCK_DIV_MASK; |
246 | return chipcHw_divide(freq, (div ? div : 256)); | 246 | return chipcHw_divide(freq, (div ? div : 256)); |
247 | } | 247 | } |
248 | return 0; | 248 | return 0; |
@@ -261,9 +261,9 @@ chipcHw_freq chipcHw_getClockFrequency(chipcHw_CLOCK_e clock /* [ IN ] Configur | |||
261 | chipcHw_freq chipcHw_setClockFrequency(chipcHw_CLOCK_e clock, /* [ IN ] Configurable clock */ | 261 | chipcHw_freq chipcHw_setClockFrequency(chipcHw_CLOCK_e clock, /* [ IN ] Configurable clock */ |
262 | uint32_t freq /* [ IN ] Clock frequency in Hz */ | 262 | uint32_t freq /* [ IN ] Clock frequency in Hz */ |
263 | ) { | 263 | ) { |
264 | volatile uint32_t *pPLLReg = (uint32_t *) 0x0; | 264 | uint32_t __iomem *pPLLReg = NULL; |
265 | volatile uint32_t *pClockCtrl = (uint32_t *) 0x0; | 265 | uint32_t __iomem *pClockCtrl = NULL; |
266 | volatile uint32_t *pDependentClock = (uint32_t *) 0x0; | 266 | uint32_t __iomem *pDependentClock = NULL; |
267 | uint32_t vcoFreqPll1Hz = 0; /* Effective VCO frequency for PLL1 in Hz */ | 267 | uint32_t vcoFreqPll1Hz = 0; /* Effective VCO frequency for PLL1 in Hz */ |
268 | uint32_t desVcoFreqPll1Hz = 0; /* Desired VCO frequency for PLL1 in Hz */ | 268 | uint32_t desVcoFreqPll1Hz = 0; /* Desired VCO frequency for PLL1 in Hz */ |
269 | uint32_t vcoFreqPll2Hz = 0; /* Effective VCO frequency for PLL2 in Hz */ | 269 | uint32_t vcoFreqPll2Hz = 0; /* Effective VCO frequency for PLL2 in Hz */ |
@@ -272,12 +272,12 @@ chipcHw_freq chipcHw_setClockFrequency(chipcHw_CLOCK_e clock, /* [ IN ] Configu | |||
272 | uint32_t desVcoHz = 0; | 272 | uint32_t desVcoHz = 0; |
273 | 273 | ||
274 | /* Get VCO frequencies */ | 274 | /* Get VCO frequencies */ |
275 | if ((pChipcHw->PLLPreDivider & chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_MASK) != chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_INTEGER) { | 275 | if ((readl(&pChipcHw->PLLPreDivider) & chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_MASK) != chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_INTEGER) { |
276 | uint64_t adjustFreq = 0; | 276 | uint64_t adjustFreq = 0; |
277 | 277 | ||
278 | vcoFreqPll1Hz = chipcHw_XTAL_FREQ_Hz * | 278 | vcoFreqPll1Hz = chipcHw_XTAL_FREQ_Hz * |
279 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * | 279 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * |
280 | ((pChipcHw->PLLPreDivider & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> | 280 | ((readl(&pChipcHw->PLLPreDivider) & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> |
281 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); | 281 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); |
282 | 282 | ||
283 | /* Adjusted frequency due to chipcHw_REG_PLL_DIVIDER_NDIV_f_SS */ | 283 | /* Adjusted frequency due to chipcHw_REG_PLL_DIVIDER_NDIV_f_SS */ |
@@ -289,16 +289,16 @@ chipcHw_freq chipcHw_setClockFrequency(chipcHw_CLOCK_e clock, /* [ IN ] Configu | |||
289 | /* Desired VCO frequency */ | 289 | /* Desired VCO frequency */ |
290 | desVcoFreqPll1Hz = chipcHw_XTAL_FREQ_Hz * | 290 | desVcoFreqPll1Hz = chipcHw_XTAL_FREQ_Hz * |
291 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * | 291 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * |
292 | (((pChipcHw->PLLPreDivider & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> | 292 | (((readl(&pChipcHw->PLLPreDivider) & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> |
293 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT) + 1); | 293 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT) + 1); |
294 | } else { | 294 | } else { |
295 | vcoFreqPll1Hz = desVcoFreqPll1Hz = chipcHw_XTAL_FREQ_Hz * | 295 | vcoFreqPll1Hz = desVcoFreqPll1Hz = chipcHw_XTAL_FREQ_Hz * |
296 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * | 296 | chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * |
297 | ((pChipcHw->PLLPreDivider & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> | 297 | ((readl(&pChipcHw->PLLPreDivider) & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> |
298 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); | 298 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); |
299 | } | 299 | } |
300 | vcoFreqPll2Hz = chipcHw_XTAL_FREQ_Hz * chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * | 300 | vcoFreqPll2Hz = chipcHw_XTAL_FREQ_Hz * chipcHw_divide(chipcHw_REG_PLL_PREDIVIDER_P1, chipcHw_REG_PLL_PREDIVIDER_P2) * |
301 | ((pChipcHw->PLLPreDivider2 & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> | 301 | ((readl(&pChipcHw->PLLPreDivider2) & chipcHw_REG_PLL_PREDIVIDER_NDIV_MASK) >> |
302 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); | 302 | chipcHw_REG_PLL_PREDIVIDER_NDIV_SHIFT); |
303 | 303 | ||
304 | switch (clock) { | 304 | switch (clock) { |
@@ -307,8 +307,7 @@ chipcHw_freq chipcHw_setClockFrequency(chipcHw_CLOCK_e clock, /* [ IN ] Configu | |||
307 | { | 307 | { |
308 | REG_LOCAL_IRQ_SAVE; | 308 | REG_LOCAL_IRQ_SAVE; |
309 | /* Dvide DDR_phy by two to obtain DDR_ctrl clock */ | 309 | /* Dvide DDR_phy by two to obtain DDR_ctrl clock */ |
310 | pChipcHw->DDRClock = (pChipcHw->DDRClock & ~chipcHw_REG_PLL_CLOCK_TO_BUS_RATIO_MASK) | ((((freq / 2) / chipcHw_getClockFrequency(chipcHw_CLOCK_BUS)) - 1) | 310 | writel((readl(&pChipcHw->DDRClock) & ~chipcHw_REG_PLL_CLOCK_TO_BUS_RATIO_MASK) | ((((freq / 2) / chipcHw_getClockFrequency(chipcHw_CLOCK_BUS)) - 1) << chipcHw_REG_PLL_CLOCK_TO_BUS_RATIO_SHIFT), &pChipcHw->DDRClock); |
311 | << chipcHw_REG_PLL_CLOCK_TO_BUS_RATIO_SHIFT); | ||
312 | REG_LOCAL_IRQ_RESTORE; | 311 | REG_LOCAL_IRQ_RESTORE; |
313 | } | 312 | } |
314 | pPLLReg = &pChipcHw->DDRClock; | 313 | pPLLReg = &pChipcHw->DDRClock; |
@@ -329,8 +328,7 @@ chipcHw_freq chipcHw_setClockFrequency(chipcHw_CLOCK_e clock, /* [ IN ] Configu | |||
329 | /* Configure the VPM:BUS ratio settings */ | 328 | /* Configure the VPM:BUS ratio settings */ |
330 | { | 329 | { |
331 | REG_LOCAL_IRQ_SAVE; | 330 | REG_LOCAL_IRQ_SAVE; |
332 | pChipcHw->VPMClock = (pChipcHw->VPMClock & ~chipcHw_REG_PLL_CLOCK_TO_BUS_RATIO_MASK) | ((chipcHw_divide (freq, chipcHw_getClockFrequency(chipcHw_CLOCK_BUS)) - 1) | 331 | writel((readl(&pChipcHw->VPMClock) & ~chipcHw_REG_PLL_CLOCK_TO_BUS_RATIO_MASK) | ((chipcHw_divide (freq, chipcHw_getClockFrequency(chipcHw_CLOCK_BUS)) - 1) << chipcHw_REG_PLL_CLOCK_TO_BUS_RATIO_SHIFT), &pChipcHw->VPMClock); |
333 | << chipcHw_REG_PLL_CLOCK_TO_BUS_RATIO_SHIFT); | ||
334 | REG_LOCAL_IRQ_RESTORE; | 332 | REG_LOCAL_IRQ_RESTORE; |
335 | } | 333 | } |
336 | pPLLReg = &pChipcHw->VPMClock; | 334 | pPLLReg = &pChipcHw->VPMClock; |
@@ -428,9 +426,9 @@ chipcHw_freq chipcHw_setClockFrequency(chipcHw_CLOCK_e clock, /* [ IN ] Configu | |||
428 | /* For DDR settings use only the PLL divider clock */ | 426 | /* For DDR settings use only the PLL divider clock */ |
429 | if (pPLLReg == &pChipcHw->DDRClock) { | 427 | if (pPLLReg == &pChipcHw->DDRClock) { |
430 | /* Set M1DIV for PLL1, which controls the DDR clock */ | 428 | /* Set M1DIV for PLL1, which controls the DDR clock */ |
431 | reg32_write(&pChipcHw->PLLDivider, (pChipcHw->PLLDivider & 0x00FFFFFF) | ((chipcHw_REG_PLL_DIVIDER_MDIV (desVcoHz, freq)) << 24)); | 429 | reg32_write(&pChipcHw->PLLDivider, (readl(&pChipcHw->PLLDivider) & 0x00FFFFFF) | ((chipcHw_REG_PLL_DIVIDER_MDIV (desVcoHz, freq)) << 24)); |
432 | /* Calculate expected frequency */ | 430 | /* Calculate expected frequency */ |
433 | freq = chipcHw_divide(vcoHz, (((pChipcHw->PLLDivider & 0xFF000000) >> 24) ? ((pChipcHw->PLLDivider & 0xFF000000) >> 24) : 256)); | 431 | freq = chipcHw_divide(vcoHz, (((readl(&pChipcHw->PLLDivider) & 0xFF000000) >> 24) ? ((readl(&pChipcHw->PLLDivider) & 0xFF000000) >> 24) : 256)); |
434 | } else { | 432 | } else { |
435 | /* From chip revision number B0, LCD clock is internally divided by 2 */ | 433 | /* From chip revision number B0, LCD clock is internally divided by 2 */ |
436 | if ((pPLLReg == &pChipcHw->LCDClock) && (chipcHw_getChipRevisionNumber() != chipcHw_REV_NUMBER_A0)) { | 434 | if ((pPLLReg == &pChipcHw->LCDClock) && (chipcHw_getChipRevisionNumber() != chipcHw_REV_NUMBER_A0)) { |
@@ -441,7 +439,7 @@ chipcHw_freq chipcHw_setClockFrequency(chipcHw_CLOCK_e clock, /* [ IN ] Configu | |||
441 | reg32_modify_and(pPLLReg, ~(chipcHw_REG_PLL_CLOCK_MDIV_MASK)); | 439 | reg32_modify_and(pPLLReg, ~(chipcHw_REG_PLL_CLOCK_MDIV_MASK)); |
442 | reg32_modify_or(pPLLReg, chipcHw_REG_PLL_DIVIDER_MDIV(desVcoHz, freq)); | 440 | reg32_modify_or(pPLLReg, chipcHw_REG_PLL_DIVIDER_MDIV(desVcoHz, freq)); |
443 | /* Calculate expected frequency */ | 441 | /* Calculate expected frequency */ |
444 | freq = chipcHw_divide(vcoHz, ((*(pPLLReg) & chipcHw_REG_PLL_CLOCK_MDIV_MASK) ? (*(pPLLReg) & chipcHw_REG_PLL_CLOCK_MDIV_MASK) : 256)); | 442 | freq = chipcHw_divide(vcoHz, ((readl(pPLLReg) & chipcHw_REG_PLL_CLOCK_MDIV_MASK) ? (readl(pPLLReg) & chipcHw_REG_PLL_CLOCK_MDIV_MASK) : 256)); |
445 | } | 443 | } |
446 | /* Wait for for atleast 200ns as per the protocol to change frequency */ | 444 | /* Wait for for atleast 200ns as per the protocol to change frequency */ |
447 | udelay(1); | 445 | udelay(1); |
@@ -460,16 +458,16 @@ chipcHw_freq chipcHw_setClockFrequency(chipcHw_CLOCK_e clock, /* [ IN ] Configu | |||
460 | if (pDependentClock) { | 458 | if (pDependentClock) { |
461 | switch (dependentClockType) { | 459 | switch (dependentClockType) { |
462 | case PLL_CLOCK: | 460 | case PLL_CLOCK: |
463 | divider = chipcHw_divide(chipcHw_divide (desVcoHz, (*pDependentClock & chipcHw_REG_PLL_CLOCK_MDIV_MASK)), freq); | 461 | divider = chipcHw_divide(chipcHw_divide (desVcoHz, (readl(pDependentClock) & chipcHw_REG_PLL_CLOCK_MDIV_MASK)), freq); |
464 | break; | 462 | break; |
465 | case NON_PLL_CLOCK: | 463 | case NON_PLL_CLOCK: |
466 | { | 464 | { |
467 | uint32_t sourceClock = 0; | 465 | uint32_t sourceClock = 0; |
468 | 466 | ||
469 | if (pDependentClock == (uint32_t *) &pChipcHw->ACLKClock) { | 467 | if (pDependentClock == &pChipcHw->ACLKClock) { |
470 | sourceClock = chipcHw_getClockFrequency (chipcHw_CLOCK_BUS); | 468 | sourceClock = chipcHw_getClockFrequency (chipcHw_CLOCK_BUS); |
471 | } else { | 469 | } else { |
472 | uint32_t div = *pDependentClock & chipcHw_REG_DIV_CLOCK_DIV_MASK; | 470 | uint32_t div = readl(pDependentClock) & chipcHw_REG_DIV_CLOCK_DIV_MASK; |
473 | sourceClock = chipcHw_divide (chipcHw_XTAL_FREQ_Hz, ((div) ? div : 256)); | 471 | sourceClock = chipcHw_divide (chipcHw_XTAL_FREQ_Hz, ((div) ? div : 256)); |
474 | } | 472 | } |
475 | divider = chipcHw_divide(sourceClock, freq); | 473 | divider = chipcHw_divide(sourceClock, freq); |
@@ -483,7 +481,7 @@ chipcHw_freq chipcHw_setClockFrequency(chipcHw_CLOCK_e clock, /* [ IN ] Configu | |||
483 | if (divider) { | 481 | if (divider) { |
484 | REG_LOCAL_IRQ_SAVE; | 482 | REG_LOCAL_IRQ_SAVE; |
485 | /* Set the divider to obtain the required frequency */ | 483 | /* Set the divider to obtain the required frequency */ |
486 | *pClockCtrl = (*pClockCtrl & (~chipcHw_REG_DIV_CLOCK_DIV_MASK)) | (((divider > 256) ? chipcHw_REG_DIV_CLOCK_DIV_256 : divider) & chipcHw_REG_DIV_CLOCK_DIV_MASK); | 484 | writel((readl(pClockCtrl) & (~chipcHw_REG_DIV_CLOCK_DIV_MASK)) | (((divider > 256) ? chipcHw_REG_DIV_CLOCK_DIV_256 : divider) & chipcHw_REG_DIV_CLOCK_DIV_MASK), pClockCtrl); |
487 | REG_LOCAL_IRQ_RESTORE; | 485 | REG_LOCAL_IRQ_RESTORE; |
488 | return freq; | 486 | return freq; |
489 | } | 487 | } |
@@ -515,25 +513,26 @@ static int vpmPhaseAlignA0(void) | |||
515 | int count = 0; | 513 | int count = 0; |
516 | 514 | ||
517 | for (iter = 0; (iter < MAX_PHASE_ALIGN_ATTEMPTS) && (adjustCount < MAX_PHASE_ADJUST_COUNT); iter++) { | 515 | for (iter = 0; (iter < MAX_PHASE_ALIGN_ATTEMPTS) && (adjustCount < MAX_PHASE_ADJUST_COUNT); iter++) { |
518 | phaseControl = (pChipcHw->VPMClock & chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK) >> chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT; | 516 | phaseControl = (readl(&pChipcHw->VPMClock) & chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK) >> chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT; |
519 | phaseValue = 0; | 517 | phaseValue = 0; |
520 | prevPhaseComp = 0; | 518 | prevPhaseComp = 0; |
521 | 519 | ||
522 | /* Step 1: Look for falling PH_COMP transition */ | 520 | /* Step 1: Look for falling PH_COMP transition */ |
523 | 521 | ||
524 | /* Read the contents of VPM Clock resgister */ | 522 | /* Read the contents of VPM Clock resgister */ |
525 | phaseValue = pChipcHw->VPMClock; | 523 | phaseValue = readl(&pChipcHw->VPMClock); |
526 | do { | 524 | do { |
527 | /* Store previous value of phase comparator */ | 525 | /* Store previous value of phase comparator */ |
528 | prevPhaseComp = phaseValue & chipcHw_REG_PLL_CLOCK_PHASE_COMP; | 526 | prevPhaseComp = phaseValue & chipcHw_REG_PLL_CLOCK_PHASE_COMP; |
529 | /* Change the value of PH_CTRL. */ | 527 | /* Change the value of PH_CTRL. */ |
530 | reg32_write(&pChipcHw->VPMClock, (pChipcHw->VPMClock & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | 528 | reg32_write(&pChipcHw->VPMClock, |
529 | (readl(&pChipcHw->VPMClock) & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | ||
531 | /* Wait atleast 20 ns */ | 530 | /* Wait atleast 20 ns */ |
532 | udelay(1); | 531 | udelay(1); |
533 | /* Toggle the LOAD_CH after phase control is written. */ | 532 | /* Toggle the LOAD_CH after phase control is written. */ |
534 | pChipcHw->VPMClock ^= chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE; | 533 | writel(readl(&pChipcHw->VPMClock) ^ chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE, &pChipcHw->VPMClock); |
535 | /* Read the contents of VPM Clock resgister. */ | 534 | /* Read the contents of VPM Clock resgister. */ |
536 | phaseValue = pChipcHw->VPMClock; | 535 | phaseValue = readl(&pChipcHw->VPMClock); |
537 | 536 | ||
538 | if ((phaseValue & chipcHw_REG_PLL_CLOCK_PHASE_COMP) == 0x0) { | 537 | if ((phaseValue & chipcHw_REG_PLL_CLOCK_PHASE_COMP) == 0x0) { |
539 | phaseControl = (0x3F & (phaseControl - 1)); | 538 | phaseControl = (0x3F & (phaseControl - 1)); |
@@ -557,12 +556,13 @@ static int vpmPhaseAlignA0(void) | |||
557 | 556 | ||
558 | for (count = 0; (count < 5) && ((phaseValue & chipcHw_REG_PLL_CLOCK_PHASE_COMP) == 0); count++) { | 557 | for (count = 0; (count < 5) && ((phaseValue & chipcHw_REG_PLL_CLOCK_PHASE_COMP) == 0); count++) { |
559 | phaseControl = (0x3F & (phaseControl + 1)); | 558 | phaseControl = (0x3F & (phaseControl + 1)); |
560 | reg32_write(&pChipcHw->VPMClock, (pChipcHw->VPMClock & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | 559 | reg32_write(&pChipcHw->VPMClock, |
560 | (readl(&pChipcHw->VPMClock) & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | ||
561 | /* Wait atleast 20 ns */ | 561 | /* Wait atleast 20 ns */ |
562 | udelay(1); | 562 | udelay(1); |
563 | /* Toggle the LOAD_CH after phase control is written. */ | 563 | /* Toggle the LOAD_CH after phase control is written. */ |
564 | pChipcHw->VPMClock ^= chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE; | 564 | writel(readl(&pChipcHw->VPMClock) ^ chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE, &pChipcHw->VPMClock); |
565 | phaseValue = pChipcHw->VPMClock; | 565 | phaseValue = readl(&pChipcHw->VPMClock); |
566 | /* Count number of adjustment made */ | 566 | /* Count number of adjustment made */ |
567 | adjustCount++; | 567 | adjustCount++; |
568 | } | 568 | } |
@@ -581,12 +581,13 @@ static int vpmPhaseAlignA0(void) | |||
581 | 581 | ||
582 | for (count = 0; (count < 3) && ((phaseValue & chipcHw_REG_PLL_CLOCK_PHASE_COMP) == 0); count++) { | 582 | for (count = 0; (count < 3) && ((phaseValue & chipcHw_REG_PLL_CLOCK_PHASE_COMP) == 0); count++) { |
583 | phaseControl = (0x3F & (phaseControl - 1)); | 583 | phaseControl = (0x3F & (phaseControl - 1)); |
584 | reg32_write(&pChipcHw->VPMClock, (pChipcHw->VPMClock & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | 584 | reg32_write(&pChipcHw->VPMClock, |
585 | (readl(&pChipcHw->VPMClock) & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | ||
585 | /* Wait atleast 20 ns */ | 586 | /* Wait atleast 20 ns */ |
586 | udelay(1); | 587 | udelay(1); |
587 | /* Toggle the LOAD_CH after phase control is written. */ | 588 | /* Toggle the LOAD_CH after phase control is written. */ |
588 | pChipcHw->VPMClock ^= chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE; | 589 | writel(readl(&pChipcHw->VPMClock) ^ chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE, &pChipcHw->VPMClock); |
589 | phaseValue = pChipcHw->VPMClock; | 590 | phaseValue = readl(&pChipcHw->VPMClock); |
590 | /* Count number of adjustment made */ | 591 | /* Count number of adjustment made */ |
591 | adjustCount++; | 592 | adjustCount++; |
592 | } | 593 | } |
@@ -605,12 +606,13 @@ static int vpmPhaseAlignA0(void) | |||
605 | 606 | ||
606 | for (count = 0; (count < 5); count++) { | 607 | for (count = 0; (count < 5); count++) { |
607 | phaseControl = (0x3F & (phaseControl - 1)); | 608 | phaseControl = (0x3F & (phaseControl - 1)); |
608 | reg32_write(&pChipcHw->VPMClock, (pChipcHw->VPMClock & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | 609 | reg32_write(&pChipcHw->VPMClock, |
610 | (readl(&pChipcHw->VPMClock) & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | ||
609 | /* Wait atleast 20 ns */ | 611 | /* Wait atleast 20 ns */ |
610 | udelay(1); | 612 | udelay(1); |
611 | /* Toggle the LOAD_CH after phase control is written. */ | 613 | /* Toggle the LOAD_CH after phase control is written. */ |
612 | pChipcHw->VPMClock ^= chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE; | 614 | writel(readl(&pChipcHw->VPMClock) ^ chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE, &pChipcHw->VPMClock); |
613 | phaseValue = pChipcHw->VPMClock; | 615 | phaseValue = readl(&pChipcHw->VPMClock); |
614 | /* Count number of adjustment made */ | 616 | /* Count number of adjustment made */ |
615 | adjustCount++; | 617 | adjustCount++; |
616 | } | 618 | } |
@@ -631,14 +633,14 @@ static int vpmPhaseAlignA0(void) | |||
631 | /* Store previous value of phase comparator */ | 633 | /* Store previous value of phase comparator */ |
632 | prevPhaseComp = phaseValue; | 634 | prevPhaseComp = phaseValue; |
633 | /* Change the value of PH_CTRL. */ | 635 | /* Change the value of PH_CTRL. */ |
634 | reg32_write(&pChipcHw->VPMClock, (pChipcHw->VPMClock & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | 636 | reg32_write(&pChipcHw->VPMClock, |
637 | (readl(&pChipcHw->VPMClock) & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | ||
635 | /* Wait atleast 20 ns */ | 638 | /* Wait atleast 20 ns */ |
636 | udelay(1); | 639 | udelay(1); |
637 | /* Toggle the LOAD_CH after phase control is written. */ | 640 | /* Toggle the LOAD_CH after phase control is written. */ |
638 | pChipcHw->VPMClock ^= | 641 | writel(readl(&pChipcHw->VPMClock) ^ chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE, &pChipcHw->VPMClock); |
639 | chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE; | ||
640 | /* Read the contents of VPM Clock resgister. */ | 642 | /* Read the contents of VPM Clock resgister. */ |
641 | phaseValue = pChipcHw->VPMClock; | 643 | phaseValue = readl(&pChipcHw->VPMClock); |
642 | 644 | ||
643 | if ((phaseValue & chipcHw_REG_PLL_CLOCK_PHASE_COMP) == 0x0) { | 645 | if ((phaseValue & chipcHw_REG_PLL_CLOCK_PHASE_COMP) == 0x0) { |
644 | phaseControl = (0x3F & (phaseControl - 1)); | 646 | phaseControl = (0x3F & (phaseControl - 1)); |
@@ -661,13 +663,13 @@ static int vpmPhaseAlignA0(void) | |||
661 | } | 663 | } |
662 | 664 | ||
663 | /* For VPM Phase should be perfectly aligned. */ | 665 | /* For VPM Phase should be perfectly aligned. */ |
664 | phaseControl = (((pChipcHw->VPMClock >> chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT) - 1) & 0x3F); | 666 | phaseControl = (((readl(&pChipcHw->VPMClock) >> chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT) - 1) & 0x3F); |
665 | { | 667 | { |
666 | REG_LOCAL_IRQ_SAVE; | 668 | REG_LOCAL_IRQ_SAVE; |
667 | 669 | ||
668 | pChipcHw->VPMClock = (pChipcHw->VPMClock & ~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT); | 670 | writel((readl(&pChipcHw->VPMClock) & ~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT), &pChipcHw->VPMClock); |
669 | /* Load new phase value */ | 671 | /* Load new phase value */ |
670 | pChipcHw->VPMClock ^= chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE; | 672 | writel(readl(&pChipcHw->VPMClock) ^ chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE, &pChipcHw->VPMClock); |
671 | 673 | ||
672 | REG_LOCAL_IRQ_RESTORE; | 674 | REG_LOCAL_IRQ_RESTORE; |
673 | } | 675 | } |
@@ -697,7 +699,7 @@ int chipcHw_vpmPhaseAlign(void) | |||
697 | int adjustCount = 0; | 699 | int adjustCount = 0; |
698 | 700 | ||
699 | /* Disable VPM access */ | 701 | /* Disable VPM access */ |
700 | pChipcHw->Spare1 &= ~chipcHw_REG_SPARE1_VPM_BUS_ACCESS_ENABLE; | 702 | writel(readl(&pChipcHw->Spare1) & ~chipcHw_REG_SPARE1_VPM_BUS_ACCESS_ENABLE, &pChipcHw->Spare1); |
701 | /* Disable HW VPM phase alignment */ | 703 | /* Disable HW VPM phase alignment */ |
702 | chipcHw_vpmHwPhaseAlignDisable(); | 704 | chipcHw_vpmHwPhaseAlignDisable(); |
703 | /* Enable SW VPM phase alignment */ | 705 | /* Enable SW VPM phase alignment */ |
@@ -715,23 +717,24 @@ int chipcHw_vpmPhaseAlign(void) | |||
715 | phaseControl--; | 717 | phaseControl--; |
716 | } else { | 718 | } else { |
717 | /* Enable VPM access */ | 719 | /* Enable VPM access */ |
718 | pChipcHw->Spare1 |= chipcHw_REG_SPARE1_VPM_BUS_ACCESS_ENABLE; | 720 | writel(readl(&pChipcHw->Spare1) | chipcHw_REG_SPARE1_VPM_BUS_ACCESS_ENABLE, &pChipcHw->Spare1); |
719 | /* Return adjust count */ | 721 | /* Return adjust count */ |
720 | return adjustCount; | 722 | return adjustCount; |
721 | } | 723 | } |
722 | /* Change the value of PH_CTRL. */ | 724 | /* Change the value of PH_CTRL. */ |
723 | reg32_write(&pChipcHw->VPMClock, (pChipcHw->VPMClock & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | 725 | reg32_write(&pChipcHw->VPMClock, |
726 | (readl(&pChipcHw->VPMClock) & (~chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_MASK)) | (phaseControl << chipcHw_REG_PLL_CLOCK_PHASE_CONTROL_SHIFT)); | ||
724 | /* Wait atleast 20 ns */ | 727 | /* Wait atleast 20 ns */ |
725 | udelay(1); | 728 | udelay(1); |
726 | /* Toggle the LOAD_CH after phase control is written. */ | 729 | /* Toggle the LOAD_CH after phase control is written. */ |
727 | pChipcHw->VPMClock ^= chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE; | 730 | writel(readl(&pChipcHw->VPMClock) ^ chipcHw_REG_PLL_CLOCK_PHASE_UPDATE_ENABLE, &pChipcHw->VPMClock); |
728 | /* Count adjustment */ | 731 | /* Count adjustment */ |
729 | adjustCount++; | 732 | adjustCount++; |
730 | } | 733 | } |
731 | } | 734 | } |
732 | 735 | ||
733 | /* Disable VPM access */ | 736 | /* Disable VPM access */ |
734 | pChipcHw->Spare1 &= ~chipcHw_REG_SPARE1_VPM_BUS_ACCESS_ENABLE; | 737 | writel(readl(&pChipcHw->Spare1) & ~chipcHw_REG_SPARE1_VPM_BUS_ACCESS_ENABLE, &pChipcHw->Spare1); |
735 | return -1; | 738 | return -1; |
736 | } | 739 | } |
737 | 740 | ||
diff --git a/arch/arm/mach-bcmring/csp/chipc/chipcHw_init.c b/arch/arm/mach-bcmring/csp/chipc/chipcHw_init.c index 367df75d4bb3..8377d8054168 100644 --- a/arch/arm/mach-bcmring/csp/chipc/chipcHw_init.c +++ b/arch/arm/mach-bcmring/csp/chipc/chipcHw_init.c | |||
@@ -26,15 +26,15 @@ | |||
26 | 26 | ||
27 | /* ---- Include Files ---------------------------------------------------- */ | 27 | /* ---- Include Files ---------------------------------------------------- */ |
28 | 28 | ||
29 | #include <csp/errno.h> | 29 | #include <linux/errno.h> |
30 | #include <csp/stdint.h> | 30 | #include <linux/types.h> |
31 | #include <csp/module.h> | 31 | #include <linux/export.h> |
32 | 32 | ||
33 | #include <mach/csp/chipcHw_def.h> | 33 | #include <mach/csp/chipcHw_def.h> |
34 | #include <mach/csp/chipcHw_inline.h> | 34 | #include <mach/csp/chipcHw_inline.h> |
35 | 35 | ||
36 | #include <csp/reg.h> | 36 | #include <mach/csp/reg.h> |
37 | #include <csp/delay.h> | 37 | #include <linux/delay.h> |
38 | /* ---- Private Constants and Types --------------------------------------- */ | 38 | /* ---- Private Constants and Types --------------------------------------- */ |
39 | 39 | ||
40 | /* | 40 | /* |
@@ -73,9 +73,9 @@ void chipcHw_pll2Enable(uint32_t vcoFreqHz) | |||
73 | 73 | ||
74 | { | 74 | { |
75 | REG_LOCAL_IRQ_SAVE; | 75 | REG_LOCAL_IRQ_SAVE; |
76 | pChipcHw->PLLConfig2 = | 76 | writel(chipcHw_REG_PLL_CONFIG_D_RESET | |
77 | chipcHw_REG_PLL_CONFIG_D_RESET | | 77 | chipcHw_REG_PLL_CONFIG_A_RESET, |
78 | chipcHw_REG_PLL_CONFIG_A_RESET; | 78 | &pChipcHw->PLLConfig2); |
79 | 79 | ||
80 | pllPreDivider2 = chipcHw_REG_PLL_PREDIVIDER_POWER_DOWN | | 80 | pllPreDivider2 = chipcHw_REG_PLL_PREDIVIDER_POWER_DOWN | |
81 | chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_INTEGER | | 81 | chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_INTEGER | |
@@ -87,28 +87,30 @@ void chipcHw_pll2Enable(uint32_t vcoFreqHz) | |||
87 | chipcHw_REG_PLL_PREDIVIDER_P2_SHIFT); | 87 | chipcHw_REG_PLL_PREDIVIDER_P2_SHIFT); |
88 | 88 | ||
89 | /* Enable CHIPC registers to control the PLL */ | 89 | /* Enable CHIPC registers to control the PLL */ |
90 | pChipcHw->PLLStatus |= chipcHw_REG_PLL_STATUS_CONTROL_ENABLE; | 90 | writel(readl(&pChipcHw->PLLStatus) | chipcHw_REG_PLL_STATUS_CONTROL_ENABLE, &pChipcHw->PLLStatus); |
91 | 91 | ||
92 | /* Set pre divider to get desired VCO frequency */ | 92 | /* Set pre divider to get desired VCO frequency */ |
93 | pChipcHw->PLLPreDivider2 = pllPreDivider2; | 93 | writel(pllPreDivider2, &pChipcHw->PLLPreDivider2); |
94 | /* Set NDIV Frac */ | 94 | /* Set NDIV Frac */ |
95 | pChipcHw->PLLDivider2 = chipcHw_REG_PLL_DIVIDER_NDIV_f; | 95 | writel(chipcHw_REG_PLL_DIVIDER_NDIV_f, &pChipcHw->PLLDivider2); |
96 | 96 | ||
97 | /* This has to be removed once the default values are fixed for PLL2. */ | 97 | /* This has to be removed once the default values are fixed for PLL2. */ |
98 | pChipcHw->PLLControl12 = 0x38000700; | 98 | writel(0x38000700, &pChipcHw->PLLControl12); |
99 | pChipcHw->PLLControl22 = 0x00000015; | 99 | writel(0x00000015, &pChipcHw->PLLControl22); |
100 | 100 | ||
101 | /* Reset PLL2 */ | 101 | /* Reset PLL2 */ |
102 | if (vcoFreqHz > chipcHw_REG_PLL_CONFIG_VCO_SPLIT_FREQ) { | 102 | if (vcoFreqHz > chipcHw_REG_PLL_CONFIG_VCO_SPLIT_FREQ) { |
103 | pChipcHw->PLLConfig2 = chipcHw_REG_PLL_CONFIG_D_RESET | | 103 | writel(chipcHw_REG_PLL_CONFIG_D_RESET | |
104 | chipcHw_REG_PLL_CONFIG_A_RESET | | 104 | chipcHw_REG_PLL_CONFIG_A_RESET | |
105 | chipcHw_REG_PLL_CONFIG_VCO_1601_3200 | | 105 | chipcHw_REG_PLL_CONFIG_VCO_1601_3200 | |
106 | chipcHw_REG_PLL_CONFIG_POWER_DOWN; | 106 | chipcHw_REG_PLL_CONFIG_POWER_DOWN, |
107 | &pChipcHw->PLLConfig2); | ||
107 | } else { | 108 | } else { |
108 | pChipcHw->PLLConfig2 = chipcHw_REG_PLL_CONFIG_D_RESET | | 109 | writel(chipcHw_REG_PLL_CONFIG_D_RESET | |
109 | chipcHw_REG_PLL_CONFIG_A_RESET | | 110 | chipcHw_REG_PLL_CONFIG_A_RESET | |
110 | chipcHw_REG_PLL_CONFIG_VCO_800_1600 | | 111 | chipcHw_REG_PLL_CONFIG_VCO_800_1600 | |
111 | chipcHw_REG_PLL_CONFIG_POWER_DOWN; | 112 | chipcHw_REG_PLL_CONFIG_POWER_DOWN, |
113 | &pChipcHw->PLLConfig2); | ||
112 | } | 114 | } |
113 | REG_LOCAL_IRQ_RESTORE; | 115 | REG_LOCAL_IRQ_RESTORE; |
114 | } | 116 | } |
@@ -119,22 +121,25 @@ void chipcHw_pll2Enable(uint32_t vcoFreqHz) | |||
119 | { | 121 | { |
120 | REG_LOCAL_IRQ_SAVE; | 122 | REG_LOCAL_IRQ_SAVE; |
121 | /* Remove analog reset and Power on the PLL */ | 123 | /* Remove analog reset and Power on the PLL */ |
122 | pChipcHw->PLLConfig2 &= | 124 | writel(readl(&pChipcHw->PLLConfig2) & |
123 | ~(chipcHw_REG_PLL_CONFIG_A_RESET | | 125 | ~(chipcHw_REG_PLL_CONFIG_A_RESET | |
124 | chipcHw_REG_PLL_CONFIG_POWER_DOWN); | 126 | chipcHw_REG_PLL_CONFIG_POWER_DOWN), |
127 | &pChipcHw->PLLConfig2); | ||
125 | 128 | ||
126 | REG_LOCAL_IRQ_RESTORE; | 129 | REG_LOCAL_IRQ_RESTORE; |
127 | 130 | ||
128 | } | 131 | } |
129 | 132 | ||
130 | /* Wait until PLL is locked */ | 133 | /* Wait until PLL is locked */ |
131 | while (!(pChipcHw->PLLStatus2 & chipcHw_REG_PLL_STATUS_LOCKED)) | 134 | while (!(readl(&pChipcHw->PLLStatus2) & chipcHw_REG_PLL_STATUS_LOCKED)) |
132 | ; | 135 | ; |
133 | 136 | ||
134 | { | 137 | { |
135 | REG_LOCAL_IRQ_SAVE; | 138 | REG_LOCAL_IRQ_SAVE; |
136 | /* Remove digital reset */ | 139 | /* Remove digital reset */ |
137 | pChipcHw->PLLConfig2 &= ~chipcHw_REG_PLL_CONFIG_D_RESET; | 140 | writel(readl(&pChipcHw->PLLConfig2) & |
141 | ~chipcHw_REG_PLL_CONFIG_D_RESET, | ||
142 | &pChipcHw->PLLConfig2); | ||
138 | 143 | ||
139 | REG_LOCAL_IRQ_RESTORE; | 144 | REG_LOCAL_IRQ_RESTORE; |
140 | } | 145 | } |
@@ -157,9 +162,9 @@ void chipcHw_pll1Enable(uint32_t vcoFreqHz, chipcHw_SPREAD_SPECTRUM_e ssSupport) | |||
157 | { | 162 | { |
158 | REG_LOCAL_IRQ_SAVE; | 163 | REG_LOCAL_IRQ_SAVE; |
159 | 164 | ||
160 | pChipcHw->PLLConfig = | 165 | writel(chipcHw_REG_PLL_CONFIG_D_RESET | |
161 | chipcHw_REG_PLL_CONFIG_D_RESET | | 166 | chipcHw_REG_PLL_CONFIG_A_RESET, |
162 | chipcHw_REG_PLL_CONFIG_A_RESET; | 167 | &pChipcHw->PLLConfig); |
163 | /* Setting VCO frequency */ | 168 | /* Setting VCO frequency */ |
164 | if (ssSupport == chipcHw_SPREAD_SPECTRUM_ALLOW) { | 169 | if (ssSupport == chipcHw_SPREAD_SPECTRUM_ALLOW) { |
165 | pllPreDivider = | 170 | pllPreDivider = |
@@ -182,30 +187,22 @@ void chipcHw_pll1Enable(uint32_t vcoFreqHz, chipcHw_SPREAD_SPECTRUM_e ssSupport) | |||
182 | } | 187 | } |
183 | 188 | ||
184 | /* Enable CHIPC registers to control the PLL */ | 189 | /* Enable CHIPC registers to control the PLL */ |
185 | pChipcHw->PLLStatus |= chipcHw_REG_PLL_STATUS_CONTROL_ENABLE; | 190 | writel(readl(&pChipcHw->PLLStatus) | chipcHw_REG_PLL_STATUS_CONTROL_ENABLE, &pChipcHw->PLLStatus); |
186 | 191 | ||
187 | /* Set pre divider to get desired VCO frequency */ | 192 | /* Set pre divider to get desired VCO frequency */ |
188 | pChipcHw->PLLPreDivider = pllPreDivider; | 193 | writel(pllPreDivider, &pChipcHw->PLLPreDivider); |
189 | /* Set NDIV Frac */ | 194 | /* Set NDIV Frac */ |
190 | if (ssSupport == chipcHw_SPREAD_SPECTRUM_ALLOW) { | 195 | if (ssSupport == chipcHw_SPREAD_SPECTRUM_ALLOW) { |
191 | pChipcHw->PLLDivider = chipcHw_REG_PLL_DIVIDER_M1DIV | | 196 | writel(chipcHw_REG_PLL_DIVIDER_M1DIV | chipcHw_REG_PLL_DIVIDER_NDIV_f_SS, &pChipcHw->PLLDivider); |
192 | chipcHw_REG_PLL_DIVIDER_NDIV_f_SS; | ||
193 | } else { | 197 | } else { |
194 | pChipcHw->PLLDivider = chipcHw_REG_PLL_DIVIDER_M1DIV | | 198 | writel(chipcHw_REG_PLL_DIVIDER_M1DIV | chipcHw_REG_PLL_DIVIDER_NDIV_f, &pChipcHw->PLLDivider); |
195 | chipcHw_REG_PLL_DIVIDER_NDIV_f; | ||
196 | } | 199 | } |
197 | 200 | ||
198 | /* Reset PLL1 */ | 201 | /* Reset PLL1 */ |
199 | if (vcoFreqHz > chipcHw_REG_PLL_CONFIG_VCO_SPLIT_FREQ) { | 202 | if (vcoFreqHz > chipcHw_REG_PLL_CONFIG_VCO_SPLIT_FREQ) { |
200 | pChipcHw->PLLConfig = chipcHw_REG_PLL_CONFIG_D_RESET | | 203 | writel(chipcHw_REG_PLL_CONFIG_D_RESET | chipcHw_REG_PLL_CONFIG_A_RESET | chipcHw_REG_PLL_CONFIG_VCO_1601_3200 | chipcHw_REG_PLL_CONFIG_POWER_DOWN, &pChipcHw->PLLConfig); |
201 | chipcHw_REG_PLL_CONFIG_A_RESET | | ||
202 | chipcHw_REG_PLL_CONFIG_VCO_1601_3200 | | ||
203 | chipcHw_REG_PLL_CONFIG_POWER_DOWN; | ||
204 | } else { | 204 | } else { |
205 | pChipcHw->PLLConfig = chipcHw_REG_PLL_CONFIG_D_RESET | | 205 | writel(chipcHw_REG_PLL_CONFIG_D_RESET | chipcHw_REG_PLL_CONFIG_A_RESET | chipcHw_REG_PLL_CONFIG_VCO_800_1600 | chipcHw_REG_PLL_CONFIG_POWER_DOWN, &pChipcHw->PLLConfig); |
206 | chipcHw_REG_PLL_CONFIG_A_RESET | | ||
207 | chipcHw_REG_PLL_CONFIG_VCO_800_1600 | | ||
208 | chipcHw_REG_PLL_CONFIG_POWER_DOWN; | ||
209 | } | 206 | } |
210 | 207 | ||
211 | REG_LOCAL_IRQ_RESTORE; | 208 | REG_LOCAL_IRQ_RESTORE; |
@@ -216,22 +213,19 @@ void chipcHw_pll1Enable(uint32_t vcoFreqHz, chipcHw_SPREAD_SPECTRUM_e ssSupport) | |||
216 | { | 213 | { |
217 | REG_LOCAL_IRQ_SAVE; | 214 | REG_LOCAL_IRQ_SAVE; |
218 | /* Remove analog reset and Power on the PLL */ | 215 | /* Remove analog reset and Power on the PLL */ |
219 | pChipcHw->PLLConfig &= | 216 | writel(readl(&pChipcHw->PLLConfig) & ~(chipcHw_REG_PLL_CONFIG_A_RESET | chipcHw_REG_PLL_CONFIG_POWER_DOWN), &pChipcHw->PLLConfig); |
220 | ~(chipcHw_REG_PLL_CONFIG_A_RESET | | ||
221 | chipcHw_REG_PLL_CONFIG_POWER_DOWN); | ||
222 | REG_LOCAL_IRQ_RESTORE; | 217 | REG_LOCAL_IRQ_RESTORE; |
223 | } | 218 | } |
224 | 219 | ||
225 | /* Wait until PLL is locked */ | 220 | /* Wait until PLL is locked */ |
226 | while (!(pChipcHw->PLLStatus & chipcHw_REG_PLL_STATUS_LOCKED) | 221 | while (!(readl(&pChipcHw->PLLStatus) & chipcHw_REG_PLL_STATUS_LOCKED) |
227 | || !(pChipcHw-> | 222 | || !(readl(&pChipcHw->PLLStatus2) & chipcHw_REG_PLL_STATUS_LOCKED)) |
228 | PLLStatus2 & chipcHw_REG_PLL_STATUS_LOCKED)) | ||
229 | ; | 223 | ; |
230 | 224 | ||
231 | /* Remove digital reset */ | 225 | /* Remove digital reset */ |
232 | { | 226 | { |
233 | REG_LOCAL_IRQ_SAVE; | 227 | REG_LOCAL_IRQ_SAVE; |
234 | pChipcHw->PLLConfig &= ~chipcHw_REG_PLL_CONFIG_D_RESET; | 228 | writel(readl(&pChipcHw->PLLConfig) & ~chipcHw_REG_PLL_CONFIG_D_RESET, &pChipcHw->PLLConfig); |
235 | REG_LOCAL_IRQ_RESTORE; | 229 | REG_LOCAL_IRQ_RESTORE; |
236 | } | 230 | } |
237 | } | 231 | } |
@@ -267,11 +261,7 @@ void chipcHw_Init(chipcHw_INIT_PARAM_t *initParam /* [ IN ] Misc chip initializ | |||
267 | chipcHw_clearStickyBits(chipcHw_REG_STICKY_CHIP_SOFT_RESET); | 261 | chipcHw_clearStickyBits(chipcHw_REG_STICKY_CHIP_SOFT_RESET); |
268 | 262 | ||
269 | /* Before configuring the ARM clock, atleast we need to make sure BUS clock maintains the proper ratio with ARM clock */ | 263 | /* Before configuring the ARM clock, atleast we need to make sure BUS clock maintains the proper ratio with ARM clock */ |
270 | pChipcHw->ACLKClock = | 264 | writel((readl(&pChipcHw->ACLKClock) & ~chipcHw_REG_ACLKClock_CLK_DIV_MASK) | (initParam-> armBusRatio & chipcHw_REG_ACLKClock_CLK_DIV_MASK), &pChipcHw->ACLKClock); |
271 | (pChipcHw-> | ||
272 | ACLKClock & ~chipcHw_REG_ACLKClock_CLK_DIV_MASK) | (initParam-> | ||
273 | armBusRatio & | ||
274 | chipcHw_REG_ACLKClock_CLK_DIV_MASK); | ||
275 | 265 | ||
276 | /* Set various core component frequencies. The order in which this is done is important for some. */ | 266 | /* Set various core component frequencies. The order in which this is done is important for some. */ |
277 | /* The RTBUS (DDR PHY) is derived from the BUS, and the BUS from the ARM, and VPM needs to know BUS */ | 267 | /* The RTBUS (DDR PHY) is derived from the BUS, and the BUS from the ARM, and VPM needs to know BUS */ |
diff --git a/arch/arm/mach-bcmring/csp/chipc/chipcHw_reset.c b/arch/arm/mach-bcmring/csp/chipc/chipcHw_reset.c index 2671d8896bbb..f95ce913fa1e 100644 --- a/arch/arm/mach-bcmring/csp/chipc/chipcHw_reset.c +++ b/arch/arm/mach-bcmring/csp/chipc/chipcHw_reset.c | |||
@@ -13,11 +13,11 @@ | |||
13 | *****************************************************************************/ | 13 | *****************************************************************************/ |
14 | 14 | ||
15 | /* ---- Include Files ---------------------------------------------------- */ | 15 | /* ---- Include Files ---------------------------------------------------- */ |
16 | #include <csp/stdint.h> | 16 | #include <linux/types.h> |
17 | #include <mach/csp/chipcHw_def.h> | 17 | #include <mach/csp/chipcHw_def.h> |
18 | #include <mach/csp/chipcHw_inline.h> | 18 | #include <mach/csp/chipcHw_inline.h> |
19 | #include <csp/intcHw.h> | 19 | #include <mach/csp/intcHw_reg.h> |
20 | #include <csp/cache.h> | 20 | #include <asm/cacheflush.h> |
21 | 21 | ||
22 | /* ---- Private Constants and Types --------------------------------------- */ | 22 | /* ---- Private Constants and Types --------------------------------------- */ |
23 | /* ---- Private Variables ------------------------------------------------- */ | 23 | /* ---- Private Variables ------------------------------------------------- */ |
@@ -50,17 +50,18 @@ void chipcHw_reset(uint32_t mask) | |||
50 | chipcHw_softReset(chipcHw_REG_SOFT_RESET_CHIP_SOFT); | 50 | chipcHw_softReset(chipcHw_REG_SOFT_RESET_CHIP_SOFT); |
51 | } | 51 | } |
52 | /* Bypass the PLL clocks before reboot */ | 52 | /* Bypass the PLL clocks before reboot */ |
53 | pChipcHw->UARTClock |= chipcHw_REG_PLL_CLOCK_BYPASS_SELECT; | 53 | writel(readl(&pChipcHw->UARTClock) | chipcHw_REG_PLL_CLOCK_BYPASS_SELECT, |
54 | pChipcHw->SPIClock |= chipcHw_REG_PLL_CLOCK_BYPASS_SELECT; | 54 | &pChipcHw->UARTClock); |
55 | writel(readl(&pChipcHw->SPIClock) | chipcHw_REG_PLL_CLOCK_BYPASS_SELECT, | ||
56 | &pChipcHw->SPIClock); | ||
55 | 57 | ||
56 | /* Copy the chipcHw_warmReset_run_from_aram function into ARAM */ | 58 | /* Copy the chipcHw_warmReset_run_from_aram function into ARAM */ |
57 | do { | 59 | do { |
58 | ((uint32_t *) MM_IO_BASE_ARAM)[i] = | 60 | writel(((uint32_t *) &chipcHw_reset_run_from_aram)[i], ((uint32_t __iomem *) MM_IO_BASE_ARAM) + i); |
59 | ((uint32_t *) &chipcHw_reset_run_from_aram)[i]; | ||
60 | i++; | 61 | i++; |
61 | } while (((uint32_t *) MM_IO_BASE_ARAM)[i - 1] != 0xe1a0f00f); /* 0xe1a0f00f == asm ("mov r15, r15"); */ | 62 | } while (readl(((uint32_t __iomem*) MM_IO_BASE_ARAM) + i - 1) != 0xe1a0f00f); /* 0xe1a0f00f == asm ("mov r15, r15"); */ |
62 | 63 | ||
63 | CSP_CACHE_FLUSH_ALL; | 64 | flush_cache_all(); |
64 | 65 | ||
65 | /* run the function from ARAM */ | 66 | /* run the function from ARAM */ |
66 | runFunc(); | 67 | runFunc(); |
diff --git a/arch/arm/mach-bcmring/csp/dmac/dmacHw.c b/arch/arm/mach-bcmring/csp/dmac/dmacHw.c index 6b9be2e98e51..547f746c7ff4 100644 --- a/arch/arm/mach-bcmring/csp/dmac/dmacHw.c +++ b/arch/arm/mach-bcmring/csp/dmac/dmacHw.c | |||
@@ -25,11 +25,11 @@ | |||
25 | /****************************************************************************/ | 25 | /****************************************************************************/ |
26 | 26 | ||
27 | /* ---- Include Files ---------------------------------------------------- */ | 27 | /* ---- Include Files ---------------------------------------------------- */ |
28 | #include <csp/stdint.h> | 28 | #include <linux/types.h> |
29 | #include <csp/string.h> | 29 | #include <linux/string.h> |
30 | #include <stddef.h> | 30 | #include <linux/stddef.h> |
31 | 31 | ||
32 | #include <csp/dmacHw.h> | 32 | #include <mach/csp/dmacHw.h> |
33 | #include <mach/csp/dmacHw_reg.h> | 33 | #include <mach/csp/dmacHw_reg.h> |
34 | #include <mach/csp/dmacHw_priv.h> | 34 | #include <mach/csp/dmacHw_priv.h> |
35 | #include <mach/csp/chipcHw_inline.h> | 35 | #include <mach/csp/chipcHw_inline.h> |
@@ -55,33 +55,32 @@ static uint32_t GetFifoSize(dmacHw_HANDLE_t handle /* [ IN ] DMA Channel handl | |||
55 | ) { | 55 | ) { |
56 | uint32_t val = 0; | 56 | uint32_t val = 0; |
57 | dmacHw_CBLK_t *pCblk = dmacHw_HANDLE_TO_CBLK(handle); | 57 | dmacHw_CBLK_t *pCblk = dmacHw_HANDLE_TO_CBLK(handle); |
58 | dmacHw_MISC_t *pMiscReg = | 58 | dmacHw_MISC_t __iomem *pMiscReg = (void __iomem *)dmacHw_REG_MISC_BASE(pCblk->module); |
59 | (dmacHw_MISC_t *) dmacHw_REG_MISC_BASE(pCblk->module); | ||
60 | 59 | ||
61 | switch (pCblk->channel) { | 60 | switch (pCblk->channel) { |
62 | case 0: | 61 | case 0: |
63 | val = (pMiscReg->CompParm2.lo & 0x70000000) >> 28; | 62 | val = (readl(&pMiscReg->CompParm2.lo) & 0x70000000) >> 28; |
64 | break; | 63 | break; |
65 | case 1: | 64 | case 1: |
66 | val = (pMiscReg->CompParm3.hi & 0x70000000) >> 28; | 65 | val = (readl(&pMiscReg->CompParm3.hi) & 0x70000000) >> 28; |
67 | break; | 66 | break; |
68 | case 2: | 67 | case 2: |
69 | val = (pMiscReg->CompParm3.lo & 0x70000000) >> 28; | 68 | val = (readl(&pMiscReg->CompParm3.lo) & 0x70000000) >> 28; |
70 | break; | 69 | break; |
71 | case 3: | 70 | case 3: |
72 | val = (pMiscReg->CompParm4.hi & 0x70000000) >> 28; | 71 | val = (readl(&pMiscReg->CompParm4.hi) & 0x70000000) >> 28; |
73 | break; | 72 | break; |
74 | case 4: | 73 | case 4: |
75 | val = (pMiscReg->CompParm4.lo & 0x70000000) >> 28; | 74 | val = (readl(&pMiscReg->CompParm4.lo) & 0x70000000) >> 28; |
76 | break; | 75 | break; |
77 | case 5: | 76 | case 5: |
78 | val = (pMiscReg->CompParm5.hi & 0x70000000) >> 28; | 77 | val = (readl(&pMiscReg->CompParm5.hi) & 0x70000000) >> 28; |
79 | break; | 78 | break; |
80 | case 6: | 79 | case 6: |
81 | val = (pMiscReg->CompParm5.lo & 0x70000000) >> 28; | 80 | val = (readl(&pMiscReg->CompParm5.lo) & 0x70000000) >> 28; |
82 | break; | 81 | break; |
83 | case 7: | 82 | case 7: |
84 | val = (pMiscReg->CompParm6.hi & 0x70000000) >> 28; | 83 | val = (readl(&pMiscReg->CompParm6.hi) & 0x70000000) >> 28; |
85 | break; | 84 | break; |
86 | } | 85 | } |
87 | 86 | ||
diff --git a/arch/arm/mach-bcmring/csp/dmac/dmacHw_extra.c b/arch/arm/mach-bcmring/csp/dmac/dmacHw_extra.c index a1f328357aa4..fe438699d11e 100644 --- a/arch/arm/mach-bcmring/csp/dmac/dmacHw_extra.c +++ b/arch/arm/mach-bcmring/csp/dmac/dmacHw_extra.c | |||
@@ -26,10 +26,10 @@ | |||
26 | 26 | ||
27 | /* ---- Include Files ---------------------------------------------------- */ | 27 | /* ---- Include Files ---------------------------------------------------- */ |
28 | 28 | ||
29 | #include <csp/stdint.h> | 29 | #include <linux/types.h> |
30 | #include <stddef.h> | 30 | #include <linux/stddef.h> |
31 | 31 | ||
32 | #include <csp/dmacHw.h> | 32 | #include <mach/csp/dmacHw.h> |
33 | #include <mach/csp/dmacHw_reg.h> | 33 | #include <mach/csp/dmacHw_reg.h> |
34 | #include <mach/csp/dmacHw_priv.h> | 34 | #include <mach/csp/dmacHw_priv.h> |
35 | 35 | ||
diff --git a/arch/arm/mach-bcmring/csp/tmr/tmrHw.c b/arch/arm/mach-bcmring/csp/tmr/tmrHw.c index 16225e43f3c3..dc4137ff75ca 100644 --- a/arch/arm/mach-bcmring/csp/tmr/tmrHw.c +++ b/arch/arm/mach-bcmring/csp/tmr/tmrHw.c | |||
@@ -26,10 +26,10 @@ | |||
26 | 26 | ||
27 | /* ---- Include Files ---------------------------------------------------- */ | 27 | /* ---- Include Files ---------------------------------------------------- */ |
28 | 28 | ||
29 | #include <csp/errno.h> | 29 | #include <linux/errno.h> |
30 | #include <csp/stdint.h> | 30 | #include <linux/types.h> |
31 | 31 | ||
32 | #include <csp/tmrHw.h> | 32 | #include <mach/csp/tmrHw.h> |
33 | #include <mach/csp/tmrHw_reg.h> | 33 | #include <mach/csp/tmrHw_reg.h> |
34 | 34 | ||
35 | #define tmrHw_ASSERT(a) if (!(a)) *(char *)0 = 0 | 35 | #define tmrHw_ASSERT(a) if (!(a)) *(char *)0 = 0 |
diff --git a/arch/arm/mach-bcmring/include/cfg_global.h b/arch/arm/mach-bcmring/include/cfg_global.h deleted file mode 100644 index f01da877148e..000000000000 --- a/arch/arm/mach-bcmring/include/cfg_global.h +++ /dev/null | |||
@@ -1,13 +0,0 @@ | |||
1 | #ifndef _CFG_GLOBAL_H_ | ||
2 | #define _CFG_GLOBAL_H_ | ||
3 | |||
4 | #include <cfg_global_defines.h> | ||
5 | |||
6 | #define CFG_GLOBAL_CHIP BCM11107 | ||
7 | #define CFG_GLOBAL_CHIP_FAMILY CFG_GLOBAL_CHIP_FAMILY_BCMRING | ||
8 | #define CFG_GLOBAL_CHIP_REV 0xB0 | ||
9 | #define CFG_GLOBAL_RAM_SIZE 0x10000000 | ||
10 | #define CFG_GLOBAL_RAM_BASE 0x00000000 | ||
11 | #define CFG_GLOBAL_RAM_RESERVED_SIZE 0x000000 | ||
12 | |||
13 | #endif /* _CFG_GLOBAL_H_ */ | ||
diff --git a/arch/arm/mach-bcmring/include/csp/cache.h b/arch/arm/mach-bcmring/include/csp/cache.h deleted file mode 100644 index caa20e59db99..000000000000 --- a/arch/arm/mach-bcmring/include/csp/cache.h +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | /***************************************************************************** | ||
2 | * Copyright 2003 - 2008 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 CSP_CACHE_H | ||
16 | #define CSP_CACHE_H | ||
17 | |||
18 | /* ---- Include Files ---------------------------------------------------- */ | ||
19 | |||
20 | #include <csp/stdint.h> | ||
21 | |||
22 | /* ---- Public Constants and Types --------------------------------------- */ | ||
23 | |||
24 | #if defined(__KERNEL__) && !defined(STANDALONE) | ||
25 | #include <asm/cacheflush.h> | ||
26 | |||
27 | #define CSP_CACHE_FLUSH_ALL flush_cache_all() | ||
28 | |||
29 | #else | ||
30 | |||
31 | #define CSP_CACHE_FLUSH_ALL | ||
32 | |||
33 | #endif | ||
34 | |||
35 | #endif /* CSP_CACHE_H */ | ||
diff --git a/arch/arm/mach-bcmring/include/csp/delay.h b/arch/arm/mach-bcmring/include/csp/delay.h deleted file mode 100644 index 8b3d80367293..000000000000 --- a/arch/arm/mach-bcmring/include/csp/delay.h +++ /dev/null | |||
@@ -1,36 +0,0 @@ | |||
1 | /***************************************************************************** | ||
2 | * Copyright 2003 - 2008 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 | |||
16 | #ifndef CSP_DELAY_H | ||
17 | #define CSP_DELAY_H | ||
18 | |||
19 | /* ---- Include Files ---------------------------------------------------- */ | ||
20 | |||
21 | /* Some CSP routines require use of the following delay routines. Use the OS */ | ||
22 | /* version if available, otherwise use a CSP specific definition. */ | ||
23 | /* void udelay(unsigned long usecs); */ | ||
24 | /* void mdelay(unsigned long msecs); */ | ||
25 | |||
26 | #if defined(__KERNEL__) && !defined(STANDALONE) | ||
27 | #include <linux/delay.h> | ||
28 | #else | ||
29 | #include <mach/csp/delay.h> | ||
30 | #endif | ||
31 | |||
32 | /* ---- Public Constants and Types --------------------------------------- */ | ||
33 | /* ---- Public Variable Externs ------------------------------------------ */ | ||
34 | /* ---- Public Function Prototypes --------------------------------------- */ | ||
35 | |||
36 | #endif /* CSP_DELAY_H */ | ||
diff --git a/arch/arm/mach-bcmring/include/csp/errno.h b/arch/arm/mach-bcmring/include/csp/errno.h deleted file mode 100644 index 51357dd5b666..000000000000 --- a/arch/arm/mach-bcmring/include/csp/errno.h +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | /***************************************************************************** | ||
2 | * Copyright 2003 - 2008 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 CSP_ERRNO_H | ||
16 | #define CSP_ERRNO_H | ||
17 | |||
18 | /* ---- Include Files ---------------------------------------------------- */ | ||
19 | |||
20 | #if defined(__KERNEL__) | ||
21 | #include <linux/errno.h> | ||
22 | #elif defined(CSP_SIMULATION) | ||
23 | #include <asm-generic/errno.h> | ||
24 | #else | ||
25 | #include <errno.h> | ||
26 | #endif | ||
27 | |||
28 | /* ---- Public Constants and Types --------------------------------------- */ | ||
29 | /* ---- Public Variable Externs ------------------------------------------ */ | ||
30 | /* ---- Public Function Prototypes --------------------------------------- */ | ||
31 | |||
32 | #endif /* CSP_ERRNO_H */ | ||
diff --git a/arch/arm/mach-bcmring/include/csp/intcHw.h b/arch/arm/mach-bcmring/include/csp/intcHw.h deleted file mode 100644 index 1c639c8ee08f..000000000000 --- a/arch/arm/mach-bcmring/include/csp/intcHw.h +++ /dev/null | |||
@@ -1,40 +0,0 @@ | |||
1 | /***************************************************************************** | ||
2 | * Copyright 2003 - 2008 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 | |||
16 | /****************************************************************************/ | ||
17 | /** | ||
18 | * @file intcHw.h | ||
19 | * | ||
20 | * @brief generic interrupt controller API | ||
21 | * | ||
22 | * @note | ||
23 | * None | ||
24 | */ | ||
25 | /****************************************************************************/ | ||
26 | |||
27 | #ifndef _INTCHW_H | ||
28 | #define _INTCHW_H | ||
29 | |||
30 | /* ---- Include Files ---------------------------------------------------- */ | ||
31 | #include <mach/csp/intcHw_reg.h> | ||
32 | |||
33 | /* ---- Public Constants and Types --------------------------------------- */ | ||
34 | /* ---- Public Variable Externs ------------------------------------------ */ | ||
35 | /* ---- Public Function Prototypes --------------------------------------- */ | ||
36 | static inline void intcHw_irq_disable(void *basep, uint32_t mask); | ||
37 | static inline void intcHw_irq_enable(void *basep, uint32_t mask); | ||
38 | |||
39 | #endif /* _INTCHW_H */ | ||
40 | |||
diff --git a/arch/arm/mach-bcmring/include/csp/module.h b/arch/arm/mach-bcmring/include/csp/module.h deleted file mode 100644 index c30d2a5975a6..000000000000 --- a/arch/arm/mach-bcmring/include/csp/module.h +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | /***************************************************************************** | ||
2 | * Copyright 2003 - 2008 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 | |||
16 | #ifndef CSP_MODULE_H | ||
17 | #define CSP_MODULE_H | ||
18 | |||
19 | /* ---- Include Files ---------------------------------------------------- */ | ||
20 | |||
21 | #ifdef __KERNEL__ | ||
22 | #include <linux/module.h> | ||
23 | #else | ||
24 | #define EXPORT_SYMBOL(symbol) | ||
25 | #endif | ||
26 | |||
27 | /* ---- Public Constants and Types --------------------------------------- */ | ||
28 | /* ---- Public Variable Externs ------------------------------------------ */ | ||
29 | /* ---- Public Function Prototypes --------------------------------------- */ | ||
30 | |||
31 | |||
32 | #endif /* CSP_MODULE_H */ | ||
diff --git a/arch/arm/mach-bcmring/include/csp/secHw.h b/arch/arm/mach-bcmring/include/csp/secHw.h deleted file mode 100644 index b9d7e0732dfc..000000000000 --- a/arch/arm/mach-bcmring/include/csp/secHw.h +++ /dev/null | |||
@@ -1,65 +0,0 @@ | |||
1 | /***************************************************************************** | ||
2 | * Copyright 2004 - 2008 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 | /****************************************************************************/ | ||
16 | /** | ||
17 | * @file secHw.h | ||
18 | * | ||
19 | * @brief Definitions for accessing low level security features | ||
20 | * | ||
21 | */ | ||
22 | /****************************************************************************/ | ||
23 | #ifndef SECHW_H | ||
24 | #define SECHW_H | ||
25 | |||
26 | typedef void (*secHw_FUNC_t) (void); | ||
27 | |||
28 | typedef enum { | ||
29 | secHw_MODE_SECURE = 0x0, /* Switches processor into secure mode */ | ||
30 | secHw_MODE_NONSECURE = 0x1 /* Switches processor into non-secure mode */ | ||
31 | } secHw_MODE; | ||
32 | |||
33 | /****************************************************************************/ | ||
34 | /** | ||
35 | * @brief Requesting to execute the function in secure mode | ||
36 | * | ||
37 | * This function requests the given function to run in secure mode | ||
38 | * | ||
39 | */ | ||
40 | /****************************************************************************/ | ||
41 | void secHw_RunSecure(secHw_FUNC_t /* Function to run in secure mode */ | ||
42 | ); | ||
43 | |||
44 | /****************************************************************************/ | ||
45 | /** | ||
46 | * @brief Sets the mode | ||
47 | * | ||
48 | * his function sets the processor mode (secure/non-secure) | ||
49 | * | ||
50 | */ | ||
51 | /****************************************************************************/ | ||
52 | void secHw_SetMode(secHw_MODE /* Processor mode */ | ||
53 | ); | ||
54 | |||
55 | /****************************************************************************/ | ||
56 | /** | ||
57 | * @brief Get the current mode | ||
58 | * | ||
59 | * This function retieves the processor mode (secure/non-secure) | ||
60 | * | ||
61 | */ | ||
62 | /****************************************************************************/ | ||
63 | void secHw_GetMode(secHw_MODE *); | ||
64 | |||
65 | #endif /* SECHW_H */ | ||
diff --git a/arch/arm/mach-bcmring/include/csp/stdint.h b/arch/arm/mach-bcmring/include/csp/stdint.h deleted file mode 100644 index 3a8718bbf700..000000000000 --- a/arch/arm/mach-bcmring/include/csp/stdint.h +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | /***************************************************************************** | ||
2 | * Copyright 2003 - 2008 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 CSP_STDINT_H | ||
16 | #define CSP_STDINT_H | ||
17 | |||
18 | /* ---- Include Files ---------------------------------------------------- */ | ||
19 | |||
20 | #ifdef __KERNEL__ | ||
21 | #include <linux/types.h> | ||
22 | #else | ||
23 | #include <stdint.h> | ||
24 | #endif | ||
25 | |||
26 | /* ---- Public Constants and Types --------------------------------------- */ | ||
27 | /* ---- Public Variable Externs ------------------------------------------ */ | ||
28 | /* ---- Public Function Prototypes --------------------------------------- */ | ||
29 | |||
30 | #endif /* CSP_STDINT_H */ | ||
diff --git a/arch/arm/mach-bcmring/include/csp/string.h b/arch/arm/mach-bcmring/include/csp/string.h deleted file mode 100644 index ad9e4005f141..000000000000 --- a/arch/arm/mach-bcmring/include/csp/string.h +++ /dev/null | |||
@@ -1,34 +0,0 @@ | |||
1 | /***************************************************************************** | ||
2 | * Copyright 2003 - 2008 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 | |||
16 | |||
17 | #ifndef CSP_STRING_H | ||
18 | #define CSP_STRING_H | ||
19 | |||
20 | /* ---- Include Files ---------------------------------------------------- */ | ||
21 | |||
22 | #ifdef __KERNEL__ | ||
23 | #include <linux/string.h> | ||
24 | #else | ||
25 | #include <string.h> | ||
26 | #endif | ||
27 | |||
28 | /* ---- Public Constants and Types --------------------------------------- */ | ||
29 | /* ---- Public Variable Externs ------------------------------------------ */ | ||
30 | /* ---- Public Function Prototypes --------------------------------------- */ | ||
31 | |||
32 | |||
33 | #endif /* CSP_STRING_H */ | ||
34 | |||
diff --git a/arch/arm/mach-bcmring/include/cfg_global_defines.h b/arch/arm/mach-bcmring/include/mach/cfg_global.h index b5beb0b30734..449133eacdf5 100644 --- a/arch/arm/mach-bcmring/include/cfg_global_defines.h +++ b/arch/arm/mach-bcmring/include/mach/cfg_global.h | |||
@@ -38,3 +38,14 @@ | |||
38 | 38 | ||
39 | #define IMAGE_HEADER_SIZE_CHECKSUM 4 | 39 | #define IMAGE_HEADER_SIZE_CHECKSUM 4 |
40 | #endif | 40 | #endif |
41 | #ifndef _CFG_GLOBAL_H_ | ||
42 | #define _CFG_GLOBAL_H_ | ||
43 | |||
44 | #define CFG_GLOBAL_CHIP BCM11107 | ||
45 | #define CFG_GLOBAL_CHIP_FAMILY CFG_GLOBAL_CHIP_FAMILY_BCMRING | ||
46 | #define CFG_GLOBAL_CHIP_REV 0xB0 | ||
47 | #define CFG_GLOBAL_RAM_SIZE 0x10000000 | ||
48 | #define CFG_GLOBAL_RAM_BASE 0x00000000 | ||
49 | #define CFG_GLOBAL_RAM_RESERVED_SIZE 0x000000 | ||
50 | |||
51 | #endif /* _CFG_GLOBAL_H_ */ | ||
diff --git a/arch/arm/mach-bcmring/include/mach/csp/cap_inline.h b/arch/arm/mach-bcmring/include/mach/csp/cap_inline.h index 933ce68ed90b..0a89e0c63419 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/cap_inline.h +++ b/arch/arm/mach-bcmring/include/mach/csp/cap_inline.h | |||
@@ -17,7 +17,7 @@ | |||
17 | 17 | ||
18 | /* ---- Include Files ---------------------------------------------------- */ | 18 | /* ---- Include Files ---------------------------------------------------- */ |
19 | #include <mach/csp/cap.h> | 19 | #include <mach/csp/cap.h> |
20 | #include <cfg_global.h> | 20 | #include <mach/cfg_global.h> |
21 | 21 | ||
22 | /* ---- Public Constants and Types --------------------------------------- */ | 22 | /* ---- Public Constants and Types --------------------------------------- */ |
23 | #define CAP_CONFIG0_VPM_DIS 0x00000001 | 23 | #define CAP_CONFIG0_VPM_DIS 0x00000001 |
diff --git a/arch/arm/mach-bcmring/include/mach/csp/chipcHw_def.h b/arch/arm/mach-bcmring/include/mach/csp/chipcHw_def.h index 161973385faf..39f09cb89208 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/chipcHw_def.h +++ b/arch/arm/mach-bcmring/include/mach/csp/chipcHw_def.h | |||
@@ -17,9 +17,9 @@ | |||
17 | 17 | ||
18 | /* ---- Include Files ----------------------------------------------------- */ | 18 | /* ---- Include Files ----------------------------------------------------- */ |
19 | 19 | ||
20 | #include <csp/stdint.h> | 20 | #include <linux/types.h> |
21 | #include <csp/errno.h> | 21 | #include <linux/errno.h> |
22 | #include <csp/reg.h> | 22 | #include <mach/csp/reg.h> |
23 | #include <mach/csp/chipcHw_reg.h> | 23 | #include <mach/csp/chipcHw_reg.h> |
24 | 24 | ||
25 | /* ---- Public Constants and Types ---------------------------------------- */ | 25 | /* ---- Public Constants and Types ---------------------------------------- */ |
diff --git a/arch/arm/mach-bcmring/include/mach/csp/chipcHw_inline.h b/arch/arm/mach-bcmring/include/mach/csp/chipcHw_inline.h index 03238c299001..a66f3f7abb86 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/chipcHw_inline.h +++ b/arch/arm/mach-bcmring/include/mach/csp/chipcHw_inline.h | |||
@@ -17,8 +17,8 @@ | |||
17 | 17 | ||
18 | /* ---- Include Files ----------------------------------------------------- */ | 18 | /* ---- Include Files ----------------------------------------------------- */ |
19 | 19 | ||
20 | #include <csp/errno.h> | 20 | #include <linux/errno.h> |
21 | #include <csp/reg.h> | 21 | #include <mach/csp/reg.h> |
22 | #include <mach/csp/chipcHw_reg.h> | 22 | #include <mach/csp/chipcHw_reg.h> |
23 | #include <mach/csp/chipcHw_def.h> | 23 | #include <mach/csp/chipcHw_def.h> |
24 | 24 | ||
@@ -47,7 +47,7 @@ static inline void chipcHw_setClock(chipcHw_CLOCK_e clock, | |||
47 | /****************************************************************************/ | 47 | /****************************************************************************/ |
48 | static inline uint32_t chipcHw_getChipId(void) | 48 | static inline uint32_t chipcHw_getChipId(void) |
49 | { | 49 | { |
50 | return pChipcHw->ChipId; | 50 | return readl(&pChipcHw->ChipId); |
51 | } | 51 | } |
52 | 52 | ||
53 | /****************************************************************************/ | 53 | /****************************************************************************/ |
@@ -59,15 +59,16 @@ static inline uint32_t chipcHw_getChipId(void) | |||
59 | /****************************************************************************/ | 59 | /****************************************************************************/ |
60 | static inline void chipcHw_enableSpreadSpectrum(void) | 60 | static inline void chipcHw_enableSpreadSpectrum(void) |
61 | { | 61 | { |
62 | if ((pChipcHw-> | 62 | if ((readl(&pChipcHw-> |
63 | PLLPreDivider & chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_MASK) != | 63 | PLLPreDivider) & chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_MASK) != |
64 | chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_INTEGER) { | 64 | chipcHw_REG_PLL_PREDIVIDER_NDIV_MODE_INTEGER) { |
65 | ddrcReg_PHY_ADDR_CTL_REGP->ssCfg = | 65 | writel((0xFFFF << ddrcReg_PHY_ADDR_SS_CFG_NDIV_AMPLITUDE_SHIFT) | |
66 | (0xFFFF << ddrcReg_PHY_ADDR_SS_CFG_NDIV_AMPLITUDE_SHIFT) | | ||
67 | (ddrcReg_PHY_ADDR_SS_CFG_MIN_CYCLE_PER_TICK << | 66 | (ddrcReg_PHY_ADDR_SS_CFG_MIN_CYCLE_PER_TICK << |
68 | ddrcReg_PHY_ADDR_SS_CFG_CYCLE_PER_TICK_SHIFT); | 67 | ddrcReg_PHY_ADDR_SS_CFG_CYCLE_PER_TICK_SHIFT), |
69 | ddrcReg_PHY_ADDR_CTL_REGP->ssCtl |= | 68 | &ddrcReg_PHY_ADDR_CTL_REGP->ssCfg); |
70 | ddrcReg_PHY_ADDR_SS_CTRL_ENABLE; | 69 | writel(readl(&ddrcReg_PHY_ADDR_CTL_REGP->ssCtl) | |
70 | ddrcReg_PHY_ADDR_SS_CTRL_ENABLE, | ||
71 | &ddrcReg_PHY_ADDR_CTL_REGP->ssCtl); | ||
71 | } | 72 | } |
72 | } | 73 | } |
73 | 74 | ||
@@ -93,8 +94,8 @@ static inline void chipcHw_disableSpreadSpectrum(void) | |||
93 | /****************************************************************************/ | 94 | /****************************************************************************/ |
94 | static inline uint32_t chipcHw_getChipProductId(void) | 95 | static inline uint32_t chipcHw_getChipProductId(void) |
95 | { | 96 | { |
96 | return (pChipcHw-> | 97 | return (readl(&pChipcHw-> |
97 | ChipId & chipcHw_REG_CHIPID_BASE_MASK) >> | 98 | ChipId) & chipcHw_REG_CHIPID_BASE_MASK) >> |
98 | chipcHw_REG_CHIPID_BASE_SHIFT; | 99 | chipcHw_REG_CHIPID_BASE_SHIFT; |
99 | } | 100 | } |
100 | 101 | ||
@@ -109,7 +110,7 @@ static inline uint32_t chipcHw_getChipProductId(void) | |||
109 | /****************************************************************************/ | 110 | /****************************************************************************/ |
110 | static inline chipcHw_REV_NUMBER_e chipcHw_getChipRevisionNumber(void) | 111 | static inline chipcHw_REV_NUMBER_e chipcHw_getChipRevisionNumber(void) |
111 | { | 112 | { |
112 | return pChipcHw->ChipId & chipcHw_REG_CHIPID_REV_MASK; | 113 | return readl(&pChipcHw->ChipId) & chipcHw_REG_CHIPID_REV_MASK; |
113 | } | 114 | } |
114 | 115 | ||
115 | /****************************************************************************/ | 116 | /****************************************************************************/ |
@@ -156,7 +157,7 @@ static inline void chipcHw_busInterfaceClockDisable(uint32_t mask) | |||
156 | /****************************************************************************/ | 157 | /****************************************************************************/ |
157 | static inline uint32_t chipcHw_getBusInterfaceClockStatus(void) | 158 | static inline uint32_t chipcHw_getBusInterfaceClockStatus(void) |
158 | { | 159 | { |
159 | return pChipcHw->BusIntfClock; | 160 | return readl(&pChipcHw->BusIntfClock); |
160 | } | 161 | } |
161 | 162 | ||
162 | /****************************************************************************/ | 163 | /****************************************************************************/ |
@@ -215,8 +216,9 @@ static inline void chipcHw_softResetDisable(uint64_t mask) | |||
215 | 216 | ||
216 | /* Deassert module soft reset */ | 217 | /* Deassert module soft reset */ |
217 | REG_LOCAL_IRQ_SAVE; | 218 | REG_LOCAL_IRQ_SAVE; |
218 | pChipcHw->SoftReset1 ^= ctrl1; | 219 | writel(readl(&pChipcHw->SoftReset1) ^ ctrl1, &pChipcHw->SoftReset1); |
219 | pChipcHw->SoftReset2 ^= (ctrl2 & (~chipcHw_REG_SOFT_RESET_UNHOLD_MASK)); | 220 | writel(readl(&pChipcHw->SoftReset2) ^ (ctrl2 & |
221 | (~chipcHw_REG_SOFT_RESET_UNHOLD_MASK)), &pChipcHw->SoftReset2); | ||
220 | REG_LOCAL_IRQ_RESTORE; | 222 | REG_LOCAL_IRQ_RESTORE; |
221 | } | 223 | } |
222 | 224 | ||
@@ -227,9 +229,10 @@ static inline void chipcHw_softResetEnable(uint64_t mask) | |||
227 | uint32_t unhold = 0; | 229 | uint32_t unhold = 0; |
228 | 230 | ||
229 | REG_LOCAL_IRQ_SAVE; | 231 | REG_LOCAL_IRQ_SAVE; |
230 | pChipcHw->SoftReset1 |= ctrl1; | 232 | writel(readl(&pChipcHw->SoftReset1) | ctrl1, &pChipcHw->SoftReset1); |
231 | /* Mask out unhold request bits */ | 233 | /* Mask out unhold request bits */ |
232 | pChipcHw->SoftReset2 |= (ctrl2 & (~chipcHw_REG_SOFT_RESET_UNHOLD_MASK)); | 234 | writel(readl(&pChipcHw->SoftReset2) | (ctrl2 & |
235 | (~chipcHw_REG_SOFT_RESET_UNHOLD_MASK)), &pChipcHw->SoftReset2); | ||
233 | 236 | ||
234 | /* Process unhold requests */ | 237 | /* Process unhold requests */ |
235 | if (ctrl2 & chipcHw_REG_SOFT_RESET_VPM_GLOBAL_UNHOLD) { | 238 | if (ctrl2 & chipcHw_REG_SOFT_RESET_VPM_GLOBAL_UNHOLD) { |
@@ -246,7 +249,7 @@ static inline void chipcHw_softResetEnable(uint64_t mask) | |||
246 | 249 | ||
247 | if (unhold) { | 250 | if (unhold) { |
248 | /* Make sure unhold request is effective */ | 251 | /* Make sure unhold request is effective */ |
249 | pChipcHw->SoftReset1 &= ~unhold; | 252 | writel(readl(&pChipcHw->SoftReset1) & ~unhold, &pChipcHw->SoftReset1); |
250 | } | 253 | } |
251 | REG_LOCAL_IRQ_RESTORE; | 254 | REG_LOCAL_IRQ_RESTORE; |
252 | } | 255 | } |
@@ -307,7 +310,7 @@ static inline void chipcHw_setOTPOption(uint64_t mask) | |||
307 | /****************************************************************************/ | 310 | /****************************************************************************/ |
308 | static inline uint32_t chipcHw_getStickyBits(void) | 311 | static inline uint32_t chipcHw_getStickyBits(void) |
309 | { | 312 | { |
310 | return pChipcHw->Sticky; | 313 | return readl(&pChipcHw->Sticky); |
311 | } | 314 | } |
312 | 315 | ||
313 | /****************************************************************************/ | 316 | /****************************************************************************/ |
@@ -328,7 +331,7 @@ static inline void chipcHw_setStickyBits(uint32_t mask) | |||
328 | bits |= chipcHw_REG_STICKY_POR_BROM; | 331 | bits |= chipcHw_REG_STICKY_POR_BROM; |
329 | } else { | 332 | } else { |
330 | uint32_t sticky; | 333 | uint32_t sticky; |
331 | sticky = pChipcHw->Sticky; | 334 | sticky = readl(pChipcHw->Sticky); |
332 | 335 | ||
333 | if ((mask & chipcHw_REG_STICKY_BOOT_DONE) | 336 | if ((mask & chipcHw_REG_STICKY_BOOT_DONE) |
334 | && (sticky & chipcHw_REG_STICKY_BOOT_DONE) == 0) { | 337 | && (sticky & chipcHw_REG_STICKY_BOOT_DONE) == 0) { |
@@ -355,7 +358,7 @@ static inline void chipcHw_setStickyBits(uint32_t mask) | |||
355 | bits |= chipcHw_REG_STICKY_GENERAL_5; | 358 | bits |= chipcHw_REG_STICKY_GENERAL_5; |
356 | } | 359 | } |
357 | } | 360 | } |
358 | pChipcHw->Sticky = bits; | 361 | writel(bits, pChipcHw->Sticky); |
359 | REG_LOCAL_IRQ_RESTORE; | 362 | REG_LOCAL_IRQ_RESTORE; |
360 | } | 363 | } |
361 | 364 | ||
@@ -377,7 +380,7 @@ static inline void chipcHw_clearStickyBits(uint32_t mask) | |||
377 | (chipcHw_REG_STICKY_BOOT_DONE | chipcHw_REG_STICKY_GENERAL_1 | | 380 | (chipcHw_REG_STICKY_BOOT_DONE | chipcHw_REG_STICKY_GENERAL_1 | |
378 | chipcHw_REG_STICKY_GENERAL_2 | chipcHw_REG_STICKY_GENERAL_3 | | 381 | chipcHw_REG_STICKY_GENERAL_2 | chipcHw_REG_STICKY_GENERAL_3 | |
379 | chipcHw_REG_STICKY_GENERAL_4 | chipcHw_REG_STICKY_GENERAL_5)) { | 382 | chipcHw_REG_STICKY_GENERAL_4 | chipcHw_REG_STICKY_GENERAL_5)) { |
380 | uint32_t sticky = pChipcHw->Sticky; | 383 | uint32_t sticky = readl(&pChipcHw->Sticky); |
381 | 384 | ||
382 | if ((mask & chipcHw_REG_STICKY_BOOT_DONE) | 385 | if ((mask & chipcHw_REG_STICKY_BOOT_DONE) |
383 | && (sticky & chipcHw_REG_STICKY_BOOT_DONE)) { | 386 | && (sticky & chipcHw_REG_STICKY_BOOT_DONE)) { |
@@ -410,7 +413,7 @@ static inline void chipcHw_clearStickyBits(uint32_t mask) | |||
410 | mask &= ~chipcHw_REG_STICKY_GENERAL_5; | 413 | mask &= ~chipcHw_REG_STICKY_GENERAL_5; |
411 | } | 414 | } |
412 | } | 415 | } |
413 | pChipcHw->Sticky = bits | mask; | 416 | writel(bits | mask, &pChipcHw->Sticky); |
414 | REG_LOCAL_IRQ_RESTORE; | 417 | REG_LOCAL_IRQ_RESTORE; |
415 | } | 418 | } |
416 | 419 | ||
@@ -426,7 +429,7 @@ static inline void chipcHw_clearStickyBits(uint32_t mask) | |||
426 | /****************************************************************************/ | 429 | /****************************************************************************/ |
427 | static inline uint32_t chipcHw_getSoftStraps(void) | 430 | static inline uint32_t chipcHw_getSoftStraps(void) |
428 | { | 431 | { |
429 | return pChipcHw->SoftStraps; | 432 | return readl(&pChipcHw->SoftStraps); |
430 | } | 433 | } |
431 | 434 | ||
432 | /****************************************************************************/ | 435 | /****************************************************************************/ |
@@ -456,7 +459,7 @@ static inline void chipcHw_setSoftStraps(uint32_t strapOptions) | |||
456 | /****************************************************************************/ | 459 | /****************************************************************************/ |
457 | static inline uint32_t chipcHw_getPinStraps(void) | 460 | static inline uint32_t chipcHw_getPinStraps(void) |
458 | { | 461 | { |
459 | return pChipcHw->PinStraps; | 462 | return readl(&pChipcHw->PinStraps); |
460 | } | 463 | } |
461 | 464 | ||
462 | /****************************************************************************/ | 465 | /****************************************************************************/ |
@@ -671,9 +674,9 @@ static inline void chipcHw_selectGE3(void) | |||
671 | /****************************************************************************/ | 674 | /****************************************************************************/ |
672 | static inline chipcHw_GPIO_FUNCTION_e chipcHw_getGpioPinFunction(int pin) | 675 | static inline chipcHw_GPIO_FUNCTION_e chipcHw_getGpioPinFunction(int pin) |
673 | { | 676 | { |
674 | return (*((uint32_t *) chipcHw_REG_GPIO_MUX(pin)) & | 677 | return (readl(chipcHw_REG_GPIO_MUX(pin))) & |
675 | (chipcHw_REG_GPIO_MUX_MASK << | 678 | (chipcHw_REG_GPIO_MUX_MASK << |
676 | chipcHw_REG_GPIO_MUX_POSITION(pin))) >> | 679 | chipcHw_REG_GPIO_MUX_POSITION(pin)) >> |
677 | chipcHw_REG_GPIO_MUX_POSITION(pin); | 680 | chipcHw_REG_GPIO_MUX_POSITION(pin); |
678 | } | 681 | } |
679 | 682 | ||
@@ -841,8 +844,8 @@ static inline void chipcHw_setUsbDevice(void) | |||
841 | static inline void chipcHw_setClock(chipcHw_CLOCK_e clock, | 844 | static inline void chipcHw_setClock(chipcHw_CLOCK_e clock, |
842 | chipcHw_OPTYPE_e type, int mode) | 845 | chipcHw_OPTYPE_e type, int mode) |
843 | { | 846 | { |
844 | volatile uint32_t *pPLLReg = (uint32_t *) 0x0; | 847 | uint32_t __iomem *pPLLReg = NULL; |
845 | volatile uint32_t *pClockCtrl = (uint32_t *) 0x0; | 848 | uint32_t __iomem *pClockCtrl = NULL; |
846 | 849 | ||
847 | switch (clock) { | 850 | switch (clock) { |
848 | case chipcHw_CLOCK_DDR: | 851 | case chipcHw_CLOCK_DDR: |
@@ -1071,7 +1074,7 @@ static inline void chipcHw_bypassClockDisable(chipcHw_CLOCK_e clock) | |||
1071 | /****************************************************************************/ | 1074 | /****************************************************************************/ |
1072 | static inline int chipcHw_isSoftwareStrapsEnable(void) | 1075 | static inline int chipcHw_isSoftwareStrapsEnable(void) |
1073 | { | 1076 | { |
1074 | return pChipcHw->SoftStraps & 0x00000001; | 1077 | return readl(&pChipcHw->SoftStraps) & 0x00000001; |
1075 | } | 1078 | } |
1076 | 1079 | ||
1077 | /****************************************************************************/ | 1080 | /****************************************************************************/ |
@@ -1138,7 +1141,7 @@ static inline void chipcHw_pll2TestDisable(void) | |||
1138 | /****************************************************************************/ | 1141 | /****************************************************************************/ |
1139 | static inline int chipcHw_isPllTestEnable(void) | 1142 | static inline int chipcHw_isPllTestEnable(void) |
1140 | { | 1143 | { |
1141 | return pChipcHw->PLLConfig & chipcHw_REG_PLL_CONFIG_TEST_ENABLE; | 1144 | return readl(&pChipcHw->PLLConfig) & chipcHw_REG_PLL_CONFIG_TEST_ENABLE; |
1142 | } | 1145 | } |
1143 | 1146 | ||
1144 | /****************************************************************************/ | 1147 | /****************************************************************************/ |
@@ -1147,7 +1150,7 @@ static inline int chipcHw_isPllTestEnable(void) | |||
1147 | /****************************************************************************/ | 1150 | /****************************************************************************/ |
1148 | static inline int chipcHw_isPll2TestEnable(void) | 1151 | static inline int chipcHw_isPll2TestEnable(void) |
1149 | { | 1152 | { |
1150 | return pChipcHw->PLLConfig2 & chipcHw_REG_PLL_CONFIG_TEST_ENABLE; | 1153 | return readl(&pChipcHw->PLLConfig2) & chipcHw_REG_PLL_CONFIG_TEST_ENABLE; |
1151 | } | 1154 | } |
1152 | 1155 | ||
1153 | /****************************************************************************/ | 1156 | /****************************************************************************/ |
@@ -1183,8 +1186,8 @@ static inline void chipcHw_pll2TestSelect(uint32_t val) | |||
1183 | /****************************************************************************/ | 1186 | /****************************************************************************/ |
1184 | static inline uint8_t chipcHw_getPllTestSelected(void) | 1187 | static inline uint8_t chipcHw_getPllTestSelected(void) |
1185 | { | 1188 | { |
1186 | return (uint8_t) ((pChipcHw-> | 1189 | return (uint8_t) ((readl(&pChipcHw-> |
1187 | PLLConfig & chipcHw_REG_PLL_CONFIG_TEST_SELECT_MASK) | 1190 | PLLConfig) & chipcHw_REG_PLL_CONFIG_TEST_SELECT_MASK) |
1188 | >> chipcHw_REG_PLL_CONFIG_TEST_SELECT_SHIFT); | 1191 | >> chipcHw_REG_PLL_CONFIG_TEST_SELECT_SHIFT); |
1189 | } | 1192 | } |
1190 | 1193 | ||
@@ -1194,8 +1197,8 @@ static inline uint8_t chipcHw_getPllTestSelected(void) | |||
1194 | /****************************************************************************/ | 1197 | /****************************************************************************/ |
1195 | static inline uint8_t chipcHw_getPll2TestSelected(void) | 1198 | static inline uint8_t chipcHw_getPll2TestSelected(void) |
1196 | { | 1199 | { |
1197 | return (uint8_t) ((pChipcHw-> | 1200 | return (uint8_t) ((readl(&pChipcHw-> |
1198 | PLLConfig2 & chipcHw_REG_PLL_CONFIG_TEST_SELECT_MASK) | 1201 | PLLConfig2) & chipcHw_REG_PLL_CONFIG_TEST_SELECT_MASK) |
1199 | >> chipcHw_REG_PLL_CONFIG_TEST_SELECT_SHIFT); | 1202 | >> chipcHw_REG_PLL_CONFIG_TEST_SELECT_SHIFT); |
1200 | } | 1203 | } |
1201 | 1204 | ||
@@ -1208,7 +1211,8 @@ static inline uint8_t chipcHw_getPll2TestSelected(void) | |||
1208 | static inline void chipcHw_pll1Disable(void) | 1211 | static inline void chipcHw_pll1Disable(void) |
1209 | { | 1212 | { |
1210 | REG_LOCAL_IRQ_SAVE; | 1213 | REG_LOCAL_IRQ_SAVE; |
1211 | pChipcHw->PLLConfig |= chipcHw_REG_PLL_CONFIG_POWER_DOWN; | 1214 | writel(readl(&pChipcHw->PLLConfig) | chipcHw_REG_PLL_CONFIG_POWER_DOWN, |
1215 | &pChipcHw->PLLConfig); | ||
1212 | REG_LOCAL_IRQ_RESTORE; | 1216 | REG_LOCAL_IRQ_RESTORE; |
1213 | } | 1217 | } |
1214 | 1218 | ||
@@ -1221,7 +1225,8 @@ static inline void chipcHw_pll1Disable(void) | |||
1221 | static inline void chipcHw_pll2Disable(void) | 1225 | static inline void chipcHw_pll2Disable(void) |
1222 | { | 1226 | { |
1223 | REG_LOCAL_IRQ_SAVE; | 1227 | REG_LOCAL_IRQ_SAVE; |
1224 | pChipcHw->PLLConfig2 |= chipcHw_REG_PLL_CONFIG_POWER_DOWN; | 1228 | writel(readl(&pChipcHw->PLLConfig2) | chipcHw_REG_PLL_CONFIG_POWER_DOWN, |
1229 | &pChipcHw->PLLConfig2); | ||
1225 | REG_LOCAL_IRQ_RESTORE; | 1230 | REG_LOCAL_IRQ_RESTORE; |
1226 | } | 1231 | } |
1227 | 1232 | ||
@@ -1233,7 +1238,8 @@ static inline void chipcHw_pll2Disable(void) | |||
1233 | static inline void chipcHw_ddrPhaseAlignInterruptEnable(void) | 1238 | static inline void chipcHw_ddrPhaseAlignInterruptEnable(void) |
1234 | { | 1239 | { |
1235 | REG_LOCAL_IRQ_SAVE; | 1240 | REG_LOCAL_IRQ_SAVE; |
1236 | pChipcHw->Spare1 |= chipcHw_REG_SPARE1_DDR_PHASE_INTR_ENABLE; | 1241 | writel(readl(&pChipcHw->Spare1) | chipcHw_REG_SPARE1_DDR_PHASE_INTR_ENABLE, |
1242 | &pChipcHw->Spare1); | ||
1237 | REG_LOCAL_IRQ_RESTORE; | 1243 | REG_LOCAL_IRQ_RESTORE; |
1238 | } | 1244 | } |
1239 | 1245 | ||
@@ -1245,7 +1251,8 @@ static inline void chipcHw_ddrPhaseAlignInterruptEnable(void) | |||
1245 | static inline void chipcHw_ddrPhaseAlignInterruptDisable(void) | 1251 | static inline void chipcHw_ddrPhaseAlignInterruptDisable(void) |
1246 | { | 1252 | { |
1247 | REG_LOCAL_IRQ_SAVE; | 1253 | REG_LOCAL_IRQ_SAVE; |
1248 | pChipcHw->Spare1 &= ~chipcHw_REG_SPARE1_DDR_PHASE_INTR_ENABLE; | 1254 | writel(readl(&pChipcHw->Spare1) & ~chipcHw_REG_SPARE1_DDR_PHASE_INTR_ENABLE, |
1255 | &pChipcHw->Spare1); | ||
1249 | REG_LOCAL_IRQ_RESTORE; | 1256 | REG_LOCAL_IRQ_RESTORE; |
1250 | } | 1257 | } |
1251 | 1258 | ||
@@ -1333,7 +1340,8 @@ static inline void chipcHw_ddrHwPhaseAlignDisable(void) | |||
1333 | static inline void chipcHw_vpmSwPhaseAlignEnable(void) | 1340 | static inline void chipcHw_vpmSwPhaseAlignEnable(void) |
1334 | { | 1341 | { |
1335 | REG_LOCAL_IRQ_SAVE; | 1342 | REG_LOCAL_IRQ_SAVE; |
1336 | pChipcHw->VPMPhaseCtrl1 |= chipcHw_REG_VPM_SW_PHASE_CTRL_ENABLE; | 1343 | writel(readl(&pChipcHw->VPMPhaseCtrl1) | chipcHw_REG_VPM_SW_PHASE_CTRL_ENABLE, |
1344 | &pChipcHw->VPMPhaseCtrl1); | ||
1337 | REG_LOCAL_IRQ_RESTORE; | 1345 | REG_LOCAL_IRQ_RESTORE; |
1338 | } | 1346 | } |
1339 | 1347 | ||
@@ -1372,7 +1380,8 @@ static inline void chipcHw_vpmHwPhaseAlignEnable(void) | |||
1372 | static inline void chipcHw_vpmHwPhaseAlignDisable(void) | 1380 | static inline void chipcHw_vpmHwPhaseAlignDisable(void) |
1373 | { | 1381 | { |
1374 | REG_LOCAL_IRQ_SAVE; | 1382 | REG_LOCAL_IRQ_SAVE; |
1375 | pChipcHw->VPMPhaseCtrl1 &= ~chipcHw_REG_VPM_HW_PHASE_CTRL_ENABLE; | 1383 | writel(readl(&pChipcHw->VPMPhaseCtrl1) & ~chipcHw_REG_VPM_HW_PHASE_CTRL_ENABLE, |
1384 | &pChipcHw->VPMPhaseCtrl1); | ||
1376 | REG_LOCAL_IRQ_RESTORE; | 1385 | REG_LOCAL_IRQ_RESTORE; |
1377 | } | 1386 | } |
1378 | 1387 | ||
@@ -1474,8 +1483,8 @@ chipcHw_setVpmHwPhaseAlignMargin(chipcHw_VPM_HW_PHASE_MARGIN_e margin) | |||
1474 | /****************************************************************************/ | 1483 | /****************************************************************************/ |
1475 | static inline uint32_t chipcHw_isDdrHwPhaseAligned(void) | 1484 | static inline uint32_t chipcHw_isDdrHwPhaseAligned(void) |
1476 | { | 1485 | { |
1477 | return (pChipcHw-> | 1486 | return (readl(&pChipcHw-> |
1478 | PhaseAlignStatus & chipcHw_REG_DDR_PHASE_ALIGNED) ? 1 : 0; | 1487 | PhaseAlignStatus) & chipcHw_REG_DDR_PHASE_ALIGNED) ? 1 : 0; |
1479 | } | 1488 | } |
1480 | 1489 | ||
1481 | /****************************************************************************/ | 1490 | /****************************************************************************/ |
@@ -1488,8 +1497,8 @@ static inline uint32_t chipcHw_isDdrHwPhaseAligned(void) | |||
1488 | /****************************************************************************/ | 1497 | /****************************************************************************/ |
1489 | static inline uint32_t chipcHw_isVpmHwPhaseAligned(void) | 1498 | static inline uint32_t chipcHw_isVpmHwPhaseAligned(void) |
1490 | { | 1499 | { |
1491 | return (pChipcHw-> | 1500 | return (readl(&pChipcHw-> |
1492 | PhaseAlignStatus & chipcHw_REG_VPM_PHASE_ALIGNED) ? 1 : 0; | 1501 | PhaseAlignStatus) & chipcHw_REG_VPM_PHASE_ALIGNED) ? 1 : 0; |
1493 | } | 1502 | } |
1494 | 1503 | ||
1495 | /****************************************************************************/ | 1504 | /****************************************************************************/ |
@@ -1500,8 +1509,8 @@ static inline uint32_t chipcHw_isVpmHwPhaseAligned(void) | |||
1500 | /****************************************************************************/ | 1509 | /****************************************************************************/ |
1501 | static inline uint32_t chipcHw_getDdrHwPhaseAlignStatus(void) | 1510 | static inline uint32_t chipcHw_getDdrHwPhaseAlignStatus(void) |
1502 | { | 1511 | { |
1503 | return (pChipcHw-> | 1512 | return (readl(&pChipcHw-> |
1504 | PhaseAlignStatus & chipcHw_REG_DDR_PHASE_STATUS_MASK) >> | 1513 | PhaseAlignStatus) & chipcHw_REG_DDR_PHASE_STATUS_MASK) >> |
1505 | chipcHw_REG_DDR_PHASE_STATUS_SHIFT; | 1514 | chipcHw_REG_DDR_PHASE_STATUS_SHIFT; |
1506 | } | 1515 | } |
1507 | 1516 | ||
@@ -1513,8 +1522,8 @@ static inline uint32_t chipcHw_getDdrHwPhaseAlignStatus(void) | |||
1513 | /****************************************************************************/ | 1522 | /****************************************************************************/ |
1514 | static inline uint32_t chipcHw_getVpmHwPhaseAlignStatus(void) | 1523 | static inline uint32_t chipcHw_getVpmHwPhaseAlignStatus(void) |
1515 | { | 1524 | { |
1516 | return (pChipcHw-> | 1525 | return (readl(&pChipcHw-> |
1517 | PhaseAlignStatus & chipcHw_REG_VPM_PHASE_STATUS_MASK) >> | 1526 | PhaseAlignStatus) & chipcHw_REG_VPM_PHASE_STATUS_MASK) >> |
1518 | chipcHw_REG_VPM_PHASE_STATUS_SHIFT; | 1527 | chipcHw_REG_VPM_PHASE_STATUS_SHIFT; |
1519 | } | 1528 | } |
1520 | 1529 | ||
@@ -1526,8 +1535,8 @@ static inline uint32_t chipcHw_getVpmHwPhaseAlignStatus(void) | |||
1526 | /****************************************************************************/ | 1535 | /****************************************************************************/ |
1527 | static inline uint32_t chipcHw_getDdrPhaseControl(void) | 1536 | static inline uint32_t chipcHw_getDdrPhaseControl(void) |
1528 | { | 1537 | { |
1529 | return (pChipcHw-> | 1538 | return (readl(&pChipcHw-> |
1530 | PhaseAlignStatus & chipcHw_REG_DDR_PHASE_CTRL_MASK) >> | 1539 | PhaseAlignStatus) & chipcHw_REG_DDR_PHASE_CTRL_MASK) >> |
1531 | chipcHw_REG_DDR_PHASE_CTRL_SHIFT; | 1540 | chipcHw_REG_DDR_PHASE_CTRL_SHIFT; |
1532 | } | 1541 | } |
1533 | 1542 | ||
@@ -1539,8 +1548,8 @@ static inline uint32_t chipcHw_getDdrPhaseControl(void) | |||
1539 | /****************************************************************************/ | 1548 | /****************************************************************************/ |
1540 | static inline uint32_t chipcHw_getVpmPhaseControl(void) | 1549 | static inline uint32_t chipcHw_getVpmPhaseControl(void) |
1541 | { | 1550 | { |
1542 | return (pChipcHw-> | 1551 | return (readl(&pChipcHw-> |
1543 | PhaseAlignStatus & chipcHw_REG_VPM_PHASE_CTRL_MASK) >> | 1552 | PhaseAlignStatus) & chipcHw_REG_VPM_PHASE_CTRL_MASK) >> |
1544 | chipcHw_REG_VPM_PHASE_CTRL_SHIFT; | 1553 | chipcHw_REG_VPM_PHASE_CTRL_SHIFT; |
1545 | } | 1554 | } |
1546 | 1555 | ||
diff --git a/arch/arm/mach-bcmring/include/mach/csp/chipcHw_reg.h b/arch/arm/mach-bcmring/include/mach/csp/chipcHw_reg.h index b162448f613c..26f5d0e4e1dd 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/chipcHw_reg.h +++ b/arch/arm/mach-bcmring/include/mach/csp/chipcHw_reg.h | |||
@@ -24,7 +24,7 @@ | |||
24 | #define CHIPCHW_REG_H | 24 | #define CHIPCHW_REG_H |
25 | 25 | ||
26 | #include <mach/csp/mm_io.h> | 26 | #include <mach/csp/mm_io.h> |
27 | #include <csp/reg.h> | 27 | #include <mach/csp/reg.h> |
28 | #include <mach/csp/ddrcReg.h> | 28 | #include <mach/csp/ddrcReg.h> |
29 | 29 | ||
30 | #define chipcHw_BASE_ADDRESS MM_IO_BASE_CHIPC | 30 | #define chipcHw_BASE_ADDRESS MM_IO_BASE_CHIPC |
@@ -131,8 +131,8 @@ typedef struct { | |||
131 | uint32_t MiscInput_0_15; /* Input type for MISC 0 - 16 */ | 131 | uint32_t MiscInput_0_15; /* Input type for MISC 0 - 16 */ |
132 | } chipcHw_REG_t; | 132 | } chipcHw_REG_t; |
133 | 133 | ||
134 | #define pChipcHw ((volatile chipcHw_REG_t *) chipcHw_BASE_ADDRESS) | 134 | #define pChipcHw ((chipcHw_REG_t __iomem *) chipcHw_BASE_ADDRESS) |
135 | #define pChipcPhysical ((volatile chipcHw_REG_t *) MM_ADDR_IO_CHIPC) | 135 | #define pChipcPhysical (MM_ADDR_IO_CHIPC) |
136 | 136 | ||
137 | #define chipcHw_REG_CHIPID_BASE_MASK 0xFFFFF000 | 137 | #define chipcHw_REG_CHIPID_BASE_MASK 0xFFFFF000 |
138 | #define chipcHw_REG_CHIPID_BASE_SHIFT 12 | 138 | #define chipcHw_REG_CHIPID_BASE_SHIFT 12 |
diff --git a/arch/arm/mach-bcmring/include/mach/csp/ddrcReg.h b/arch/arm/mach-bcmring/include/mach/csp/ddrcReg.h index f1b68e26fa6d..39da2c1fdafb 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/ddrcReg.h +++ b/arch/arm/mach-bcmring/include/mach/csp/ddrcReg.h | |||
@@ -30,8 +30,8 @@ extern "C" { | |||
30 | 30 | ||
31 | /* ---- Include Files ---------------------------------------------------- */ | 31 | /* ---- Include Files ---------------------------------------------------- */ |
32 | 32 | ||
33 | #include <csp/reg.h> | 33 | #include <mach/csp/reg.h> |
34 | #include <csp/stdint.h> | 34 | #include <linux/types.h> |
35 | 35 | ||
36 | #include <mach/csp/mm_io.h> | 36 | #include <mach/csp/mm_io.h> |
37 | 37 | ||
@@ -416,7 +416,7 @@ extern "C" { | |||
416 | } ddrcReg_PHY_ADDR_CTL_REG_t; | 416 | } ddrcReg_PHY_ADDR_CTL_REG_t; |
417 | 417 | ||
418 | #define ddrcReg_PHY_ADDR_CTL_REG_OFFSET 0x0400 | 418 | #define ddrcReg_PHY_ADDR_CTL_REG_OFFSET 0x0400 |
419 | #define ddrcReg_PHY_ADDR_CTL_REGP ((volatile ddrcReg_PHY_ADDR_CTL_REG_t *) (MM_IO_BASE_DDRC + ddrcReg_PHY_ADDR_CTL_REG_OFFSET)) | 419 | #define ddrcReg_PHY_ADDR_CTL_REGP ((volatile ddrcReg_PHY_ADDR_CTL_REG_t __iomem*) (MM_IO_BASE_DDRC + ddrcReg_PHY_ADDR_CTL_REG_OFFSET)) |
420 | 420 | ||
421 | /* @todo These SS definitions are duplicates of ones below */ | 421 | /* @todo These SS definitions are duplicates of ones below */ |
422 | 422 | ||
diff --git a/arch/arm/mach-bcmring/include/csp/dmacHw.h b/arch/arm/mach-bcmring/include/mach/csp/dmacHw.h index e6a1dc484ca7..9dc90f46a84d 100644 --- a/arch/arm/mach-bcmring/include/csp/dmacHw.h +++ b/arch/arm/mach-bcmring/include/mach/csp/dmacHw.h | |||
@@ -23,9 +23,9 @@ | |||
23 | #ifndef _DMACHW_H | 23 | #ifndef _DMACHW_H |
24 | #define _DMACHW_H | 24 | #define _DMACHW_H |
25 | 25 | ||
26 | #include <stddef.h> | 26 | #include <linux/stddef.h> |
27 | 27 | ||
28 | #include <csp/stdint.h> | 28 | #include <linux/types.h> |
29 | #include <mach/csp/dmacHw_reg.h> | 29 | #include <mach/csp/dmacHw_reg.h> |
30 | 30 | ||
31 | /* Define DMA Channel ID using DMA controller number (m) and channel number (c). | 31 | /* Define DMA Channel ID using DMA controller number (m) and channel number (c). |
diff --git a/arch/arm/mach-bcmring/include/mach/csp/dmacHw_priv.h b/arch/arm/mach-bcmring/include/mach/csp/dmacHw_priv.h index d67e2f8c22de..9d9455e0c391 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/dmacHw_priv.h +++ b/arch/arm/mach-bcmring/include/mach/csp/dmacHw_priv.h | |||
@@ -24,7 +24,7 @@ | |||
24 | #ifndef _DMACHW_PRIV_H | 24 | #ifndef _DMACHW_PRIV_H |
25 | #define _DMACHW_PRIV_H | 25 | #define _DMACHW_PRIV_H |
26 | 26 | ||
27 | #include <csp/stdint.h> | 27 | #include <linux/types.h> |
28 | 28 | ||
29 | /* Data type for DMA Link List Item */ | 29 | /* Data type for DMA Link List Item */ |
30 | typedef struct { | 30 | typedef struct { |
diff --git a/arch/arm/mach-bcmring/include/mach/csp/dmacHw_reg.h b/arch/arm/mach-bcmring/include/mach/csp/dmacHw_reg.h index f1ecf96f2da5..7cd0aafa6f6e 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/dmacHw_reg.h +++ b/arch/arm/mach-bcmring/include/mach/csp/dmacHw_reg.h | |||
@@ -24,7 +24,7 @@ | |||
24 | #ifndef _DMACHW_REG_H | 24 | #ifndef _DMACHW_REG_H |
25 | #define _DMACHW_REG_H | 25 | #define _DMACHW_REG_H |
26 | 26 | ||
27 | #include <csp/stdint.h> | 27 | #include <linux/types.h> |
28 | #include <mach/csp/mm_io.h> | 28 | #include <mach/csp/mm_io.h> |
29 | 29 | ||
30 | /* Data type for 64 bit little endian register */ | 30 | /* Data type for 64 bit little endian register */ |
@@ -121,75 +121,75 @@ typedef struct { | |||
121 | } dmacHw_MISC_t; | 121 | } dmacHw_MISC_t; |
122 | 122 | ||
123 | /* Base registers */ | 123 | /* Base registers */ |
124 | #define dmacHw_0_MODULE_BASE_ADDR (char *) MM_IO_BASE_DMA0 /* DMAC 0 module's base address */ | 124 | #define dmacHw_0_MODULE_BASE_ADDR (char __iomem*) MM_IO_BASE_DMA0 /* DMAC 0 module's base address */ |
125 | #define dmacHw_1_MODULE_BASE_ADDR (char *) MM_IO_BASE_DMA1 /* DMAC 1 module's base address */ | 125 | #define dmacHw_1_MODULE_BASE_ADDR (char __iomem*) MM_IO_BASE_DMA1 /* DMAC 1 module's base address */ |
126 | 126 | ||
127 | extern uint32_t dmaChannelCount_0; | 127 | extern uint32_t dmaChannelCount_0; |
128 | extern uint32_t dmaChannelCount_1; | 128 | extern uint32_t dmaChannelCount_1; |
129 | 129 | ||
130 | /* Define channel specific registers */ | 130 | /* Define channel specific registers */ |
131 | #define dmacHw_CHAN_BASE(module, chan) ((dmacHw_CH_REG_t *) ((char *)((module) ? dmacHw_1_MODULE_BASE_ADDR : dmacHw_0_MODULE_BASE_ADDR) + ((chan) * sizeof(dmacHw_CH_REG_t)))) | 131 | #define dmacHw_CHAN_BASE(module, chan) ((dmacHw_CH_REG_t __iomem*) ((char __iomem*)((module) ? dmacHw_1_MODULE_BASE_ADDR : dmacHw_0_MODULE_BASE_ADDR) + ((chan) * sizeof(dmacHw_CH_REG_t)))) |
132 | 132 | ||
133 | /* Raw interrupt status registers */ | 133 | /* Raw interrupt status registers */ |
134 | #define dmacHw_REG_INT_RAW_BASE(module) ((char *)dmacHw_CHAN_BASE((module), ((module) ? dmaChannelCount_1 : dmaChannelCount_0))) | 134 | #define dmacHw_REG_INT_RAW_BASE(module) ((char __iomem *)dmacHw_CHAN_BASE((module), ((module) ? dmaChannelCount_1 : dmaChannelCount_0))) |
135 | #define dmacHw_REG_INT_RAW_TRAN(module) (((dmacHw_INT_RAW_t *) dmacHw_REG_INT_RAW_BASE((module)))->RawTfr.lo) | 135 | #define dmacHw_REG_INT_RAW_TRAN(module) (((dmacHw_INT_RAW_t __iomem *) dmacHw_REG_INT_RAW_BASE((module)))->RawTfr.lo) |
136 | #define dmacHw_REG_INT_RAW_BLOCK(module) (((dmacHw_INT_RAW_t *) dmacHw_REG_INT_RAW_BASE((module)))->RawBlock.lo) | 136 | #define dmacHw_REG_INT_RAW_BLOCK(module) (((dmacHw_INT_RAW_t __iomem *) dmacHw_REG_INT_RAW_BASE((module)))->RawBlock.lo) |
137 | #define dmacHw_REG_INT_RAW_STRAN(module) (((dmacHw_INT_RAW_t *) dmacHw_REG_INT_RAW_BASE((module)))->RawSrcTran.lo) | 137 | #define dmacHw_REG_INT_RAW_STRAN(module) (((dmacHw_INT_RAW_t __iomem *) dmacHw_REG_INT_RAW_BASE((module)))->RawSrcTran.lo) |
138 | #define dmacHw_REG_INT_RAW_DTRAN(module) (((dmacHw_INT_RAW_t *) dmacHw_REG_INT_RAW_BASE((module)))->RawDstTran.lo) | 138 | #define dmacHw_REG_INT_RAW_DTRAN(module) (((dmacHw_INT_RAW_t __iomem *) dmacHw_REG_INT_RAW_BASE((module)))->RawDstTran.lo) |
139 | #define dmacHw_REG_INT_RAW_ERROR(module) (((dmacHw_INT_RAW_t *) dmacHw_REG_INT_RAW_BASE((module)))->RawErr.lo) | 139 | #define dmacHw_REG_INT_RAW_ERROR(module) (((dmacHw_INT_RAW_t __iomem *) dmacHw_REG_INT_RAW_BASE((module)))->RawErr.lo) |
140 | 140 | ||
141 | /* Interrupt status registers */ | 141 | /* Interrupt status registers */ |
142 | #define dmacHw_REG_INT_STAT_BASE(module) ((char *)(dmacHw_REG_INT_RAW_BASE((module)) + sizeof(dmacHw_INT_RAW_t))) | 142 | #define dmacHw_REG_INT_STAT_BASE(module) ((char __iomem*)(dmacHw_REG_INT_RAW_BASE((module)) + sizeof(dmacHw_INT_RAW_t))) |
143 | #define dmacHw_REG_INT_STAT_TRAN(module) (((dmacHw_INT_STATUS_t *) dmacHw_REG_INT_STAT_BASE((module)))->StatusTfr.lo) | 143 | #define dmacHw_REG_INT_STAT_TRAN(module) (((dmacHw_INT_STATUS_t __iomem *) dmacHw_REG_INT_STAT_BASE((module)))->StatusTfr.lo) |
144 | #define dmacHw_REG_INT_STAT_BLOCK(module) (((dmacHw_INT_STATUS_t *) dmacHw_REG_INT_STAT_BASE((module)))->StatusBlock.lo) | 144 | #define dmacHw_REG_INT_STAT_BLOCK(module) (((dmacHw_INT_STATUS_t __iomem *) dmacHw_REG_INT_STAT_BASE((module)))->StatusBlock.lo) |
145 | #define dmacHw_REG_INT_STAT_STRAN(module) (((dmacHw_INT_STATUS_t *) dmacHw_REG_INT_STAT_BASE((module)))->StatusSrcTran.lo) | 145 | #define dmacHw_REG_INT_STAT_STRAN(module) (((dmacHw_INT_STATUS_t __iomem *) dmacHw_REG_INT_STAT_BASE((module)))->StatusSrcTran.lo) |
146 | #define dmacHw_REG_INT_STAT_DTRAN(module) (((dmacHw_INT_STATUS_t *) dmacHw_REG_INT_STAT_BASE((module)))->StatusDstTran.lo) | 146 | #define dmacHw_REG_INT_STAT_DTRAN(module) (((dmacHw_INT_STATUS_t __iomem *) dmacHw_REG_INT_STAT_BASE((module)))->StatusDstTran.lo) |
147 | #define dmacHw_REG_INT_STAT_ERROR(module) (((dmacHw_INT_STATUS_t *) dmacHw_REG_INT_STAT_BASE((module)))->StatusErr.lo) | 147 | #define dmacHw_REG_INT_STAT_ERROR(module) (((dmacHw_INT_STATUS_t __iomem *) dmacHw_REG_INT_STAT_BASE((module)))->StatusErr.lo) |
148 | 148 | ||
149 | /* Interrupt status registers */ | 149 | /* Interrupt status registers */ |
150 | #define dmacHw_REG_INT_MASK_BASE(module) ((char *)(dmacHw_REG_INT_STAT_BASE((module)) + sizeof(dmacHw_INT_STATUS_t))) | 150 | #define dmacHw_REG_INT_MASK_BASE(module) ((char __iomem*)(dmacHw_REG_INT_STAT_BASE((module)) + sizeof(dmacHw_INT_STATUS_t))) |
151 | #define dmacHw_REG_INT_MASK_TRAN(module) (((dmacHw_INT_MASK_t *) dmacHw_REG_INT_MASK_BASE((module)))->MaskTfr.lo) | 151 | #define dmacHw_REG_INT_MASK_TRAN(module) (((dmacHw_INT_MASK_t __iomem *) dmacHw_REG_INT_MASK_BASE((module)))->MaskTfr.lo) |
152 | #define dmacHw_REG_INT_MASK_BLOCK(module) (((dmacHw_INT_MASK_t *) dmacHw_REG_INT_MASK_BASE((module)))->MaskBlock.lo) | 152 | #define dmacHw_REG_INT_MASK_BLOCK(module) (((dmacHw_INT_MASK_t __iomem *) dmacHw_REG_INT_MASK_BASE((module)))->MaskBlock.lo) |
153 | #define dmacHw_REG_INT_MASK_STRAN(module) (((dmacHw_INT_MASK_t *) dmacHw_REG_INT_MASK_BASE((module)))->MaskSrcTran.lo) | 153 | #define dmacHw_REG_INT_MASK_STRAN(module) (((dmacHw_INT_MASK_t __iomem *) dmacHw_REG_INT_MASK_BASE((module)))->MaskSrcTran.lo) |
154 | #define dmacHw_REG_INT_MASK_DTRAN(module) (((dmacHw_INT_MASK_t *) dmacHw_REG_INT_MASK_BASE((module)))->MaskDstTran.lo) | 154 | #define dmacHw_REG_INT_MASK_DTRAN(module) (((dmacHw_INT_MASK_t __iomem *) dmacHw_REG_INT_MASK_BASE((module)))->MaskDstTran.lo) |
155 | #define dmacHw_REG_INT_MASK_ERROR(module) (((dmacHw_INT_MASK_t *) dmacHw_REG_INT_MASK_BASE((module)))->MaskErr.lo) | 155 | #define dmacHw_REG_INT_MASK_ERROR(module) (((dmacHw_INT_MASK_t __iomem *) dmacHw_REG_INT_MASK_BASE((module)))->MaskErr.lo) |
156 | 156 | ||
157 | /* Interrupt clear registers */ | 157 | /* Interrupt clear registers */ |
158 | #define dmacHw_REG_INT_CLEAR_BASE(module) ((char *)(dmacHw_REG_INT_MASK_BASE((module)) + sizeof(dmacHw_INT_MASK_t))) | 158 | #define dmacHw_REG_INT_CLEAR_BASE(module) ((char __iomem*)(dmacHw_REG_INT_MASK_BASE((module)) + sizeof(dmacHw_INT_MASK_t))) |
159 | #define dmacHw_REG_INT_CLEAR_TRAN(module) (((dmacHw_INT_CLEAR_t *) dmacHw_REG_INT_CLEAR_BASE((module)))->ClearTfr.lo) | 159 | #define dmacHw_REG_INT_CLEAR_TRAN(module) (((dmacHw_INT_CLEAR_t __iomem *) dmacHw_REG_INT_CLEAR_BASE((module)))->ClearTfr.lo) |
160 | #define dmacHw_REG_INT_CLEAR_BLOCK(module) (((dmacHw_INT_CLEAR_t *) dmacHw_REG_INT_CLEAR_BASE((module)))->ClearBlock.lo) | 160 | #define dmacHw_REG_INT_CLEAR_BLOCK(module) (((dmacHw_INT_CLEAR_t __iomem *) dmacHw_REG_INT_CLEAR_BASE((module)))->ClearBlock.lo) |
161 | #define dmacHw_REG_INT_CLEAR_STRAN(module) (((dmacHw_INT_CLEAR_t *) dmacHw_REG_INT_CLEAR_BASE((module)))->ClearSrcTran.lo) | 161 | #define dmacHw_REG_INT_CLEAR_STRAN(module) (((dmacHw_INT_CLEAR_t __iomem *) dmacHw_REG_INT_CLEAR_BASE((module)))->ClearSrcTran.lo) |
162 | #define dmacHw_REG_INT_CLEAR_DTRAN(module) (((dmacHw_INT_CLEAR_t *) dmacHw_REG_INT_CLEAR_BASE((module)))->ClearDstTran.lo) | 162 | #define dmacHw_REG_INT_CLEAR_DTRAN(module) (((dmacHw_INT_CLEAR_t __iomem *) dmacHw_REG_INT_CLEAR_BASE((module)))->ClearDstTran.lo) |
163 | #define dmacHw_REG_INT_CLEAR_ERROR(module) (((dmacHw_INT_CLEAR_t *) dmacHw_REG_INT_CLEAR_BASE((module)))->ClearErr.lo) | 163 | #define dmacHw_REG_INT_CLEAR_ERROR(module) (((dmacHw_INT_CLEAR_t __iomem *) dmacHw_REG_INT_CLEAR_BASE((module)))->ClearErr.lo) |
164 | #define dmacHw_REG_INT_STATUS(module) (((dmacHw_INT_CLEAR_t *) dmacHw_REG_INT_CLEAR_BASE((module)))->StatusInt.lo) | 164 | #define dmacHw_REG_INT_STATUS(module) (((dmacHw_INT_CLEAR_t __iomem *) dmacHw_REG_INT_CLEAR_BASE((module)))->StatusInt.lo) |
165 | 165 | ||
166 | /* Software handshaking registers */ | 166 | /* Software handshaking registers */ |
167 | #define dmacHw_REG_SW_HS_BASE(module) ((char *)(dmacHw_REG_INT_CLEAR_BASE((module)) + sizeof(dmacHw_INT_CLEAR_t))) | 167 | #define dmacHw_REG_SW_HS_BASE(module) ((char __iomem*)(dmacHw_REG_INT_CLEAR_BASE((module)) + sizeof(dmacHw_INT_CLEAR_t))) |
168 | #define dmacHw_REG_SW_HS_SRC_REQ(module) (((dmacHw_SW_HANDSHAKE_t *) dmacHw_REG_SW_HS_BASE((module)))->ReqSrcReg.lo) | 168 | #define dmacHw_REG_SW_HS_SRC_REQ(module) (((dmacHw_SW_HANDSHAKE_t __iomem *) dmacHw_REG_SW_HS_BASE((module)))->ReqSrcReg.lo) |
169 | #define dmacHw_REG_SW_HS_DST_REQ(module) (((dmacHw_SW_HANDSHAKE_t *) dmacHw_REG_SW_HS_BASE((module)))->ReqDstReg.lo) | 169 | #define dmacHw_REG_SW_HS_DST_REQ(module) (((dmacHw_SW_HANDSHAKE_t __iomem *) dmacHw_REG_SW_HS_BASE((module)))->ReqDstReg.lo) |
170 | #define dmacHw_REG_SW_HS_SRC_SGL_REQ(module) (((dmacHw_SW_HANDSHAKE_t *) dmacHw_REG_SW_HS_BASE((module)))->SglReqSrcReg.lo) | 170 | #define dmacHw_REG_SW_HS_SRC_SGL_REQ(module) (((dmacHw_SW_HANDSHAKE_t __iomem *) dmacHw_REG_SW_HS_BASE((module)))->SglReqSrcReg.lo) |
171 | #define dmacHw_REG_SW_HS_DST_SGL_REQ(module) (((dmacHw_SW_HANDSHAKE_t *) dmacHw_REG_SW_HS_BASE((module)))->SglReqDstReg.lo) | 171 | #define dmacHw_REG_SW_HS_DST_SGL_REQ(module) (((dmacHw_SW_HANDSHAKE_t __iomem *) dmacHw_REG_SW_HS_BASE((module)))->SglReqDstReg.lo) |
172 | #define dmacHw_REG_SW_HS_SRC_LST_REQ(module) (((dmacHw_SW_HANDSHAKE_t *) dmacHw_REG_SW_HS_BASE((module)))->LstSrcReg.lo) | 172 | #define dmacHw_REG_SW_HS_SRC_LST_REQ(module) (((dmacHw_SW_HANDSHAKE_t __iomem *) dmacHw_REG_SW_HS_BASE((module)))->LstSrcReg.lo) |
173 | #define dmacHw_REG_SW_HS_DST_LST_REQ(module) (((dmacHw_SW_HANDSHAKE_t *) dmacHw_REG_SW_HS_BASE((module)))->LstDstReg.lo) | 173 | #define dmacHw_REG_SW_HS_DST_LST_REQ(module) (((dmacHw_SW_HANDSHAKE_t __iomem *) dmacHw_REG_SW_HS_BASE((module)))->LstDstReg.lo) |
174 | 174 | ||
175 | /* Miscellaneous registers */ | 175 | /* Miscellaneous registers */ |
176 | #define dmacHw_REG_MISC_BASE(module) ((char *)(dmacHw_REG_SW_HS_BASE((module)) + sizeof(dmacHw_SW_HANDSHAKE_t))) | 176 | #define dmacHw_REG_MISC_BASE(module) ((char __iomem*)(dmacHw_REG_SW_HS_BASE((module)) + sizeof(dmacHw_SW_HANDSHAKE_t))) |
177 | #define dmacHw_REG_MISC_CFG(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->DmaCfgReg.lo) | 177 | #define dmacHw_REG_MISC_CFG(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->DmaCfgReg.lo) |
178 | #define dmacHw_REG_MISC_CH_ENABLE(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->ChEnReg.lo) | 178 | #define dmacHw_REG_MISC_CH_ENABLE(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->ChEnReg.lo) |
179 | #define dmacHw_REG_MISC_ID(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->DmaIdReg.lo) | 179 | #define dmacHw_REG_MISC_ID(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->DmaIdReg.lo) |
180 | #define dmacHw_REG_MISC_TEST(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->DmaTestReg.lo) | 180 | #define dmacHw_REG_MISC_TEST(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->DmaTestReg.lo) |
181 | #define dmacHw_REG_MISC_COMP_PARAM1_LO(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm1.lo) | 181 | #define dmacHw_REG_MISC_COMP_PARAM1_LO(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm1.lo) |
182 | #define dmacHw_REG_MISC_COMP_PARAM1_HI(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm1.hi) | 182 | #define dmacHw_REG_MISC_COMP_PARAM1_HI(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm1.hi) |
183 | #define dmacHw_REG_MISC_COMP_PARAM2_LO(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm2.lo) | 183 | #define dmacHw_REG_MISC_COMP_PARAM2_LO(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm2.lo) |
184 | #define dmacHw_REG_MISC_COMP_PARAM2_HI(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm2.hi) | 184 | #define dmacHw_REG_MISC_COMP_PARAM2_HI(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm2.hi) |
185 | #define dmacHw_REG_MISC_COMP_PARAM3_LO(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm3.lo) | 185 | #define dmacHw_REG_MISC_COMP_PARAM3_LO(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm3.lo) |
186 | #define dmacHw_REG_MISC_COMP_PARAM3_HI(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm3.hi) | 186 | #define dmacHw_REG_MISC_COMP_PARAM3_HI(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm3.hi) |
187 | #define dmacHw_REG_MISC_COMP_PARAM4_LO(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm4.lo) | 187 | #define dmacHw_REG_MISC_COMP_PARAM4_LO(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm4.lo) |
188 | #define dmacHw_REG_MISC_COMP_PARAM4_HI(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm4.hi) | 188 | #define dmacHw_REG_MISC_COMP_PARAM4_HI(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm4.hi) |
189 | #define dmacHw_REG_MISC_COMP_PARAM5_LO(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm5.lo) | 189 | #define dmacHw_REG_MISC_COMP_PARAM5_LO(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm5.lo) |
190 | #define dmacHw_REG_MISC_COMP_PARAM5_HI(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm5.hi) | 190 | #define dmacHw_REG_MISC_COMP_PARAM5_HI(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm5.hi) |
191 | #define dmacHw_REG_MISC_COMP_PARAM6_LO(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm6.lo) | 191 | #define dmacHw_REG_MISC_COMP_PARAM6_LO(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm6.lo) |
192 | #define dmacHw_REG_MISC_COMP_PARAM6_HI(module) (((dmacHw_MISC_t *) dmacHw_REG_MISC_BASE((module)))->CompParm6.hi) | 192 | #define dmacHw_REG_MISC_COMP_PARAM6_HI(module) (((dmacHw_MISC_t __iomem*) dmacHw_REG_MISC_BASE((module)))->CompParm6.hi) |
193 | 193 | ||
194 | /* Channel control registers */ | 194 | /* Channel control registers */ |
195 | #define dmacHw_REG_SAR(module, chan) (dmacHw_CHAN_BASE((module), (chan))->ChannelSar.lo) | 195 | #define dmacHw_REG_SAR(module, chan) (dmacHw_CHAN_BASE((module), (chan))->ChannelSar.lo) |
diff --git a/arch/arm/mach-bcmring/include/mach/csp/hw_cfg.h b/arch/arm/mach-bcmring/include/mach/csp/hw_cfg.h index cfa91bed9d34..27f59dd27792 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/hw_cfg.h +++ b/arch/arm/mach-bcmring/include/mach/csp/hw_cfg.h | |||
@@ -18,7 +18,7 @@ | |||
18 | 18 | ||
19 | /* ---- Include Files ---------------------------------------------------- */ | 19 | /* ---- Include Files ---------------------------------------------------- */ |
20 | 20 | ||
21 | #include <cfg_global.h> | 21 | #include <mach/cfg_global.h> |
22 | #include <mach/csp/cap_inline.h> | 22 | #include <mach/csp/cap_inline.h> |
23 | 23 | ||
24 | #if defined(__KERNEL__) | 24 | #if defined(__KERNEL__) |
diff --git a/arch/arm/mach-bcmring/include/mach/csp/intcHw_reg.h b/arch/arm/mach-bcmring/include/mach/csp/intcHw_reg.h index 0aeb6a6fe7f8..f59db25b5632 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/intcHw_reg.h +++ b/arch/arm/mach-bcmring/include/mach/csp/intcHw_reg.h | |||
@@ -27,8 +27,8 @@ | |||
27 | #define _INTCHW_REG_H | 27 | #define _INTCHW_REG_H |
28 | 28 | ||
29 | /* ---- Include Files ---------------------------------------------------- */ | 29 | /* ---- Include Files ---------------------------------------------------- */ |
30 | #include <csp/stdint.h> | 30 | #include <linux/types.h> |
31 | #include <csp/reg.h> | 31 | #include <mach/csp/reg.h> |
32 | #include <mach/csp/mm_io.h> | 32 | #include <mach/csp/mm_io.h> |
33 | 33 | ||
34 | /* ---- Public Constants and Types --------------------------------------- */ | 34 | /* ---- Public Constants and Types --------------------------------------- */ |
@@ -37,9 +37,9 @@ | |||
37 | #define INTCHW_NUM_INTC 3 | 37 | #define INTCHW_NUM_INTC 3 |
38 | 38 | ||
39 | /* Defines for interrupt controllers. This simplifies and cleans up the function calls. */ | 39 | /* Defines for interrupt controllers. This simplifies and cleans up the function calls. */ |
40 | #define INTCHW_INTC0 ((void *)MM_IO_BASE_INTC0) | 40 | #define INTCHW_INTC0 (MM_IO_BASE_INTC0) |
41 | #define INTCHW_INTC1 ((void *)MM_IO_BASE_INTC1) | 41 | #define INTCHW_INTC1 (MM_IO_BASE_INTC1) |
42 | #define INTCHW_SINTC ((void *)MM_IO_BASE_SINTC) | 42 | #define INTCHW_SINTC (MM_IO_BASE_SINTC) |
43 | 43 | ||
44 | /* INTC0 - interrupt controller 0 */ | 44 | /* INTC0 - interrupt controller 0 */ |
45 | #define INTCHW_INTC0_PIF_BITNUM 31 /* Peripheral interface interrupt */ | 45 | #define INTCHW_INTC0_PIF_BITNUM 31 /* Peripheral interface interrupt */ |
@@ -232,15 +232,15 @@ | |||
232 | /* ---- Public Variable Externs ------------------------------------------ */ | 232 | /* ---- Public Variable Externs ------------------------------------------ */ |
233 | /* ---- Public Function Prototypes --------------------------------------- */ | 233 | /* ---- Public Function Prototypes --------------------------------------- */ |
234 | /* Clear one or more IRQ interrupts. */ | 234 | /* Clear one or more IRQ interrupts. */ |
235 | static inline void intcHw_irq_disable(void *basep, uint32_t mask) | 235 | static inline void intcHw_irq_disable(void __iomem *basep, uint32_t mask) |
236 | { | 236 | { |
237 | __REG32(basep + INTCHW_INTENCLEAR) = mask; | 237 | writel(mask, basep + INTCHW_INTENCLEAR); |
238 | } | 238 | } |
239 | 239 | ||
240 | /* Enables one or more IRQ interrupts. */ | 240 | /* Enables one or more IRQ interrupts. */ |
241 | static inline void intcHw_irq_enable(void *basep, uint32_t mask) | 241 | static inline void intcHw_irq_enable(void __iomem *basep, uint32_t mask) |
242 | { | 242 | { |
243 | __REG32(basep + INTCHW_INTENABLE) = mask; | 243 | writel(mask, basep + INTCHW_INTENABLE); |
244 | } | 244 | } |
245 | 245 | ||
246 | #endif /* _INTCHW_REG_H */ | 246 | #endif /* _INTCHW_REG_H */ |
diff --git a/arch/arm/mach-bcmring/include/mach/csp/mm_addr.h b/arch/arm/mach-bcmring/include/mach/csp/mm_addr.h index ad58cf873377..d571962f2904 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/mm_addr.h +++ b/arch/arm/mach-bcmring/include/mach/csp/mm_addr.h | |||
@@ -29,7 +29,7 @@ | |||
29 | /* ---- Include Files ---------------------------------------------------- */ | 29 | /* ---- Include Files ---------------------------------------------------- */ |
30 | 30 | ||
31 | #if !defined(CSP_SIMULATION) | 31 | #if !defined(CSP_SIMULATION) |
32 | #include <cfg_global.h> | 32 | #include <mach/cfg_global.h> |
33 | #endif | 33 | #endif |
34 | 34 | ||
35 | /* ---- Public Constants and Types --------------------------------------- */ | 35 | /* ---- Public Constants and Types --------------------------------------- */ |
diff --git a/arch/arm/mach-bcmring/include/mach/csp/mm_io.h b/arch/arm/mach-bcmring/include/mach/csp/mm_io.h index de92ec6a01aa..47450c23685a 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/mm_io.h +++ b/arch/arm/mach-bcmring/include/mach/csp/mm_io.h | |||
@@ -30,7 +30,7 @@ | |||
30 | #include <mach/csp/mm_addr.h> | 30 | #include <mach/csp/mm_addr.h> |
31 | 31 | ||
32 | #if !defined(CSP_SIMULATION) | 32 | #if !defined(CSP_SIMULATION) |
33 | #include <cfg_global.h> | 33 | #include <mach/cfg_global.h> |
34 | #endif | 34 | #endif |
35 | 35 | ||
36 | /* ---- Public Constants and Types --------------------------------------- */ | 36 | /* ---- Public Constants and Types --------------------------------------- */ |
@@ -49,7 +49,7 @@ | |||
49 | #ifdef __ASSEMBLY__ | 49 | #ifdef __ASSEMBLY__ |
50 | #define MM_IO_PHYS_TO_VIRT(phys) (0xF0000000 | (((phys) >> 4) & 0x0F000000) | ((phys) & 0xFFFFFF)) | 50 | #define MM_IO_PHYS_TO_VIRT(phys) (0xF0000000 | (((phys) >> 4) & 0x0F000000) | ((phys) & 0xFFFFFF)) |
51 | #else | 51 | #else |
52 | #define MM_IO_PHYS_TO_VIRT(phys) (((phys) == MM_ADDR_IO_VPM_EXTMEM_RSVD) ? 0xF0000000 : \ | 52 | #define MM_IO_PHYS_TO_VIRT(phys) (void __iomem *)(((phys) == MM_ADDR_IO_VPM_EXTMEM_RSVD) ? 0xF0000000 : \ |
53 | (0xF0000000 | (((phys) >> 4) & 0x0F000000) | ((phys) & 0xFFFFFF))) | 53 | (0xF0000000 | (((phys) >> 4) & 0x0F000000) | ((phys) & 0xFFFFFF))) |
54 | #endif | 54 | #endif |
55 | #endif | 55 | #endif |
@@ -60,8 +60,8 @@ | |||
60 | #ifdef __ASSEMBLY__ | 60 | #ifdef __ASSEMBLY__ |
61 | #define MM_IO_VIRT_TO_PHYS(virt) ((((virt) & 0x0F000000) << 4) | ((virt) & 0xFFFFFF)) | 61 | #define MM_IO_VIRT_TO_PHYS(virt) ((((virt) & 0x0F000000) << 4) | ((virt) & 0xFFFFFF)) |
62 | #else | 62 | #else |
63 | #define MM_IO_VIRT_TO_PHYS(virt) (((virt) == 0xF0000000) ? MM_ADDR_IO_VPM_EXTMEM_RSVD : \ | 63 | #define MM_IO_VIRT_TO_PHYS(virt) (((unsigned long)(virt) == 0xF0000000) ? MM_ADDR_IO_VPM_EXTMEM_RSVD : \ |
64 | ((((virt) & 0x0F000000) << 4) | ((virt) & 0xFFFFFF))) | 64 | ((((unsigned long)(virt) & 0x0F000000) << 4) | ((unsigned long)(virt) & 0xFFFFFF))) |
65 | #endif | 65 | #endif |
66 | #endif | 66 | #endif |
67 | 67 | ||
diff --git a/arch/arm/mach-bcmring/include/csp/reg.h b/arch/arm/mach-bcmring/include/mach/csp/reg.h index 56654d23c3d7..d9cbdca8cd25 100644 --- a/arch/arm/mach-bcmring/include/csp/reg.h +++ b/arch/arm/mach-bcmring/include/mach/csp/reg.h | |||
@@ -25,13 +25,14 @@ | |||
25 | 25 | ||
26 | /* ---- Include Files ---------------------------------------------------- */ | 26 | /* ---- Include Files ---------------------------------------------------- */ |
27 | 27 | ||
28 | #include <csp/stdint.h> | 28 | #include <linux/types.h> |
29 | #include <linux/io.h> | ||
29 | 30 | ||
30 | /* ---- Public Constants and Types --------------------------------------- */ | 31 | /* ---- Public Constants and Types --------------------------------------- */ |
31 | 32 | ||
32 | #define __REG32(x) (*((volatile uint32_t *)(x))) | 33 | #define __REG32(x) (*((volatile uint32_t __iomem *)(x))) |
33 | #define __REG16(x) (*((volatile uint16_t *)(x))) | 34 | #define __REG16(x) (*((volatile uint16_t __iomem *)(x))) |
34 | #define __REG8(x) (*((volatile uint8_t *) (x))) | 35 | #define __REG8(x) (*((volatile uint8_t __iomem *) (x))) |
35 | 36 | ||
36 | /* Macros used to define a sequence of reserved registers. The start / end */ | 37 | /* Macros used to define a sequence of reserved registers. The start / end */ |
37 | /* are byte offsets in the particular register definition, with the "end" */ | 38 | /* are byte offsets in the particular register definition, with the "end" */ |
@@ -84,31 +85,31 @@ | |||
84 | 85 | ||
85 | #endif | 86 | #endif |
86 | 87 | ||
87 | static inline void reg32_modify_and(volatile uint32_t *reg, uint32_t value) | 88 | static inline void reg32_modify_and(volatile uint32_t __iomem *reg, uint32_t value) |
88 | { | 89 | { |
89 | REG_LOCAL_IRQ_SAVE; | 90 | REG_LOCAL_IRQ_SAVE; |
90 | *reg &= value; | 91 | __raw_writel(__raw_readl(reg) & value, reg); |
91 | REG_LOCAL_IRQ_RESTORE; | 92 | REG_LOCAL_IRQ_RESTORE; |
92 | } | 93 | } |
93 | 94 | ||
94 | static inline void reg32_modify_or(volatile uint32_t *reg, uint32_t value) | 95 | static inline void reg32_modify_or(volatile uint32_t __iomem *reg, uint32_t value) |
95 | { | 96 | { |
96 | REG_LOCAL_IRQ_SAVE; | 97 | REG_LOCAL_IRQ_SAVE; |
97 | *reg |= value; | 98 | __raw_writel(__raw_readl(reg) | value, reg); |
98 | REG_LOCAL_IRQ_RESTORE; | 99 | REG_LOCAL_IRQ_RESTORE; |
99 | } | 100 | } |
100 | 101 | ||
101 | static inline void reg32_modify_mask(volatile uint32_t *reg, uint32_t mask, | 102 | static inline void reg32_modify_mask(volatile uint32_t __iomem *reg, uint32_t mask, |
102 | uint32_t value) | 103 | uint32_t value) |
103 | { | 104 | { |
104 | REG_LOCAL_IRQ_SAVE; | 105 | REG_LOCAL_IRQ_SAVE; |
105 | *reg = (*reg & mask) | value; | 106 | __raw_writel((__raw_readl(reg) & mask) | value, reg); |
106 | REG_LOCAL_IRQ_RESTORE; | 107 | REG_LOCAL_IRQ_RESTORE; |
107 | } | 108 | } |
108 | 109 | ||
109 | static inline void reg32_write(volatile uint32_t *reg, uint32_t value) | 110 | static inline void reg32_write(volatile uint32_t __iomem *reg, uint32_t value) |
110 | { | 111 | { |
111 | *reg = value; | 112 | __raw_writel(value, reg); |
112 | } | 113 | } |
113 | 114 | ||
114 | #endif /* CSP_REG_H */ | 115 | #endif /* CSP_REG_H */ |
diff --git a/arch/arm/mach-bcmring/include/mach/csp/secHw_inline.h b/arch/arm/mach-bcmring/include/mach/csp/secHw_inline.h index 9cd6a032ab71..55d3cd4fd1e7 100644 --- a/arch/arm/mach-bcmring/include/mach/csp/secHw_inline.h +++ b/arch/arm/mach-bcmring/include/mach/csp/secHw_inline.h | |||
@@ -34,7 +34,7 @@ | |||
34 | /****************************************************************************/ | 34 | /****************************************************************************/ |
35 | static inline void secHw_setSecure(uint32_t mask /* mask of type secHw_BLK_MASK_XXXXXX */ | 35 | static inline void secHw_setSecure(uint32_t mask /* mask of type secHw_BLK_MASK_XXXXXX */ |
36 | ) { | 36 | ) { |
37 | secHw_REGS_t *regp = (secHw_REGS_t *) MM_IO_BASE_TZPC; | 37 | secHw_REGS_t __iomem *regp = MM_IO_BASE_TZPC; |
38 | 38 | ||
39 | if (mask & 0x0000FFFF) { | 39 | if (mask & 0x0000FFFF) { |
40 | regp->reg[secHw_IDX_LS].setSecure = mask & 0x0000FFFF; | 40 | regp->reg[secHw_IDX_LS].setSecure = mask & 0x0000FFFF; |
@@ -53,13 +53,13 @@ static inline void secHw_setSecure(uint32_t mask /* mask of type secHw_BLK_MASK | |||
53 | /****************************************************************************/ | 53 | /****************************************************************************/ |
54 | static inline void secHw_setUnsecure(uint32_t mask /* mask of type secHw_BLK_MASK_XXXXXX */ | 54 | static inline void secHw_setUnsecure(uint32_t mask /* mask of type secHw_BLK_MASK_XXXXXX */ |
55 | ) { | 55 | ) { |
56 | secHw_REGS_t *regp = (secHw_REGS_t *) MM_IO_BASE_TZPC; | 56 | secHw_REGS_t __iomem *regp = MM_IO_BASE_TZPC; |
57 | 57 | ||
58 | if (mask & 0x0000FFFF) { | 58 | if (mask & 0x0000FFFF) { |
59 | regp->reg[secHw_IDX_LS].setUnsecure = mask & 0x0000FFFF; | 59 | writel(mask & 0x0000FFFF, ®p->reg[secHw_IDX_LS].setUnsecure); |
60 | } | 60 | } |
61 | if (mask & 0xFFFF0000) { | 61 | if (mask & 0xFFFF0000) { |
62 | regp->reg[secHw_IDX_MS].setUnsecure = mask >> 16; | 62 | writel(mask >> 16, ®p->reg[secHw_IDX_MS].setUnsecure); |
63 | } | 63 | } |
64 | } | 64 | } |
65 | 65 | ||
@@ -71,7 +71,7 @@ static inline void secHw_setUnsecure(uint32_t mask /* mask of type secHw_BLK_MA | |||
71 | /****************************************************************************/ | 71 | /****************************************************************************/ |
72 | static inline uint32_t secHw_getStatus(void) | 72 | static inline uint32_t secHw_getStatus(void) |
73 | { | 73 | { |
74 | secHw_REGS_t *regp = (secHw_REGS_t *) MM_IO_BASE_TZPC; | 74 | secHw_REGS_t __iomem *regp = MM_IO_BASE_TZPC; |
75 | 75 | ||
76 | return (regp->reg[1].status << 16) + regp->reg[0].status; | 76 | return (regp->reg[1].status << 16) + regp->reg[0].status; |
77 | } | 77 | } |
diff --git a/arch/arm/mach-bcmring/include/csp/tmrHw.h b/arch/arm/mach-bcmring/include/mach/csp/tmrHw.h index 2cbb530db8ea..1cc882ae60f5 100644 --- a/arch/arm/mach-bcmring/include/csp/tmrHw.h +++ b/arch/arm/mach-bcmring/include/mach/csp/tmrHw.h | |||
@@ -23,7 +23,7 @@ | |||
23 | #ifndef _TMRHW_H | 23 | #ifndef _TMRHW_H |
24 | #define _TMRHW_H | 24 | #define _TMRHW_H |
25 | 25 | ||
26 | #include <csp/stdint.h> | 26 | #include <linux/types.h> |
27 | 27 | ||
28 | typedef uint32_t tmrHw_ID_t; /* Timer ID */ | 28 | typedef uint32_t tmrHw_ID_t; /* Timer ID */ |
29 | typedef uint32_t tmrHw_COUNT_t; /* Timer count */ | 29 | typedef uint32_t tmrHw_COUNT_t; /* Timer count */ |
diff --git a/arch/arm/mach-bcmring/include/mach/dma.h b/arch/arm/mach-bcmring/include/mach/dma.h index 72543781207b..13e01384d6fc 100644 --- a/arch/arm/mach-bcmring/include/mach/dma.h +++ b/arch/arm/mach-bcmring/include/mach/dma.h | |||
@@ -27,7 +27,7 @@ | |||
27 | 27 | ||
28 | #include <linux/kernel.h> | 28 | #include <linux/kernel.h> |
29 | #include <linux/semaphore.h> | 29 | #include <linux/semaphore.h> |
30 | #include <csp/dmacHw.h> | 30 | #include <mach/csp/dmacHw.h> |
31 | #include <mach/timer.h> | 31 | #include <mach/timer.h> |
32 | 32 | ||
33 | /* ---- Constants and Types ---------------------------------------------- */ | 33 | /* ---- Constants and Types ---------------------------------------------- */ |
diff --git a/arch/arm/mach-bcmring/include/mach/hardware.h b/arch/arm/mach-bcmring/include/mach/hardware.h index 6ae20a649a97..a0c92b4b8c60 100644 --- a/arch/arm/mach-bcmring/include/mach/hardware.h +++ b/arch/arm/mach-bcmring/include/mach/hardware.h | |||
@@ -22,7 +22,7 @@ | |||
22 | #define __ASM_ARCH_HARDWARE_H | 22 | #define __ASM_ARCH_HARDWARE_H |
23 | 23 | ||
24 | #include <asm/sizes.h> | 24 | #include <asm/sizes.h> |
25 | #include <cfg_global.h> | 25 | #include <mach/cfg_global.h> |
26 | #include <mach/csp/mm_io.h> | 26 | #include <mach/csp/mm_io.h> |
27 | 27 | ||
28 | /* Hardware addresses of major areas. | 28 | /* Hardware addresses of major areas. |
diff --git a/arch/arm/mach-bcmring/include/mach/reg_nand.h b/arch/arm/mach-bcmring/include/mach/reg_nand.h index 387376ffb56b..f8d51a8b0b15 100644 --- a/arch/arm/mach-bcmring/include/mach/reg_nand.h +++ b/arch/arm/mach-bcmring/include/mach/reg_nand.h | |||
@@ -30,7 +30,7 @@ | |||
30 | #define __ASM_ARCH_REG_NAND_H | 30 | #define __ASM_ARCH_REG_NAND_H |
31 | 31 | ||
32 | /* ---- Include Files ---------------------------------------------------- */ | 32 | /* ---- Include Files ---------------------------------------------------- */ |
33 | #include <csp/reg.h> | 33 | #include <mach/csp/reg.h> |
34 | #include <mach/reg_umi.h> | 34 | #include <mach/reg_umi.h> |
35 | 35 | ||
36 | /* ---- Constants and Types ---------------------------------------------- */ | 36 | /* ---- Constants and Types ---------------------------------------------- */ |
diff --git a/arch/arm/mach-bcmring/include/mach/reg_umi.h b/arch/arm/mach-bcmring/include/mach/reg_umi.h index 0992842caa77..56dd9de7d83f 100644 --- a/arch/arm/mach-bcmring/include/mach/reg_umi.h +++ b/arch/arm/mach-bcmring/include/mach/reg_umi.h | |||
@@ -30,7 +30,7 @@ | |||
30 | #define __ASM_ARCH_REG_UMI_H | 30 | #define __ASM_ARCH_REG_UMI_H |
31 | 31 | ||
32 | /* ---- Include Files ---------------------------------------------------- */ | 32 | /* ---- Include Files ---------------------------------------------------- */ |
33 | #include <csp/reg.h> | 33 | #include <mach/csp/reg.h> |
34 | #include <mach/csp/mm_io.h> | 34 | #include <mach/csp/mm_io.h> |
35 | 35 | ||
36 | /* ---- Constants and Types ---------------------------------------------- */ | 36 | /* ---- Constants and Types ---------------------------------------------- */ |
@@ -233,5 +233,5 @@ | |||
233 | #define REG_UMI_BCH_ERR_LOC_WORD 0x00000018 | 233 | #define REG_UMI_BCH_ERR_LOC_WORD 0x00000018 |
234 | /* location within a page (512 byte) */ | 234 | /* location within a page (512 byte) */ |
235 | #define REG_UMI_BCH_ERR_LOC_PAGE 0x00001FE0 | 235 | #define REG_UMI_BCH_ERR_LOC_PAGE 0x00001FE0 |
236 | #define REG_UMI_BCH_ERR_LOC_ADDR(index) (__REG32(HW_UMI_BASE + 0x64 + (index / 2)*4) >> ((index % 2) * 16)) | 236 | #define REG_UMI_BCH_ERR_LOC_ADDR(index) (readl(HW_UMI_BASE + 0x64 + (index / 2)*4) >> ((index % 2) * 16)) |
237 | #endif | 237 | #endif |
diff --git a/arch/arm/mach-bcmring/mm.c b/arch/arm/mach-bcmring/mm.c index 1adec78ec940..33824a81cac4 100644 --- a/arch/arm/mach-bcmring/mm.c +++ b/arch/arm/mach-bcmring/mm.c | |||
@@ -20,12 +20,12 @@ | |||
20 | #include <mach/hardware.h> | 20 | #include <mach/hardware.h> |
21 | #include <mach/csp/mm_io.h> | 21 | #include <mach/csp/mm_io.h> |
22 | 22 | ||
23 | #define IO_DESC(va, sz) { .virtual = va, \ | 23 | #define IO_DESC(va, sz) { .virtual = (unsigned long)va, \ |
24 | .pfn = __phys_to_pfn(HW_IO_VIRT_TO_PHYS(va)), \ | 24 | .pfn = __phys_to_pfn(HW_IO_VIRT_TO_PHYS(va)), \ |
25 | .length = sz, \ | 25 | .length = sz, \ |
26 | .type = MT_DEVICE } | 26 | .type = MT_DEVICE } |
27 | 27 | ||
28 | #define MEM_DESC(va, sz) { .virtual = va, \ | 28 | #define MEM_DESC(va, sz) { .virtual = (unsigned long)va, \ |
29 | .pfn = __phys_to_pfn(HW_IO_VIRT_TO_PHYS(va)), \ | 29 | .pfn = __phys_to_pfn(HW_IO_VIRT_TO_PHYS(va)), \ |
30 | .length = sz, \ | 30 | .length = sz, \ |
31 | .type = MT_MEMORY } | 31 | .type = MT_MEMORY } |
diff --git a/arch/arm/mach-bcmring/timer.c b/arch/arm/mach-bcmring/timer.c index af9c3d7e2a0c..59412903466e 100644 --- a/arch/arm/mach-bcmring/timer.c +++ b/arch/arm/mach-bcmring/timer.c | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <linux/module.h> | 16 | #include <linux/module.h> |
17 | #include <csp/tmrHw.h> | 17 | #include <mach/csp/tmrHw.h> |
18 | 18 | ||
19 | #include <mach/timer.h> | 19 | #include <mach/timer.h> |
20 | /* The core.c file initializes timers 1 and 3 as a linux clocksource. */ | 20 | /* The core.c file initializes timers 1 and 3 as a linux clocksource. */ |
diff --git a/arch/arm/mach-u300/Kconfig b/arch/arm/mach-u300/Kconfig index 54d8f34fdee5..f7e12ede008c 100644 --- a/arch/arm/mach-u300/Kconfig +++ b/arch/arm/mach-u300/Kconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | if ARCH_U300 | 1 | if ARCH_U300 |
2 | 2 | ||
3 | menu "ST-Ericsson AB U300/U330/U335/U365 Platform" | 3 | menu "ST-Ericsson AB U300/U335 Platform" |
4 | 4 | ||
5 | comment "ST-Ericsson Mobile Platform Products" | 5 | comment "ST-Ericsson Mobile Platform Products" |
6 | 6 | ||
@@ -10,46 +10,7 @@ config MACH_U300 | |||
10 | select PINCTRL_U300 | 10 | select PINCTRL_U300 |
11 | select PINCTRL_COH901 | 11 | select PINCTRL_COH901 |
12 | 12 | ||
13 | comment "ST-Ericsson U300/U330/U335/U365 Feature Selections" | 13 | comment "ST-Ericsson U300/U335 Feature Selections" |
14 | |||
15 | choice | ||
16 | prompt "U300/U330/U335/U365 system type" | ||
17 | default MACH_U300_BS2X | ||
18 | ---help--- | ||
19 | You need to select the target system, i.e. the | ||
20 | U300/U330/U335/U365 board that you want to compile your kernel | ||
21 | for. | ||
22 | |||
23 | config MACH_U300_BS2X | ||
24 | bool "S26/S26/B25/B26 Test Products" | ||
25 | depends on MACH_U300 | ||
26 | help | ||
27 | Select this if you're developing on the | ||
28 | S26/S25 test products. (Also works on | ||
29 | B26/B25 big boards.) | ||
30 | |||
31 | config MACH_U300_BS330 | ||
32 | bool "S330/B330 Test Products" | ||
33 | depends on MACH_U300 | ||
34 | help | ||
35 | Select this if you're developing on the | ||
36 | S330/B330 test products. | ||
37 | |||
38 | config MACH_U300_BS335 | ||
39 | bool "S335/B335 Test Products" | ||
40 | depends on MACH_U300 | ||
41 | help | ||
42 | Select this if you're developing on the | ||
43 | S335/B335 test products. | ||
44 | |||
45 | config MACH_U300_BS365 | ||
46 | bool "S365/B365 Test Products" | ||
47 | depends on MACH_U300 | ||
48 | help | ||
49 | Select this if you're developing on the | ||
50 | S365/B365 test products. | ||
51 | |||
52 | endchoice | ||
53 | 14 | ||
54 | config U300_DEBUG | 15 | config U300_DEBUG |
55 | bool "Debug support for U300" | 16 | bool "Debug support for U300" |
diff --git a/arch/arm/mach-u300/Makefile b/arch/arm/mach-u300/Makefile index 7e47d37aeb0e..5a86c58da396 100644 --- a/arch/arm/mach-u300/Makefile +++ b/arch/arm/mach-u300/Makefile | |||
@@ -7,7 +7,6 @@ obj-m := | |||
7 | obj-n := | 7 | obj-n := |
8 | obj- := | 8 | obj- := |
9 | 9 | ||
10 | obj-$(CONFIG_ARCH_U300) += u300.o | ||
11 | obj-$(CONFIG_SPI_PL022) += spi.o | 10 | obj-$(CONFIG_SPI_PL022) += spi.o |
12 | obj-$(CONFIG_MACH_U300_SPIDUMMY) += dummyspichip.o | 11 | obj-$(CONFIG_MACH_U300_SPIDUMMY) += dummyspichip.o |
13 | obj-$(CONFIG_I2C_STU300) += i2c.o | 12 | obj-$(CONFIG_I2C_STU300) += i2c.o |
diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c index 03acf1883ec7..ef6f602b7e48 100644 --- a/arch/arm/mach-u300/core.c +++ b/arch/arm/mach-u300/core.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * arch/arm/mach-u300/core.c | 3 | * arch/arm/mach-u300/core.c |
4 | * | 4 | * |
5 | * | 5 | * |
6 | * Copyright (C) 2007-2010 ST-Ericsson SA | 6 | * Copyright (C) 2007-2012 ST-Ericsson SA |
7 | * License terms: GNU General Public License (GPL) version 2 | 7 | * License terms: GNU General Public License (GPL) version 2 |
8 | * Core platform support, IRQ handling and device definitions. | 8 | * Core platform support, IRQ handling and device definitions. |
9 | * Author: Linus Walleij <linus.walleij@stericsson.com> | 9 | * Author: Linus Walleij <linus.walleij@stericsson.com> |
@@ -31,23 +31,26 @@ | |||
31 | #include <linux/pinctrl/pinconf-generic.h> | 31 | #include <linux/pinctrl/pinconf-generic.h> |
32 | #include <linux/dma-mapping.h> | 32 | #include <linux/dma-mapping.h> |
33 | #include <linux/platform_data/clk-u300.h> | 33 | #include <linux/platform_data/clk-u300.h> |
34 | #include <linux/platform_data/pinctrl-coh901.h> | ||
34 | 35 | ||
35 | #include <asm/types.h> | 36 | #include <asm/types.h> |
36 | #include <asm/setup.h> | 37 | #include <asm/setup.h> |
37 | #include <asm/memory.h> | 38 | #include <asm/memory.h> |
38 | #include <asm/hardware/vic.h> | 39 | #include <asm/hardware/vic.h> |
39 | #include <asm/mach/map.h> | 40 | #include <asm/mach/map.h> |
40 | #include <asm/mach/irq.h> | 41 | #include <asm/mach-types.h> |
42 | #include <asm/mach/arch.h> | ||
41 | 43 | ||
42 | #include <mach/coh901318.h> | 44 | #include <mach/coh901318.h> |
43 | #include <mach/hardware.h> | 45 | #include <mach/hardware.h> |
44 | #include <mach/syscon.h> | 46 | #include <mach/syscon.h> |
45 | #include <mach/dma_channels.h> | 47 | #include <mach/irqs.h> |
46 | #include <mach/gpio-u300.h> | ||
47 | 48 | ||
49 | #include "timer.h" | ||
48 | #include "spi.h" | 50 | #include "spi.h" |
49 | #include "i2c.h" | 51 | #include "i2c.h" |
50 | #include "u300-gpio.h" | 52 | #include "u300-gpio.h" |
53 | #include "dma_channels.h" | ||
51 | 54 | ||
52 | /* | 55 | /* |
53 | * Static I/O mappings that are needed for booting the U300 platforms. The | 56 | * Static I/O mappings that are needed for booting the U300 platforms. The |
@@ -76,7 +79,7 @@ static struct map_desc u300_io_desc[] __initdata = { | |||
76 | }, | 79 | }, |
77 | }; | 80 | }; |
78 | 81 | ||
79 | void __init u300_map_io(void) | 82 | static void __init u300_map_io(void) |
80 | { | 83 | { |
81 | iotable_init(u300_io_desc, ARRAY_SIZE(u300_io_desc)); | 84 | iotable_init(u300_io_desc, ARRAY_SIZE(u300_io_desc)); |
82 | /* We enable a real big DMA buffer if need be. */ | 85 | /* We enable a real big DMA buffer if need be. */ |
@@ -101,7 +104,6 @@ static AMBA_APB_DEVICE(uart0, "uart0", 0, U300_UART0_BASE, | |||
101 | { IRQ_U300_UART0 }, &uart0_plat_data); | 104 | { IRQ_U300_UART0 }, &uart0_plat_data); |
102 | 105 | ||
103 | /* The U335 have an additional UART1 on the APP CPU */ | 106 | /* The U335 have an additional UART1 on the APP CPU */ |
104 | #ifdef CONFIG_MACH_U300_BS335 | ||
105 | static struct amba_pl011_data uart1_plat_data = { | 107 | static struct amba_pl011_data uart1_plat_data = { |
106 | #ifdef CONFIG_COH901318 | 108 | #ifdef CONFIG_COH901318 |
107 | .dma_filter = coh901318_filter_id, | 109 | .dma_filter = coh901318_filter_id, |
@@ -113,7 +115,6 @@ static struct amba_pl011_data uart1_plat_data = { | |||
113 | /* Fast device at 0x7000 offset */ | 115 | /* Fast device at 0x7000 offset */ |
114 | static AMBA_APB_DEVICE(uart1, "uart1", 0, U300_UART1_BASE, | 116 | static AMBA_APB_DEVICE(uart1, "uart1", 0, U300_UART1_BASE, |
115 | { IRQ_U300_UART1 }, &uart1_plat_data); | 117 | { IRQ_U300_UART1 }, &uart1_plat_data); |
116 | #endif | ||
117 | 118 | ||
118 | /* AHB device at 0x4000 offset */ | 119 | /* AHB device at 0x4000 offset */ |
119 | static AMBA_APB_DEVICE(pl172, "pl172", 0, U300_EMIF_CFG_BASE, { }, NULL); | 120 | static AMBA_APB_DEVICE(pl172, "pl172", 0, U300_EMIF_CFG_BASE, { }, NULL); |
@@ -152,9 +153,7 @@ static AMBA_APB_DEVICE(mmcsd, "mmci", 0, U300_MMCSD_BASE, | |||
152 | */ | 153 | */ |
153 | static struct amba_device *amba_devs[] __initdata = { | 154 | static struct amba_device *amba_devs[] __initdata = { |
154 | &uart0_device, | 155 | &uart0_device, |
155 | #ifdef CONFIG_MACH_U300_BS335 | ||
156 | &uart1_device, | 156 | &uart1_device, |
157 | #endif | ||
158 | &pl022_device, | 157 | &pl022_device, |
159 | &pl172_device, | 158 | &pl172_device, |
160 | &mmcsd_device, | 159 | &mmcsd_device, |
@@ -188,7 +187,6 @@ static struct resource gpio_resources[] = { | |||
188 | .end = IRQ_U300_GPIO_PORT2, | 187 | .end = IRQ_U300_GPIO_PORT2, |
189 | .flags = IORESOURCE_IRQ, | 188 | .flags = IORESOURCE_IRQ, |
190 | }, | 189 | }, |
191 | #if defined(CONFIG_MACH_U300_BS365) || defined(CONFIG_MACH_U300_BS335) | ||
192 | { | 190 | { |
193 | .name = "gpio3", | 191 | .name = "gpio3", |
194 | .start = IRQ_U300_GPIO_PORT3, | 192 | .start = IRQ_U300_GPIO_PORT3, |
@@ -201,8 +199,6 @@ static struct resource gpio_resources[] = { | |||
201 | .end = IRQ_U300_GPIO_PORT4, | 199 | .end = IRQ_U300_GPIO_PORT4, |
202 | .flags = IORESOURCE_IRQ, | 200 | .flags = IORESOURCE_IRQ, |
203 | }, | 201 | }, |
204 | #endif | ||
205 | #ifdef CONFIG_MACH_U300_BS335 | ||
206 | { | 202 | { |
207 | .name = "gpio5", | 203 | .name = "gpio5", |
208 | .start = IRQ_U300_GPIO_PORT5, | 204 | .start = IRQ_U300_GPIO_PORT5, |
@@ -215,7 +211,6 @@ static struct resource gpio_resources[] = { | |||
215 | .end = IRQ_U300_GPIO_PORT6, | 211 | .end = IRQ_U300_GPIO_PORT6, |
216 | .flags = IORESOURCE_IRQ, | 212 | .flags = IORESOURCE_IRQ, |
217 | }, | 213 | }, |
218 | #endif /* CONFIG_MACH_U300_BS335 */ | ||
219 | }; | 214 | }; |
220 | 215 | ||
221 | static struct resource keypad_resources[] = { | 216 | static struct resource keypad_resources[] = { |
@@ -323,7 +318,6 @@ static struct resource dma_resource[] = { | |||
323 | } | 318 | } |
324 | }; | 319 | }; |
325 | 320 | ||
326 | #ifdef CONFIG_MACH_U300_BS335 | ||
327 | /* points out all dma slave channels. | 321 | /* points out all dma slave channels. |
328 | * Syntax is [A1, B1, A2, B2, .... ,-1,-1] | 322 | * Syntax is [A1, B1, A2, B2, .... ,-1,-1] |
329 | * Select all channels from A to B, end of list is marked with -1,-1 | 323 | * Select all channels from A to B, end of list is marked with -1,-1 |
@@ -336,14 +330,6 @@ static int dma_slave_channels[] = { | |||
336 | static int dma_memcpy_channels[] = { | 330 | static int dma_memcpy_channels[] = { |
337 | U300_DMA_GENERAL_PURPOSE_0, U300_DMA_GENERAL_PURPOSE_8, -1, -1}; | 331 | U300_DMA_GENERAL_PURPOSE_0, U300_DMA_GENERAL_PURPOSE_8, -1, -1}; |
338 | 332 | ||
339 | #else /* CONFIG_MACH_U300_BS335 */ | ||
340 | |||
341 | static int dma_slave_channels[] = {U300_DMA_MSL_TX_0, U300_DMA_SPI_RX, -1, -1}; | ||
342 | static int dma_memcpy_channels[] = { | ||
343 | U300_DMA_GENERAL_PURPOSE_0, U300_DMA_GENERAL_PURPOSE_10, -1, -1}; | ||
344 | |||
345 | #endif | ||
346 | |||
347 | /** register dma for memory access | 333 | /** register dma for memory access |
348 | * | 334 | * |
349 | * active 1 means dma intends to access memory | 335 | * active 1 means dma intends to access memory |
@@ -1395,7 +1381,6 @@ const struct coh_dma_channel chan_config[U300_DMA_CHANNELS] = { | |||
1395 | .param.ctrl_lli = flags_memcpy_lli, | 1381 | .param.ctrl_lli = flags_memcpy_lli, |
1396 | .param.ctrl_lli_last = flags_memcpy_lli_last, | 1382 | .param.ctrl_lli_last = flags_memcpy_lli_last, |
1397 | }, | 1383 | }, |
1398 | #ifdef CONFIG_MACH_U300_BS335 | ||
1399 | { | 1384 | { |
1400 | .number = U300_DMA_UART1_TX, | 1385 | .number = U300_DMA_UART1_TX, |
1401 | .name = "UART1 TX", | 1386 | .name = "UART1 TX", |
@@ -1406,28 +1391,6 @@ const struct coh_dma_channel chan_config[U300_DMA_CHANNELS] = { | |||
1406 | .name = "UART1 RX", | 1391 | .name = "UART1 RX", |
1407 | .priority_high = 0, | 1392 | .priority_high = 0, |
1408 | } | 1393 | } |
1409 | #else | ||
1410 | { | ||
1411 | .number = U300_DMA_GENERAL_PURPOSE_9, | ||
1412 | .name = "GENERAL 09", | ||
1413 | .priority_high = 0, | ||
1414 | |||
1415 | .param.config = flags_memcpy_config, | ||
1416 | .param.ctrl_lli_chained = flags_memcpy_lli_chained, | ||
1417 | .param.ctrl_lli = flags_memcpy_lli, | ||
1418 | .param.ctrl_lli_last = flags_memcpy_lli_last, | ||
1419 | }, | ||
1420 | { | ||
1421 | .number = U300_DMA_GENERAL_PURPOSE_10, | ||
1422 | .name = "GENERAL 10", | ||
1423 | .priority_high = 0, | ||
1424 | |||
1425 | .param.config = flags_memcpy_config, | ||
1426 | .param.ctrl_lli_chained = flags_memcpy_lli_chained, | ||
1427 | .param.ctrl_lli = flags_memcpy_lli, | ||
1428 | .param.ctrl_lli_last = flags_memcpy_lli_last, | ||
1429 | } | ||
1430 | #endif | ||
1431 | }; | 1394 | }; |
1432 | 1395 | ||
1433 | 1396 | ||
@@ -1480,18 +1443,7 @@ static struct platform_device pinctrl_device = { | |||
1480 | * GPIO block, with different number of ports. | 1443 | * GPIO block, with different number of ports. |
1481 | */ | 1444 | */ |
1482 | static struct u300_gpio_platform u300_gpio_plat = { | 1445 | static struct u300_gpio_platform u300_gpio_plat = { |
1483 | #if defined(CONFIG_MACH_U300_BS2X) || defined(CONFIG_MACH_U300_BS330) | ||
1484 | .variant = U300_GPIO_COH901335, | ||
1485 | .ports = 3, | ||
1486 | #endif | ||
1487 | #ifdef CONFIG_MACH_U300_BS335 | ||
1488 | .variant = U300_GPIO_COH901571_3_BS335, | ||
1489 | .ports = 7, | 1446 | .ports = 7, |
1490 | #endif | ||
1491 | #ifdef CONFIG_MACH_U300_BS365 | ||
1492 | .variant = U300_GPIO_COH901571_3_BS365, | ||
1493 | .ports = 5, | ||
1494 | #endif | ||
1495 | .gpio_base = 0, | 1447 | .gpio_base = 0, |
1496 | .gpio_irq_base = IRQ_U300_GPIO_BASE, | 1448 | .gpio_irq_base = IRQ_U300_GPIO_BASE, |
1497 | .pinctrl_device = &pinctrl_device, | 1449 | .pinctrl_device = &pinctrl_device, |
@@ -1651,7 +1603,7 @@ static struct platform_device *platform_devs[] __initdata = { | |||
1651 | * together so some interrupts are connected to the first one and some | 1603 | * together so some interrupts are connected to the first one and some |
1652 | * to the second one. | 1604 | * to the second one. |
1653 | */ | 1605 | */ |
1654 | void __init u300_init_irq(void) | 1606 | static void __init u300_init_irq(void) |
1655 | { | 1607 | { |
1656 | u32 mask[2] = {0, 0}; | 1608 | u32 mask[2] = {0, 0}; |
1657 | struct clk *clk; | 1609 | struct clk *clk; |
@@ -1756,29 +1708,11 @@ static void __init u300_init_check_chip(void) | |||
1756 | printk(KERN_INFO "Initializing U300 system on %s baseband chip " \ | 1708 | printk(KERN_INFO "Initializing U300 system on %s baseband chip " \ |
1757 | "(chip ID 0x%04x)\n", chipname, val); | 1709 | "(chip ID 0x%04x)\n", chipname, val); |
1758 | 1710 | ||
1759 | #ifdef CONFIG_MACH_U300_BS330 | ||
1760 | if ((val & 0xFF00U) != 0xd800) { | ||
1761 | printk(KERN_ERR "Platform configured for BS330 " \ | ||
1762 | "with DB3200 but %s detected, expect problems!", | ||
1763 | chipname); | ||
1764 | } | ||
1765 | #endif | ||
1766 | #ifdef CONFIG_MACH_U300_BS335 | ||
1767 | if ((val & 0xFF00U) != 0xf000 && (val & 0xFF00U) != 0xf100) { | 1711 | if ((val & 0xFF00U) != 0xf000 && (val & 0xFF00U) != 0xf100) { |
1768 | printk(KERN_ERR "Platform configured for BS335 " \ | 1712 | printk(KERN_ERR "Platform configured for BS335 " \ |
1769 | " with DB3350 but %s detected, expect problems!", | 1713 | " with DB3350 but %s detected, expect problems!", |
1770 | chipname); | 1714 | chipname); |
1771 | } | 1715 | } |
1772 | #endif | ||
1773 | #ifdef CONFIG_MACH_U300_BS365 | ||
1774 | if ((val & 0xFF00U) != 0xe800) { | ||
1775 | printk(KERN_ERR "Platform configured for BS365 " \ | ||
1776 | "with DB3210 but %s detected, expect problems!", | ||
1777 | chipname); | ||
1778 | } | ||
1779 | #endif | ||
1780 | |||
1781 | |||
1782 | } | 1716 | } |
1783 | 1717 | ||
1784 | /* | 1718 | /* |
@@ -1811,7 +1745,7 @@ static void __init u300_assign_physmem(void) | |||
1811 | } | 1745 | } |
1812 | } | 1746 | } |
1813 | 1747 | ||
1814 | void __init u300_init_devices(void) | 1748 | static void __init u300_init_machine(void) |
1815 | { | 1749 | { |
1816 | int i; | 1750 | int i; |
1817 | u16 val; | 1751 | u16 val; |
@@ -1852,7 +1786,7 @@ void __init u300_init_devices(void) | |||
1852 | /* Forward declare this function from the watchdog */ | 1786 | /* Forward declare this function from the watchdog */ |
1853 | void coh901327_watchdog_reset(void); | 1787 | void coh901327_watchdog_reset(void); |
1854 | 1788 | ||
1855 | void u300_restart(char mode, const char *cmd) | 1789 | static void u300_restart(char mode, const char *cmd) |
1856 | { | 1790 | { |
1857 | switch (mode) { | 1791 | switch (mode) { |
1858 | case 's': | 1792 | case 's': |
@@ -1868,3 +1802,15 @@ void u300_restart(char mode, const char *cmd) | |||
1868 | /* Wait for system do die/reset. */ | 1802 | /* Wait for system do die/reset. */ |
1869 | while (1); | 1803 | while (1); |
1870 | } | 1804 | } |
1805 | |||
1806 | MACHINE_START(U300, "Ericsson AB U335 S335/B335 Prototype Board") | ||
1807 | /* Maintainer: Linus Walleij <linus.walleij@stericsson.com> */ | ||
1808 | .atag_offset = 0x100, | ||
1809 | .map_io = u300_map_io, | ||
1810 | .nr_irqs = NR_IRQS_U300, | ||
1811 | .init_irq = u300_init_irq, | ||
1812 | .handle_irq = vic_handle_irq, | ||
1813 | .timer = &u300_timer, | ||
1814 | .init_machine = u300_init_machine, | ||
1815 | .restart = u300_restart, | ||
1816 | MACHINE_END | ||
diff --git a/arch/arm/mach-u300/include/mach/dma_channels.h b/arch/arm/mach-u300/dma_channels.h index b239149ba0d0..4e8a88fbca49 100644 --- a/arch/arm/mach-u300/include/mach/dma_channels.h +++ b/arch/arm/mach-u300/dma_channels.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * arch/arm/mach-u300/include/mach/dma_channels.h | 3 | * arch/arm/mach-u300/include/mach/dma_channels.h |
4 | * | 4 | * |
5 | * | 5 | * |
6 | * Copyright (C) 2007-2009 ST-Ericsson | 6 | * Copyright (C) 2007-2012 ST-Ericsson |
7 | * License terms: GNU General Public License (GPL) version 2 | 7 | * License terms: GNU General Public License (GPL) version 2 |
8 | * Map file for the U300 dma driver. | 8 | * Map file for the U300 dma driver. |
9 | * Author: Per Friden <per.friden@stericsson.com> | 9 | * Author: Per Friden <per.friden@stericsson.com> |
@@ -50,19 +50,10 @@ | |||
50 | #define U300_DMA_GENERAL_PURPOSE_6 35 | 50 | #define U300_DMA_GENERAL_PURPOSE_6 35 |
51 | #define U300_DMA_GENERAL_PURPOSE_7 36 | 51 | #define U300_DMA_GENERAL_PURPOSE_7 36 |
52 | #define U300_DMA_GENERAL_PURPOSE_8 37 | 52 | #define U300_DMA_GENERAL_PURPOSE_8 37 |
53 | #ifdef CONFIG_MACH_U300_BS335 | ||
54 | #define U300_DMA_UART1_TX 38 | 53 | #define U300_DMA_UART1_TX 38 |
55 | #define U300_DMA_UART1_RX 39 | 54 | #define U300_DMA_UART1_RX 39 |
56 | #else | ||
57 | #define U300_DMA_GENERAL_PURPOSE_9 38 | ||
58 | #define U300_DMA_GENERAL_PURPOSE_10 39 | ||
59 | #endif | ||
60 | 55 | ||
61 | #ifdef CONFIG_MACH_U300_BS335 | ||
62 | #define U300_DMA_DEVICE_CHANNELS 32 | 56 | #define U300_DMA_DEVICE_CHANNELS 32 |
63 | #else | ||
64 | #define U300_DMA_DEVICE_CHANNELS 30 | ||
65 | #endif | ||
66 | #define U300_DMA_CHANNELS 40 | 57 | #define U300_DMA_CHANNELS 40 |
67 | 58 | ||
68 | 59 | ||
diff --git a/arch/arm/mach-u300/i2c.c b/arch/arm/mach-u300/i2c.c index cb04bd6ab3e7..0d4620ed853c 100644 --- a/arch/arm/mach-u300/i2c.c +++ b/arch/arm/mach-u300/i2c.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-u300/i2c.c | 2 | * arch/arm/mach-u300/i2c.c |
3 | * | 3 | * |
4 | * Copyright (C) 2009 ST-Ericsson AB | 4 | * Copyright (C) 2009-2012 ST-Ericsson AB |
5 | * License terms: GNU General Public License (GPL) version 2 | 5 | * License terms: GNU General Public License (GPL) version 2 |
6 | * | 6 | * |
7 | * Register board i2c devices | 7 | * Register board i2c devices |
@@ -261,7 +261,6 @@ static struct i2c_board_info __initdata bus0_i2c_board_info[] = { | |||
261 | }; | 261 | }; |
262 | 262 | ||
263 | static struct i2c_board_info __initdata bus1_i2c_board_info[] = { | 263 | static struct i2c_board_info __initdata bus1_i2c_board_info[] = { |
264 | #ifdef CONFIG_MACH_U300_BS335 | ||
265 | { | 264 | { |
266 | .type = "fwcam", | 265 | .type = "fwcam", |
267 | .addr = 0x10, | 266 | .addr = 0x10, |
@@ -270,9 +269,6 @@ static struct i2c_board_info __initdata bus1_i2c_board_info[] = { | |||
270 | .type = "fwcam", | 269 | .type = "fwcam", |
271 | .addr = 0x5d, | 270 | .addr = 0x5d, |
272 | }, | 271 | }, |
273 | #else | ||
274 | { }, | ||
275 | #endif | ||
276 | }; | 272 | }; |
277 | 273 | ||
278 | void __init u300_i2c_register_board_devices(void) | 274 | void __init u300_i2c_register_board_devices(void) |
diff --git a/arch/arm/mach-u300/include/mach/clkdev.h b/arch/arm/mach-u300/include/mach/clkdev.h deleted file mode 100644 index 92e3cc872c66..000000000000 --- a/arch/arm/mach-u300/include/mach/clkdev.h +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | #ifndef __MACH_CLKDEV_H | ||
2 | #define __MACH_CLKDEV_H | ||
3 | |||
4 | int __clk_get(struct clk *clk); | ||
5 | void __clk_put(struct clk *clk); | ||
6 | |||
7 | #endif | ||
diff --git a/arch/arm/mach-u300/include/mach/irqs.h b/arch/arm/mach-u300/include/mach/irqs.h index ec09c1e07b1a..e27425a63fa1 100644 --- a/arch/arm/mach-u300/include/mach/irqs.h +++ b/arch/arm/mach-u300/include/mach/irqs.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * arch/arm/mach-u300/include/mach/irqs.h | 3 | * arch/arm/mach-u300/include/mach/irqs.h |
4 | * | 4 | * |
5 | * | 5 | * |
6 | * Copyright (C) 2006-2009 ST-Ericsson AB | 6 | * Copyright (C) 2006-2012 ST-Ericsson AB |
7 | * License terms: GNU General Public License (GPL) version 2 | 7 | * License terms: GNU General Public License (GPL) version 2 |
8 | * IRQ channel definitions for the U300 platforms. | 8 | * IRQ channel definitions for the U300 platforms. |
9 | * Author: Linus Walleij <linus.walleij@stericsson.com> | 9 | * Author: Linus Walleij <linus.walleij@stericsson.com> |
@@ -31,10 +31,6 @@ | |||
31 | #define IRQ_U300_XGAM_GAMCON 14 | 31 | #define IRQ_U300_XGAM_GAMCON 14 |
32 | #define IRQ_U300_XGAM_CDI 15 | 32 | #define IRQ_U300_XGAM_CDI 15 |
33 | #define IRQ_U300_XGAM_CDICON 16 | 33 | #define IRQ_U300_XGAM_CDICON 16 |
34 | #if defined(CONFIG_MACH_U300_BS2X) || defined(CONFIG_MACH_U300_BS330) | ||
35 | /* MMIACC not used on the DB3210 or DB3350 chips */ | ||
36 | #define IRQ_U300_XGAM_MMIACC 17 | ||
37 | #endif | ||
38 | #define IRQ_U300_XGAM_PDI 18 | 34 | #define IRQ_U300_XGAM_PDI 18 |
39 | #define IRQ_U300_XGAM_PDICON 19 | 35 | #define IRQ_U300_XGAM_PDICON 19 |
40 | #define IRQ_U300_XGAM_GAMEACC 20 | 36 | #define IRQ_U300_XGAM_GAMEACC 20 |
@@ -55,8 +51,6 @@ | |||
55 | #define IRQ_U300_GPIO_PORT1 34 | 51 | #define IRQ_U300_GPIO_PORT1 34 |
56 | #define IRQ_U300_GPIO_PORT2 35 | 52 | #define IRQ_U300_GPIO_PORT2 35 |
57 | 53 | ||
58 | #if defined(CONFIG_MACH_U300_BS2X) || defined(CONFIG_MACH_U300_BS330) || \ | ||
59 | defined(CONFIG_MACH_U300_BS335) | ||
60 | /* These are for DB3150, DB3200 and DB3350 */ | 54 | /* These are for DB3150, DB3200 and DB3350 */ |
61 | #define IRQ_U300_WDOG 36 | 55 | #define IRQ_U300_WDOG 36 |
62 | #define IRQ_U300_EVHIST 37 | 56 | #define IRQ_U300_EVHIST 37 |
@@ -68,15 +62,8 @@ | |||
68 | #define IRQ_U300_RTC 43 | 62 | #define IRQ_U300_RTC 43 |
69 | #define IRQ_U300_NFIF 44 | 63 | #define IRQ_U300_NFIF 44 |
70 | #define IRQ_U300_NFIF2 45 | 64 | #define IRQ_U300_NFIF2 45 |
71 | #endif | ||
72 | |||
73 | /* DB3150 and DB3200 have only 45 IRQs */ | ||
74 | #if defined(CONFIG_MACH_U300_BS2X) || defined(CONFIG_MACH_U300_BS330) | ||
75 | #define U300_VIC_IRQS_END 46 | ||
76 | #endif | ||
77 | 65 | ||
78 | /* The DB3350-specific interrupt lines */ | 66 | /* The DB3350-specific interrupt lines */ |
79 | #ifdef CONFIG_MACH_U300_BS335 | ||
80 | #define IRQ_U300_ISP_F0 46 | 67 | #define IRQ_U300_ISP_F0 46 |
81 | #define IRQ_U300_ISP_F1 47 | 68 | #define IRQ_U300_ISP_F1 47 |
82 | #define IRQ_U300_ISP_F2 48 | 69 | #define IRQ_U300_ISP_F2 48 |
@@ -89,25 +76,6 @@ | |||
89 | #define IRQ_U300_GPIO_PORT5 55 | 76 | #define IRQ_U300_GPIO_PORT5 55 |
90 | #define IRQ_U300_GPIO_PORT6 56 | 77 | #define IRQ_U300_GPIO_PORT6 56 |
91 | #define U300_VIC_IRQS_END 57 | 78 | #define U300_VIC_IRQS_END 57 |
92 | #endif | ||
93 | |||
94 | /* The DB3210-specific interrupt lines */ | ||
95 | #ifdef CONFIG_MACH_U300_BS365 | ||
96 | #define IRQ_U300_GPIO_PORT3 36 | ||
97 | #define IRQ_U300_GPIO_PORT4 37 | ||
98 | #define IRQ_U300_WDOG 38 | ||
99 | #define IRQ_U300_EVHIST 39 | ||
100 | #define IRQ_U300_MSPRO 40 | ||
101 | #define IRQ_U300_MMCSD_MCIINTR0 41 | ||
102 | #define IRQ_U300_MMCSD_MCIINTR1 42 | ||
103 | #define IRQ_U300_I2C0 43 | ||
104 | #define IRQ_U300_I2C1 44 | ||
105 | #define IRQ_U300_RTC 45 | ||
106 | #define IRQ_U300_NFIF 46 | ||
107 | #define IRQ_U300_NFIF2 47 | ||
108 | #define IRQ_U300_SYSCON_PLL_LOCK 48 | ||
109 | #define U300_VIC_IRQS_END 49 | ||
110 | #endif | ||
111 | 79 | ||
112 | /* Maximum 8*7 GPIO lines */ | 80 | /* Maximum 8*7 GPIO lines */ |
113 | #ifdef CONFIG_PINCTRL_COH901 | 81 | #ifdef CONFIG_PINCTRL_COH901 |
@@ -117,6 +85,6 @@ | |||
117 | #define IRQ_U300_GPIO_END (U300_VIC_IRQS_END) | 85 | #define IRQ_U300_GPIO_END (U300_VIC_IRQS_END) |
118 | #endif | 86 | #endif |
119 | 87 | ||
120 | #define NR_IRQS (IRQ_U300_GPIO_END - IRQ_U300_INTCON0_START) | 88 | #define NR_IRQS_U300 (IRQ_U300_GPIO_END - IRQ_U300_INTCON0_START) |
121 | 89 | ||
122 | #endif | 90 | #endif |
diff --git a/arch/arm/mach-u300/include/mach/platform.h b/arch/arm/mach-u300/include/mach/platform.h deleted file mode 100644 index 096333f32fc3..000000000000 --- a/arch/arm/mach-u300/include/mach/platform.h +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * arch/arm/mach-u300/include/mach/platform.h | ||
4 | * | ||
5 | * | ||
6 | * Copyright (C) 2006-2009 ST-Ericsson AB | ||
7 | * License terms: GNU General Public License (GPL) version 2 | ||
8 | * Basic platform init and mapping functions. | ||
9 | * Author: Linus Walleij <linus.walleij@stericsson.com> | ||
10 | */ | ||
11 | |||
12 | #ifndef __ASSEMBLY__ | ||
13 | |||
14 | void u300_map_io(void); | ||
15 | void u300_init_irq(void); | ||
16 | void u300_init_devices(void); | ||
17 | void u300_restart(char, const char *); | ||
18 | extern struct sys_timer u300_timer; | ||
19 | |||
20 | #endif | ||
diff --git a/arch/arm/mach-u300/include/mach/syscon.h b/arch/arm/mach-u300/include/mach/syscon.h index 6e84f07a7c6f..10bdd0be9774 100644 --- a/arch/arm/mach-u300/include/mach/syscon.h +++ b/arch/arm/mach-u300/include/mach/syscon.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * arch/arm/mach-u300/include/mach/syscon.h | 3 | * arch/arm/mach-u300/include/mach/syscon.h |
4 | * | 4 | * |
5 | * | 5 | * |
6 | * Copyright (C) 2008 ST-Ericsson AB | 6 | * Copyright (C) 2008-2012 ST-Ericsson AB |
7 | * | 7 | * |
8 | * Author: Rickard Andersson <rickard.andersson@stericsson.com> | 8 | * Author: Rickard Andersson <rickard.andersson@stericsson.com> |
9 | */ | 9 | */ |
@@ -36,9 +36,7 @@ | |||
36 | #define U300_SYSCON_CSR_PLL13_LOCK_IND (0x0001) | 36 | #define U300_SYSCON_CSR_PLL13_LOCK_IND (0x0001) |
37 | /* Reset lines for SLOW devices 16bit (R/W) */ | 37 | /* Reset lines for SLOW devices 16bit (R/W) */ |
38 | #define U300_SYSCON_RSR (0x0014) | 38 | #define U300_SYSCON_RSR (0x0014) |
39 | #ifdef CONFIG_MACH_U300_BS335 | ||
40 | #define U300_SYSCON_RSR_PPM_RESET_EN (0x0200) | 39 | #define U300_SYSCON_RSR_PPM_RESET_EN (0x0200) |
41 | #endif | ||
42 | #define U300_SYSCON_RSR_ACC_TMR_RESET_EN (0x0100) | 40 | #define U300_SYSCON_RSR_ACC_TMR_RESET_EN (0x0100) |
43 | #define U300_SYSCON_RSR_APP_TMR_RESET_EN (0x0080) | 41 | #define U300_SYSCON_RSR_APP_TMR_RESET_EN (0x0080) |
44 | #define U300_SYSCON_RSR_RTC_RESET_EN (0x0040) | 42 | #define U300_SYSCON_RSR_RTC_RESET_EN (0x0040) |
@@ -50,9 +48,7 @@ | |||
50 | #define U300_SYSCON_RSR_SLOW_BRIDGE_RESET_EN (0x0001) | 48 | #define U300_SYSCON_RSR_SLOW_BRIDGE_RESET_EN (0x0001) |
51 | /* Reset lines for FAST devices 16bit (R/W) */ | 49 | /* Reset lines for FAST devices 16bit (R/W) */ |
52 | #define U300_SYSCON_RFR (0x0018) | 50 | #define U300_SYSCON_RFR (0x0018) |
53 | #ifdef CONFIG_MACH_U300_BS335 | ||
54 | #define U300_SYSCON_RFR_UART1_RESET_ENABLE (0x0080) | 51 | #define U300_SYSCON_RFR_UART1_RESET_ENABLE (0x0080) |
55 | #endif | ||
56 | #define U300_SYSCON_RFR_SPI_RESET_ENABLE (0x0040) | 52 | #define U300_SYSCON_RFR_SPI_RESET_ENABLE (0x0040) |
57 | #define U300_SYSCON_RFR_MMC_RESET_ENABLE (0x0020) | 53 | #define U300_SYSCON_RFR_MMC_RESET_ENABLE (0x0020) |
58 | #define U300_SYSCON_RFR_PCM_I2S1_RESET_ENABLE (0x0010) | 54 | #define U300_SYSCON_RFR_PCM_I2S1_RESET_ENABLE (0x0010) |
@@ -62,10 +58,8 @@ | |||
62 | #define U300_SYSCON_RFR_FAST_BRIDGE_RESET_ENABLE (0x0001) | 58 | #define U300_SYSCON_RFR_FAST_BRIDGE_RESET_ENABLE (0x0001) |
63 | /* Reset lines for the rest of the peripherals 16bit (R/W) */ | 59 | /* Reset lines for the rest of the peripherals 16bit (R/W) */ |
64 | #define U300_SYSCON_RRR (0x001c) | 60 | #define U300_SYSCON_RRR (0x001c) |
65 | #ifdef CONFIG_MACH_U300_BS335 | ||
66 | #define U300_SYSCON_RRR_CDS_RESET_EN (0x4000) | 61 | #define U300_SYSCON_RRR_CDS_RESET_EN (0x4000) |
67 | #define U300_SYSCON_RRR_ISP_RESET_EN (0x2000) | 62 | #define U300_SYSCON_RRR_ISP_RESET_EN (0x2000) |
68 | #endif | ||
69 | #define U300_SYSCON_RRR_INTCON_RESET_EN (0x1000) | 63 | #define U300_SYSCON_RRR_INTCON_RESET_EN (0x1000) |
70 | #define U300_SYSCON_RRR_MSPRO_RESET_EN (0x0800) | 64 | #define U300_SYSCON_RRR_MSPRO_RESET_EN (0x0800) |
71 | #define U300_SYSCON_RRR_XGAM_RESET_EN (0x0100) | 65 | #define U300_SYSCON_RRR_XGAM_RESET_EN (0x0100) |
@@ -79,9 +73,7 @@ | |||
79 | #define U300_SYSCON_RRR_AAIF_RESET_EN (0x0001) | 73 | #define U300_SYSCON_RRR_AAIF_RESET_EN (0x0001) |
80 | /* Clock enable for SLOW peripherals 16bit (R/W) */ | 74 | /* Clock enable for SLOW peripherals 16bit (R/W) */ |
81 | #define U300_SYSCON_CESR (0x0020) | 75 | #define U300_SYSCON_CESR (0x0020) |
82 | #ifdef CONFIG_MACH_U300_BS335 | ||
83 | #define U300_SYSCON_CESR_PPM_CLK_EN (0x0200) | 76 | #define U300_SYSCON_CESR_PPM_CLK_EN (0x0200) |
84 | #endif | ||
85 | #define U300_SYSCON_CESR_ACC_TMR_CLK_EN (0x0100) | 77 | #define U300_SYSCON_CESR_ACC_TMR_CLK_EN (0x0100) |
86 | #define U300_SYSCON_CESR_APP_TMR_CLK_EN (0x0080) | 78 | #define U300_SYSCON_CESR_APP_TMR_CLK_EN (0x0080) |
87 | #define U300_SYSCON_CESR_KEYPAD_CLK_EN (0x0040) | 79 | #define U300_SYSCON_CESR_KEYPAD_CLK_EN (0x0040) |
@@ -92,24 +84,20 @@ | |||
92 | #define U300_SYSCON_CESR_SLOW_BRIDGE_CLK_EN (0x0001) | 84 | #define U300_SYSCON_CESR_SLOW_BRIDGE_CLK_EN (0x0001) |
93 | /* Clock enable for FAST peripherals 16bit (R/W) */ | 85 | /* Clock enable for FAST peripherals 16bit (R/W) */ |
94 | #define U300_SYSCON_CEFR (0x0024) | 86 | #define U300_SYSCON_CEFR (0x0024) |
95 | #ifdef CONFIG_MACH_U300_BS335 | ||
96 | #define U300_SYSCON_CEFR_UART1_CLK_EN (0x0200) | 87 | #define U300_SYSCON_CEFR_UART1_CLK_EN (0x0200) |
97 | #endif | ||
98 | #define U300_SYSCON_CEFR_I2S1_CORE_CLK_EN (0x0100) | 88 | #define U300_SYSCON_CEFR_I2S1_CORE_CLK_EN (0x0100) |
99 | #define U300_SYSCON_CEFR_I2S0_CORE_CLK_EN (0x0080) | 89 | #define U300_SYSCON_CEFR_I2S0_CORE_CLK_EN (0x0080) |
100 | #define U300_SYSCON_CEFR_SPI_CLK_EN (0x0040) | 90 | #define U300_SYSCON_CEFR_SPI_CLK_EN (0x0040) |
101 | #define U300_SYSCON_CEFR_MMC_CLK_EN (0x0020) | 91 | #define U300_SYSCON_CEFR_MMC_CLK_EN (0x0020) |
102 | #define U300_SYSCON_CEFR_I2S1_CLK_EN (0x0010) | 92 | #define U300_SYSCON_CEFR_I2S1_CLK_EN (0x0010) |
103 | #define U300_SYSCON_CEFR_I2S0_CLK_EN (0x0008) | 93 | #define U300_SYSCON_CEFR_I2S0_CLK_EN (0x0008) |
104 | #define U300_SYSCON_CEFR_I2C1_CLK_EN (0x0004) | 94 | #define U300_SYSCON_CEFR_I2C1_CLK_EN (0x0004) |
105 | #define U300_SYSCON_CEFR_I2C0_CLK_EN (0x0002) | 95 | #define U300_SYSCON_CEFR_I2C0_CLK_EN (0x0002) |
106 | #define U300_SYSCON_CEFR_FAST_BRIDGE_CLK_EN (0x0001) | 96 | #define U300_SYSCON_CEFR_FAST_BRIDGE_CLK_EN (0x0001) |
107 | /* Clock enable for the rest of the peripherals 16bit (R/W) */ | 97 | /* Clock enable for the rest of the peripherals 16bit (R/W) */ |
108 | #define U300_SYSCON_CERR (0x0028) | 98 | #define U300_SYSCON_CERR (0x0028) |
109 | #ifdef CONFIG_MACH_U300_BS335 | ||
110 | #define U300_SYSCON_CERR_CDS_CLK_EN (0x2000) | 99 | #define U300_SYSCON_CERR_CDS_CLK_EN (0x2000) |
111 | #define U300_SYSCON_CERR_ISP_CLK_EN (0x1000) | 100 | #define U300_SYSCON_CERR_ISP_CLK_EN (0x1000) |
112 | #endif | ||
113 | #define U300_SYSCON_CERR_MSPRO_CLK_EN (0x0800) | 101 | #define U300_SYSCON_CERR_MSPRO_CLK_EN (0x0800) |
114 | #define U300_SYSCON_CERR_AHB_SUBSYS_BRIDGE_CLK_EN (0x0400) | 102 | #define U300_SYSCON_CERR_AHB_SUBSYS_BRIDGE_CLK_EN (0x0400) |
115 | #define U300_SYSCON_CERR_SEMI_CLK_EN (0x0200) | 103 | #define U300_SYSCON_CERR_SEMI_CLK_EN (0x0200) |
@@ -124,9 +112,7 @@ | |||
124 | #define U300_SYSCON_CERR_AAIF_CLK_EN (0x0001) | 112 | #define U300_SYSCON_CERR_AAIF_CLK_EN (0x0001) |
125 | /* Single block clock enable 16bit (-/W) */ | 113 | /* Single block clock enable 16bit (-/W) */ |
126 | #define U300_SYSCON_SBCER (0x002c) | 114 | #define U300_SYSCON_SBCER (0x002c) |
127 | #ifdef CONFIG_MACH_U300_BS335 | ||
128 | #define U300_SYSCON_SBCER_PPM_CLK_EN (0x0009) | 115 | #define U300_SYSCON_SBCER_PPM_CLK_EN (0x0009) |
129 | #endif | ||
130 | #define U300_SYSCON_SBCER_ACC_TMR_CLK_EN (0x0008) | 116 | #define U300_SYSCON_SBCER_ACC_TMR_CLK_EN (0x0008) |
131 | #define U300_SYSCON_SBCER_APP_TMR_CLK_EN (0x0007) | 117 | #define U300_SYSCON_SBCER_APP_TMR_CLK_EN (0x0007) |
132 | #define U300_SYSCON_SBCER_KEYPAD_CLK_EN (0x0006) | 118 | #define U300_SYSCON_SBCER_KEYPAD_CLK_EN (0x0006) |
@@ -135,9 +121,7 @@ | |||
135 | #define U300_SYSCON_SBCER_BTR_CLK_EN (0x0002) | 121 | #define U300_SYSCON_SBCER_BTR_CLK_EN (0x0002) |
136 | #define U300_SYSCON_SBCER_UART_CLK_EN (0x0001) | 122 | #define U300_SYSCON_SBCER_UART_CLK_EN (0x0001) |
137 | #define U300_SYSCON_SBCER_SLOW_BRIDGE_CLK_EN (0x0000) | 123 | #define U300_SYSCON_SBCER_SLOW_BRIDGE_CLK_EN (0x0000) |
138 | #ifdef CONFIG_MACH_U300_BS335 | ||
139 | #define U300_SYSCON_SBCER_UART1_CLK_EN (0x0019) | 124 | #define U300_SYSCON_SBCER_UART1_CLK_EN (0x0019) |
140 | #endif | ||
141 | #define U300_SYSCON_SBCER_I2S1_CORE_CLK_EN (0x0018) | 125 | #define U300_SYSCON_SBCER_I2S1_CORE_CLK_EN (0x0018) |
142 | #define U300_SYSCON_SBCER_I2S0_CORE_CLK_EN (0x0017) | 126 | #define U300_SYSCON_SBCER_I2S0_CORE_CLK_EN (0x0017) |
143 | #define U300_SYSCON_SBCER_SPI_CLK_EN (0x0016) | 127 | #define U300_SYSCON_SBCER_SPI_CLK_EN (0x0016) |
@@ -147,10 +131,8 @@ | |||
147 | #define U300_SYSCON_SBCER_I2C1_CLK_EN (0x0012) | 131 | #define U300_SYSCON_SBCER_I2C1_CLK_EN (0x0012) |
148 | #define U300_SYSCON_SBCER_I2C0_CLK_EN (0x0011) | 132 | #define U300_SYSCON_SBCER_I2C0_CLK_EN (0x0011) |
149 | #define U300_SYSCON_SBCER_FAST_BRIDGE_CLK_EN (0x0010) | 133 | #define U300_SYSCON_SBCER_FAST_BRIDGE_CLK_EN (0x0010) |
150 | #ifdef CONFIG_MACH_U300_BS335 | ||
151 | #define U300_SYSCON_SBCER_CDS_CLK_EN (0x002D) | 134 | #define U300_SYSCON_SBCER_CDS_CLK_EN (0x002D) |
152 | #define U300_SYSCON_SBCER_ISP_CLK_EN (0x002C) | 135 | #define U300_SYSCON_SBCER_ISP_CLK_EN (0x002C) |
153 | #endif | ||
154 | #define U300_SYSCON_SBCER_MSPRO_CLK_EN (0x002B) | 136 | #define U300_SYSCON_SBCER_MSPRO_CLK_EN (0x002B) |
155 | #define U300_SYSCON_SBCER_AHB_SUBSYS_BRIDGE_CLK_EN (0x002A) | 137 | #define U300_SYSCON_SBCER_AHB_SUBSYS_BRIDGE_CLK_EN (0x002A) |
156 | #define U300_SYSCON_SBCER_SEMI_CLK_EN (0x0029) | 138 | #define U300_SYSCON_SBCER_SEMI_CLK_EN (0x0029) |
@@ -168,9 +150,7 @@ | |||
168 | /* Same values as above for SBCER */ | 150 | /* Same values as above for SBCER */ |
169 | /* Clock force SLOW peripherals 16bit (R/W) */ | 151 | /* Clock force SLOW peripherals 16bit (R/W) */ |
170 | #define U300_SYSCON_CFSR (0x003c) | 152 | #define U300_SYSCON_CFSR (0x003c) |
171 | #ifdef CONFIG_MACH_U300_BS335 | ||
172 | #define U300_SYSCON_CFSR_PPM_CLK_FORCE_EN (0x0200) | 153 | #define U300_SYSCON_CFSR_PPM_CLK_FORCE_EN (0x0200) |
173 | #endif | ||
174 | #define U300_SYSCON_CFSR_ACC_TMR_CLK_FORCE_EN (0x0100) | 154 | #define U300_SYSCON_CFSR_ACC_TMR_CLK_FORCE_EN (0x0100) |
175 | #define U300_SYSCON_CFSR_APP_TMR_CLK_FORCE_EN (0x0080) | 155 | #define U300_SYSCON_CFSR_APP_TMR_CLK_FORCE_EN (0x0080) |
176 | #define U300_SYSCON_CFSR_KEYPAD_CLK_FORCE_EN (0x0020) | 156 | #define U300_SYSCON_CFSR_KEYPAD_CLK_FORCE_EN (0x0020) |
@@ -184,10 +164,8 @@ | |||
184 | /* Values not defined. Define if you want to use them. */ | 164 | /* Values not defined. Define if you want to use them. */ |
185 | /* Clock force the rest of the peripherals 16bit (R/W) */ | 165 | /* Clock force the rest of the peripherals 16bit (R/W) */ |
186 | #define U300_SYSCON_CFRR (0x44) | 166 | #define U300_SYSCON_CFRR (0x44) |
187 | #ifdef CONFIG_MACH_U300_BS335 | ||
188 | #define U300_SYSCON_CFRR_CDS_CLK_FORCE_EN (0x2000) | 167 | #define U300_SYSCON_CFRR_CDS_CLK_FORCE_EN (0x2000) |
189 | #define U300_SYSCON_CFRR_ISP_CLK_FORCE_EN (0x1000) | 168 | #define U300_SYSCON_CFRR_ISP_CLK_FORCE_EN (0x1000) |
190 | #endif | ||
191 | #define U300_SYSCON_CFRR_MSPRO_CLK_FORCE_EN (0x0800) | 169 | #define U300_SYSCON_CFRR_MSPRO_CLK_FORCE_EN (0x0800) |
192 | #define U300_SYSCON_CFRR_AHB_SUBSYS_BRIDGE_CLK_FORCE_EN (0x0400) | 170 | #define U300_SYSCON_CFRR_AHB_SUBSYS_BRIDGE_CLK_FORCE_EN (0x0400) |
193 | #define U300_SYSCON_CFRR_SEMI_CLK_FORCE_EN (0x0200) | 171 | #define U300_SYSCON_CFRR_SEMI_CLK_FORCE_EN (0x0200) |
diff --git a/arch/arm/mach-u300/include/mach/u300-regs.h b/arch/arm/mach-u300/include/mach/u300-regs.h index 65f87c523892..1e49d901f2c9 100644 --- a/arch/arm/mach-u300/include/mach/u300-regs.h +++ b/arch/arm/mach-u300/include/mach/u300-regs.h | |||
@@ -28,7 +28,6 @@ | |||
28 | #define PLAT_NAND_CLE (1 << 16) | 28 | #define PLAT_NAND_CLE (1 << 16) |
29 | #define PLAT_NAND_ALE (1 << 17) | 29 | #define PLAT_NAND_ALE (1 << 17) |
30 | 30 | ||
31 | |||
32 | /* AHB Peripherals */ | 31 | /* AHB Peripherals */ |
33 | #define U300_AHB_PER_PHYS_BASE 0xa0000000 | 32 | #define U300_AHB_PER_PHYS_BASE 0xa0000000 |
34 | #define U300_AHB_PER_VIRT_BASE 0xff010000 | 33 | #define U300_AHB_PER_VIRT_BASE 0xff010000 |
@@ -46,11 +45,7 @@ | |||
46 | #define U300_BOOTROM_VIRT_BASE 0xffff0000 | 45 | #define U300_BOOTROM_VIRT_BASE 0xffff0000 |
47 | 46 | ||
48 | /* SEMI config base */ | 47 | /* SEMI config base */ |
49 | #ifdef CONFIG_MACH_U300_BS335 | ||
50 | #define U300_SEMI_CONFIG_BASE 0x2FFE0000 | 48 | #define U300_SEMI_CONFIG_BASE 0x2FFE0000 |
51 | #else | ||
52 | #define U300_SEMI_CONFIG_BASE 0x30000000 | ||
53 | #endif | ||
54 | 49 | ||
55 | /* | 50 | /* |
56 | * AHB peripherals | 51 | * AHB peripherals |
@@ -99,10 +94,8 @@ | |||
99 | /* SPI controller */ | 94 | /* SPI controller */ |
100 | #define U300_SPI_BASE (U300_FAST_PER_PHYS_BASE+0x6000) | 95 | #define U300_SPI_BASE (U300_FAST_PER_PHYS_BASE+0x6000) |
101 | 96 | ||
102 | #ifdef CONFIG_MACH_U300_BS335 | ||
103 | /* Fast UART1 on U335 only */ | 97 | /* Fast UART1 on U335 only */ |
104 | #define U300_UART1_BASE (U300_SLOW_PER_PHYS_BASE+0x7000) | 98 | #define U300_UART1_BASE (U300_SLOW_PER_PHYS_BASE+0x7000) |
105 | #endif | ||
106 | 99 | ||
107 | /* | 100 | /* |
108 | * SLOW peripherals | 101 | * SLOW peripherals |
@@ -151,10 +144,8 @@ | |||
151 | * REST peripherals | 144 | * REST peripherals |
152 | */ | 145 | */ |
153 | 146 | ||
154 | /* ISP (image signal processor) is only available in U335 */ | 147 | /* ISP (image signal processor) */ |
155 | #ifdef CONFIG_MACH_U300_BS335 | ||
156 | #define U300_ISP_BASE (0xA0008000) | 148 | #define U300_ISP_BASE (0xA0008000) |
157 | #endif | ||
158 | 149 | ||
159 | /* DMA Controller base */ | 150 | /* DMA Controller base */ |
160 | #define U300_DMAC_BASE (0xC0020000) | 151 | #define U300_DMAC_BASE (0xC0020000) |
@@ -166,17 +157,9 @@ | |||
166 | #define U300_APEX_BASE (0xc0030000) | 157 | #define U300_APEX_BASE (0xc0030000) |
167 | 158 | ||
168 | /* Video Encoder Base */ | 159 | /* Video Encoder Base */ |
169 | #ifdef CONFIG_MACH_U300_BS335 | ||
170 | #define U300_VIDEOENC_BASE (0xc0080000) | 160 | #define U300_VIDEOENC_BASE (0xc0080000) |
171 | #else | ||
172 | #define U300_VIDEOENC_BASE (0xc0040000) | ||
173 | #endif | ||
174 | 161 | ||
175 | /* XGAM Base */ | 162 | /* XGAM Base */ |
176 | #define U300_XGAM_BASE (0xd0000000) | 163 | #define U300_XGAM_BASE (0xd0000000) |
177 | 164 | ||
178 | /* | ||
179 | * Virtual accessor macros for static devices | ||
180 | */ | ||
181 | |||
182 | #endif | 165 | #endif |
diff --git a/arch/arm/mach-u300/spi.c b/arch/arm/mach-u300/spi.c index a1affacfa59c..02e6659286d5 100644 --- a/arch/arm/mach-u300/spi.c +++ b/arch/arm/mach-u300/spi.c | |||
@@ -12,7 +12,7 @@ | |||
12 | #include <linux/amba/pl022.h> | 12 | #include <linux/amba/pl022.h> |
13 | #include <linux/err.h> | 13 | #include <linux/err.h> |
14 | #include <mach/coh901318.h> | 14 | #include <mach/coh901318.h> |
15 | #include <mach/dma_channels.h> | 15 | #include "dma_channels.h" |
16 | 16 | ||
17 | /* | 17 | /* |
18 | * The following is for the actual devices on the SSP/SPI bus | 18 | * The following is for the actual devices on the SSP/SPI bus |
diff --git a/arch/arm/mach-u300/timer.c b/arch/arm/mach-u300/timer.c index 56ac06d38ec1..1da10e20e996 100644 --- a/arch/arm/mach-u300/timer.c +++ b/arch/arm/mach-u300/timer.c | |||
@@ -17,14 +17,17 @@ | |||
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/clk.h> | 18 | #include <linux/clk.h> |
19 | #include <linux/err.h> | 19 | #include <linux/err.h> |
20 | #include <linux/irq.h> | ||
20 | 21 | ||
21 | #include <mach/hardware.h> | 22 | #include <mach/hardware.h> |
23 | #include <mach/irqs.h> | ||
22 | 24 | ||
23 | /* Generic stuff */ | 25 | /* Generic stuff */ |
24 | #include <asm/sched_clock.h> | 26 | #include <asm/sched_clock.h> |
25 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
26 | #include <asm/mach/time.h> | 28 | #include <asm/mach/time.h> |
27 | #include <asm/mach/irq.h> | 29 | |
30 | #include "timer.h" | ||
28 | 31 | ||
29 | /* | 32 | /* |
30 | * APP side special timer registers | 33 | * APP side special timer registers |
diff --git a/arch/arm/mach-u300/timer.h b/arch/arm/mach-u300/timer.h new file mode 100644 index 000000000000..b5e9791762e0 --- /dev/null +++ b/arch/arm/mach-u300/timer.h | |||
@@ -0,0 +1 @@ | |||
extern struct sys_timer u300_timer; | |||
diff --git a/arch/arm/mach-u300/u300-gpio.h b/arch/arm/mach-u300/u300-gpio.h index 847dc25300c6..83f50772e169 100644 --- a/arch/arm/mach-u300/u300-gpio.h +++ b/arch/arm/mach-u300/u300-gpio.h | |||
@@ -1,50 +1,11 @@ | |||
1 | /* | 1 | /* |
2 | * Individual pin assignments for the B26/S26. Notice that the | 2 | * Individual pin assignments for the B335/S335. |
3 | * actual usage of these pins depends on the PAD MUX settings, that | ||
4 | * is why the same number can potentially appear several times. | ||
5 | * In the reference design each pin is only used for one purpose. | ||
6 | * These were determined by inspecting the B26/S26 schematic: | ||
7 | * 2/1911-ROA 128 1603 | ||
8 | */ | ||
9 | #ifdef CONFIG_MACH_U300_BS2X | ||
10 | #define U300_GPIO_PIN_UART_RX 0 | ||
11 | #define U300_GPIO_PIN_UART_TX 1 | ||
12 | #define U300_GPIO_PIN_GPIO02 2 /* Unrouted */ | ||
13 | #define U300_GPIO_PIN_GPIO03 3 /* Unrouted */ | ||
14 | #define U300_GPIO_PIN_CAM_SLEEP 4 | ||
15 | #define U300_GPIO_PIN_CAM_REG_EN 5 | ||
16 | #define U300_GPIO_PIN_GPIO06 6 /* Unrouted */ | ||
17 | #define U300_GPIO_PIN_GPIO07 7 /* Unrouted */ | ||
18 | |||
19 | #define U300_GPIO_PIN_GPIO08 8 /* Service point SP2321 */ | ||
20 | #define U300_GPIO_PIN_GPIO09 9 /* Service point SP2322 */ | ||
21 | #define U300_GPIO_PIN_PHFSENSE 10 /* Headphone jack sensing */ | ||
22 | #define U300_GPIO_PIN_MMC_CLKRET 11 /* Clock return from MMC/SD card */ | ||
23 | #define U300_GPIO_PIN_MMC_CD 12 /* MMC Card insertion detection */ | ||
24 | #define U300_GPIO_PIN_FLIPSENSE 13 /* Mechanical flip sensing */ | ||
25 | #define U300_GPIO_PIN_GPIO14 14 /* DSP JTAG Port RTCK */ | ||
26 | #define U300_GPIO_PIN_GPIO15 15 /* Unrouted */ | ||
27 | |||
28 | #define U300_GPIO_PIN_GPIO16 16 /* Unrouted */ | ||
29 | #define U300_GPIO_PIN_GPIO17 17 /* Unrouted */ | ||
30 | #define U300_GPIO_PIN_GPIO18 18 /* Unrouted */ | ||
31 | #define U300_GPIO_PIN_GPIO19 19 /* Unrouted */ | ||
32 | #define U300_GPIO_PIN_GPIO20 20 /* Unrouted */ | ||
33 | #define U300_GPIO_PIN_GPIO21 21 /* Unrouted */ | ||
34 | #define U300_GPIO_PIN_GPIO22 22 /* Unrouted */ | ||
35 | #define U300_GPIO_PIN_GPIO23 23 /* Unrouted */ | ||
36 | #endif | ||
37 | |||
38 | /* | ||
39 | * Individual pin assignments for the B330/S330 and B365/S365. | ||
40 | * Notice that the actual usage of these pins depends on the | 3 | * Notice that the actual usage of these pins depends on the |
41 | * PAD MUX settings, that is why the same number can potentially | 4 | * PAD MUX settings, that is why the same number can potentially |
42 | * appear several times. In the reference design each pin is only | 5 | * appear several times. In the reference design each pin is only |
43 | * used for one purpose. These were determined by inspecting the | 6 | * used for one purpose. These were determined by inspecting the |
44 | * S365 schematic. | 7 | * S365 schematic. |
45 | */ | 8 | */ |
46 | #if defined(CONFIG_MACH_U300_BS330) || defined(CONFIG_MACH_U300_BS365) || \ | ||
47 | defined(CONFIG_MACH_U300_BS335) | ||
48 | #define U300_GPIO_PIN_UART_RX 0 | 9 | #define U300_GPIO_PIN_UART_RX 0 |
49 | #define U300_GPIO_PIN_UART_TX 1 | 10 | #define U300_GPIO_PIN_UART_TX 1 |
50 | #define U300_GPIO_PIN_UART_CTS 2 | 11 | #define U300_GPIO_PIN_UART_CTS 2 |
@@ -90,8 +51,6 @@ | |||
90 | #define U300_GPIO_PIN_GPIO38 38 /* Unrouted */ | 51 | #define U300_GPIO_PIN_GPIO38 38 /* Unrouted */ |
91 | #define U300_GPIO_PIN_GPIO39 39 /* Unrouted */ | 52 | #define U300_GPIO_PIN_GPIO39 39 /* Unrouted */ |
92 | 53 | ||
93 | #ifdef CONFIG_MACH_U300_BS335 | ||
94 | |||
95 | #define U300_GPIO_PIN_GPIO40 40 /* Unrouted */ | 54 | #define U300_GPIO_PIN_GPIO40 40 /* Unrouted */ |
96 | #define U300_GPIO_PIN_GPIO41 41 /* Unrouted */ | 55 | #define U300_GPIO_PIN_GPIO41 41 /* Unrouted */ |
97 | #define U300_GPIO_PIN_GPIO42 42 /* Unrouted */ | 56 | #define U300_GPIO_PIN_GPIO42 42 /* Unrouted */ |
@@ -109,6 +68,3 @@ | |||
109 | #define U300_GPIO_PIN_GPIO53 53 /* Unrouted */ | 68 | #define U300_GPIO_PIN_GPIO53 53 /* Unrouted */ |
110 | #define U300_GPIO_PIN_GPIO54 54 /* Unrouted */ | 69 | #define U300_GPIO_PIN_GPIO54 54 /* Unrouted */ |
111 | #define U300_GPIO_PIN_GPIO55 55 /* Unrouted */ | 70 | #define U300_GPIO_PIN_GPIO55 55 /* Unrouted */ |
112 | #endif | ||
113 | |||
114 | #endif | ||
diff --git a/arch/arm/mach-u300/u300.c b/arch/arm/mach-u300/u300.c deleted file mode 100644 index f30c69d91d99..000000000000 --- a/arch/arm/mach-u300/u300.c +++ /dev/null | |||
@@ -1,57 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * arch/arm/mach-u300/u300.c | ||
4 | * | ||
5 | * | ||
6 | * Copyright (C) 2006-2009 ST-Ericsson AB | ||
7 | * License terms: GNU General Public License (GPL) version 2 | ||
8 | * Platform machine definition. | ||
9 | * Author: Linus Walleij <linus.walleij@stericsson.com> | ||
10 | */ | ||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/mm.h> | ||
14 | #include <linux/sched.h> | ||
15 | #include <linux/interrupt.h> | ||
16 | #include <linux/ioport.h> | ||
17 | #include <linux/memblock.h> | ||
18 | #include <linux/platform_device.h> | ||
19 | #include <linux/io.h> | ||
20 | #include <mach/hardware.h> | ||
21 | #include <mach/platform.h> | ||
22 | #include <asm/hardware/vic.h> | ||
23 | #include <asm/mach-types.h> | ||
24 | #include <asm/mach/arch.h> | ||
25 | #include <asm/memory.h> | ||
26 | |||
27 | static void __init u300_init_machine(void) | ||
28 | { | ||
29 | u300_init_devices(); | ||
30 | } | ||
31 | |||
32 | #ifdef CONFIG_MACH_U300_BS2X | ||
33 | #define MACH_U300_STRING "Ericsson AB U300 S25/S26/B25/B26 Prototype Board" | ||
34 | #endif | ||
35 | |||
36 | #ifdef CONFIG_MACH_U300_BS330 | ||
37 | #define MACH_U300_STRING "Ericsson AB U330 S330/B330 Prototype Board" | ||
38 | #endif | ||
39 | |||
40 | #ifdef CONFIG_MACH_U300_BS335 | ||
41 | #define MACH_U300_STRING "Ericsson AB U335 S335/B335 Prototype Board" | ||
42 | #endif | ||
43 | |||
44 | #ifdef CONFIG_MACH_U300_BS365 | ||
45 | #define MACH_U300_STRING "Ericsson AB U365 S365/B365 Prototype Board" | ||
46 | #endif | ||
47 | |||
48 | MACHINE_START(U300, MACH_U300_STRING) | ||
49 | /* Maintainer: Linus Walleij <linus.walleij@stericsson.com> */ | ||
50 | .atag_offset = 0x100, | ||
51 | .map_io = u300_map_io, | ||
52 | .init_irq = u300_init_irq, | ||
53 | .handle_irq = vic_handle_irq, | ||
54 | .timer = &u300_timer, | ||
55 | .init_machine = u300_init_machine, | ||
56 | .restart = u300_restart, | ||
57 | MACHINE_END | ||
diff --git a/drivers/mtd/nand/bcm_umi_nand.c b/drivers/mtd/nand/bcm_umi_nand.c index c855e7cd337b..d0d1bd4d0e7d 100644 --- a/drivers/mtd/nand/bcm_umi_nand.c +++ b/drivers/mtd/nand/bcm_umi_nand.c | |||
@@ -249,20 +249,20 @@ static int nand_dev_ready(struct mtd_info *mtd) | |||
249 | int bcm_umi_nand_inithw(void) | 249 | int bcm_umi_nand_inithw(void) |
250 | { | 250 | { |
251 | /* Configure nand timing parameters */ | 251 | /* Configure nand timing parameters */ |
252 | REG_UMI_NAND_TCR &= ~0x7ffff; | 252 | writel(readl(®_UMI_NAND_TCR) & ~0x7ffff, ®_UMI_NAND_TCR); |
253 | REG_UMI_NAND_TCR |= HW_CFG_NAND_TCR; | 253 | writel(readl(®_UMI_NAND_TCR) | HW_CFG_NAND_TCR, ®_UMI_NAND_TCR); |
254 | 254 | ||
255 | #if !defined(CONFIG_MTD_NAND_BCM_UMI_HWCS) | 255 | #if !defined(CONFIG_MTD_NAND_BCM_UMI_HWCS) |
256 | /* enable software control of CS */ | 256 | /* enable software control of CS */ |
257 | REG_UMI_NAND_TCR |= REG_UMI_NAND_TCR_CS_SWCTRL; | 257 | writel(readl(®_UMI_NAND_TCR) | REG_UMI_NAND_TCR_CS_SWCTRL, ®_UMI_NAND_TCR); |
258 | #endif | 258 | #endif |
259 | 259 | ||
260 | /* keep NAND chip select asserted */ | 260 | /* keep NAND chip select asserted */ |
261 | REG_UMI_NAND_RCSR |= REG_UMI_NAND_RCSR_CS_ASSERTED; | 261 | writel(readl(®_UMI_NAND_RCSR) | REG_UMI_NAND_RCSR_CS_ASSERTED, ®_UMI_NAND_RCSR); |
262 | 262 | ||
263 | REG_UMI_NAND_TCR &= ~REG_UMI_NAND_TCR_WORD16; | 263 | writel(readl(®_UMI_NAND_TCR) & ~REG_UMI_NAND_TCR_WORD16, ®_UMI_NAND_TCR); |
264 | /* enable writes to flash */ | 264 | /* enable writes to flash */ |
265 | REG_UMI_MMD_ICR |= REG_UMI_MMD_ICR_FLASH_WP; | 265 | writel(readl(®_UMI_MMD_ICR) | REG_UMI_MMD_ICR_FLASH_WP, ®_UMI_MMD_ICR); |
266 | 266 | ||
267 | writel(NAND_CMD_RESET, bcm_umi_io_base + REG_NAND_CMD_OFFSET); | 267 | writel(NAND_CMD_RESET, bcm_umi_io_base + REG_NAND_CMD_OFFSET); |
268 | nand_bcm_umi_wait_till_ready(); | 268 | nand_bcm_umi_wait_till_ready(); |
diff --git a/drivers/mtd/nand/nand_bcm_umi.h b/drivers/mtd/nand/nand_bcm_umi.h index 198b304d6f72..d90186684db8 100644 --- a/drivers/mtd/nand/nand_bcm_umi.h +++ b/drivers/mtd/nand/nand_bcm_umi.h | |||
@@ -17,7 +17,7 @@ | |||
17 | /* ---- Include Files ---------------------------------------------------- */ | 17 | /* ---- Include Files ---------------------------------------------------- */ |
18 | #include <mach/reg_umi.h> | 18 | #include <mach/reg_umi.h> |
19 | #include <mach/reg_nand.h> | 19 | #include <mach/reg_nand.h> |
20 | #include <cfg_global.h> | 20 | #include <mach/cfg_global.h> |
21 | 21 | ||
22 | /* ---- Constants and Types ---------------------------------------------- */ | 22 | /* ---- Constants and Types ---------------------------------------------- */ |
23 | #if (CFG_GLOBAL_CHIP_FAMILY == CFG_GLOBAL_CHIP_FAMILY_BCMRING) | 23 | #if (CFG_GLOBAL_CHIP_FAMILY == CFG_GLOBAL_CHIP_FAMILY_BCMRING) |
@@ -48,7 +48,7 @@ int nand_bcm_umi_bch_correct_page(uint8_t *datap, uint8_t *readEccData, | |||
48 | /* Check in device is ready */ | 48 | /* Check in device is ready */ |
49 | static inline int nand_bcm_umi_dev_ready(void) | 49 | static inline int nand_bcm_umi_dev_ready(void) |
50 | { | 50 | { |
51 | return REG_UMI_NAND_RCSR & REG_UMI_NAND_RCSR_RDY; | 51 | return readl(®_UMI_NAND_RCSR) & REG_UMI_NAND_RCSR_RDY; |
52 | } | 52 | } |
53 | 53 | ||
54 | /* Wait until device is ready */ | 54 | /* Wait until device is ready */ |
@@ -62,10 +62,11 @@ static inline void nand_bcm_umi_wait_till_ready(void) | |||
62 | static inline void nand_bcm_umi_hamming_enable_hwecc(void) | 62 | static inline void nand_bcm_umi_hamming_enable_hwecc(void) |
63 | { | 63 | { |
64 | /* disable and reset ECC, 512 byte page */ | 64 | /* disable and reset ECC, 512 byte page */ |
65 | REG_UMI_NAND_ECC_CSR &= ~(REG_UMI_NAND_ECC_CSR_ECC_ENABLE | | 65 | writel(readl(®_UMI_NAND_ECC_CSR) & ~(REG_UMI_NAND_ECC_CSR_ECC_ENABLE | |
66 | REG_UMI_NAND_ECC_CSR_256BYTE); | 66 | REG_UMI_NAND_ECC_CSR_256BYTE), ®_UMI_NAND_ECC_CSR); |
67 | /* enable ECC */ | 67 | /* enable ECC */ |
68 | REG_UMI_NAND_ECC_CSR |= REG_UMI_NAND_ECC_CSR_ECC_ENABLE; | 68 | writel(readl(®_UMI_NAND_ECC_CSR) | REG_UMI_NAND_ECC_CSR_ECC_ENABLE, |
69 | ®_UMI_NAND_ECC_CSR); | ||
69 | } | 70 | } |
70 | 71 | ||
71 | #if NAND_ECC_BCH | 72 | #if NAND_ECC_BCH |
@@ -76,18 +77,18 @@ static inline void nand_bcm_umi_hamming_enable_hwecc(void) | |||
76 | static inline void nand_bcm_umi_bch_enable_read_hwecc(void) | 77 | static inline void nand_bcm_umi_bch_enable_read_hwecc(void) |
77 | { | 78 | { |
78 | /* disable and reset ECC */ | 79 | /* disable and reset ECC */ |
79 | REG_UMI_BCH_CTRL_STATUS = REG_UMI_BCH_CTRL_STATUS_RD_ECC_VALID; | 80 | writel(REG_UMI_BCH_CTRL_STATUS_RD_ECC_VALID, ®_UMI_BCH_CTRL_STATUS); |
80 | /* Turn on ECC */ | 81 | /* Turn on ECC */ |
81 | REG_UMI_BCH_CTRL_STATUS = REG_UMI_BCH_CTRL_STATUS_ECC_RD_EN; | 82 | writel(REG_UMI_BCH_CTRL_STATUS_ECC_RD_EN, ®_UMI_BCH_CTRL_STATUS); |
82 | } | 83 | } |
83 | 84 | ||
84 | /* Enable BCH Write ECC */ | 85 | /* Enable BCH Write ECC */ |
85 | static inline void nand_bcm_umi_bch_enable_write_hwecc(void) | 86 | static inline void nand_bcm_umi_bch_enable_write_hwecc(void) |
86 | { | 87 | { |
87 | /* disable and reset ECC */ | 88 | /* disable and reset ECC */ |
88 | REG_UMI_BCH_CTRL_STATUS = REG_UMI_BCH_CTRL_STATUS_WR_ECC_VALID; | 89 | writel(REG_UMI_BCH_CTRL_STATUS_WR_ECC_VALID, ®_UMI_BCH_CTRL_STATUS); |
89 | /* Turn on ECC */ | 90 | /* Turn on ECC */ |
90 | REG_UMI_BCH_CTRL_STATUS = REG_UMI_BCH_CTRL_STATUS_ECC_WR_EN; | 91 | writel(REG_UMI_BCH_CTRL_STATUS_ECC_WR_EN, ®_UMI_BCH_CTRL_STATUS); |
91 | } | 92 | } |
92 | 93 | ||
93 | /* Config number of BCH ECC bytes */ | 94 | /* Config number of BCH ECC bytes */ |
@@ -99,9 +100,9 @@ static inline void nand_bcm_umi_bch_config_ecc(uint8_t numEccBytes) | |||
99 | uint32_t numBits = numEccBytes * 8; | 100 | uint32_t numBits = numEccBytes * 8; |
100 | 101 | ||
101 | /* disable and reset ECC */ | 102 | /* disable and reset ECC */ |
102 | REG_UMI_BCH_CTRL_STATUS = | 103 | writel(REG_UMI_BCH_CTRL_STATUS_WR_ECC_VALID | |
103 | REG_UMI_BCH_CTRL_STATUS_WR_ECC_VALID | | 104 | REG_UMI_BCH_CTRL_STATUS_RD_ECC_VALID, |
104 | REG_UMI_BCH_CTRL_STATUS_RD_ECC_VALID; | 105 | ®_UMI_BCH_CTRL_STATUS); |
105 | 106 | ||
106 | /* Every correctible bit requires 13 ECC bits */ | 107 | /* Every correctible bit requires 13 ECC bits */ |
107 | tValue = (uint32_t) (numBits / ECC_BITS_PER_CORRECTABLE_BIT); | 108 | tValue = (uint32_t) (numBits / ECC_BITS_PER_CORRECTABLE_BIT); |
@@ -113,23 +114,21 @@ static inline void nand_bcm_umi_bch_config_ecc(uint8_t numEccBytes) | |||
113 | kValue = nValue - (tValue * ECC_BITS_PER_CORRECTABLE_BIT); | 114 | kValue = nValue - (tValue * ECC_BITS_PER_CORRECTABLE_BIT); |
114 | 115 | ||
115 | /* Write the settings */ | 116 | /* Write the settings */ |
116 | REG_UMI_BCH_N = nValue; | 117 | writel(nValue, ®_UMI_BCH_N); |
117 | REG_UMI_BCH_T = tValue; | 118 | writel(tValue, ®_UMI_BCH_T); |
118 | REG_UMI_BCH_K = kValue; | 119 | writel(kValue, ®_UMI_BCH_K); |
119 | } | 120 | } |
120 | 121 | ||
121 | /* Pause during ECC read calculation to skip bytes in OOB */ | 122 | /* Pause during ECC read calculation to skip bytes in OOB */ |
122 | static inline void nand_bcm_umi_bch_pause_read_ecc_calc(void) | 123 | static inline void nand_bcm_umi_bch_pause_read_ecc_calc(void) |
123 | { | 124 | { |
124 | REG_UMI_BCH_CTRL_STATUS = | 125 | writel(REG_UMI_BCH_CTRL_STATUS_ECC_RD_EN | REG_UMI_BCH_CTRL_STATUS_PAUSE_ECC_DEC, ®_UMI_BCH_CTRL_STATUS); |
125 | REG_UMI_BCH_CTRL_STATUS_ECC_RD_EN | | ||
126 | REG_UMI_BCH_CTRL_STATUS_PAUSE_ECC_DEC; | ||
127 | } | 126 | } |
128 | 127 | ||
129 | /* Resume during ECC read calculation after skipping bytes in OOB */ | 128 | /* Resume during ECC read calculation after skipping bytes in OOB */ |
130 | static inline void nand_bcm_umi_bch_resume_read_ecc_calc(void) | 129 | static inline void nand_bcm_umi_bch_resume_read_ecc_calc(void) |
131 | { | 130 | { |
132 | REG_UMI_BCH_CTRL_STATUS = REG_UMI_BCH_CTRL_STATUS_ECC_RD_EN; | 131 | writel(REG_UMI_BCH_CTRL_STATUS_ECC_RD_EN, ®_UMI_BCH_CTRL_STATUS); |
133 | } | 132 | } |
134 | 133 | ||
135 | /* Poll read ECC calc to check when hardware completes */ | 134 | /* Poll read ECC calc to check when hardware completes */ |
@@ -139,7 +138,7 @@ static inline uint32_t nand_bcm_umi_bch_poll_read_ecc_calc(void) | |||
139 | 138 | ||
140 | do { | 139 | do { |
141 | /* wait for ECC to be valid */ | 140 | /* wait for ECC to be valid */ |
142 | regVal = REG_UMI_BCH_CTRL_STATUS; | 141 | regVal = readl(®_UMI_BCH_CTRL_STATUS); |
143 | } while ((regVal & REG_UMI_BCH_CTRL_STATUS_RD_ECC_VALID) == 0); | 142 | } while ((regVal & REG_UMI_BCH_CTRL_STATUS_RD_ECC_VALID) == 0); |
144 | 143 | ||
145 | return regVal; | 144 | return regVal; |
@@ -149,7 +148,7 @@ static inline uint32_t nand_bcm_umi_bch_poll_read_ecc_calc(void) | |||
149 | static inline void nand_bcm_umi_bch_poll_write_ecc_calc(void) | 148 | static inline void nand_bcm_umi_bch_poll_write_ecc_calc(void) |
150 | { | 149 | { |
151 | /* wait for ECC to be valid */ | 150 | /* wait for ECC to be valid */ |
152 | while ((REG_UMI_BCH_CTRL_STATUS & REG_UMI_BCH_CTRL_STATUS_WR_ECC_VALID) | 151 | while ((readl(®_UMI_BCH_CTRL_STATUS) & REG_UMI_BCH_CTRL_STATUS_WR_ECC_VALID) |
153 | == 0) | 152 | == 0) |
154 | ; | 153 | ; |
155 | } | 154 | } |
@@ -170,9 +169,9 @@ static inline void nand_bcm_umi_bch_read_oobEcc(uint32_t pageSize, | |||
170 | if (pageSize != NAND_DATA_ACCESS_SIZE) { | 169 | if (pageSize != NAND_DATA_ACCESS_SIZE) { |
171 | /* skip BI */ | 170 | /* skip BI */ |
172 | #if defined(__KERNEL__) && !defined(STANDALONE) | 171 | #if defined(__KERNEL__) && !defined(STANDALONE) |
173 | *oobp++ = REG_NAND_DATA8; | 172 | *oobp++ = readb(®_NAND_DATA8); |
174 | #else | 173 | #else |
175 | REG_NAND_DATA8; | 174 | readb(®_NAND_DATA8); |
176 | #endif | 175 | #endif |
177 | numToRead--; | 176 | numToRead--; |
178 | } | 177 | } |
@@ -180,9 +179,9 @@ static inline void nand_bcm_umi_bch_read_oobEcc(uint32_t pageSize, | |||
180 | while (numToRead > numEccBytes) { | 179 | while (numToRead > numEccBytes) { |
181 | /* skip free oob region */ | 180 | /* skip free oob region */ |
182 | #if defined(__KERNEL__) && !defined(STANDALONE) | 181 | #if defined(__KERNEL__) && !defined(STANDALONE) |
183 | *oobp++ = REG_NAND_DATA8; | 182 | *oobp++ = readb(®_NAND_DATA8); |
184 | #else | 183 | #else |
185 | REG_NAND_DATA8; | 184 | readb(®_NAND_DATA8); |
186 | #endif | 185 | #endif |
187 | numToRead--; | 186 | numToRead--; |
188 | } | 187 | } |
@@ -193,11 +192,11 @@ static inline void nand_bcm_umi_bch_read_oobEcc(uint32_t pageSize, | |||
193 | 192 | ||
194 | while (numToRead > 11) { | 193 | while (numToRead > 11) { |
195 | #if defined(__KERNEL__) && !defined(STANDALONE) | 194 | #if defined(__KERNEL__) && !defined(STANDALONE) |
196 | *oobp = REG_NAND_DATA8; | 195 | *oobp = readb(®_NAND_DATA8); |
197 | eccCalc[eccPos++] = *oobp; | 196 | eccCalc[eccPos++] = *oobp; |
198 | oobp++; | 197 | oobp++; |
199 | #else | 198 | #else |
200 | eccCalc[eccPos++] = REG_NAND_DATA8; | 199 | eccCalc[eccPos++] = readb(®_NAND_DATA8); |
201 | #endif | 200 | #endif |
202 | numToRead--; | 201 | numToRead--; |
203 | } | 202 | } |
@@ -207,9 +206,9 @@ static inline void nand_bcm_umi_bch_read_oobEcc(uint32_t pageSize, | |||
207 | if (numToRead == 11) { | 206 | if (numToRead == 11) { |
208 | /* read BI */ | 207 | /* read BI */ |
209 | #if defined(__KERNEL__) && !defined(STANDALONE) | 208 | #if defined(__KERNEL__) && !defined(STANDALONE) |
210 | *oobp++ = REG_NAND_DATA8; | 209 | *oobp++ = readb(®_NAND_DATA8); |
211 | #else | 210 | #else |
212 | REG_NAND_DATA8; | 211 | readb(®_NAND_DATA8); |
213 | #endif | 212 | #endif |
214 | numToRead--; | 213 | numToRead--; |
215 | } | 214 | } |
@@ -219,11 +218,11 @@ static inline void nand_bcm_umi_bch_read_oobEcc(uint32_t pageSize, | |||
219 | nand_bcm_umi_bch_resume_read_ecc_calc(); | 218 | nand_bcm_umi_bch_resume_read_ecc_calc(); |
220 | while (numToRead) { | 219 | while (numToRead) { |
221 | #if defined(__KERNEL__) && !defined(STANDALONE) | 220 | #if defined(__KERNEL__) && !defined(STANDALONE) |
222 | *oobp = REG_NAND_DATA8; | 221 | *oobp = readb(®_NAND_DATA8); |
223 | eccCalc[eccPos++] = *oobp; | 222 | eccCalc[eccPos++] = *oobp; |
224 | oobp++; | 223 | oobp++; |
225 | #else | 224 | #else |
226 | eccCalc[eccPos++] = REG_NAND_DATA8; | 225 | eccCalc[eccPos++] = readb(®_NAND_DATA8); |
227 | #endif | 226 | #endif |
228 | numToRead--; | 227 | numToRead--; |
229 | } | 228 | } |
@@ -255,7 +254,7 @@ static inline void nand_bcm_umi_bch_write_oobEcc(uint32_t pageSize, | |||
255 | if (pageSize == NAND_DATA_ACCESS_SIZE) { | 254 | if (pageSize == NAND_DATA_ACCESS_SIZE) { |
256 | /* Now fill in the ECC bytes */ | 255 | /* Now fill in the ECC bytes */ |
257 | if (numEccBytes >= 13) | 256 | if (numEccBytes >= 13) |
258 | eccVal = REG_UMI_BCH_WR_ECC_3; | 257 | eccVal = readl(®_UMI_BCH_WR_ECC_3); |
259 | 258 | ||
260 | /* Usually we skip CM in oob[0,1] */ | 259 | /* Usually we skip CM in oob[0,1] */ |
261 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 15, &oobp[0], | 260 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 15, &oobp[0], |
@@ -268,7 +267,7 @@ static inline void nand_bcm_umi_bch_write_oobEcc(uint32_t pageSize, | |||
268 | eccVal & 0xff); /* ECC 12 */ | 267 | eccVal & 0xff); /* ECC 12 */ |
269 | 268 | ||
270 | if (numEccBytes >= 9) | 269 | if (numEccBytes >= 9) |
271 | eccVal = REG_UMI_BCH_WR_ECC_2; | 270 | eccVal = readl(®_UMI_BCH_WR_ECC_2); |
272 | 271 | ||
273 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 12, &oobp[3], | 272 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 12, &oobp[3], |
274 | (eccVal >> 24) & 0xff); /* ECC11 */ | 273 | (eccVal >> 24) & 0xff); /* ECC11 */ |
@@ -281,7 +280,7 @@ static inline void nand_bcm_umi_bch_write_oobEcc(uint32_t pageSize, | |||
281 | 280 | ||
282 | /* Now fill in the ECC bytes */ | 281 | /* Now fill in the ECC bytes */ |
283 | if (numEccBytes >= 13) | 282 | if (numEccBytes >= 13) |
284 | eccVal = REG_UMI_BCH_WR_ECC_3; | 283 | eccVal = readl(®_UMI_BCH_WR_ECC_3); |
285 | 284 | ||
286 | /* Usually skip CM in oob[1,2] */ | 285 | /* Usually skip CM in oob[1,2] */ |
287 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 15, &oobp[1], | 286 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 15, &oobp[1], |
@@ -294,7 +293,7 @@ static inline void nand_bcm_umi_bch_write_oobEcc(uint32_t pageSize, | |||
294 | eccVal & 0xff); /* ECC12 */ | 293 | eccVal & 0xff); /* ECC12 */ |
295 | 294 | ||
296 | if (numEccBytes >= 9) | 295 | if (numEccBytes >= 9) |
297 | eccVal = REG_UMI_BCH_WR_ECC_2; | 296 | eccVal = readl(®_UMI_BCH_WR_ECC_2); |
298 | 297 | ||
299 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 12, &oobp[4], | 298 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 12, &oobp[4], |
300 | (eccVal >> 24) & 0xff); /* ECC11 */ | 299 | (eccVal >> 24) & 0xff); /* ECC11 */ |
@@ -309,7 +308,7 @@ static inline void nand_bcm_umi_bch_write_oobEcc(uint32_t pageSize, | |||
309 | eccVal & 0xff); /* ECC8 */ | 308 | eccVal & 0xff); /* ECC8 */ |
310 | 309 | ||
311 | if (numEccBytes >= 5) | 310 | if (numEccBytes >= 5) |
312 | eccVal = REG_UMI_BCH_WR_ECC_1; | 311 | eccVal = readl(®_UMI_BCH_WR_ECC_1); |
313 | 312 | ||
314 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 8, &oobp[8], | 313 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 8, &oobp[8], |
315 | (eccVal >> 24) & 0xff); /* ECC7 */ | 314 | (eccVal >> 24) & 0xff); /* ECC7 */ |
@@ -321,7 +320,7 @@ static inline void nand_bcm_umi_bch_write_oobEcc(uint32_t pageSize, | |||
321 | eccVal & 0xff); /* ECC4 */ | 320 | eccVal & 0xff); /* ECC4 */ |
322 | 321 | ||
323 | if (numEccBytes >= 1) | 322 | if (numEccBytes >= 1) |
324 | eccVal = REG_UMI_BCH_WR_ECC_0; | 323 | eccVal = readl(®_UMI_BCH_WR_ECC_0); |
325 | 324 | ||
326 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 4, &oobp[12], | 325 | NAND_BCM_UMI_ECC_WRITE(numEccBytes, 4, &oobp[12], |
327 | (eccVal >> 24) & 0xff); /* ECC3 */ | 326 | (eccVal >> 24) & 0xff); /* ECC3 */ |
diff --git a/drivers/pinctrl/pinctrl-coh901.c b/drivers/pinctrl/pinctrl-coh901.c index cc0f00d73d15..b446c9641212 100644 --- a/drivers/pinctrl/pinctrl-coh901.c +++ b/drivers/pinctrl/pinctrl-coh901.c | |||
@@ -1,11 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * U300 GPIO module. | 2 | * U300 GPIO module. |
3 | * | 3 | * |
4 | * Copyright (C) 2007-2011 ST-Ericsson AB | 4 | * Copyright (C) 2007-2012 ST-Ericsson AB |
5 | * License terms: GNU General Public License (GPL) version 2 | 5 | * License terms: GNU General Public License (GPL) version 2 |
6 | * This can driver either of the two basic GPIO cores | ||
7 | * available in the U300 platforms: | ||
8 | * COH 901 335 - Used in DB3150 (U300 1.0) and DB3200 (U330 1.0) | ||
9 | * COH 901 571/3 - Used in DB3210 (U365 2.0) and DB3350 (U335 1.0) | 6 | * COH 901 571/3 - Used in DB3210 (U365 2.0) and DB3350 (U335 1.0) |
10 | * Author: Linus Walleij <linus.walleij@linaro.org> | 7 | * Author: Linus Walleij <linus.walleij@linaro.org> |
11 | * Author: Jonas Aaberg <jonas.aberg@stericsson.com> | 8 | * Author: Jonas Aaberg <jonas.aberg@stericsson.com> |
@@ -24,19 +21,22 @@ | |||
24 | #include <linux/slab.h> | 21 | #include <linux/slab.h> |
25 | #include <linux/pinctrl/consumer.h> | 22 | #include <linux/pinctrl/consumer.h> |
26 | #include <linux/pinctrl/pinconf-generic.h> | 23 | #include <linux/pinctrl/pinconf-generic.h> |
27 | #include <mach/gpio-u300.h> | 24 | #include <linux/platform_data/pinctrl-coh901.h> |
28 | #include "pinctrl-coh901.h" | 25 | #include "pinctrl-coh901.h" |
29 | 26 | ||
27 | #define U300_GPIO_PORT_STRIDE (0x30) | ||
30 | /* | 28 | /* |
31 | * Register definitions for COH 901 335 variant | 29 | * Control Register 32bit (R/W) |
30 | * bit 15-9 (mask 0x0000FE00) contains the number of cores. 8*cores | ||
31 | * gives the number of GPIO pins. | ||
32 | * bit 8-2 (mask 0x000001FC) contains the core version ID. | ||
32 | */ | 33 | */ |
33 | #define U300_335_PORT_STRIDE (0x1C) | 34 | #define U300_GPIO_CR (0x00) |
34 | /* Port X Pin Data Register 32bit, this is both input and output (R/W) */ | 35 | #define U300_GPIO_CR_SYNC_SEL_ENABLE (0x00000002UL) |
35 | #define U300_335_PXPDIR (0x00) | 36 | #define U300_GPIO_CR_BLOCK_CLKRQ_ENABLE (0x00000001UL) |
36 | #define U300_335_PXPDOR (0x00) | 37 | #define U300_GPIO_PXPDIR (0x04) |
37 | /* Port X Pin Config Register 32bit (R/W) */ | 38 | #define U300_GPIO_PXPDOR (0x08) |
38 | #define U300_335_PXPCR (0x04) | 39 | #define U300_GPIO_PXPCR (0x0C) |
39 | /* This register layout is the same in both blocks */ | ||
40 | #define U300_GPIO_PXPCR_ALL_PINS_MODE_MASK (0x0000FFFFUL) | 40 | #define U300_GPIO_PXPCR_ALL_PINS_MODE_MASK (0x0000FFFFUL) |
41 | #define U300_GPIO_PXPCR_PIN_MODE_MASK (0x00000003UL) | 41 | #define U300_GPIO_PXPCR_PIN_MODE_MASK (0x00000003UL) |
42 | #define U300_GPIO_PXPCR_PIN_MODE_SHIFT (0x00000002UL) | 42 | #define U300_GPIO_PXPCR_PIN_MODE_SHIFT (0x00000002UL) |
@@ -44,53 +44,17 @@ | |||
44 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_PUSH_PULL (0x00000001UL) | 44 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_PUSH_PULL (0x00000001UL) |
45 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_DRAIN (0x00000002UL) | 45 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_DRAIN (0x00000002UL) |
46 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_SOURCE (0x00000003UL) | 46 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_SOURCE (0x00000003UL) |
47 | /* Port X Interrupt Event Register 32bit (R/W) */ | 47 | #define U300_GPIO_PXPER (0x10) |
48 | #define U300_335_PXIEV (0x08) | 48 | #define U300_GPIO_PXPER_ALL_PULL_UP_DISABLE_MASK (0x000000FFUL) |
49 | /* Port X Interrupt Enable Register 32bit (R/W) */ | 49 | #define U300_GPIO_PXPER_PULL_UP_DISABLE (0x00000001UL) |
50 | #define U300_335_PXIEN (0x0C) | 50 | #define U300_GPIO_PXIEV (0x14) |
51 | /* Port X Interrupt Force Register 32bit (R/W) */ | 51 | #define U300_GPIO_PXIEN (0x18) |
52 | #define U300_335_PXIFR (0x10) | 52 | #define U300_GPIO_PXIFR (0x1C) |
53 | /* Port X Interrupt Config Register 32bit (R/W) */ | 53 | #define U300_GPIO_PXICR (0x20) |
54 | #define U300_335_PXICR (0x14) | ||
55 | /* This register layout is the same in both blocks */ | ||
56 | #define U300_GPIO_PXICR_ALL_IRQ_CONFIG_MASK (0x000000FFUL) | 54 | #define U300_GPIO_PXICR_ALL_IRQ_CONFIG_MASK (0x000000FFUL) |
57 | #define U300_GPIO_PXICR_IRQ_CONFIG_MASK (0x00000001UL) | 55 | #define U300_GPIO_PXICR_IRQ_CONFIG_MASK (0x00000001UL) |
58 | #define U300_GPIO_PXICR_IRQ_CONFIG_FALLING_EDGE (0x00000000UL) | 56 | #define U300_GPIO_PXICR_IRQ_CONFIG_FALLING_EDGE (0x00000000UL) |
59 | #define U300_GPIO_PXICR_IRQ_CONFIG_RISING_EDGE (0x00000001UL) | 57 | #define U300_GPIO_PXICR_IRQ_CONFIG_RISING_EDGE (0x00000001UL) |
60 | /* Port X Pull-up Enable Register 32bit (R/W) */ | ||
61 | #define U300_335_PXPER (0x18) | ||
62 | /* This register layout is the same in both blocks */ | ||
63 | #define U300_GPIO_PXPER_ALL_PULL_UP_DISABLE_MASK (0x000000FFUL) | ||
64 | #define U300_GPIO_PXPER_PULL_UP_DISABLE (0x00000001UL) | ||
65 | /* Control Register 32bit (R/W) */ | ||
66 | #define U300_335_CR (0x54) | ||
67 | #define U300_335_CR_BLOCK_CLOCK_ENABLE (0x00000001UL) | ||
68 | |||
69 | /* | ||
70 | * Register definitions for COH 901 571 / 3 variant | ||
71 | */ | ||
72 | #define U300_571_PORT_STRIDE (0x30) | ||
73 | /* | ||
74 | * Control Register 32bit (R/W) | ||
75 | * bit 15-9 (mask 0x0000FE00) contains the number of cores. 8*cores | ||
76 | * gives the number of GPIO pins. | ||
77 | * bit 8-2 (mask 0x000001FC) contains the core version ID. | ||
78 | */ | ||
79 | #define U300_571_CR (0x00) | ||
80 | #define U300_571_CR_SYNC_SEL_ENABLE (0x00000002UL) | ||
81 | #define U300_571_CR_BLOCK_CLKRQ_ENABLE (0x00000001UL) | ||
82 | /* | ||
83 | * These registers have the same layout and function as the corresponding | ||
84 | * COH 901 335 registers, just at different offset. | ||
85 | */ | ||
86 | #define U300_571_PXPDIR (0x04) | ||
87 | #define U300_571_PXPDOR (0x08) | ||
88 | #define U300_571_PXPCR (0x0C) | ||
89 | #define U300_571_PXPER (0x10) | ||
90 | #define U300_571_PXIEV (0x14) | ||
91 | #define U300_571_PXIEN (0x18) | ||
92 | #define U300_571_PXIFR (0x1C) | ||
93 | #define U300_571_PXICR (0x20) | ||
94 | 58 | ||
95 | /* 8 bits per port, no version has more than 7 ports */ | 59 | /* 8 bits per port, no version has more than 7 ports */ |
96 | #define U300_GPIO_PINS_PER_PORT 8 | 60 | #define U300_GPIO_PINS_PER_PORT 8 |
@@ -149,8 +113,6 @@ struct u300_gpio_confdata { | |||
149 | 113 | ||
150 | /* BS335 has seven ports of 8 bits each = GPIO pins 0..55 */ | 114 | /* BS335 has seven ports of 8 bits each = GPIO pins 0..55 */ |
151 | #define BS335_GPIO_NUM_PORTS 7 | 115 | #define BS335_GPIO_NUM_PORTS 7 |
152 | /* BS365 has five ports of 8 bits each = GPIO pins 0..39 */ | ||
153 | #define BS365_GPIO_NUM_PORTS 5 | ||
154 | 116 | ||
155 | #define U300_FLOATING_INPUT { \ | 117 | #define U300_FLOATING_INPUT { \ |
156 | .bias_mode = PIN_CONFIG_BIAS_HIGH_IMPEDANCE, \ | 118 | .bias_mode = PIN_CONFIG_BIAS_HIGH_IMPEDANCE, \ |
@@ -172,7 +134,6 @@ struct u300_gpio_confdata { | |||
172 | .outval = 1, \ | 134 | .outval = 1, \ |
173 | } | 135 | } |
174 | 136 | ||
175 | |||
176 | /* Initial configuration */ | 137 | /* Initial configuration */ |
177 | static const struct __initconst u300_gpio_confdata | 138 | static const struct __initconst u300_gpio_confdata |
178 | bs335_gpio_config[BS335_GPIO_NUM_PORTS][U300_GPIO_PINS_PER_PORT] = { | 139 | bs335_gpio_config[BS335_GPIO_NUM_PORTS][U300_GPIO_PINS_PER_PORT] = { |
@@ -255,66 +216,6 @@ bs335_gpio_config[BS335_GPIO_NUM_PORTS][U300_GPIO_PINS_PER_PORT] = { | |||
255 | } | 216 | } |
256 | }; | 217 | }; |
257 | 218 | ||
258 | static const struct __initconst u300_gpio_confdata | ||
259 | bs365_gpio_config[BS365_GPIO_NUM_PORTS][U300_GPIO_PINS_PER_PORT] = { | ||
260 | /* Port 0, pins 0-7 */ | ||
261 | { | ||
262 | U300_FLOATING_INPUT, | ||
263 | U300_OUTPUT_LOW, | ||
264 | U300_FLOATING_INPUT, | ||
265 | U300_OUTPUT_LOW, | ||
266 | U300_OUTPUT_LOW, | ||
267 | U300_OUTPUT_LOW, | ||
268 | U300_PULL_UP_INPUT, | ||
269 | U300_FLOATING_INPUT, | ||
270 | }, | ||
271 | /* Port 1, pins 0-7 */ | ||
272 | { | ||
273 | U300_OUTPUT_LOW, | ||
274 | U300_FLOATING_INPUT, | ||
275 | U300_OUTPUT_LOW, | ||
276 | U300_FLOATING_INPUT, | ||
277 | U300_FLOATING_INPUT, | ||
278 | U300_OUTPUT_HIGH, | ||
279 | U300_OUTPUT_LOW, | ||
280 | U300_OUTPUT_LOW, | ||
281 | }, | ||
282 | /* Port 2, pins 0-7 */ | ||
283 | { | ||
284 | U300_FLOATING_INPUT, | ||
285 | U300_PULL_UP_INPUT, | ||
286 | U300_OUTPUT_LOW, | ||
287 | U300_OUTPUT_LOW, | ||
288 | U300_PULL_UP_INPUT, | ||
289 | U300_PULL_UP_INPUT, | ||
290 | U300_PULL_UP_INPUT, | ||
291 | U300_PULL_UP_INPUT, | ||
292 | }, | ||
293 | /* Port 3, pins 0-7 */ | ||
294 | { | ||
295 | U300_PULL_UP_INPUT, | ||
296 | U300_PULL_UP_INPUT, | ||
297 | U300_PULL_UP_INPUT, | ||
298 | U300_PULL_UP_INPUT, | ||
299 | U300_PULL_UP_INPUT, | ||
300 | U300_PULL_UP_INPUT, | ||
301 | U300_PULL_UP_INPUT, | ||
302 | U300_PULL_UP_INPUT, | ||
303 | }, | ||
304 | /* Port 4, pins 0-7 */ | ||
305 | { | ||
306 | U300_PULL_UP_INPUT, | ||
307 | U300_PULL_UP_INPUT, | ||
308 | U300_PULL_UP_INPUT, | ||
309 | U300_PULL_UP_INPUT, | ||
310 | /* These 4 pins doesn't exist on DB3210 */ | ||
311 | U300_OUTPUT_LOW, | ||
312 | U300_OUTPUT_LOW, | ||
313 | U300_OUTPUT_LOW, | ||
314 | U300_OUTPUT_LOW, | ||
315 | } | ||
316 | }; | ||
317 | |||
318 | /** | 219 | /** |
319 | * to_u300_gpio() - get the pointer to u300_gpio | 220 | * to_u300_gpio() - get the pointer to u300_gpio |
320 | * @chip: the gpio chip member of the structure u300_gpio | 221 | * @chip: the gpio chip member of the structure u300_gpio |
@@ -716,13 +617,7 @@ static void __init u300_gpio_init_coh901571(struct u300_gpio *gpio, | |||
716 | const struct u300_gpio_confdata *conf; | 617 | const struct u300_gpio_confdata *conf; |
717 | int offset = (i*8) + j; | 618 | int offset = (i*8) + j; |
718 | 619 | ||
719 | if (plat->variant == U300_GPIO_COH901571_3_BS335) | 620 | conf = &bs335_gpio_config[i][j]; |
720 | conf = &bs335_gpio_config[i][j]; | ||
721 | else if (plat->variant == U300_GPIO_COH901571_3_BS365) | ||
722 | conf = &bs365_gpio_config[i][j]; | ||
723 | else | ||
724 | break; | ||
725 | |||
726 | u300_gpio_init_pin(gpio, offset, conf); | 621 | u300_gpio_init_pin(gpio, offset, conf); |
727 | } | 622 | } |
728 | } | 623 | } |
@@ -796,50 +691,27 @@ static int __init u300_gpio_probe(struct platform_device *pdev) | |||
796 | goto err_no_ioremap; | 691 | goto err_no_ioremap; |
797 | } | 692 | } |
798 | 693 | ||
799 | if (plat->variant == U300_GPIO_COH901335) { | 694 | dev_info(gpio->dev, |
800 | dev_info(gpio->dev, | 695 | "initializing GPIO Controller COH 901 571/3\n"); |
801 | "initializing GPIO Controller COH 901 335\n"); | 696 | gpio->stride = U300_GPIO_PORT_STRIDE; |
802 | gpio->stride = U300_335_PORT_STRIDE; | 697 | gpio->pcr = U300_GPIO_PXPCR; |
803 | gpio->pcr = U300_335_PXPCR; | 698 | gpio->dor = U300_GPIO_PXPDOR; |
804 | gpio->dor = U300_335_PXPDOR; | 699 | gpio->dir = U300_GPIO_PXPDIR; |
805 | gpio->dir = U300_335_PXPDIR; | 700 | gpio->per = U300_GPIO_PXPER; |
806 | gpio->per = U300_335_PXPER; | 701 | gpio->icr = U300_GPIO_PXICR; |
807 | gpio->icr = U300_335_PXICR; | 702 | gpio->ien = U300_GPIO_PXIEN; |
808 | gpio->ien = U300_335_PXIEN; | 703 | gpio->iev = U300_GPIO_PXIEV; |
809 | gpio->iev = U300_335_PXIEV; | 704 | ifr = U300_GPIO_PXIFR; |
810 | ifr = U300_335_PXIFR; | 705 | |
811 | 706 | val = readl(gpio->base + U300_GPIO_CR); | |
812 | /* Turn on the GPIO block */ | 707 | dev_info(gpio->dev, "COH901571/3 block version: %d, " \ |
813 | writel(U300_335_CR_BLOCK_CLOCK_ENABLE, | 708 | "number of cores: %d totalling %d pins\n", |
814 | gpio->base + U300_335_CR); | 709 | ((val & 0x000001FC) >> 2), |
815 | } else if (plat->variant == U300_GPIO_COH901571_3_BS335 || | 710 | ((val & 0x0000FE00) >> 9), |
816 | plat->variant == U300_GPIO_COH901571_3_BS365) { | 711 | ((val & 0x0000FE00) >> 9) * 8); |
817 | dev_info(gpio->dev, | 712 | writel(U300_GPIO_CR_BLOCK_CLKRQ_ENABLE, |
818 | "initializing GPIO Controller COH 901 571/3\n"); | 713 | gpio->base + U300_GPIO_CR); |
819 | gpio->stride = U300_571_PORT_STRIDE; | 714 | u300_gpio_init_coh901571(gpio, plat); |
820 | gpio->pcr = U300_571_PXPCR; | ||
821 | gpio->dor = U300_571_PXPDOR; | ||
822 | gpio->dir = U300_571_PXPDIR; | ||
823 | gpio->per = U300_571_PXPER; | ||
824 | gpio->icr = U300_571_PXICR; | ||
825 | gpio->ien = U300_571_PXIEN; | ||
826 | gpio->iev = U300_571_PXIEV; | ||
827 | ifr = U300_571_PXIFR; | ||
828 | |||
829 | val = readl(gpio->base + U300_571_CR); | ||
830 | dev_info(gpio->dev, "COH901571/3 block version: %d, " \ | ||
831 | "number of cores: %d totalling %d pins\n", | ||
832 | ((val & 0x000001FC) >> 2), | ||
833 | ((val & 0x0000FE00) >> 9), | ||
834 | ((val & 0x0000FE00) >> 9) * 8); | ||
835 | writel(U300_571_CR_BLOCK_CLKRQ_ENABLE, | ||
836 | gpio->base + U300_571_CR); | ||
837 | u300_gpio_init_coh901571(gpio, plat); | ||
838 | } else { | ||
839 | dev_err(gpio->dev, "unknown block variant\n"); | ||
840 | err = -ENODEV; | ||
841 | goto err_unknown_variant; | ||
842 | } | ||
843 | 715 | ||
844 | /* Add each port with its IRQ separately */ | 716 | /* Add each port with its IRQ separately */ |
845 | INIT_LIST_HEAD(&gpio->port_list); | 717 | INIT_LIST_HEAD(&gpio->port_list); |
@@ -906,7 +778,6 @@ err_no_pinctrl: | |||
906 | err_no_chip: | 778 | err_no_chip: |
907 | err_no_port: | 779 | err_no_port: |
908 | u300_gpio_free_ports(gpio); | 780 | u300_gpio_free_ports(gpio); |
909 | err_unknown_variant: | ||
910 | iounmap(gpio->base); | 781 | iounmap(gpio->base); |
911 | err_no_ioremap: | 782 | err_no_ioremap: |
912 | release_mem_region(gpio->memres->start, resource_size(gpio->memres)); | 783 | release_mem_region(gpio->memres->start, resource_size(gpio->memres)); |
@@ -923,16 +794,11 @@ err_no_clk: | |||
923 | 794 | ||
924 | static int __exit u300_gpio_remove(struct platform_device *pdev) | 795 | static int __exit u300_gpio_remove(struct platform_device *pdev) |
925 | { | 796 | { |
926 | struct u300_gpio_platform *plat = dev_get_platdata(&pdev->dev); | ||
927 | struct u300_gpio *gpio = platform_get_drvdata(pdev); | 797 | struct u300_gpio *gpio = platform_get_drvdata(pdev); |
928 | int err; | 798 | int err; |
929 | 799 | ||
930 | /* Turn off the GPIO block */ | 800 | /* Turn off the GPIO block */ |
931 | if (plat->variant == U300_GPIO_COH901335) | 801 | writel(0x00000000U, gpio->base + U300_GPIO_CR); |
932 | writel(0x00000000U, gpio->base + U300_335_CR); | ||
933 | if (plat->variant == U300_GPIO_COH901571_3_BS335 || | ||
934 | plat->variant == U300_GPIO_COH901571_3_BS365) | ||
935 | writel(0x00000000U, gpio->base + U300_571_CR); | ||
936 | 802 | ||
937 | err = gpiochip_remove(&gpio->chip); | 803 | err = gpiochip_remove(&gpio->chip); |
938 | if (err < 0) { | 804 | if (err < 0) { |
diff --git a/arch/arm/mach-u300/include/mach/gpio-u300.h b/include/linux/platform_data/pinctrl-coh901.h index e81400c1753a..30dea251b835 100644 --- a/arch/arm/mach-u300/include/mach/gpio-u300.h +++ b/include/linux/platform_data/pinctrl-coh901.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2007-2011 ST-Ericsson AB | 2 | * Copyright (C) 2007-2012 ST-Ericsson AB |
3 | * License terms: GNU General Public License (GPL) version 2 | 3 | * License terms: GNU General Public License (GPL) version 2 |
4 | * GPIO block resgister definitions and inline macros for | 4 | * GPIO block resgister definitions and inline macros for |
5 | * U300 GPIO COH 901 335 or COH 901 571/3 | 5 | * U300 GPIO COH 901 335 or COH 901 571/3 |
@@ -10,24 +10,13 @@ | |||
10 | #define __MACH_U300_GPIO_U300_H | 10 | #define __MACH_U300_GPIO_U300_H |
11 | 11 | ||
12 | /** | 12 | /** |
13 | * enum u300_gpio_variant - the type of U300 GPIO employed | ||
14 | */ | ||
15 | enum u300_gpio_variant { | ||
16 | U300_GPIO_COH901335, | ||
17 | U300_GPIO_COH901571_3_BS335, | ||
18 | U300_GPIO_COH901571_3_BS365, | ||
19 | }; | ||
20 | |||
21 | /** | ||
22 | * struct u300_gpio_platform - U300 GPIO platform data | 13 | * struct u300_gpio_platform - U300 GPIO platform data |
23 | * @variant: IP block variant | ||
24 | * @ports: number of GPIO block ports | 14 | * @ports: number of GPIO block ports |
25 | * @gpio_base: first GPIO number for this block (use a free range) | 15 | * @gpio_base: first GPIO number for this block (use a free range) |
26 | * @gpio_irq_base: first GPIO IRQ number for this block (use a free range) | 16 | * @gpio_irq_base: first GPIO IRQ number for this block (use a free range) |
27 | * @pinctrl_device: pin control device to spawn as child | 17 | * @pinctrl_device: pin control device to spawn as child |
28 | */ | 18 | */ |
29 | struct u300_gpio_platform { | 19 | struct u300_gpio_platform { |
30 | enum u300_gpio_variant variant; | ||
31 | u8 ports; | 20 | u8 ports; |
32 | int gpio_base; | 21 | int gpio_base; |
33 | int gpio_irq_base; | 22 | int gpio_irq_base; |