diff options
Diffstat (limited to 'arch/blackfin/mach-bf518/boards/ezbrd.c')
-rw-r--r-- | arch/blackfin/mach-bf518/boards/ezbrd.c | 59 |
1 files changed, 52 insertions, 7 deletions
diff --git a/arch/blackfin/mach-bf518/boards/ezbrd.c b/arch/blackfin/mach-bf518/boards/ezbrd.c index 15f1351c8645..0e175342112e 100644 --- a/arch/blackfin/mach-bf518/boards/ezbrd.c +++ b/arch/blackfin/mach-bf518/boards/ezbrd.c | |||
@@ -46,6 +46,7 @@ | |||
46 | #include <asm/dpmc.h> | 46 | #include <asm/dpmc.h> |
47 | #include <asm/bfin_sdh.h> | 47 | #include <asm/bfin_sdh.h> |
48 | #include <linux/spi/ad7877.h> | 48 | #include <linux/spi/ad7877.h> |
49 | #include <net/dsa.h> | ||
49 | 50 | ||
50 | /* | 51 | /* |
51 | * Name the Board for the /proc/cpuinfo | 52 | * Name the Board for the /proc/cpuinfo |
@@ -104,8 +105,31 @@ static struct platform_device rtc_device = { | |||
104 | #endif | 105 | #endif |
105 | 106 | ||
106 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) | 107 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) |
108 | static struct platform_device bfin_mii_bus = { | ||
109 | .name = "bfin_mii_bus", | ||
110 | }; | ||
111 | |||
107 | static struct platform_device bfin_mac_device = { | 112 | static struct platform_device bfin_mac_device = { |
108 | .name = "bfin_mac", | 113 | .name = "bfin_mac", |
114 | .dev.platform_data = &bfin_mii_bus, | ||
115 | }; | ||
116 | #endif | ||
117 | |||
118 | #if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE) | ||
119 | static struct dsa_platform_data ksz8893m_switch_data = { | ||
120 | .mii_bus = &bfin_mii_bus.dev, | ||
121 | .netdev = &bfin_mac_device.dev, | ||
122 | .port_names[0] = NULL, | ||
123 | .port_names[1] = "eth%d", | ||
124 | .port_names[2] = "eth%d", | ||
125 | .port_names[3] = "cpu", | ||
126 | }; | ||
127 | |||
128 | static struct platform_device ksz8893m_switch_device = { | ||
129 | .name = "dsa", | ||
130 | .id = 0, | ||
131 | .num_resources = 0, | ||
132 | .dev.platform_data = &ksz8893m_switch_data, | ||
109 | }; | 133 | }; |
110 | #endif | 134 | #endif |
111 | 135 | ||
@@ -147,6 +171,15 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
147 | }; | 171 | }; |
148 | #endif | 172 | #endif |
149 | 173 | ||
174 | #if defined(CONFIG_NET_DSA_KSZ8893M) \ | ||
175 | || defined(CONFIG_NET_DSA_KSZ8893M_MODULE) | ||
176 | /* SPI SWITCH CHIP */ | ||
177 | static struct bfin5xx_spi_chip spi_switch_info = { | ||
178 | .enable_dma = 0, | ||
179 | .bits_per_word = 8, | ||
180 | }; | ||
181 | #endif | ||
182 | |||
150 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) | 183 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) |
151 | static struct bfin5xx_spi_chip spi_mmc_chip_info = { | 184 | static struct bfin5xx_spi_chip spi_mmc_chip_info = { |
152 | .enable_dma = 1, | 185 | .enable_dma = 1, |
@@ -226,6 +259,19 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
226 | }, | 259 | }, |
227 | #endif | 260 | #endif |
228 | 261 | ||
262 | #if defined(CONFIG_NET_DSA_KSZ8893M) \ | ||
263 | || defined(CONFIG_NET_DSA_KSZ8893M_MODULE) | ||
264 | { | ||
265 | .modalias = "ksz8893m", | ||
266 | .max_speed_hz = 5000000, | ||
267 | .bus_num = 0, | ||
268 | .chip_select = 1, | ||
269 | .platform_data = NULL, | ||
270 | .controller_data = &spi_switch_info, | ||
271 | .mode = SPI_MODE_3, | ||
272 | }, | ||
273 | #endif | ||
274 | |||
229 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) | 275 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) |
230 | { | 276 | { |
231 | .modalias = "spi_mmc_dummy", | 277 | .modalias = "spi_mmc_dummy", |
@@ -473,7 +519,6 @@ static struct platform_device i2c_bfin_twi_device = { | |||
473 | }; | 519 | }; |
474 | #endif | 520 | #endif |
475 | 521 | ||
476 | #ifdef CONFIG_I2C_BOARDINFO | ||
477 | static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | 522 | static struct i2c_board_info __initdata bfin_i2c_board_info[] = { |
478 | #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE) | 523 | #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE) |
479 | { | 524 | { |
@@ -487,7 +532,6 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | |||
487 | }, | 532 | }, |
488 | #endif | 533 | #endif |
489 | }; | 534 | }; |
490 | #endif | ||
491 | 535 | ||
492 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | 536 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) |
493 | static struct platform_device bfin_sport0_uart_device = { | 537 | static struct platform_device bfin_sport0_uart_device = { |
@@ -584,9 +628,14 @@ static struct platform_device *stamp_devices[] __initdata = { | |||
584 | #endif | 628 | #endif |
585 | 629 | ||
586 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) | 630 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) |
631 | &bfin_mii_bus, | ||
587 | &bfin_mac_device, | 632 | &bfin_mac_device, |
588 | #endif | 633 | #endif |
589 | 634 | ||
635 | #if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE) | ||
636 | &ksz8893m_switch_device, | ||
637 | #endif | ||
638 | |||
590 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 639 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
591 | &bfin_spi0_device, | 640 | &bfin_spi0_device, |
592 | &bfin_spi1_device, | 641 | &bfin_spi1_device, |
@@ -632,12 +681,8 @@ static struct platform_device *stamp_devices[] __initdata = { | |||
632 | static int __init ezbrd_init(void) | 681 | static int __init ezbrd_init(void) |
633 | { | 682 | { |
634 | printk(KERN_INFO "%s(): registering device resources\n", __func__); | 683 | printk(KERN_INFO "%s(): registering device resources\n", __func__); |
635 | |||
636 | #ifdef CONFIG_I2C_BOARDINFO | ||
637 | i2c_register_board_info(0, bfin_i2c_board_info, | 684 | i2c_register_board_info(0, bfin_i2c_board_info, |
638 | ARRAY_SIZE(bfin_i2c_board_info)); | 685 | ARRAY_SIZE(bfin_i2c_board_info)); |
639 | #endif | ||
640 | |||
641 | platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); | 686 | platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); |
642 | spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); | 687 | spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); |
643 | return 0; | 688 | return 0; |
@@ -649,7 +694,7 @@ void native_machine_restart(char *cmd) | |||
649 | { | 694 | { |
650 | /* workaround reboot hang when booting from SPI */ | 695 | /* workaround reboot hang when booting from SPI */ |
651 | if ((bfin_read_SYSCR() & 0x7) == 0x3) | 696 | if ((bfin_read_SYSCR() & 0x7) == 0x3) |
652 | bfin_gpio_reset_spi0_ssel1(); | 697 | bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS); |
653 | } | 698 | } |
654 | 699 | ||
655 | void bfin_get_ether_addr(char *addr) | 700 | void bfin_get_ether_addr(char *addr) |