]>
Commit | Line | Data |
---|---|---|
0a290593 | 1 | /* |
96f1050d RG |
2 | * Copyright 2004-2007 Analog Devices Inc. |
3 | * 2005 National ICT Australia (NICTA) | |
4 | * Aidan Williams <aidan@nicta.com.au> | |
0a290593 | 5 | * |
96f1050d | 6 | * Thanks to Jamey Hicks. |
0a290593 | 7 | * |
96f1050d | 8 | * Only SMSC91C1111 was registered, may do more later. |
0a290593 | 9 | * |
96f1050d | 10 | * Licensed under the GPL-2 |
0a290593 MF |
11 | */ |
12 | ||
13 | #include <linux/device.h> | |
14 | #include <linux/platform_device.h> | |
1f83b8f1 | 15 | #include <linux/irq.h> |
0a290593 | 16 | |
066954a3 | 17 | const char bfin_board_name[] = "Tepla-BF561"; |
0a290593 MF |
18 | |
19 | /* | |
20 | * Driver needs to know address, irq and flag pin. | |
21 | */ | |
22 | static struct resource smc91x_resources[] = { | |
23 | { | |
24 | .start = 0x2C000300, | |
25 | .end = 0x2C000320, | |
26 | .flags = IORESOURCE_MEM, | |
1f83b8f1 | 27 | }, { |
0a290593 MF |
28 | .start = IRQ_PROG_INTB, |
29 | .end = IRQ_PROG_INTB, | |
30 | .flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL, | |
1f83b8f1 | 31 | }, { |
0a290593 MF |
32 | .start = IRQ_PF7, |
33 | .end = IRQ_PF7, | |
34 | .flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL, | |
35 | }, | |
36 | }; | |
37 | ||
38 | static struct platform_device smc91x_device = { | |
39 | .name = "smc91x", | |
40 | .id = 0, | |
41 | .num_resources = ARRAY_SIZE(smc91x_resources), | |
42 | .resource = smc91x_resources, | |
43 | }; | |
44 | ||
6bd1fbea SZ |
45 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) |
46 | #ifdef CONFIG_SERIAL_BFIN_UART0 | |
47 | static struct resource bfin_uart0_resources[] = { | |
48 | { | |
49 | .start = BFIN_UART_THR, | |
50 | .end = BFIN_UART_GCTL+2, | |
51 | .flags = IORESOURCE_MEM, | |
52 | }, | |
53 | { | |
54 | .start = IRQ_UART_RX, | |
55 | .end = IRQ_UART_RX+1, | |
56 | .flags = IORESOURCE_IRQ, | |
57 | }, | |
58 | { | |
59 | .start = IRQ_UART_ERROR, | |
60 | .end = IRQ_UART_ERROR, | |
61 | .flags = IORESOURCE_IRQ, | |
62 | }, | |
63 | { | |
64 | .start = CH_UART_TX, | |
65 | .end = CH_UART_TX, | |
66 | .flags = IORESOURCE_DMA, | |
67 | }, | |
68 | { | |
69 | .start = CH_UART_RX, | |
70 | .end = CH_UART_RX, | |
71 | .flags = IORESOURCE_DMA, | |
72 | }, | |
73 | }; | |
74 | ||
75 | unsigned short bfin_uart0_peripherals[] = { | |
76 | P_UART0_TX, P_UART0_RX, 0 | |
77 | }; | |
78 | ||
79 | static struct platform_device bfin_uart0_device = { | |
80 | .name = "bfin-uart", | |
81 | .id = 0, | |
82 | .num_resources = ARRAY_SIZE(bfin_uart0_resources), | |
83 | .resource = bfin_uart0_resources, | |
84 | .dev = { | |
85 | .platform_data = &bfin_uart0_peripherals, /* Passed to driver */ | |
86 | }, | |
87 | }; | |
88 | #endif | |
89 | #endif | |
90 | ||
42bd8bcb GY |
91 | #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) |
92 | #ifdef CONFIG_BFIN_SIR0 | |
93 | static struct resource bfin_sir0_resources[] = { | |
94 | { | |
95 | .start = 0xFFC00400, | |
96 | .end = 0xFFC004FF, | |
97 | .flags = IORESOURCE_MEM, | |
98 | }, | |
99 | { | |
100 | .start = IRQ_UART0_RX, | |
101 | .end = IRQ_UART0_RX+1, | |
102 | .flags = IORESOURCE_IRQ, | |
103 | }, | |
104 | { | |
105 | .start = CH_UART0_RX, | |
106 | .end = CH_UART0_RX+1, | |
107 | .flags = IORESOURCE_DMA, | |
108 | }, | |
109 | }; | |
110 | ||
111 | static struct platform_device bfin_sir0_device = { | |
112 | .name = "bfin_sir", | |
113 | .id = 0, | |
114 | .num_resources = ARRAY_SIZE(bfin_sir0_resources), | |
115 | .resource = bfin_sir0_resources, | |
116 | }; | |
117 | #endif | |
118 | #endif | |
119 | ||
0a290593 MF |
120 | static struct platform_device *tepla_devices[] __initdata = { |
121 | &smc91x_device, | |
6bd1fbea SZ |
122 | |
123 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | |
124 | #ifdef CONFIG_SERIAL_BFIN_UART0 | |
125 | &bfin_uart0_device, | |
126 | #endif | |
127 | #endif | |
128 | ||
42bd8bcb GY |
129 | #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) |
130 | #ifdef CONFIG_BFIN_SIR0 | |
131 | &bfin_sir0_device, | |
132 | #endif | |
133 | #endif | |
0a290593 MF |
134 | }; |
135 | ||
136 | static int __init tepla_init(void) | |
137 | { | |
b85d858b | 138 | printk(KERN_INFO "%s(): registering device resources\n", __func__); |
0a290593 MF |
139 | return platform_add_devices(tepla_devices, ARRAY_SIZE(tepla_devices)); |
140 | } | |
141 | ||
142 | arch_initcall(tepla_init); |