diff options
| -rw-r--r-- | arch/avr32/boards/atstk1000/atstk1002.c | 31 | ||||
| -rw-r--r-- | arch/avr32/kernel/setup.c | 24 |
2 files changed, 23 insertions, 32 deletions
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c index cced73c58115..f65865cd9c3b 100644 --- a/arch/avr32/boards/atstk1000/atstk1002.c +++ b/arch/avr32/boards/atstk1000/atstk1002.c | |||
| @@ -8,19 +8,32 @@ | |||
| 8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
| 9 | */ | 9 | */ |
| 10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/string.h> | ||
| 13 | #include <linux/types.h> | ||
| 11 | 14 | ||
| 15 | #include <asm/setup.h> | ||
| 12 | #include <asm/arch/board.h> | 16 | #include <asm/arch/board.h> |
| 13 | #include <asm/arch/init.h> | 17 | #include <asm/arch/init.h> |
| 14 | 18 | ||
| 15 | struct eth_platform_data __initdata eth0_data = { | 19 | static struct eth_platform_data __initdata eth_data[2]; |
| 16 | .valid = 1, | ||
| 17 | .mii_phy_addr = 0x10, | ||
| 18 | .is_rmii = 0, | ||
| 19 | .hw_addr = { 0x6a, 0x87, 0x71, 0x14, 0xcd, 0xcb }, | ||
| 20 | }; | ||
| 21 | |||
| 22 | extern struct lcdc_platform_data atstk1000_fb0_data; | 20 | extern struct lcdc_platform_data atstk1000_fb0_data; |
| 23 | 21 | ||
| 22 | static int __init parse_tag_ethernet(struct tag *tag) | ||
| 23 | { | ||
| 24 | int i; | ||
| 25 | |||
| 26 | i = tag->u.ethernet.mac_index; | ||
| 27 | if (i < ARRAY_SIZE(eth_data)) { | ||
| 28 | eth_data[i].mii_phy_addr = tag->u.ethernet.mii_phy_addr; | ||
| 29 | memcpy(ð_data[i].hw_addr, tag->u.ethernet.hw_address, | ||
| 30 | sizeof(eth_data[i].hw_addr)); | ||
| 31 | eth_data[i].valid = 1; | ||
| 32 | } | ||
| 33 | return 0; | ||
| 34 | } | ||
| 35 | __tagtable(ATAG_ETHERNET, parse_tag_ethernet); | ||
| 36 | |||
| 24 | void __init setup_board(void) | 37 | void __init setup_board(void) |
| 25 | { | 38 | { |
| 26 | at32_map_usart(1, 0); /* /dev/ttyS0 */ | 39 | at32_map_usart(1, 0); /* /dev/ttyS0 */ |
| @@ -38,7 +51,9 @@ static int __init atstk1002_init(void) | |||
| 38 | at32_add_device_usart(1); | 51 | at32_add_device_usart(1); |
| 39 | at32_add_device_usart(2); | 52 | at32_add_device_usart(2); |
| 40 | 53 | ||
| 41 | at32_add_device_eth(0, ð0_data); | 54 | if (eth_data[0].valid) |
| 55 | at32_add_device_eth(0, ð_data[0]); | ||
| 56 | |||
| 42 | at32_add_device_spi(0); | 57 | at32_add_device_spi(0); |
| 43 | at32_add_device_lcdc(0, &atstk1000_fb0_data); | 58 | at32_add_device_lcdc(0, &atstk1000_fb0_data); |
| 44 | 59 | ||
diff --git a/arch/avr32/kernel/setup.c b/arch/avr32/kernel/setup.c index ea2d1ffee478..a34211601008 100644 --- a/arch/avr32/kernel/setup.c +++ b/arch/avr32/kernel/setup.c | |||
| @@ -229,30 +229,6 @@ static int __init parse_tag_rsvd_mem(struct tag *tag) | |||
| 229 | } | 229 | } |
| 230 | __tagtable(ATAG_RSVD_MEM, parse_tag_rsvd_mem); | 230 | __tagtable(ATAG_RSVD_MEM, parse_tag_rsvd_mem); |
| 231 | 231 | ||
| 232 | static int __init parse_tag_ethernet(struct tag *tag) | ||
| 233 | { | ||
| 234 | #if 0 | ||
| 235 | const struct platform_device *pdev; | ||
| 236 | |||
| 237 | /* | ||
| 238 | * We really need a bus type that supports "classes"...this | ||
| 239 | * will do for now (until we must handle other kinds of | ||
| 240 | * ethernet controllers) | ||
| 241 | */ | ||
| 242 | pdev = platform_get_device("macb", tag->u.ethernet.mac_index); | ||
| 243 | if (pdev && pdev->dev.platform_data) { | ||
| 244 | struct eth_platform_data *data = pdev->dev.platform_data; | ||
| 245 | |||
| 246 | data->valid = 1; | ||
| 247 | data->mii_phy_addr = tag->u.ethernet.mii_phy_addr; | ||
| 248 | memcpy(data->hw_addr, tag->u.ethernet.hw_address, | ||
| 249 | sizeof(data->hw_addr)); | ||
| 250 | } | ||
| 251 | #endif | ||
| 252 | return 0; | ||
| 253 | } | ||
| 254 | __tagtable(ATAG_ETHERNET, parse_tag_ethernet); | ||
| 255 | |||
| 256 | /* | 232 | /* |
| 257 | * Scan the tag table for this tag, and call its parse function. The | 233 | * Scan the tag table for this tag, and call its parse function. The |
| 258 | * tag table is built by the linker from all the __tagtable | 234 | * tag table is built by the linker from all the __tagtable |
