aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68knommu
diff options
context:
space:
mode:
authorGreg Ungerer <gerg@uclinux.org>2009-06-12 02:17:20 -0400
committerGreg Ungerer <gerg@uclinux.org>2010-05-23 23:29:55 -0400
commit4a1479b6ec268d527b842878da59712620dca78c (patch)
treee008eae66d231c82ae0eae24791eea0fee3e20df /arch/m68knommu
parentcc24c405949e3d4418a90014d10166679d78141a (diff)
m68knommu: add smc91x support to ColdFire 5249 platform
The Freescale M5249EVB board is fitted with an SMC LAN91c11 ethernet device. Add platform support to the M5249EVB setup code to support this. Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Diffstat (limited to 'arch/m68knommu')
-rw-r--r--arch/m68knommu/platform/5249/config.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/arch/m68knommu/platform/5249/config.c b/arch/m68knommu/platform/5249/config.c
index 72fc4ae0e663..ceb31e5744a6 100644
--- a/arch/m68knommu/platform/5249/config.c
+++ b/arch/m68knommu/platform/5249/config.c
@@ -40,6 +40,30 @@ static struct platform_device m5249_uart = {
40 .dev.platform_data = m5249_uart_platform, 40 .dev.platform_data = m5249_uart_platform,
41}; 41};
42 42
43#ifdef CONFIG_M5249C3
44
45static struct resource m5249_smc91x_resources[] = {
46 {
47 .start = 0xe0000300,
48 .end = 0xe0000300 + 0x100,
49 .flags = IORESOURCE_MEM,
50 },
51 {
52 .start = MCFINTC2_GPIOIRQ6,
53 .end = MCFINTC2_GPIOIRQ6,
54 .flags = IORESOURCE_IRQ,
55 },
56};
57
58static struct platform_device m5249_smc91x = {
59 .name = "smc91x",
60 .id = 0,
61 .num_resources = ARRAY_SIZE(m5249_smc91x_resources),
62 .resource = m5249_smc91x_resources,
63};
64
65#endif /* CONFIG_M5249C3 */
66
43#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE) 67#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
44static struct resource m5249_qspi_resources[] = { 68static struct resource m5249_qspi_resources[] = {
45 { 69 {
@@ -200,6 +224,9 @@ static void __init m5249_qspi_init(void)
200 224
201static struct platform_device *m5249_devices[] __initdata = { 225static struct platform_device *m5249_devices[] __initdata = {
202 &m5249_uart, 226 &m5249_uart,
227#ifdef CONFIG_M5249C3
228 &m5249_smc91x,
229#endif
203#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE) 230#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
204 &m5249_qspi, 231 &m5249_qspi,
205#endif 232#endif
@@ -231,6 +258,24 @@ static void __init m5249_uarts_init(void)
231 258
232/***************************************************************************/ 259/***************************************************************************/
233 260
261#ifdef CONFIG_M5249C3
262
263static void __init m5249_smc91x_init(void)
264{
265 u32 gpio;
266
267 /* Set the GPIO line as interrupt source for smc91x device */
268 gpio = readl(MCF_MBAR2 + MCFSIM2_GPIOINTENABLE);
269 writel(gpio | 0x40, MCF_MBAR2 + MCFSIM2_GPIOINTENABLE);
270
271 gpio = readl(MCF_MBAR2 + MCFSIM2_INTLEVEL5);
272 writel(gpio | 0x04000000, MCF_MBAR2 + MCFSIM2_INTLEVEL5);
273}
274
275#endif /* CONFIG_M5249C3 */
276
277/***************************************************************************/
278
234static void __init m5249_timers_init(void) 279static void __init m5249_timers_init(void)
235{ 280{
236 /* Timer1 is always used as system timer */ 281 /* Timer1 is always used as system timer */
@@ -264,6 +309,9 @@ void __init config_BSP(char *commandp, int size)
264 mach_reset = m5249_cpu_reset; 309 mach_reset = m5249_cpu_reset;
265 m5249_timers_init(); 310 m5249_timers_init();
266 m5249_uarts_init(); 311 m5249_uarts_init();
312#ifdef CONFIG_M5249C3
313 m5249_smc91x_init();
314#endif
267#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE) 315#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
268 m5249_qspi_init(); 316 m5249_qspi_init();
269#endif 317#endif