diff options
Diffstat (limited to 'arch/arm/mach-realview/realview_pb1176.c')
| -rw-r--r-- | arch/arm/mach-realview/realview_pb1176.c | 46 |
1 files changed, 36 insertions, 10 deletions
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c index 099a1f125cf8..d2be12eb829e 100644 --- a/arch/arm/mach-realview/realview_pb1176.c +++ b/arch/arm/mach-realview/realview_pb1176.c | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | #include <linux/amba/bus.h> | 25 | #include <linux/amba/bus.h> |
| 26 | #include <linux/amba/pl061.h> | 26 | #include <linux/amba/pl061.h> |
| 27 | #include <linux/amba/mmci.h> | 27 | #include <linux/amba/mmci.h> |
| 28 | #include <linux/amba/pl022.h> | ||
| 28 | #include <linux/io.h> | 29 | #include <linux/io.h> |
| 29 | 30 | ||
| 30 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
| @@ -123,6 +124,12 @@ static struct pl061_platform_data gpio2_plat_data = { | |||
| 123 | .irq_base = -1, | 124 | .irq_base = -1, |
| 124 | }; | 125 | }; |
| 125 | 126 | ||
| 127 | static struct pl022_ssp_controller ssp0_plat_data = { | ||
| 128 | .bus_id = 0, | ||
| 129 | .enable_dma = 0, | ||
| 130 | .num_chipselect = 1, | ||
| 131 | }; | ||
| 132 | |||
| 126 | /* | 133 | /* |
| 127 | * RealView PB1176 AMBA devices | 134 | * RealView PB1176 AMBA devices |
| 128 | */ | 135 | */ |
| @@ -144,8 +151,6 @@ static struct pl061_platform_data gpio2_plat_data = { | |||
| 144 | #define MPMC_DMA { 0, 0 } | 151 | #define MPMC_DMA { 0, 0 } |
| 145 | #define PB1176_CLCD_IRQ { IRQ_DC1176_CLCD, NO_IRQ } | 152 | #define PB1176_CLCD_IRQ { IRQ_DC1176_CLCD, NO_IRQ } |
| 146 | #define PB1176_CLCD_DMA { 0, 0 } | 153 | #define PB1176_CLCD_DMA { 0, 0 } |
| 147 | #define DMAC_IRQ { IRQ_PB1176_DMAC, NO_IRQ } | ||
| 148 | #define DMAC_DMA { 0, 0 } | ||
| 149 | #define SCTL_IRQ { NO_IRQ, NO_IRQ } | 154 | #define SCTL_IRQ { NO_IRQ, NO_IRQ } |
| 150 | #define SCTL_DMA { 0, 0 } | 155 | #define SCTL_DMA { 0, 0 } |
| 151 | #define PB1176_WATCHDOG_IRQ { IRQ_DC1176_WATCHDOG, NO_IRQ } | 156 | #define PB1176_WATCHDOG_IRQ { IRQ_DC1176_WATCHDOG, NO_IRQ } |
| @@ -166,7 +171,9 @@ static struct pl061_platform_data gpio2_plat_data = { | |||
| 166 | #define PB1176_UART2_DMA { 11, 10 } | 171 | #define PB1176_UART2_DMA { 11, 10 } |
| 167 | #define PB1176_UART3_IRQ { IRQ_DC1176_UART3, NO_IRQ } | 172 | #define PB1176_UART3_IRQ { IRQ_DC1176_UART3, NO_IRQ } |
| 168 | #define PB1176_UART3_DMA { 0x86, 0x87 } | 173 | #define PB1176_UART3_DMA { 0x86, 0x87 } |
| 169 | #define PB1176_SSP_IRQ { IRQ_PB1176_SSP, NO_IRQ } | 174 | #define PB1176_UART4_IRQ { IRQ_PB1176_UART4, NO_IRQ } |
| 175 | #define PB1176_UART4_DMA { 0, 0 } | ||
| 176 | #define PB1176_SSP_IRQ { IRQ_DC1176_SSP, NO_IRQ } | ||
| 170 | #define PB1176_SSP_DMA { 9, 8 } | 177 | #define PB1176_SSP_DMA { 9, 8 } |
| 171 | 178 | ||
| 172 | /* FPGA Primecells */ | 179 | /* FPGA Primecells */ |
| @@ -174,7 +181,7 @@ AMBA_DEVICE(aaci, "fpga:aaci", AACI, NULL); | |||
| 174 | AMBA_DEVICE(mmc0, "fpga:mmc0", MMCI0, &realview_mmc0_plat_data); | 181 | AMBA_DEVICE(mmc0, "fpga:mmc0", MMCI0, &realview_mmc0_plat_data); |
| 175 | AMBA_DEVICE(kmi0, "fpga:kmi0", KMI0, NULL); | 182 | AMBA_DEVICE(kmi0, "fpga:kmi0", KMI0, NULL); |
| 176 | AMBA_DEVICE(kmi1, "fpga:kmi1", KMI1, NULL); | 183 | AMBA_DEVICE(kmi1, "fpga:kmi1", KMI1, NULL); |
| 177 | AMBA_DEVICE(uart3, "fpga:uart3", PB1176_UART3, NULL); | 184 | AMBA_DEVICE(uart4, "fpga:uart4", PB1176_UART4, NULL); |
| 178 | 185 | ||
| 179 | /* DevChip Primecells */ | 186 | /* DevChip Primecells */ |
| 180 | AMBA_DEVICE(smc, "dev:smc", PB1176_SMC, NULL); | 187 | AMBA_DEVICE(smc, "dev:smc", PB1176_SMC, NULL); |
| @@ -188,18 +195,16 @@ AMBA_DEVICE(sci0, "dev:sci0", SCI, NULL); | |||
| 188 | AMBA_DEVICE(uart0, "dev:uart0", PB1176_UART0, NULL); | 195 | AMBA_DEVICE(uart0, "dev:uart0", PB1176_UART0, NULL); |
| 189 | AMBA_DEVICE(uart1, "dev:uart1", PB1176_UART1, NULL); | 196 | AMBA_DEVICE(uart1, "dev:uart1", PB1176_UART1, NULL); |
| 190 | AMBA_DEVICE(uart2, "dev:uart2", PB1176_UART2, NULL); | 197 | AMBA_DEVICE(uart2, "dev:uart2", PB1176_UART2, NULL); |
| 191 | AMBA_DEVICE(ssp0, "dev:ssp0", PB1176_SSP, NULL); | 198 | AMBA_DEVICE(uart3, "dev:uart3", PB1176_UART3, NULL); |
| 192 | 199 | AMBA_DEVICE(ssp0, "dev:ssp0", PB1176_SSP, &ssp0_plat_data); | |
| 193 | /* Primecells on the NEC ISSP chip */ | 200 | AMBA_DEVICE(clcd, "dev:clcd", PB1176_CLCD, &clcd_plat_data); |
| 194 | AMBA_DEVICE(clcd, "issp:clcd", PB1176_CLCD, &clcd_plat_data); | ||
| 195 | //AMBA_DEVICE(dmac, "issp:dmac", PB1176_DMAC, NULL); | ||
| 196 | 201 | ||
| 197 | static struct amba_device *amba_devs[] __initdata = { | 202 | static struct amba_device *amba_devs[] __initdata = { |
| 198 | // &dmac_device, | ||
| 199 | &uart0_device, | 203 | &uart0_device, |
| 200 | &uart1_device, | 204 | &uart1_device, |
| 201 | &uart2_device, | 205 | &uart2_device, |
| 202 | &uart3_device, | 206 | &uart3_device, |
| 207 | &uart4_device, | ||
| 203 | &smc_device, | 208 | &smc_device, |
| 204 | &clcd_device, | 209 | &clcd_device, |
| 205 | &sctl_device, | 210 | &sctl_device, |
| @@ -276,6 +281,26 @@ static struct platform_device pmu_device = { | |||
| 276 | .resource = &pmu_resource, | 281 | .resource = &pmu_resource, |
| 277 | }; | 282 | }; |
| 278 | 283 | ||
| 284 | static struct resource char_lcd_resources[] = { | ||
| 285 | { | ||
| 286 | .start = REALVIEW_CHAR_LCD_BASE, | ||
| 287 | .end = (REALVIEW_CHAR_LCD_BASE + SZ_4K - 1), | ||
| 288 | .flags = IORESOURCE_MEM, | ||
| 289 | }, | ||
| 290 | { | ||
| 291 | .start = IRQ_PB1176_CHARLCD, | ||
| 292 | .end = IRQ_PB1176_CHARLCD, | ||
| 293 | .flags = IORESOURCE_IRQ, | ||
| 294 | }, | ||
| 295 | }; | ||
| 296 | |||
| 297 | static struct platform_device char_lcd_device = { | ||
| 298 | .name = "arm-charlcd", | ||
| 299 | .id = -1, | ||
| 300 | .num_resources = ARRAY_SIZE(char_lcd_resources), | ||
| 301 | .resource = char_lcd_resources, | ||
| 302 | }; | ||
| 303 | |||
| 279 | static void __init gic_init_irq(void) | 304 | static void __init gic_init_irq(void) |
| 280 | { | 305 | { |
| 281 | /* ARM1176 DevChip GIC, primary */ | 306 | /* ARM1176 DevChip GIC, primary */ |
| @@ -338,6 +363,7 @@ static void __init realview_pb1176_init(void) | |||
| 338 | platform_device_register(&realview_i2c_device); | 363 | platform_device_register(&realview_i2c_device); |
| 339 | realview_usb_register(realview_pb1176_isp1761_resources); | 364 | realview_usb_register(realview_pb1176_isp1761_resources); |
| 340 | platform_device_register(&pmu_device); | 365 | platform_device_register(&pmu_device); |
| 366 | platform_device_register(&char_lcd_device); | ||
| 341 | 367 | ||
| 342 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | 368 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { |
| 343 | struct amba_device *d = amba_devs[i]; | 369 | struct amba_device *d = amba_devs[i]; |
