diff options
Diffstat (limited to 'arch/avr32')
-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 |