Commit 32c81ea65cc01103d3a615072690e7b5faf76656
Committed by
Stefano Babic
1 parent
53b7f18044
Exists in
v2017.01-smarct4x
and in
37 other branches
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
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; |