diff options
Diffstat (limited to 'arch/blackfin/mach-bf561/boards/cm_bf561.c')
-rw-r--r-- | arch/blackfin/mach-bf561/boards/cm_bf561.c | 84 |
1 files changed, 73 insertions, 11 deletions
diff --git a/arch/blackfin/mach-bf561/boards/cm_bf561.c b/arch/blackfin/mach-bf561/boards/cm_bf561.c index 5b2b544529a1..cd827a1b6ba1 100644 --- a/arch/blackfin/mach-bf561/boards/cm_bf561.c +++ b/arch/blackfin/mach-bf561/boards/cm_bf561.c | |||
@@ -34,7 +34,9 @@ | |||
34 | #include <linux/spi/spi.h> | 34 | #include <linux/spi/spi.h> |
35 | #include <linux/spi/flash.h> | 35 | #include <linux/spi/flash.h> |
36 | #include <linux/usb_isp1362.h> | 36 | #include <linux/usb_isp1362.h> |
37 | #include <linux/pata_platform.h> | ||
37 | #include <linux/irq.h> | 38 | #include <linux/irq.h> |
39 | #include <asm/dma.h> | ||
38 | #include <asm/bfin5xx_spi.h> | 40 | #include <asm/bfin5xx_spi.h> |
39 | 41 | ||
40 | /* | 42 | /* |
@@ -112,7 +114,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
112 | /* the modalias must be the same as spi device driver name */ | 114 | /* the modalias must be the same as spi device driver name */ |
113 | .modalias = "m25p80", /* Name of spi_driver for this device */ | 115 | .modalias = "m25p80", /* Name of spi_driver for this device */ |
114 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | 116 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ |
115 | .bus_num = 1, /* Framework bus number */ | 117 | .bus_num = 0, /* Framework bus number */ |
116 | .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/ | 118 | .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/ |
117 | .platform_data = &bfin_spi_flash_data, | 119 | .platform_data = &bfin_spi_flash_data, |
118 | .controller_data = &spi_flash_chip_info, | 120 | .controller_data = &spi_flash_chip_info, |
@@ -124,7 +126,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
124 | { | 126 | { |
125 | .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ | 127 | .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ |
126 | .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ | 128 | .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ |
127 | .bus_num = 1, /* Framework bus number */ | 129 | .bus_num = 0, /* Framework bus number */ |
128 | .chip_select = 1, /* Framework chip select. */ | 130 | .chip_select = 1, /* Framework chip select. */ |
129 | .platform_data = NULL, /* No spi_driver specific config */ | 131 | .platform_data = NULL, /* No spi_driver specific config */ |
130 | .controller_data = &spi_adc_chip_info, | 132 | .controller_data = &spi_adc_chip_info, |
@@ -135,7 +137,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
135 | { | 137 | { |
136 | .modalias = "ad1836-spi", | 138 | .modalias = "ad1836-spi", |
137 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 139 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
138 | .bus_num = 1, | 140 | .bus_num = 0, |
139 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 141 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, |
140 | .controller_data = &ad1836_spi_chip_info, | 142 | .controller_data = &ad1836_spi_chip_info, |
141 | }, | 143 | }, |
@@ -144,7 +146,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
144 | { | 146 | { |
145 | .modalias = "ad9960-spi", | 147 | .modalias = "ad9960-spi", |
146 | .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */ | 148 | .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */ |
147 | .bus_num = 1, | 149 | .bus_num = 0, |
148 | .chip_select = 1, | 150 | .chip_select = 1, |
149 | .controller_data = &ad9960_spi_chip_info, | 151 | .controller_data = &ad9960_spi_chip_info, |
150 | }, | 152 | }, |
@@ -153,7 +155,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
153 | { | 155 | { |
154 | .modalias = "spi_mmc", | 156 | .modalias = "spi_mmc", |
155 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | 157 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ |
156 | .bus_num = 1, | 158 | .bus_num = 0, |
157 | .chip_select = CONFIG_SPI_MMC_CS_CHAN, | 159 | .chip_select = CONFIG_SPI_MMC_CS_CHAN, |
158 | .platform_data = NULL, | 160 | .platform_data = NULL, |
159 | .controller_data = &spi_mmc_chip_info, | 161 | .controller_data = &spi_mmc_chip_info, |
@@ -162,17 +164,33 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
162 | #endif | 164 | #endif |
163 | }; | 165 | }; |
164 | 166 | ||
167 | /* SPI (0) */ | ||
168 | static struct resource bfin_spi0_resource[] = { | ||
169 | [0] = { | ||
170 | .start = SPI0_REGBASE, | ||
171 | .end = SPI0_REGBASE + 0xFF, | ||
172 | .flags = IORESOURCE_MEM, | ||
173 | }, | ||
174 | [1] = { | ||
175 | .start = CH_SPI, | ||
176 | .end = CH_SPI, | ||
177 | .flags = IORESOURCE_IRQ, | ||
178 | } | ||
179 | }; | ||
180 | |||
165 | /* SPI controller data */ | 181 | /* SPI controller data */ |
166 | static struct bfin5xx_spi_master spi_bfin_master_info = { | 182 | static struct bfin5xx_spi_master bfin_spi0_info = { |
167 | .num_chipselect = 8, | 183 | .num_chipselect = 8, |
168 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 184 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
169 | }; | 185 | }; |
170 | 186 | ||
171 | static struct platform_device spi_bfin_master_device = { | 187 | static struct platform_device bfin_spi0_device = { |
172 | .name = "bfin-spi-master", | 188 | .name = "bfin-spi", |
173 | .id = 1, /* Bus number */ | 189 | .id = 0, /* Bus number */ |
190 | .num_resources = ARRAY_SIZE(bfin_spi0_resource), | ||
191 | .resource = bfin_spi0_resource, | ||
174 | .dev = { | 192 | .dev = { |
175 | .platform_data = &spi_bfin_master_info, /* Passed to driver */ | 193 | .platform_data = &bfin_spi0_info, /* Passed to driver */ |
176 | }, | 194 | }, |
177 | }; | 195 | }; |
178 | #endif /* spi master and devices */ | 196 | #endif /* spi master and devices */ |
@@ -256,6 +274,43 @@ static struct platform_device bfin_uart_device = { | |||
256 | }; | 274 | }; |
257 | #endif | 275 | #endif |
258 | 276 | ||
277 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | ||
278 | #define PATA_INT 119 | ||
279 | |||
280 | static struct pata_platform_info bfin_pata_platform_data = { | ||
281 | .ioport_shift = 2, | ||
282 | .irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED, | ||
283 | }; | ||
284 | |||
285 | static struct resource bfin_pata_resources[] = { | ||
286 | { | ||
287 | .start = 0x2400C000, | ||
288 | .end = 0x2400C001F, | ||
289 | .flags = IORESOURCE_MEM, | ||
290 | }, | ||
291 | { | ||
292 | .start = 0x2400D018, | ||
293 | .end = 0x2400D01B, | ||
294 | .flags = IORESOURCE_MEM, | ||
295 | }, | ||
296 | { | ||
297 | .start = PATA_INT, | ||
298 | .end = PATA_INT, | ||
299 | .flags = IORESOURCE_IRQ, | ||
300 | }, | ||
301 | }; | ||
302 | |||
303 | static struct platform_device bfin_pata_device = { | ||
304 | .name = "pata_platform", | ||
305 | .id = -1, | ||
306 | .num_resources = ARRAY_SIZE(bfin_pata_resources), | ||
307 | .resource = bfin_pata_resources, | ||
308 | .dev = { | ||
309 | .platform_data = &bfin_pata_platform_data, | ||
310 | } | ||
311 | }; | ||
312 | #endif | ||
313 | |||
259 | static struct platform_device *cm_bf561_devices[] __initdata = { | 314 | static struct platform_device *cm_bf561_devices[] __initdata = { |
260 | 315 | ||
261 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | 316 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) |
@@ -271,9 +326,12 @@ static struct platform_device *cm_bf561_devices[] __initdata = { | |||
271 | #endif | 326 | #endif |
272 | 327 | ||
273 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 328 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
274 | &spi_bfin_master_device, | 329 | &bfin_spi0_device, |
275 | #endif | 330 | #endif |
276 | 331 | ||
332 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | ||
333 | &bfin_pata_device, | ||
334 | #endif | ||
277 | }; | 335 | }; |
278 | 336 | ||
279 | static int __init cm_bf561_init(void) | 337 | static int __init cm_bf561_init(void) |
@@ -283,6 +341,10 @@ static int __init cm_bf561_init(void) | |||
283 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 341 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
284 | spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); | 342 | spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); |
285 | #endif | 343 | #endif |
344 | |||
345 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | ||
346 | irq_desc[PATA_INT].status |= IRQ_NOAUTOEN; | ||
347 | #endif | ||
286 | return 0; | 348 | return 0; |
287 | } | 349 | } |
288 | 350 | ||