diff options
author | Viresh Kumar <viresh.kumar@st.com> | 2012-04-03 07:57:10 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2012-04-22 16:49:26 -0400 |
commit | 8076dd1b7deeaeb5c6f0b58be95c0a13164e1a99 (patch) | |
tree | 96e3741dec72d84de577b23c9e821a27bf371f63 /arch/arm/mach-spear3xx/spear300.c | |
parent | 52130b6033c580c27d968f64cd73209c9609e4e0 (diff) |
SPEAr: Remove existing padmux support for SPEAr
We must use pinctrl framework instead of defining per SoC pinmux drivers. This
patch removes existing padmux support present for SPEAr platform.
Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Stephen Warren <swarren@wwwdotorg.org>
Diffstat (limited to 'arch/arm/mach-spear3xx/spear300.c')
-rw-r--r-- | arch/arm/mach-spear3xx/spear300.c | 389 |
1 files changed, 1 insertions, 388 deletions
diff --git a/arch/arm/mach-spear3xx/spear300.c b/arch/arm/mach-spear3xx/spear300.c index f46fc2692ab6..2db0bd14e481 100644 --- a/arch/arm/mach-spear3xx/spear300.c +++ b/arch/arm/mach-spear3xx/spear300.c | |||
@@ -21,357 +21,6 @@ | |||
21 | #include <mach/generic.h> | 21 | #include <mach/generic.h> |
22 | #include <mach/hardware.h> | 22 | #include <mach/hardware.h> |
23 | 23 | ||
24 | /* pad multiplexing support */ | ||
25 | /* muxing registers */ | ||
26 | #define PAD_MUX_CONFIG_REG 0x00 | ||
27 | #define MODE_CONFIG_REG 0x04 | ||
28 | |||
29 | /* modes */ | ||
30 | #define NAND_MODE (1 << 0) | ||
31 | #define NOR_MODE (1 << 1) | ||
32 | #define PHOTO_FRAME_MODE (1 << 2) | ||
33 | #define LEND_IP_PHONE_MODE (1 << 3) | ||
34 | #define HEND_IP_PHONE_MODE (1 << 4) | ||
35 | #define LEND_WIFI_PHONE_MODE (1 << 5) | ||
36 | #define HEND_WIFI_PHONE_MODE (1 << 6) | ||
37 | #define ATA_PABX_WI2S_MODE (1 << 7) | ||
38 | #define ATA_PABX_I2S_MODE (1 << 8) | ||
39 | #define CAML_LCDW_MODE (1 << 9) | ||
40 | #define CAMU_LCD_MODE (1 << 10) | ||
41 | #define CAMU_WLCD_MODE (1 << 11) | ||
42 | #define CAML_LCD_MODE (1 << 12) | ||
43 | #define ALL_MODES 0x1FFF | ||
44 | |||
45 | struct pmx_mode spear300_nand_mode = { | ||
46 | .id = NAND_MODE, | ||
47 | .name = "nand mode", | ||
48 | .mask = 0x00, | ||
49 | }; | ||
50 | |||
51 | struct pmx_mode spear300_nor_mode = { | ||
52 | .id = NOR_MODE, | ||
53 | .name = "nor mode", | ||
54 | .mask = 0x01, | ||
55 | }; | ||
56 | |||
57 | struct pmx_mode spear300_photo_frame_mode = { | ||
58 | .id = PHOTO_FRAME_MODE, | ||
59 | .name = "photo frame mode", | ||
60 | .mask = 0x02, | ||
61 | }; | ||
62 | |||
63 | struct pmx_mode spear300_lend_ip_phone_mode = { | ||
64 | .id = LEND_IP_PHONE_MODE, | ||
65 | .name = "lend ip phone mode", | ||
66 | .mask = 0x03, | ||
67 | }; | ||
68 | |||
69 | struct pmx_mode spear300_hend_ip_phone_mode = { | ||
70 | .id = HEND_IP_PHONE_MODE, | ||
71 | .name = "hend ip phone mode", | ||
72 | .mask = 0x04, | ||
73 | }; | ||
74 | |||
75 | struct pmx_mode spear300_lend_wifi_phone_mode = { | ||
76 | .id = LEND_WIFI_PHONE_MODE, | ||
77 | .name = "lend wifi phone mode", | ||
78 | .mask = 0x05, | ||
79 | }; | ||
80 | |||
81 | struct pmx_mode spear300_hend_wifi_phone_mode = { | ||
82 | .id = HEND_WIFI_PHONE_MODE, | ||
83 | .name = "hend wifi phone mode", | ||
84 | .mask = 0x06, | ||
85 | }; | ||
86 | |||
87 | struct pmx_mode spear300_ata_pabx_wi2s_mode = { | ||
88 | .id = ATA_PABX_WI2S_MODE, | ||
89 | .name = "ata pabx wi2s mode", | ||
90 | .mask = 0x07, | ||
91 | }; | ||
92 | |||
93 | struct pmx_mode spear300_ata_pabx_i2s_mode = { | ||
94 | .id = ATA_PABX_I2S_MODE, | ||
95 | .name = "ata pabx i2s mode", | ||
96 | .mask = 0x08, | ||
97 | }; | ||
98 | |||
99 | struct pmx_mode spear300_caml_lcdw_mode = { | ||
100 | .id = CAML_LCDW_MODE, | ||
101 | .name = "caml lcdw mode", | ||
102 | .mask = 0x0C, | ||
103 | }; | ||
104 | |||
105 | struct pmx_mode spear300_camu_lcd_mode = { | ||
106 | .id = CAMU_LCD_MODE, | ||
107 | .name = "camu lcd mode", | ||
108 | .mask = 0x0D, | ||
109 | }; | ||
110 | |||
111 | struct pmx_mode spear300_camu_wlcd_mode = { | ||
112 | .id = CAMU_WLCD_MODE, | ||
113 | .name = "camu wlcd mode", | ||
114 | .mask = 0x0E, | ||
115 | }; | ||
116 | |||
117 | struct pmx_mode spear300_caml_lcd_mode = { | ||
118 | .id = CAML_LCD_MODE, | ||
119 | .name = "caml lcd mode", | ||
120 | .mask = 0x0F, | ||
121 | }; | ||
122 | |||
123 | /* devices */ | ||
124 | static struct pmx_dev_mode pmx_fsmc_2_chips_modes[] = { | ||
125 | { | ||
126 | .ids = NAND_MODE | NOR_MODE | PHOTO_FRAME_MODE | | ||
127 | ATA_PABX_WI2S_MODE | ATA_PABX_I2S_MODE, | ||
128 | .mask = PMX_FIRDA_MASK, | ||
129 | }, | ||
130 | }; | ||
131 | |||
132 | struct pmx_dev spear300_pmx_fsmc_2_chips = { | ||
133 | .name = "fsmc_2_chips", | ||
134 | .modes = pmx_fsmc_2_chips_modes, | ||
135 | .mode_count = ARRAY_SIZE(pmx_fsmc_2_chips_modes), | ||
136 | .enb_on_reset = 1, | ||
137 | }; | ||
138 | |||
139 | static struct pmx_dev_mode pmx_fsmc_4_chips_modes[] = { | ||
140 | { | ||
141 | .ids = NAND_MODE | NOR_MODE | PHOTO_FRAME_MODE | | ||
142 | ATA_PABX_WI2S_MODE | ATA_PABX_I2S_MODE, | ||
143 | .mask = PMX_FIRDA_MASK | PMX_UART0_MASK, | ||
144 | }, | ||
145 | }; | ||
146 | |||
147 | struct pmx_dev spear300_pmx_fsmc_4_chips = { | ||
148 | .name = "fsmc_4_chips", | ||
149 | .modes = pmx_fsmc_4_chips_modes, | ||
150 | .mode_count = ARRAY_SIZE(pmx_fsmc_4_chips_modes), | ||
151 | .enb_on_reset = 1, | ||
152 | }; | ||
153 | |||
154 | static struct pmx_dev_mode pmx_keyboard_modes[] = { | ||
155 | { | ||
156 | .ids = LEND_IP_PHONE_MODE | HEND_IP_PHONE_MODE | | ||
157 | LEND_WIFI_PHONE_MODE | HEND_WIFI_PHONE_MODE | | ||
158 | CAML_LCDW_MODE | CAMU_LCD_MODE | CAMU_WLCD_MODE | | ||
159 | CAML_LCD_MODE, | ||
160 | .mask = 0x0, | ||
161 | }, | ||
162 | }; | ||
163 | |||
164 | struct pmx_dev spear300_pmx_keyboard = { | ||
165 | .name = "keyboard", | ||
166 | .modes = pmx_keyboard_modes, | ||
167 | .mode_count = ARRAY_SIZE(pmx_keyboard_modes), | ||
168 | .enb_on_reset = 1, | ||
169 | }; | ||
170 | |||
171 | static struct pmx_dev_mode pmx_clcd_modes[] = { | ||
172 | { | ||
173 | .ids = PHOTO_FRAME_MODE, | ||
174 | .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK , | ||
175 | }, { | ||
176 | .ids = HEND_IP_PHONE_MODE | HEND_WIFI_PHONE_MODE | | ||
177 | CAMU_LCD_MODE | CAML_LCD_MODE, | ||
178 | .mask = PMX_TIMER_3_4_MASK, | ||
179 | }, | ||
180 | }; | ||
181 | |||
182 | struct pmx_dev spear300_pmx_clcd = { | ||
183 | .name = "clcd", | ||
184 | .modes = pmx_clcd_modes, | ||
185 | .mode_count = ARRAY_SIZE(pmx_clcd_modes), | ||
186 | .enb_on_reset = 1, | ||
187 | }; | ||
188 | |||
189 | static struct pmx_dev_mode pmx_telecom_gpio_modes[] = { | ||
190 | { | ||
191 | .ids = PHOTO_FRAME_MODE | CAMU_LCD_MODE | CAML_LCD_MODE, | ||
192 | .mask = PMX_MII_MASK, | ||
193 | }, { | ||
194 | .ids = LEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE, | ||
195 | .mask = PMX_MII_MASK | PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK, | ||
196 | }, { | ||
197 | .ids = ATA_PABX_I2S_MODE | CAML_LCDW_MODE | CAMU_WLCD_MODE, | ||
198 | .mask = PMX_MII_MASK | PMX_TIMER_3_4_MASK, | ||
199 | }, { | ||
200 | .ids = HEND_IP_PHONE_MODE | HEND_WIFI_PHONE_MODE, | ||
201 | .mask = PMX_MII_MASK | PMX_TIMER_1_2_MASK, | ||
202 | }, { | ||
203 | .ids = ATA_PABX_WI2S_MODE, | ||
204 | .mask = PMX_MII_MASK | PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK | ||
205 | | PMX_UART0_MODEM_MASK, | ||
206 | }, | ||
207 | }; | ||
208 | |||
209 | struct pmx_dev spear300_pmx_telecom_gpio = { | ||
210 | .name = "telecom_gpio", | ||
211 | .modes = pmx_telecom_gpio_modes, | ||
212 | .mode_count = ARRAY_SIZE(pmx_telecom_gpio_modes), | ||
213 | .enb_on_reset = 1, | ||
214 | }; | ||
215 | |||
216 | static struct pmx_dev_mode pmx_telecom_tdm_modes[] = { | ||
217 | { | ||
218 | .ids = PHOTO_FRAME_MODE | LEND_IP_PHONE_MODE | | ||
219 | HEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE | ||
220 | | HEND_WIFI_PHONE_MODE | ATA_PABX_WI2S_MODE | ||
221 | | ATA_PABX_I2S_MODE | CAML_LCDW_MODE | CAMU_LCD_MODE | ||
222 | | CAMU_WLCD_MODE | CAML_LCD_MODE, | ||
223 | .mask = PMX_UART0_MODEM_MASK | PMX_SSP_CS_MASK, | ||
224 | }, | ||
225 | }; | ||
226 | |||
227 | struct pmx_dev spear300_pmx_telecom_tdm = { | ||
228 | .name = "telecom_tdm", | ||
229 | .modes = pmx_telecom_tdm_modes, | ||
230 | .mode_count = ARRAY_SIZE(pmx_telecom_tdm_modes), | ||
231 | .enb_on_reset = 1, | ||
232 | }; | ||
233 | |||
234 | static struct pmx_dev_mode pmx_telecom_spi_cs_i2c_clk_modes[] = { | ||
235 | { | ||
236 | .ids = LEND_IP_PHONE_MODE | HEND_IP_PHONE_MODE | | ||
237 | LEND_WIFI_PHONE_MODE | HEND_WIFI_PHONE_MODE | ||
238 | | ATA_PABX_WI2S_MODE | ATA_PABX_I2S_MODE | | ||
239 | CAML_LCDW_MODE | CAML_LCD_MODE, | ||
240 | .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK, | ||
241 | }, | ||
242 | }; | ||
243 | |||
244 | struct pmx_dev spear300_pmx_telecom_spi_cs_i2c_clk = { | ||
245 | .name = "telecom_spi_cs_i2c_clk", | ||
246 | .modes = pmx_telecom_spi_cs_i2c_clk_modes, | ||
247 | .mode_count = ARRAY_SIZE(pmx_telecom_spi_cs_i2c_clk_modes), | ||
248 | .enb_on_reset = 1, | ||
249 | }; | ||
250 | |||
251 | static struct pmx_dev_mode pmx_telecom_camera_modes[] = { | ||
252 | { | ||
253 | .ids = CAML_LCDW_MODE | CAML_LCD_MODE, | ||
254 | .mask = PMX_MII_MASK, | ||
255 | }, { | ||
256 | .ids = CAMU_LCD_MODE | CAMU_WLCD_MODE, | ||
257 | .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK | PMX_MII_MASK, | ||
258 | }, | ||
259 | }; | ||
260 | |||
261 | struct pmx_dev spear300_pmx_telecom_camera = { | ||
262 | .name = "telecom_camera", | ||
263 | .modes = pmx_telecom_camera_modes, | ||
264 | .mode_count = ARRAY_SIZE(pmx_telecom_camera_modes), | ||
265 | .enb_on_reset = 1, | ||
266 | }; | ||
267 | |||
268 | static struct pmx_dev_mode pmx_telecom_dac_modes[] = { | ||
269 | { | ||
270 | .ids = ATA_PABX_I2S_MODE | CAML_LCDW_MODE | CAMU_LCD_MODE | ||
271 | | CAMU_WLCD_MODE | CAML_LCD_MODE, | ||
272 | .mask = PMX_TIMER_1_2_MASK, | ||
273 | }, | ||
274 | }; | ||
275 | |||
276 | struct pmx_dev spear300_pmx_telecom_dac = { | ||
277 | .name = "telecom_dac", | ||
278 | .modes = pmx_telecom_dac_modes, | ||
279 | .mode_count = ARRAY_SIZE(pmx_telecom_dac_modes), | ||
280 | .enb_on_reset = 1, | ||
281 | }; | ||
282 | |||
283 | static struct pmx_dev_mode pmx_telecom_i2s_modes[] = { | ||
284 | { | ||
285 | .ids = LEND_IP_PHONE_MODE | HEND_IP_PHONE_MODE | ||
286 | | LEND_WIFI_PHONE_MODE | HEND_WIFI_PHONE_MODE | | ||
287 | ATA_PABX_I2S_MODE | CAML_LCDW_MODE | CAMU_LCD_MODE | ||
288 | | CAMU_WLCD_MODE | CAML_LCD_MODE, | ||
289 | .mask = PMX_UART0_MODEM_MASK, | ||
290 | }, | ||
291 | }; | ||
292 | |||
293 | struct pmx_dev spear300_pmx_telecom_i2s = { | ||
294 | .name = "telecom_i2s", | ||
295 | .modes = pmx_telecom_i2s_modes, | ||
296 | .mode_count = ARRAY_SIZE(pmx_telecom_i2s_modes), | ||
297 | .enb_on_reset = 1, | ||
298 | }; | ||
299 | |||
300 | static struct pmx_dev_mode pmx_telecom_boot_pins_modes[] = { | ||
301 | { | ||
302 | .ids = NAND_MODE | NOR_MODE, | ||
303 | .mask = PMX_UART0_MODEM_MASK | PMX_TIMER_1_2_MASK | | ||
304 | PMX_TIMER_3_4_MASK, | ||
305 | }, | ||
306 | }; | ||
307 | |||
308 | struct pmx_dev spear300_pmx_telecom_boot_pins = { | ||
309 | .name = "telecom_boot_pins", | ||
310 | .modes = pmx_telecom_boot_pins_modes, | ||
311 | .mode_count = ARRAY_SIZE(pmx_telecom_boot_pins_modes), | ||
312 | .enb_on_reset = 1, | ||
313 | }; | ||
314 | |||
315 | static struct pmx_dev_mode pmx_telecom_sdhci_4bit_modes[] = { | ||
316 | { | ||
317 | .ids = PHOTO_FRAME_MODE | LEND_IP_PHONE_MODE | | ||
318 | HEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE | | ||
319 | HEND_WIFI_PHONE_MODE | CAML_LCDW_MODE | CAMU_LCD_MODE | | ||
320 | CAMU_WLCD_MODE | CAML_LCD_MODE | ATA_PABX_WI2S_MODE | | ||
321 | ATA_PABX_I2S_MODE, | ||
322 | .mask = PMX_GPIO_PIN0_MASK | PMX_GPIO_PIN1_MASK | | ||
323 | PMX_GPIO_PIN2_MASK | PMX_GPIO_PIN3_MASK | | ||
324 | PMX_GPIO_PIN4_MASK | PMX_GPIO_PIN5_MASK, | ||
325 | }, | ||
326 | }; | ||
327 | |||
328 | struct pmx_dev spear300_pmx_telecom_sdhci_4bit = { | ||
329 | .name = "telecom_sdhci_4bit", | ||
330 | .modes = pmx_telecom_sdhci_4bit_modes, | ||
331 | .mode_count = ARRAY_SIZE(pmx_telecom_sdhci_4bit_modes), | ||
332 | .enb_on_reset = 1, | ||
333 | }; | ||
334 | |||
335 | static struct pmx_dev_mode pmx_telecom_sdhci_8bit_modes[] = { | ||
336 | { | ||
337 | .ids = PHOTO_FRAME_MODE | LEND_IP_PHONE_MODE | | ||
338 | HEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE | | ||
339 | HEND_WIFI_PHONE_MODE | CAML_LCDW_MODE | CAMU_LCD_MODE | | ||
340 | CAMU_WLCD_MODE | CAML_LCD_MODE, | ||
341 | .mask = PMX_GPIO_PIN0_MASK | PMX_GPIO_PIN1_MASK | | ||
342 | PMX_GPIO_PIN2_MASK | PMX_GPIO_PIN3_MASK | | ||
343 | PMX_GPIO_PIN4_MASK | PMX_GPIO_PIN5_MASK | PMX_MII_MASK, | ||
344 | }, | ||
345 | }; | ||
346 | |||
347 | struct pmx_dev spear300_pmx_telecom_sdhci_8bit = { | ||
348 | .name = "telecom_sdhci_8bit", | ||
349 | .modes = pmx_telecom_sdhci_8bit_modes, | ||
350 | .mode_count = ARRAY_SIZE(pmx_telecom_sdhci_8bit_modes), | ||
351 | .enb_on_reset = 1, | ||
352 | }; | ||
353 | |||
354 | static struct pmx_dev_mode pmx_gpio1_modes[] = { | ||
355 | { | ||
356 | .ids = PHOTO_FRAME_MODE, | ||
357 | .mask = PMX_UART0_MODEM_MASK | PMX_TIMER_1_2_MASK | | ||
358 | PMX_TIMER_3_4_MASK, | ||
359 | }, | ||
360 | }; | ||
361 | |||
362 | struct pmx_dev spear300_pmx_gpio1 = { | ||
363 | .name = "arm gpio1", | ||
364 | .modes = pmx_gpio1_modes, | ||
365 | .mode_count = ARRAY_SIZE(pmx_gpio1_modes), | ||
366 | .enb_on_reset = 1, | ||
367 | }; | ||
368 | |||
369 | /* pmx driver structure */ | ||
370 | static struct pmx_driver pmx_driver = { | ||
371 | .mode_reg = {.offset = MODE_CONFIG_REG, .mask = 0x0000000f}, | ||
372 | .mux_reg = {.offset = PAD_MUX_CONFIG_REG, .mask = 0x00007fff}, | ||
373 | }; | ||
374 | |||
375 | /* spear3xx shared irq */ | 24 | /* spear3xx shared irq */ |
376 | static struct shirq_dev_config shirq_ras1_config[] = { | 25 | static struct shirq_dev_config shirq_ras1_config[] = { |
377 | { | 26 | { |
@@ -425,22 +74,6 @@ static struct spear_shirq shirq_ras1 = { | |||
425 | }, | 74 | }, |
426 | }; | 75 | }; |
427 | 76 | ||
428 | /* padmux devices to enable */ | ||
429 | static struct pmx_dev *spear300_evb_pmx_devs[] = { | ||
430 | /* spear3xx specific devices */ | ||
431 | &spear3xx_pmx_i2c, | ||
432 | &spear3xx_pmx_ssp_cs, | ||
433 | &spear3xx_pmx_ssp, | ||
434 | &spear3xx_pmx_mii, | ||
435 | &spear3xx_pmx_uart0, | ||
436 | |||
437 | /* spear300 specific devices */ | ||
438 | &spear300_pmx_fsmc_2_chips, | ||
439 | &spear300_pmx_clcd, | ||
440 | &spear300_pmx_telecom_sdhci_4bit, | ||
441 | &spear300_pmx_gpio1, | ||
442 | }; | ||
443 | |||
444 | /* DMAC platform data's slave info */ | 77 | /* DMAC platform data's slave info */ |
445 | struct pl08x_channel_data spear300_dma_info[] = { | 78 | struct pl08x_channel_data spear300_dma_info[] = { |
446 | { | 79 | { |
@@ -639,7 +272,7 @@ static struct of_dev_auxdata spear300_auxdata_lookup[] __initdata = { | |||
639 | 272 | ||
640 | static void __init spear300_dt_init(void) | 273 | static void __init spear300_dt_init(void) |
641 | { | 274 | { |
642 | int ret = -EINVAL; | 275 | int ret; |
643 | 276 | ||
644 | pl080_plat_data.slave_channels = spear300_dma_info; | 277 | pl080_plat_data.slave_channels = spear300_dma_info; |
645 | pl080_plat_data.num_slave_channels = ARRAY_SIZE(spear300_dma_info); | 278 | pl080_plat_data.num_slave_channels = ARRAY_SIZE(spear300_dma_info); |
@@ -654,26 +287,6 @@ static void __init spear300_dt_init(void) | |||
654 | if (ret) | 287 | if (ret) |
655 | pr_err("Error registering Shared IRQ\n"); | 288 | pr_err("Error registering Shared IRQ\n"); |
656 | } | 289 | } |
657 | |||
658 | if (of_machine_is_compatible("st,spear300-evb")) { | ||
659 | /* pmx initialization */ | ||
660 | pmx_driver.mode = &spear300_photo_frame_mode; | ||
661 | pmx_driver.devs = spear300_evb_pmx_devs; | ||
662 | pmx_driver.devs_count = ARRAY_SIZE(spear300_evb_pmx_devs); | ||
663 | |||
664 | pmx_driver.base = ioremap(SPEAR300_SOC_CONFIG_BASE, SZ_4K); | ||
665 | if (pmx_driver.base) { | ||
666 | ret = pmx_register(&pmx_driver); | ||
667 | if (ret) | ||
668 | pr_err("padmux: registration failed. err no: %d\n", | ||
669 | ret); | ||
670 | /* Free Mapping, device selection already done */ | ||
671 | iounmap(pmx_driver.base); | ||
672 | } | ||
673 | |||
674 | if (ret) | ||
675 | pr_err("Initialization Failed"); | ||
676 | } | ||
677 | } | 290 | } |
678 | 291 | ||
679 | static const char * const spear300_dt_board_compat[] = { | 292 | static const char * const spear300_dt_board_compat[] = { |