diff options
Diffstat (limited to 'arch/arm/mach-versatile')
-rw-r--r-- | arch/arm/mach-versatile/core.c | 35 | ||||
-rw-r--r-- | arch/arm/mach-versatile/pci.c | 2 |
2 files changed, 34 insertions, 3 deletions
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 3dff8641b03f..e38acb0f89c8 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/amba/clcd.h> | 28 | #include <linux/amba/clcd.h> |
29 | #include <linux/amba/pl061.h> | 29 | #include <linux/amba/pl061.h> |
30 | #include <linux/amba/mmci.h> | 30 | #include <linux/amba/mmci.h> |
31 | #include <linux/amba/pl022.h> | ||
31 | #include <linux/io.h> | 32 | #include <linux/io.h> |
32 | #include <linux/gfp.h> | 33 | #include <linux/gfp.h> |
33 | 34 | ||
@@ -354,6 +355,21 @@ static struct mmci_platform_data mmc0_plat_data = { | |||
354 | .gpio_cd = -1, | 355 | .gpio_cd = -1, |
355 | }; | 356 | }; |
356 | 357 | ||
358 | static struct resource char_lcd_resources[] = { | ||
359 | { | ||
360 | .start = VERSATILE_CHAR_LCD_BASE, | ||
361 | .end = (VERSATILE_CHAR_LCD_BASE + SZ_4K - 1), | ||
362 | .flags = IORESOURCE_MEM, | ||
363 | }, | ||
364 | }; | ||
365 | |||
366 | static struct platform_device char_lcd_device = { | ||
367 | .name = "arm-charlcd", | ||
368 | .id = -1, | ||
369 | .num_resources = ARRAY_SIZE(char_lcd_resources), | ||
370 | .resource = char_lcd_resources, | ||
371 | }; | ||
372 | |||
357 | /* | 373 | /* |
358 | * Clock handling | 374 | * Clock handling |
359 | */ | 375 | */ |
@@ -400,8 +416,13 @@ static struct clk ref24_clk = { | |||
400 | .rate = 24000000, | 416 | .rate = 24000000, |
401 | }; | 417 | }; |
402 | 418 | ||
419 | static struct clk dummy_apb_pclk; | ||
420 | |||
403 | static struct clk_lookup lookups[] = { | 421 | static struct clk_lookup lookups[] = { |
404 | { /* UART0 */ | 422 | { /* AMBA bus clock */ |
423 | .con_id = "apb_pclk", | ||
424 | .clk = &dummy_apb_pclk, | ||
425 | }, { /* UART0 */ | ||
405 | .dev_id = "dev:f1", | 426 | .dev_id = "dev:f1", |
406 | .clk = &ref24_clk, | 427 | .clk = &ref24_clk, |
407 | }, { /* UART1 */ | 428 | }, { /* UART1 */ |
@@ -425,6 +446,9 @@ static struct clk_lookup lookups[] = { | |||
425 | }, { /* MMC1 */ | 446 | }, { /* MMC1 */ |
426 | .dev_id = "fpga:0b", | 447 | .dev_id = "fpga:0b", |
427 | .clk = &ref24_clk, | 448 | .clk = &ref24_clk, |
449 | }, { /* SSP */ | ||
450 | .dev_id = "dev:f4", | ||
451 | .clk = &ref24_clk, | ||
428 | }, { /* CLCD */ | 452 | }, { /* CLCD */ |
429 | .dev_id = "dev:20", | 453 | .dev_id = "dev:20", |
430 | .clk = &osc4_clk, | 454 | .clk = &osc4_clk, |
@@ -703,6 +727,12 @@ static struct pl061_platform_data gpio1_plat_data = { | |||
703 | .irq_base = IRQ_GPIO1_START, | 727 | .irq_base = IRQ_GPIO1_START, |
704 | }; | 728 | }; |
705 | 729 | ||
730 | static struct pl022_ssp_controller ssp0_plat_data = { | ||
731 | .bus_id = 0, | ||
732 | .enable_dma = 0, | ||
733 | .num_chipselect = 1, | ||
734 | }; | ||
735 | |||
706 | #define AACI_IRQ { IRQ_AACI, NO_IRQ } | 736 | #define AACI_IRQ { IRQ_AACI, NO_IRQ } |
707 | #define AACI_DMA { 0x80, 0x81 } | 737 | #define AACI_DMA { 0x80, 0x81 } |
708 | #define MMCI0_IRQ { IRQ_MMCI0A,IRQ_SIC_MMCI0B } | 738 | #define MMCI0_IRQ { IRQ_MMCI0A,IRQ_SIC_MMCI0B } |
@@ -772,7 +802,7 @@ AMBA_DEVICE(sci0, "dev:f0", SCI, NULL); | |||
772 | AMBA_DEVICE(uart0, "dev:f1", UART0, NULL); | 802 | AMBA_DEVICE(uart0, "dev:f1", UART0, NULL); |
773 | AMBA_DEVICE(uart1, "dev:f2", UART1, NULL); | 803 | AMBA_DEVICE(uart1, "dev:f2", UART1, NULL); |
774 | AMBA_DEVICE(uart2, "dev:f3", UART2, NULL); | 804 | AMBA_DEVICE(uart2, "dev:f3", UART2, NULL); |
775 | AMBA_DEVICE(ssp0, "dev:f4", SSP, NULL); | 805 | AMBA_DEVICE(ssp0, "dev:f4", SSP, &ssp0_plat_data); |
776 | 806 | ||
777 | static struct amba_device *amba_devs[] __initdata = { | 807 | static struct amba_device *amba_devs[] __initdata = { |
778 | &dmac_device, | 808 | &dmac_device, |
@@ -843,6 +873,7 @@ void __init versatile_init(void) | |||
843 | platform_device_register(&versatile_flash_device); | 873 | platform_device_register(&versatile_flash_device); |
844 | platform_device_register(&versatile_i2c_device); | 874 | platform_device_register(&versatile_i2c_device); |
845 | platform_device_register(&smc91x_device); | 875 | platform_device_register(&smc91x_device); |
876 | platform_device_register(&char_lcd_device); | ||
846 | 877 | ||
847 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | 878 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { |
848 | struct amba_device *d = amba_devs[i]; | 879 | struct amba_device *d = amba_devs[i]; |
diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c index 334f0df4e948..13c7e5f90a82 100644 --- a/arch/arm/mach-versatile/pci.c +++ b/arch/arm/mach-versatile/pci.c | |||
@@ -304,7 +304,7 @@ int __init pci_versatile_setup(int nr, struct pci_sys_data *sys) | |||
304 | } | 304 | } |
305 | 305 | ||
306 | 306 | ||
307 | struct pci_bus *pci_versatile_scan_bus(int nr, struct pci_sys_data *sys) | 307 | struct pci_bus * __init pci_versatile_scan_bus(int nr, struct pci_sys_data *sys) |
308 | { | 308 | { |
309 | return pci_scan_bus(sys->busnr, &pci_versatile_ops, sys); | 309 | return pci_scan_bus(sys->busnr, &pci_versatile_ops, sys); |
310 | } | 310 | } |