Commit 32c81ea65cc01103d3a615072690e7b5faf76656

Authored by Fabio Estevam
Committed by Stefano Babic
1 parent 53b7f18044

imx: consolidate set_chipselect_size function

Move MX5 specific set_chipselect_size function into generic i.MX part,
such that MX6 based boards are able to use this function as well.

While doing this the iomuxc gpr member needed to be consolidated between
MX5 and MX6.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>

Showing 5 changed files with 39 additions and 41 deletions Side-by-side Diff

arch/arm/cpu/armv7/mx5/soc.c
... ... @@ -85,37 +85,6 @@
85 85 }
86 86 #endif
87 87  
88   -void set_chipselect_size(int const cs_size)
89   -{
90   - unsigned int reg;
91   - struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
92   - reg = readl(&iomuxc_regs->gpr1);
93   -
94   - switch (cs_size) {
95   - case CS0_128:
96   - reg &= ~0x7; /* CS0=128MB, CS1=0, CS2=0, CS3=0 */
97   - reg |= 0x5;
98   - break;
99   - case CS0_64M_CS1_64M:
100   - reg &= ~0x3F; /* CS0=64MB, CS1=64MB, CS2=0, CS3=0 */
101   - reg |= 0x1B;
102   - break;
103   - case CS0_64M_CS1_32M_CS2_32M:
104   - reg &= ~0x1FF; /* CS0=64MB, CS1=32MB, CS2=32MB, CS3=0 */
105   - reg |= 0x4B;
106   - break;
107   - case CS0_32M_CS1_32M_CS2_32M_CS3_32M:
108   - reg &= ~0xFFF; /* CS0=32MB, CS1=32MB, CS2=32MB, CS3=32MB */
109   - reg |= 0x249;
110   - break;
111   - default:
112   - printf("Unknown chip select size: %d\n", cs_size);
113   - break;
114   - }
115   -
116   - writel(reg, &iomuxc_regs->gpr1);
117   -}
118   -
119 88 #ifdef CONFIG_MX53
120 89 void boot_mode_apply(unsigned cfg_val)
121 90 {
arch/arm/imx-common/cpu.c
... ... @@ -187,4 +187,35 @@
187 187 ipuv3_fb_shutdown();
188 188 }
189 189 #endif
  190 +
  191 +void set_chipselect_size(int const cs_size)
  192 +{
  193 + unsigned int reg;
  194 + struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
  195 + reg = readl(&iomuxc_regs->gpr[1]);
  196 +
  197 + switch (cs_size) {
  198 + case CS0_128:
  199 + reg &= ~0x7; /* CS0=128MB, CS1=0, CS2=0, CS3=0 */
  200 + reg |= 0x5;
  201 + break;
  202 + case CS0_64M_CS1_64M:
  203 + reg &= ~0x3F; /* CS0=64MB, CS1=64MB, CS2=0, CS3=0 */
  204 + reg |= 0x1B;
  205 + break;
  206 + case CS0_64M_CS1_32M_CS2_32M:
  207 + reg &= ~0x1FF; /* CS0=64MB, CS1=32MB, CS2=32MB, CS3=0 */
  208 + reg |= 0x4B;
  209 + break;
  210 + case CS0_32M_CS1_32M_CS2_32M_CS3_32M:
  211 + reg &= ~0xFFF; /* CS0=32MB, CS1=32MB, CS2=32MB, CS3=32MB */
  212 + reg |= 0x249;
  213 + break;
  214 + default:
  215 + printf("Unknown chip select size: %d\n", cs_size);
  216 + break;
  217 + }
  218 +
  219 + writel(reg, &iomuxc_regs->gpr[1]);
  220 +}
arch/arm/include/asm/arch-imx/cpu.h
... ... @@ -12,4 +12,9 @@
12 12 #define MXC_CPU_MX6Q 0x63
13 13 #define MXC_CPU_MX6D 0x64
14 14 #define MXC_CPU_MX6SOLO 0x65 /* dummy ID */
  15 +
  16 +#define CS0_128 0
  17 +#define CS0_64M_CS1_64M 1
  18 +#define CS0_64M_CS1_32M_CS2_32M 2
  19 +#define CS0_32M_CS1_32M_CS2_32M_CS3_32M 3
arch/arm/include/asm/arch-mx5/imx-regs.h
... ... @@ -202,11 +202,6 @@
202 202 */
203 203 #define WBED 1
204 204  
205   -#define CS0_128 0
206   -#define CS0_64M_CS1_64M 1
207   -#define CS0_64M_CS1_32M_CS2_32M 2
208   -#define CS0_32M_CS1_32M_CS2_32M_CS3_32M 3
209   -
210 205 /*
211 206 * CSPI register definitions
212 207 */
... ... @@ -414,8 +409,7 @@
414 409  
415 410 #if defined(CONFIG_MX51)
416 411 struct iomuxc {
417   - u32 gpr0;
418   - u32 gpr1;
  412 + u32 gpr[2];
419 413 u32 omux0;
420 414 u32 omux1;
421 415 u32 omux2;
... ... @@ -424,9 +418,7 @@
424 418 };
425 419 #elif defined(CONFIG_MX53)
426 420 struct iomuxc {
427   - u32 gpr0;
428   - u32 gpr1;
429   - u32 gpr2;
  421 + u32 gpr[3];
430 422 u32 omux0;
431 423 u32 omux1;
432 424 u32 omux2;
arch/arm/include/asm/arch-mx6/sys_proto.h
... ... @@ -26,6 +26,7 @@
26 26  
27 27 const char *get_imx_type(u32 imxtype);
28 28 unsigned imx_ddr_size(void);
  29 +void set_chipselect_size(int const);
29 30  
30 31 /*
31 32 * Initializes on-chip ethernet controllers.