aboutsummaryrefslogtreecommitdiffstats
path: root/packages/linux/linux-2.6.18/avr32-move-ethernet-tag-parsing-to-board-specific-code.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/linux/linux-2.6.18/avr32-move-ethernet-tag-parsing-to-board-specific-code.patch')
-rw-r--r--packages/linux/linux-2.6.18/avr32-move-ethernet-tag-parsing-to-board-specific-code.patch94
1 files changed, 94 insertions, 0 deletions
diff --git a/packages/linux/linux-2.6.18/avr32-move-ethernet-tag-parsing-to-board-specific-code.patch b/packages/linux/linux-2.6.18/avr32-move-ethernet-tag-parsing-to-board-specific-code.patch
new file mode 100644
index 0000000000..03e08785f0
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-move-ethernet-tag-parsing-to-board-specific-code.patch
@@ -0,0 +1,94 @@
+From 736c9c38e8a681d0ecfc4dafe15fcb955fe66a29 Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Tue, 24 Oct 2006 09:34:48 +0200
+Subject: [PATCH] AVR32: Move ethernet tag parsing to board-specific code
+
+By moving the ethernet tag parsing to the board-specific code we avoid
+the issue of figuring out which device we're supposed to attach the
+information to. The board specific code knows this because it's
+where the actual devices are instantiated.
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ arch/avr32/boards/atstk1000/atstk1002.c | 26 ++++++++++++++++++++------
+ arch/avr32/kernel/setup.c | 24 ------------------------
+ 2 files changed, 20 insertions(+), 30 deletions(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/boards/atstk1000/atstk1002.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/boards/atstk1000/atstk1002.c 2006-11-01 13:26:19.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/boards/atstk1000/atstk1002.c 2006-11-01 13:33:38.000000000 +0100
+@@ -8,18 +8,32 @@
+ * published by the Free Software Foundation.
+ */
+ #include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/string.h>
++#include <linux/types.h>
+
++#include <asm/setup.h>
+ #include <asm/arch/board.h>
+
+-struct eth_platform_data __initdata eth0_data = {
+- .valid = 1,
+- .mii_phy_addr = 0x10,
+- .is_rmii = 0,
+- .hw_addr = { 0x6a, 0x87, 0x71, 0x14, 0xcd, 0xcb },
+-};
++static struct eth_platform_data __initdata eth_data[2];
+
+ extern struct lcdc_platform_data atstk1000_fb0_data;
+
++static int __init parse_tag_ethernet(struct tag *tag)
++{
++ int i;
++
++ i = tag->u.ethernet.mac_index;
++ if (i < ARRAY_SIZE(eth_data)) {
++ eth_data[i].mii_phy_addr = tag->u.ethernet.mii_phy_addr;
++ memcpy(&eth_data[i].hw_addr, tag->u.ethernet.hw_address,
++ sizeof(eth_data[i].hw_addr));
++ eth_data[i].valid = 1;
++ }
++ return 0;
++}
++__tagtable(ATAG_ETHERNET, parse_tag_ethernet);
++
+ static int __init atstk1002_init(void)
+ {
+ at32_add_system_devices();
+Index: linux-2.6.18-avr32/arch/avr32/kernel/setup.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/kernel/setup.c 2006-11-01 13:26:19.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/kernel/setup.c 2006-11-01 13:31:32.000000000 +0100
+@@ -229,30 +229,6 @@ static int __init parse_tag_rsvd_mem(str
+ }
+ __tagtable(ATAG_RSVD_MEM, parse_tag_rsvd_mem);
+
+-static int __init parse_tag_ethernet(struct tag *tag)
+-{
+-#if 0
+- const struct platform_device *pdev;
+-
+- /*
+- * We really need a bus type that supports "classes"...this
+- * will do for now (until we must handle other kinds of
+- * ethernet controllers)
+- */
+- pdev = platform_get_device("macb", tag->u.ethernet.mac_index);
+- if (pdev && pdev->dev.platform_data) {
+- struct eth_platform_data *data = pdev->dev.platform_data;
+-
+- data->valid = 1;
+- data->mii_phy_addr = tag->u.ethernet.mii_phy_addr;
+- memcpy(data->hw_addr, tag->u.ethernet.hw_address,
+- sizeof(data->hw_addr));
+- }
+-#endif
+- return 0;
+-}
+-__tagtable(ATAG_ETHERNET, parse_tag_ethernet);
+-
+ /*
+ * Scan the tag table for this tag, and call its parse function. The
+ * tag table is built by the linker from all the __tagtable