diff options
Diffstat (limited to 'arch/blackfin/mach-bf538/boards/ezkit.c')
-rw-r--r-- | arch/blackfin/mach-bf538/boards/ezkit.c | 346 |
1 files changed, 328 insertions, 18 deletions
diff --git a/arch/blackfin/mach-bf538/boards/ezkit.c b/arch/blackfin/mach-bf538/boards/ezkit.c index c296bb1ed503..1a1f65855b03 100644 --- a/arch/blackfin/mach-bf538/boards/ezkit.c +++ b/arch/blackfin/mach-bf538/boards/ezkit.c | |||
@@ -41,37 +41,148 @@ static struct platform_device rtc_device = { | |||
41 | #endif | 41 | #endif |
42 | 42 | ||
43 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | 43 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) |
44 | static struct resource bfin_uart_resources[] = { | ||
45 | #ifdef CONFIG_SERIAL_BFIN_UART0 | 44 | #ifdef CONFIG_SERIAL_BFIN_UART0 |
45 | static struct resource bfin_uart0_resources[] = { | ||
46 | { | 46 | { |
47 | .start = 0xFFC00400, | 47 | .start = UART0_THR, |
48 | .end = 0xFFC004FF, | 48 | .end = UART0_GCTL+2, |
49 | .flags = IORESOURCE_MEM, | 49 | .flags = IORESOURCE_MEM, |
50 | }, | 50 | }, |
51 | { | ||
52 | .start = IRQ_UART0_RX, | ||
53 | .end = IRQ_UART0_RX+1, | ||
54 | .flags = IORESOURCE_IRQ, | ||
55 | }, | ||
56 | { | ||
57 | .start = IRQ_UART0_ERROR, | ||
58 | .end = IRQ_UART0_ERROR, | ||
59 | .flags = IORESOURCE_IRQ, | ||
60 | }, | ||
61 | { | ||
62 | .start = CH_UART0_TX, | ||
63 | .end = CH_UART0_TX, | ||
64 | .flags = IORESOURCE_DMA, | ||
65 | }, | ||
66 | { | ||
67 | .start = CH_UART0_RX, | ||
68 | .end = CH_UART0_RX, | ||
69 | .flags = IORESOURCE_DMA, | ||
70 | }, | ||
71 | #ifdef CONFIG_BFIN_UART0_CTSRTS | ||
72 | { /* CTS pin */ | ||
73 | .start = GPIO_PG7, | ||
74 | .end = GPIO_PG7, | ||
75 | .flags = IORESOURCE_IO, | ||
76 | }, | ||
77 | { /* RTS pin */ | ||
78 | .start = GPIO_PG6, | ||
79 | .end = GPIO_PG6, | ||
80 | .flags = IORESOURCE_IO, | ||
81 | }, | ||
82 | #endif | ||
83 | }; | ||
84 | |||
85 | unsigned short bfin_uart0_peripherals[] = { | ||
86 | P_UART0_TX, P_UART0_RX, 0 | ||
87 | }; | ||
88 | |||
89 | static struct platform_device bfin_uart0_device = { | ||
90 | .name = "bfin-uart", | ||
91 | .id = 0, | ||
92 | .num_resources = ARRAY_SIZE(bfin_uart0_resources), | ||
93 | .resource = bfin_uart0_resources, | ||
94 | .dev = { | ||
95 | .platform_data = &bfin_uart0_peripherals, /* Passed to driver */ | ||
96 | }, | ||
97 | }; | ||
51 | #endif | 98 | #endif |
52 | #ifdef CONFIG_SERIAL_BFIN_UART1 | 99 | #ifdef CONFIG_SERIAL_BFIN_UART1 |
100 | static struct resource bfin_uart1_resources[] = { | ||
53 | { | 101 | { |
54 | .start = 0xFFC02000, | 102 | .start = UART1_THR, |
55 | .end = 0xFFC020FF, | 103 | .end = UART1_GCTL+2, |
56 | .flags = IORESOURCE_MEM, | 104 | .flags = IORESOURCE_MEM, |
57 | }, | 105 | }, |
106 | { | ||
107 | .start = IRQ_UART1_RX, | ||
108 | .end = IRQ_UART1_RX+1, | ||
109 | .flags = IORESOURCE_IRQ, | ||
110 | }, | ||
111 | { | ||
112 | .start = IRQ_UART1_ERROR, | ||
113 | .end = IRQ_UART1_ERROR, | ||
114 | .flags = IORESOURCE_IRQ, | ||
115 | }, | ||
116 | { | ||
117 | .start = CH_UART1_TX, | ||
118 | .end = CH_UART1_TX, | ||
119 | .flags = IORESOURCE_DMA, | ||
120 | }, | ||
121 | { | ||
122 | .start = CH_UART1_RX, | ||
123 | .end = CH_UART1_RX, | ||
124 | .flags = IORESOURCE_DMA, | ||
125 | }, | ||
126 | }; | ||
127 | |||
128 | unsigned short bfin_uart1_peripherals[] = { | ||
129 | P_UART1_TX, P_UART1_RX, 0 | ||
130 | }; | ||
131 | |||
132 | static struct platform_device bfin_uart1_device = { | ||
133 | .name = "bfin-uart", | ||
134 | .id = 1, | ||
135 | .num_resources = ARRAY_SIZE(bfin_uart1_resources), | ||
136 | .resource = bfin_uart1_resources, | ||
137 | .dev = { | ||
138 | .platform_data = &bfin_uart1_peripherals, /* Passed to driver */ | ||
139 | }, | ||
140 | }; | ||
58 | #endif | 141 | #endif |
59 | #ifdef CONFIG_SERIAL_BFIN_UART2 | 142 | #ifdef CONFIG_SERIAL_BFIN_UART2 |
143 | static struct resource bfin_uart2_resources[] = { | ||
60 | { | 144 | { |
61 | .start = 0xFFC02100, | 145 | .start = UART2_THR, |
62 | .end = 0xFFC021FF, | 146 | .end = UART2_GCTL+2, |
63 | .flags = IORESOURCE_MEM, | 147 | .flags = IORESOURCE_MEM, |
64 | }, | 148 | }, |
65 | #endif | 149 | { |
150 | .start = IRQ_UART2_RX, | ||
151 | .end = IRQ_UART2_RX+1, | ||
152 | .flags = IORESOURCE_IRQ, | ||
153 | }, | ||
154 | { | ||
155 | .start = IRQ_UART2_ERROR, | ||
156 | .end = IRQ_UART2_ERROR, | ||
157 | .flags = IORESOURCE_IRQ, | ||
158 | }, | ||
159 | { | ||
160 | .start = CH_UART2_TX, | ||
161 | .end = CH_UART2_TX, | ||
162 | .flags = IORESOURCE_DMA, | ||
163 | }, | ||
164 | { | ||
165 | .start = CH_UART2_RX, | ||
166 | .end = CH_UART2_RX, | ||
167 | .flags = IORESOURCE_DMA, | ||
168 | }, | ||
169 | }; | ||
170 | |||
171 | unsigned short bfin_uart2_peripherals[] = { | ||
172 | P_UART2_TX, P_UART2_RX, 0 | ||
66 | }; | 173 | }; |
67 | 174 | ||
68 | static struct platform_device bfin_uart_device = { | 175 | static struct platform_device bfin_uart2_device = { |
69 | .name = "bfin-uart", | 176 | .name = "bfin-uart", |
70 | .id = 1, | 177 | .id = 2, |
71 | .num_resources = ARRAY_SIZE(bfin_uart_resources), | 178 | .num_resources = ARRAY_SIZE(bfin_uart2_resources), |
72 | .resource = bfin_uart_resources, | 179 | .resource = bfin_uart2_resources, |
180 | .dev = { | ||
181 | .platform_data = &bfin_uart2_peripherals, /* Passed to driver */ | ||
182 | }, | ||
73 | }; | 183 | }; |
74 | #endif | 184 | #endif |
185 | #endif | ||
75 | 186 | ||
76 | #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) | 187 | #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) |
77 | #ifdef CONFIG_BFIN_SIR0 | 188 | #ifdef CONFIG_BFIN_SIR0 |
@@ -151,6 +262,145 @@ static struct platform_device bfin_sir2_device = { | |||
151 | #endif | 262 | #endif |
152 | #endif | 263 | #endif |
153 | 264 | ||
265 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | ||
266 | #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART | ||
267 | static struct resource bfin_sport0_uart_resources[] = { | ||
268 | { | ||
269 | .start = SPORT0_TCR1, | ||
270 | .end = SPORT0_MRCS3+4, | ||
271 | .flags = IORESOURCE_MEM, | ||
272 | }, | ||
273 | { | ||
274 | .start = IRQ_SPORT0_RX, | ||
275 | .end = IRQ_SPORT0_RX+1, | ||
276 | .flags = IORESOURCE_IRQ, | ||
277 | }, | ||
278 | { | ||
279 | .start = IRQ_SPORT0_ERROR, | ||
280 | .end = IRQ_SPORT0_ERROR, | ||
281 | .flags = IORESOURCE_IRQ, | ||
282 | }, | ||
283 | }; | ||
284 | |||
285 | unsigned short bfin_sport0_peripherals[] = { | ||
286 | P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS, | ||
287 | P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0 | ||
288 | }; | ||
289 | |||
290 | static struct platform_device bfin_sport0_uart_device = { | ||
291 | .name = "bfin-sport-uart", | ||
292 | .id = 0, | ||
293 | .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources), | ||
294 | .resource = bfin_sport0_uart_resources, | ||
295 | .dev = { | ||
296 | .platform_data = &bfin_sport0_peripherals, /* Passed to driver */ | ||
297 | }, | ||
298 | }; | ||
299 | #endif | ||
300 | #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART | ||
301 | static struct resource bfin_sport1_uart_resources[] = { | ||
302 | { | ||
303 | .start = SPORT1_TCR1, | ||
304 | .end = SPORT1_MRCS3+4, | ||
305 | .flags = IORESOURCE_MEM, | ||
306 | }, | ||
307 | { | ||
308 | .start = IRQ_SPORT1_RX, | ||
309 | .end = IRQ_SPORT1_RX+1, | ||
310 | .flags = IORESOURCE_IRQ, | ||
311 | }, | ||
312 | { | ||
313 | .start = IRQ_SPORT1_ERROR, | ||
314 | .end = IRQ_SPORT1_ERROR, | ||
315 | .flags = IORESOURCE_IRQ, | ||
316 | }, | ||
317 | }; | ||
318 | |||
319 | unsigned short bfin_sport1_peripherals[] = { | ||
320 | P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS, | ||
321 | P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0 | ||
322 | }; | ||
323 | |||
324 | static struct platform_device bfin_sport1_uart_device = { | ||
325 | .name = "bfin-sport-uart", | ||
326 | .id = 1, | ||
327 | .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources), | ||
328 | .resource = bfin_sport1_uart_resources, | ||
329 | .dev = { | ||
330 | .platform_data = &bfin_sport1_peripherals, /* Passed to driver */ | ||
331 | }, | ||
332 | }; | ||
333 | #endif | ||
334 | #ifdef CONFIG_SERIAL_BFIN_SPORT2_UART | ||
335 | static struct resource bfin_sport2_uart_resources[] = { | ||
336 | { | ||
337 | .start = SPORT2_TCR1, | ||
338 | .end = SPORT2_MRCS3+4, | ||
339 | .flags = IORESOURCE_MEM, | ||
340 | }, | ||
341 | { | ||
342 | .start = IRQ_SPORT2_RX, | ||
343 | .end = IRQ_SPORT2_RX+1, | ||
344 | .flags = IORESOURCE_IRQ, | ||
345 | }, | ||
346 | { | ||
347 | .start = IRQ_SPORT2_ERROR, | ||
348 | .end = IRQ_SPORT2_ERROR, | ||
349 | .flags = IORESOURCE_IRQ, | ||
350 | }, | ||
351 | }; | ||
352 | |||
353 | unsigned short bfin_sport2_peripherals[] = { | ||
354 | P_SPORT2_TFS, P_SPORT2_DTPRI, P_SPORT2_TSCLK, P_SPORT2_RFS, | ||
355 | P_SPORT2_DRPRI, P_SPORT2_RSCLK, P_SPORT2_DRSEC, P_SPORT2_DTSEC, 0 | ||
356 | }; | ||
357 | |||
358 | static struct platform_device bfin_sport2_uart_device = { | ||
359 | .name = "bfin-sport-uart", | ||
360 | .id = 2, | ||
361 | .num_resources = ARRAY_SIZE(bfin_sport2_uart_resources), | ||
362 | .resource = bfin_sport2_uart_resources, | ||
363 | .dev = { | ||
364 | .platform_data = &bfin_sport2_peripherals, /* Passed to driver */ | ||
365 | }, | ||
366 | }; | ||
367 | #endif | ||
368 | #ifdef CONFIG_SERIAL_BFIN_SPORT3_UART | ||
369 | static struct resource bfin_sport3_uart_resources[] = { | ||
370 | { | ||
371 | .start = SPORT3_TCR1, | ||
372 | .end = SPORT3_MRCS3+4, | ||
373 | .flags = IORESOURCE_MEM, | ||
374 | }, | ||
375 | { | ||
376 | .start = IRQ_SPORT3_RX, | ||
377 | .end = IRQ_SPORT3_RX+1, | ||
378 | .flags = IORESOURCE_IRQ, | ||
379 | }, | ||
380 | { | ||
381 | .start = IRQ_SPORT3_ERROR, | ||
382 | .end = IRQ_SPORT3_ERROR, | ||
383 | .flags = IORESOURCE_IRQ, | ||
384 | }, | ||
385 | }; | ||
386 | |||
387 | unsigned short bfin_sport3_peripherals[] = { | ||
388 | P_SPORT3_TFS, P_SPORT3_DTPRI, P_SPORT3_TSCLK, P_SPORT3_RFS, | ||
389 | P_SPORT3_DRPRI, P_SPORT3_RSCLK, P_SPORT3_DRSEC, P_SPORT3_DTSEC, 0 | ||
390 | }; | ||
391 | |||
392 | static struct platform_device bfin_sport3_uart_device = { | ||
393 | .name = "bfin-sport-uart", | ||
394 | .id = 3, | ||
395 | .num_resources = ARRAY_SIZE(bfin_sport3_uart_resources), | ||
396 | .resource = bfin_sport3_uart_resources, | ||
397 | .dev = { | ||
398 | .platform_data = &bfin_sport3_peripherals, /* Passed to driver */ | ||
399 | }, | ||
400 | }; | ||
401 | #endif | ||
402 | #endif | ||
403 | |||
154 | #if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE) | 404 | #if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE) |
155 | unsigned short bfin_can_peripherals[] = { | 405 | unsigned short bfin_can_peripherals[] = { |
156 | P_CAN0_RX, P_CAN0_TX, 0 | 406 | P_CAN0_RX, P_CAN0_TX, 0 |
@@ -268,8 +518,8 @@ static const struct ad7879_platform_data bfin_ad7879_ts_info = { | |||
268 | .median = 2, /* do 8 measurements */ | 518 | .median = 2, /* do 8 measurements */ |
269 | .averaging = 1, /* take the average of 4 middle samples */ | 519 | .averaging = 1, /* take the average of 4 middle samples */ |
270 | .pen_down_acc_interval = 255, /* 9.4 ms */ | 520 | .pen_down_acc_interval = 255, /* 9.4 ms */ |
271 | .gpio_output = 1, /* configure AUX/VBAT/GPIO as GPIO output */ | 521 | .gpio_export = 1, /* Export GPIO to gpiolib */ |
272 | .gpio_default = 1, /* During initialization set GPIO = HIGH */ | 522 | .gpio_base = -1, /* Dynamic allocation */ |
273 | }; | 523 | }; |
274 | #endif | 524 | #endif |
275 | 525 | ||
@@ -284,9 +534,10 @@ static struct bfin5xx_spi_chip spi_ad7879_chip_info = { | |||
284 | #include <asm/bfin-lq035q1.h> | 534 | #include <asm/bfin-lq035q1.h> |
285 | 535 | ||
286 | static struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = { | 536 | static struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = { |
287 | .mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB, | 537 | .mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB, |
288 | .use_bl = 0, /* let something else control the LCD Blacklight */ | 538 | .ppi_mode = USE_RGB565_16_BIT_PPI, |
289 | .gpio_bl = GPIO_PF7, | 539 | .use_bl = 0, /* let something else control the LCD Blacklight */ |
540 | .gpio_bl = GPIO_PF7, | ||
290 | }; | 541 | }; |
291 | 542 | ||
292 | static struct resource bfin_lq035q1_resources[] = { | 543 | static struct resource bfin_lq035q1_resources[] = { |
@@ -622,7 +873,15 @@ static struct platform_device *cm_bf538_devices[] __initdata = { | |||
622 | #endif | 873 | #endif |
623 | 874 | ||
624 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | 875 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) |
625 | &bfin_uart_device, | 876 | #ifdef CONFIG_SERIAL_BFIN_UART0 |
877 | &bfin_uart0_device, | ||
878 | #endif | ||
879 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
880 | &bfin_uart1_device, | ||
881 | #endif | ||
882 | #ifdef CONFIG_SERIAL_BFIN_UART2 | ||
883 | &bfin_uart2_device, | ||
884 | #endif | ||
626 | #endif | 885 | #endif |
627 | 886 | ||
628 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 887 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
@@ -648,6 +907,21 @@ static struct platform_device *cm_bf538_devices[] __initdata = { | |||
648 | #endif | 907 | #endif |
649 | #endif | 908 | #endif |
650 | 909 | ||
910 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | ||
911 | #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART | ||
912 | &bfin_sport0_uart_device, | ||
913 | #endif | ||
914 | #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART | ||
915 | &bfin_sport1_uart_device, | ||
916 | #endif | ||
917 | #ifdef CONFIG_SERIAL_BFIN_SPORT2_UART | ||
918 | &bfin_sport2_uart_device, | ||
919 | #endif | ||
920 | #ifdef CONFIG_SERIAL_BFIN_SPORT3_UART | ||
921 | &bfin_sport3_uart_device, | ||
922 | #endif | ||
923 | #endif | ||
924 | |||
651 | #if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE) | 925 | #if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE) |
652 | &bfin_can_device, | 926 | &bfin_can_device, |
653 | #endif | 927 | #endif |
@@ -683,3 +957,39 @@ static int __init ezkit_init(void) | |||
683 | } | 957 | } |
684 | 958 | ||
685 | arch_initcall(ezkit_init); | 959 | arch_initcall(ezkit_init); |
960 | |||
961 | static struct platform_device *ezkit_early_devices[] __initdata = { | ||
962 | #if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK) | ||
963 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
964 | &bfin_uart0_device, | ||
965 | #endif | ||
966 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
967 | &bfin_uart1_device, | ||
968 | #endif | ||
969 | #ifdef CONFIG_SERIAL_BFIN_UART2 | ||
970 | &bfin_uart2_device, | ||
971 | #endif | ||
972 | #endif | ||
973 | |||
974 | #if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE) | ||
975 | #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART | ||
976 | &bfin_sport0_uart_device, | ||
977 | #endif | ||
978 | #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART | ||
979 | &bfin_sport1_uart_device, | ||
980 | #endif | ||
981 | #ifdef CONFIG_SERIAL_BFIN_SPORT2_UART | ||
982 | &bfin_sport2_uart_device, | ||
983 | #endif | ||
984 | #ifdef CONFIG_SERIAL_BFIN_SPORT3_UART | ||
985 | &bfin_sport3_uart_device, | ||
986 | #endif | ||
987 | #endif | ||
988 | }; | ||
989 | |||
990 | void __init native_machine_early_platform_add_devices(void) | ||
991 | { | ||
992 | printk(KERN_INFO "register early platform devices\n"); | ||
993 | early_platform_add_devices(ezkit_early_devices, | ||
994 | ARRAY_SIZE(ezkit_early_devices)); | ||
995 | } | ||