From: Gabor Juhos <juhosg@openwrt.org>
Date: Fri, 17 Oct 2008 07:12:44 +0000 (+0000)
Subject: change ag71xx platform device registration
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=7d167c06f37714bf071cbebb04ad69effa09b11f;p=openwrt%2Fstaging%2Fneocturne.git

change ag71xx platform device registration

SVN-Revision: 12997
---

diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-generic.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-generic.c
index 42b5e02678..55fc61c92e 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-generic.c
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-generic.c
@@ -50,8 +50,15 @@ static void __init ar71xx_generic_init(void)
 				ARRAY_SIZE(ar71xx_generic_spi_info));
 
 	ar71xx_add_device_mdio(0xffe0ffff);
-	ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x000f0000);
-	ar71xx_add_device_eth(1, PHY_INTERFACE_MODE_RMII, 0x00100000);
+
+	ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+	ar71xx_eth0_data.phy_mask = 0x000f0000;
+
+	ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
+	ar71xx_eth1_data.phy_mask = 0x00100000;
+
+	ar71xx_add_device_eth(0);
+	ar71xx_add_device_eth(1);
 
 	ar71xx_add_device_usb();
 
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-rb-4xx.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-rb-4xx.c
index dce20584d2..8e63acac41 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-rb-4xx.c
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-rb-4xx.c
@@ -155,7 +155,11 @@ static void __init rb411_setup(void)
 	rb4xx_add_device_spi();
 
 	ar71xx_add_device_mdio(0xfffffffe);
-	ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x00000001);
+
+	ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+	ar71xx_eth0_data.phy_mask = 0x00000001;
+
+	ar71xx_add_device_eth(0);
 
 	ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
 					rb4xx_leds_gpio);
@@ -176,8 +180,15 @@ static void __init rb433_setup(void)
 	rb433_add_device_spi();
 
 	ar71xx_add_device_mdio(0xffffffec);
-	ar71xx_add_device_eth(1, PHY_INTERFACE_MODE_RMII, 0x00000010);
-	ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x00000003);
+
+	ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+	ar71xx_eth0_data.phy_mask = 0x00000003;
+
+	ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
+	ar71xx_eth1_data.phy_mask = 0x00000010;
+
+	ar71xx_add_device_eth(1);
+	ar71xx_add_device_eth(0);
 
 	ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
 					rb4xx_leds_gpio);
@@ -198,8 +209,15 @@ static void __init rb450_setup(void)
 	rb4xx_add_device_spi();
 
 	ar71xx_add_device_mdio(0xffffffe0);
-	ar71xx_add_device_eth(1, PHY_INTERFACE_MODE_RMII, 0x00000010);
-	ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x0000000f);
+
+	ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+	ar71xx_eth0_data.phy_mask = 0x0000000f;
+
+	ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
+	ar71xx_eth1_data.phy_mask = 0x00000010;
+
+	ar71xx_add_device_eth(1);
+	ar71xx_add_device_eth(0);
 
 	ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
 					rb4xx_leds_gpio);
@@ -217,10 +235,19 @@ static void __init rb493_setup(void)
 {
 	rb4xx_add_device_spi();
 
-#if 0
 	ar71xx_add_device_mdio(0x3fffff00);
-	ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x00000000);
-	ar71xx_add_device_eth(1, PHY_INTERFACE_MODE_RMII, 0x00000001);
+
+#if 0
+	ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+	ar71xx_eth0_data.phy_mask = 0;
+	ar71xx_eth0_data.speed = SPEED_100;
+	ar71xx_eth0_data.duplex = DUPLEX_FULL;
+
+	ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
+	ar71xx_eth1_data.phy_mask = 0x00000001;
+
+	ar71xx_add_device_eth(0);
+	ar71xx_add_device_eth(1);
 #endif
 
 	ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wp543.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wp543.c
index 4abecd8a02..ef2ef05759 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wp543.c
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wp543.c
@@ -124,7 +124,10 @@ static void __init wp543_setup(void)
 	ar71xx_add_device_spi(NULL, wp543_spi_info, ARRAY_SIZE(wp543_spi_info));
 
 	ar71xx_add_device_mdio(0xfffffff7);
-	ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x00000008);
+
+	ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+	ar71xx_eth0_data.phy_mask = 0x00000008;
+	ar71xx_add_device_eth(0);
 
 	ar71xx_add_device_usb();
 
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/platform.c b/target/linux/ar71xx/files/arch/mips/ar71xx/platform.c
index b131ec1e27..aa4711d34e 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/platform.c
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/platform.c
@@ -196,7 +196,7 @@ static struct resource ar71xx_eth0_resources[] = {
 	},
 };
 
-static struct ag71xx_platform_data ar71xx_eth0_data = {
+struct ag71xx_platform_data ar71xx_eth0_data = {
 	.reset_bit	= RESET_MODULE_GE0_MAC,
 	.flush_reg	= DDR_REG_FLUSH_GE0,
 };
@@ -235,7 +235,7 @@ static struct resource ar71xx_eth1_resources[] = {
 	},
 };
 
-static struct ag71xx_platform_data ar71xx_eth1_data = {
+struct ag71xx_platform_data ar71xx_eth1_data = {
 	.reset_bit	= RESET_MODULE_GE1_MAC,
 	.flush_reg	= DDR_REG_FLUSH_GE1,
 };
@@ -251,14 +251,13 @@ static struct platform_device ar71xx_eth1_device = {
 };
 
 static int ar71xx_eth_instance __initdata;
-void __init ar71xx_add_device_eth(unsigned int id, phy_interface_t phy_if_mode,
-				u32 phy_mask)
+void __init ar71xx_add_device_eth(unsigned int id)
 {
 	struct platform_device *pdev;
 
 	switch (id) {
 	case 0:
-		switch (phy_if_mode) {
+		switch (ar71xx_eth0_data.phy_if_mode) {
 		case PHY_INTERFACE_MODE_MII:
 			ar71xx_eth0_data.mii_if = MII0_CTRL_IF_MII;
 			break;
@@ -276,12 +275,10 @@ void __init ar71xx_add_device_eth(unsigned int id, phy_interface_t phy_if_mode,
 		}
 		memcpy(ar71xx_eth0_data.mac_addr, ar71xx_mac_base, ETH_ALEN);
 		ar71xx_eth0_data.mac_addr[5] += ar71xx_eth_instance;
-		ar71xx_eth0_data.phy_if_mode = phy_if_mode;
-		ar71xx_eth0_data.phy_mask = phy_mask;
 		pdev = &ar71xx_eth0_device;
 		break;
 	case 1:
-		switch (phy_if_mode) {
+		switch (ar71xx_eth1_data.phy_if_mode) {
 		case PHY_INTERFACE_MODE_RMII:
 			ar71xx_eth1_data.mii_if = MII1_CTRL_IF_RMII;
 			break;
@@ -293,8 +290,6 @@ void __init ar71xx_add_device_eth(unsigned int id, phy_interface_t phy_if_mode,
 		}
 		memcpy(ar71xx_eth1_data.mac_addr, ar71xx_mac_base, ETH_ALEN);
 		ar71xx_eth1_data.mac_addr[5] += ar71xx_eth_instance;
-		ar71xx_eth1_data.phy_if_mode = phy_if_mode;
-		ar71xx_eth1_data.phy_mask = phy_mask;
 		pdev = &ar71xx_eth1_device;
 		break;
 	default:
diff --git a/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/platform.h b/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/platform.h
index f712f3391c..53ac555c7b 100644
--- a/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/platform.h
+++ b/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/platform.h
@@ -20,13 +20,13 @@
 #include <linux/gpio_buttons.h>
 
 struct ag71xx_platform_data {
-	u32		reset_bit;
-	u32		flush_reg;
-	u32		phy_mask;
 	phy_interface_t	phy_if_mode;
-	u32		mii_if;
+	u32		phy_mask;
 	int		speed;
 	int		duplex;
+	u32		reset_bit;
+	u32		flush_reg;
+	u32		mii_if;
 	u8		mac_addr[ETH_ALEN];
 };
 
@@ -49,8 +49,10 @@ extern void ar71xx_add_device_spi(struct ar71xx_spi_platform_data *pdata,
 
 extern void ar71xx_set_mac_base(unsigned char *mac) __init;
 extern void ar71xx_parse_mac_addr(char *mac_str) __init;
-extern void ar71xx_add_device_eth(unsigned int id, phy_interface_t phy_if_mode,
-				u32 phy_mask) __init;
+
+extern struct ag71xx_platform_data ar71xx_eth0_data;
+extern struct ag71xx_platform_data ar71xx_eth1_data;
+extern void ar71xx_add_device_eth(unsigned int id) __init;
 
 extern void ar71xx_add_device_mdio(u32 phy_mask) __init;