diff options
Diffstat (limited to 'arch/blackfin/mach-bf533/boards/H8606.c')
-rw-r--r-- | arch/blackfin/mach-bf533/boards/H8606.c | 83 |
1 files changed, 81 insertions, 2 deletions
diff --git a/arch/blackfin/mach-bf533/boards/H8606.c b/arch/blackfin/mach-bf533/boards/H8606.c index 6bcf4047f89c..a72c7a620fa1 100644 --- a/arch/blackfin/mach-bf533/boards/H8606.c +++ b/arch/blackfin/mach-bf533/boards/H8606.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #endif | 40 | #endif |
41 | #include <linux/pata_platform.h> | 41 | #include <linux/pata_platform.h> |
42 | #include <linux/irq.h> | 42 | #include <linux/irq.h> |
43 | |||
43 | #include <asm/dma.h> | 44 | #include <asm/dma.h> |
44 | #include <asm/bfin5xx_spi.h> | 45 | #include <asm/bfin5xx_spi.h> |
45 | #include <asm/reboot.h> | 46 | #include <asm/reboot.h> |
@@ -303,7 +304,77 @@ static struct platform_device bfin_uart_device = { | |||
303 | }; | 304 | }; |
304 | #endif | 305 | #endif |
305 | 306 | ||
306 | static struct platform_device *stamp_devices[] __initdata = { | 307 | #if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE) |
308 | |||
309 | #include <linux/serial_8250.h> | ||
310 | #include <linux/serial.h> | ||
311 | |||
312 | /* | ||
313 | * Configuration for two 16550 UARTS in FPGA at addresses 0x20200000 and 0x202000010. | ||
314 | * running at half system clock, both with interrupt output or-ed to PF8. Change to | ||
315 | * suit different FPGA configuration, or to suit real 16550 UARTS connected to the bus | ||
316 | */ | ||
317 | |||
318 | static struct plat_serial8250_port serial8250_platform_data [] = { | ||
319 | { | ||
320 | .membase = 0x20200000, | ||
321 | .mapbase = 0x20200000, | ||
322 | .irq = IRQ_PF8, | ||
323 | .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE, | ||
324 | .iotype = UPIO_MEM, | ||
325 | .regshift = 1, | ||
326 | .uartclk = 66666667, | ||
327 | }, { | ||
328 | .membase = 0x20200010, | ||
329 | .mapbase = 0x20200010, | ||
330 | .irq = IRQ_PF8, | ||
331 | .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE, | ||
332 | .iotype = UPIO_MEM, | ||
333 | .regshift = 1, | ||
334 | .uartclk = 66666667, | ||
335 | }, { | ||
336 | } | ||
337 | }; | ||
338 | |||
339 | static struct platform_device serial8250_device = { | ||
340 | .id = PLAT8250_DEV_PLATFORM, | ||
341 | .name = "serial8250", | ||
342 | .dev = { | ||
343 | .platform_data = serial8250_platform_data, | ||
344 | }, | ||
345 | }; | ||
346 | |||
347 | #endif | ||
348 | |||
349 | #if defined(CONFIG_KEYBOARD_OPENCORES) || defined(CONFIG_KEYBOARD_OPENCORES_MODULE) | ||
350 | |||
351 | /* | ||
352 | * Configuration for one OpenCores keyboard controller in FPGA at address 0x20200030, | ||
353 | * interrupt output wired to PF9. Change to suit different FPGA configuration | ||
354 | */ | ||
355 | |||
356 | static struct resource opencores_kbd_resources[] = { | ||
357 | [0] = { | ||
358 | .start = 0x20200030, | ||
359 | .end = 0x20300030 + 2, | ||
360 | .flags = IORESOURCE_MEM, | ||
361 | }, | ||
362 | [1] = { | ||
363 | .start = IRQ_PF9, | ||
364 | .end = IRQ_PF9, | ||
365 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, | ||
366 | }, | ||
367 | }; | ||
368 | |||
369 | static struct platform_device opencores_kbd_device = { | ||
370 | .id = -1, | ||
371 | .name = "opencores-kbd", | ||
372 | .resource = opencores_kbd_resources, | ||
373 | .num_resources = ARRAY_SIZE(opencores_kbd_resources), | ||
374 | }; | ||
375 | #endif | ||
376 | |||
377 | static struct platform_device *h8606_devices[] __initdata = { | ||
307 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | 378 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) |
308 | &rtc_device, | 379 | &rtc_device, |
309 | #endif | 380 | #endif |
@@ -327,13 +398,21 @@ static struct platform_device *stamp_devices[] __initdata = { | |||
327 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | 398 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) |
328 | &bfin_uart_device, | 399 | &bfin_uart_device, |
329 | #endif | 400 | #endif |
401 | |||
402 | #if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE) | ||
403 | &serial8250_device, | ||
404 | #endif | ||
405 | |||
406 | #if defined(CONFIG_KEYBOARD_OPENCORES) || defined(CONFIG_KEYBOARD_OPENCORES_MODULE) | ||
407 | &opencores_kbd_device, | ||
408 | #endif | ||
330 | }; | 409 | }; |
331 | 410 | ||
332 | static int __init H8606_init(void) | 411 | static int __init H8606_init(void) |
333 | { | 412 | { |
334 | printk(KERN_INFO "HV Sistemas H8606 board support by http://www.hvsistemas.com\n"); | 413 | printk(KERN_INFO "HV Sistemas H8606 board support by http://www.hvsistemas.com\n"); |
335 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); | 414 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); |
336 | platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); | 415 | platform_add_devices(h8606_devices, ARRAY_SIZE(h8606_devices)); |
337 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 416 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
338 | spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); | 417 | spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); |
339 | #endif | 418 | #endif |