diff options
| author | matteo <matteo@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-03-21 18:51:55 +0000 | 
|---|---|---|
| committer | matteo <matteo@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-03-21 18:51:55 +0000 | 
| commit | 69ee3ecd38c5545e3b2e96bef804f3aba57816f0 (patch) | |
| tree | 979ea3411b4f4068a03a4f8e1852eae0e68be0a6 | |
| parent | 25cc1b733a884899b4aeb000f3b7abd3e62d39a5 (diff) | |
ar7: fixed cpmac, now it doesn't fails to register the phy.
Signed-off-by: beistin@gmail.com
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10640 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -rw-r--r-- | target/linux/ar7/patches-2.6.24/170-_cpmac_phy_fix.diff | 49 | 
1 files changed, 49 insertions, 0 deletions
diff --git a/target/linux/ar7/patches-2.6.24/170-_cpmac_phy_fix.diff b/target/linux/ar7/patches-2.6.24/170-_cpmac_phy_fix.diff new file mode 100644 index 000000000..13563c6b2 --- /dev/null +++ b/target/linux/ar7/patches-2.6.24/170-_cpmac_phy_fix.diff @@ -0,0 +1,49 @@ +diff -pruN linux-2.6.24.2.old/drivers/net/cpmac.c linux-2.6.24.2/drivers/net/cpmac.c +--- linux-2.6.24.2.old/drivers/net/cpmac.c	2008-03-20 20:33:01.000000000 +0100 ++++ linux-2.6.24.2/drivers/net/cpmac.c	2008-03-20 20:47:31.000000000 +0100 +@@ -1112,7 +1112,8 @@ static int external_switch; +  + static int __devinit cpmac_probe(struct platform_device *pdev) + { +-	int rc, phy_id, i; ++	int rc, i; ++	int phy_id; + 	int mdio_bus_id = cpmac_mii.id; + 	struct resource *mem; + 	struct cpmac_priv *priv; +@@ -1132,7 +1133,7 @@ static int __devinit cpmac_probe(struct  +  + 	if (phy_id == PHY_MAX_ADDR) { + 		if (external_switch || dumb_switch) { +-			mdio_bus_id = 0; /* fixed phys bus */ ++			mdio_bus_id = 0;  + 			phy_id = pdev->id; + 		} else { + 			dev_err(&pdev->dev, "no PHY present\n"); +@@ -1178,9 +1179,7 @@ static int __devinit cpmac_probe(struct  + 	priv->msg_enable = netif_msg_init(debug_level, 0xff); + 	memcpy(dev->dev_addr, pdata->dev_addr, sizeof(dev->dev_addr)); +  +-	snprintf(priv->phy_name, BUS_ID_SIZE, PHY_ID_FMT, mdio_bus_id, phy_id); +- +-	priv->phy = phy_connect(dev, priv->phy_name, &cpmac_adjust_link, 0, ++	priv->phy = phy_connect(dev, cpmac_mii.phy_map[phy_id]->dev.bus_id, &cpmac_adjust_link, 0, + 				PHY_INTERFACE_MODE_MII); + 	if (IS_ERR(priv->phy)) { + 		if (netif_msg_drv(priv)) +@@ -1222,13 +1221,13 @@ static struct platform_driver cpmac_driv + 	.remove = __devexit_p(cpmac_remove), + }; +  +-int __devinit cpmac_init(void) ++int __devinit cpmac_init(struct platform_device *pldev, long long base) + { + 	u32 mask; + 	int i, res; +  ++	cpmac_mii.id=pldev->id; + 	cpmac_mii.priv = ioremap(AR7_REGS_MDIO, 256); +- + 	if (!cpmac_mii.priv) { + 		printk(KERN_ERR "Can't ioremap mdio registers\n"); + 		return -ENXIO;  | 
