summaryrefslogtreecommitdiffstats
path: root/target/linux/ar7/patches-2.6.25/150-cpmac_up_and_running.diff
diff options
context:
space:
mode:
authormatteo <matteo@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-05-03 15:33:38 +0000
committermatteo <matteo@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-05-03 15:33:38 +0000
commitc6a486db250288617f002aed6dfb31a6554fad38 (patch)
tree2d166d7b5075c536927041f2ac9a7d6c1f35f771 /target/linux/ar7/patches-2.6.25/150-cpmac_up_and_running.diff
parent8afd9e14ed4bb64622f8c27e49db03b4ada1ade5 (diff)
ar7: 2.6.25.1 support
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@11023 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ar7/patches-2.6.25/150-cpmac_up_and_running.diff')
-rw-r--r--target/linux/ar7/patches-2.6.25/150-cpmac_up_and_running.diff95
1 files changed, 95 insertions, 0 deletions
diff --git a/target/linux/ar7/patches-2.6.25/150-cpmac_up_and_running.diff b/target/linux/ar7/patches-2.6.25/150-cpmac_up_and_running.diff
new file mode 100644
index 000000000..9b15772c4
--- /dev/null
+++ b/target/linux/ar7/patches-2.6.25/150-cpmac_up_and_running.diff
@@ -0,0 +1,95 @@
+From 0daaa095cefd9d7091a7ccce2ff89f1ff4feae7a Mon Sep 17 00:00:00 2001
+From: Anton Vorontsov <avorontsov@ru.mvista.com>
+Date: Wed, 5 Mar 2008 14:52:26 +0300
+Subject: [PATCH] AR7/cpmac: convert to new fixed phy infrastructure, now for real
+
+This patch converts platform code to register fixed phys early.
+cpmac driver modified to blindly accept fixed phy id (that is equal
+to platform device id).
+
+Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
+---
+ arch/mips/ar7/platform.c | 17 +++++++++++++++++
+ drivers/net/cpmac.c | 19 +++----------------
+ 2 files changed, 20 insertions(+), 16 deletions(-)
+
+Index: linux-2.6.25.1/arch/mips/ar7/platform.c
+===================================================================
+--- linux-2.6.25.1.orig/arch/mips/ar7/platform.c 2008-05-03 16:17:30.000000000 +0200
++++ linux-2.6.25.1/arch/mips/ar7/platform.c 2008-05-03 16:24:08.000000000 +0200
+@@ -33,6 +33,8 @@
+ #include <linux/vlynq.h>
+ #include <linux/leds.h>
+ #include <linux/string.h>
++#include <linux/phy.h>
++#include <linux/phy_fixed.h>
+
+ #include <asm/addrspace.h>
+ #include <asm/ar7/ar7.h>
+@@ -205,6 +207,13 @@
+ .width = 2,
+ };
+
++/* lets assume this is suitable for both high and low cpmacs links */
++static struct fixed_phy_status fixed_phy_status __initdata = {
++ .link = 1,
++ .speed = 100,
++ .duplex = 1,
++};
++
+ static struct plat_cpmac_data cpmac_low_data = {
+ .reset_bit = 17,
+ .power_bit = 20,
+@@ -506,6 +515,10 @@
+ }
+
+ if (ar7_has_high_cpmac()) {
++ res = fixed_phy_add(PHY_POLL, cpmac_high.id, &fixed_phy_status);
++ if (res && res != -ENODEV)
++ return res;
++
+ cpmac_get_mac(1, cpmac_high_data.dev_addr);
+ res = platform_device_register(&cpmac_high);
+ if (res)
+@@ -514,6 +527,10 @@
+ cpmac_low_data.phy_mask = 0xffffffff;
+ }
+
++ res = fixed_phy_add(PHY_POLL, cpmac_low.id, &fixed_phy_status);
++ if (res && res != -ENODEV)
++ return res;
++
+ cpmac_get_mac(0, cpmac_low_data.dev_addr);
+ res = platform_device_register(&cpmac_low);
+ if (res)
+Index: linux-2.6.25.1/drivers/net/cpmac.c
+===================================================================
+--- linux-2.6.25.1.orig/drivers/net/cpmac.c 2008-05-03 16:21:17.000000000 +0200
++++ linux-2.6.25.1/drivers/net/cpmac.c 2008-05-03 16:24:08.000000000 +0200
+@@ -1035,23 +1035,10 @@
+
+ if (phy_id == PHY_MAX_ADDR) {
+ if (external_switch || dumb_switch) {
+- struct fixed_phy_status status = {};
+-
+- mdio_bus_id = 0;
+-
+- /*
+- * FIXME: this should be in the platform code!
+- * Since there is not platform code at all (that is,
+- * no mainline users of that driver), place it here
+- * for now.
+- */
+- phy_id = 0;
+- status.link = 1;
+- status.duplex = 1;
+- status.speed = 100;
+- fixed_phy_add(PHY_POLL, phy_id, &status);
++ mdio_bus_id = 0; /* fixed phys bus */
++ phy_id = pdev->id;
+ } else {
+- printk(KERN_ERR "cpmac: no PHY present\n");
++ dev_err(&pdev->dev, "no PHY present\n");
+ return -ENODEV;
+ }
+ }