From 0fd3757792b911fdd0c78172057b8ca4ec39113b Mon Sep 17 00:00:00 2001
From: jogo <jogo@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Mon, 20 May 2013 12:42:36 +0000
Subject: ar7: add support for 3.9

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36671 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 target/linux/ar7/patches-3.9/950-cpmac_titan.patch | 52 ++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 target/linux/ar7/patches-3.9/950-cpmac_titan.patch

(limited to 'target/linux/ar7/patches-3.9/950-cpmac_titan.patch')

diff --git a/target/linux/ar7/patches-3.9/950-cpmac_titan.patch b/target/linux/ar7/patches-3.9/950-cpmac_titan.patch
new file mode 100644
index 000000000..bc31222cb
--- /dev/null
+++ b/target/linux/ar7/patches-3.9/950-cpmac_titan.patch
@@ -0,0 +1,52 @@
+--- a/drivers/net/ethernet/ti/cpmac.c
++++ b/drivers/net/ethernet/ti/cpmac.c
+@@ -1155,6 +1155,8 @@ static int cpmac_probe(struct platform_d
+ 		goto fail;
+ 	}
+ 
++	ar7_device_reset(pdata->reset_bit);
++
+ 	dev->irq = platform_get_irq_byname(pdev, "irq");
+ 
+ 	dev->netdev_ops = &cpmac_netdev_ops;
+@@ -1233,7 +1235,7 @@ int cpmac_init(void)
+ 	cpmac_mii->reset = cpmac_mdio_reset;
+ 	cpmac_mii->irq = mii_irqs;
+ 
+-	cpmac_mii->priv = ioremap(AR7_REGS_MDIO, 256);
++	cpmac_mii->priv = ioremap(ar7_is_titan() ? TITAN_REGS_MDIO : AR7_REGS_MDIO, 256);
+ 
+ 	if (!cpmac_mii->priv) {
+ 		printk(KERN_ERR "Can't ioremap mdio registers\n");
+@@ -1244,10 +1246,16 @@ int cpmac_init(void)
+ #warning FIXME: unhardcode gpio&reset bits
+ 	ar7_gpio_disable(26);
+ 	ar7_gpio_disable(27);
+-	ar7_device_reset(AR7_RESET_BIT_CPMAC_LO);
+-	ar7_device_reset(AR7_RESET_BIT_CPMAC_HI);
++
++	if (!ar7_is_titan()) {
++		ar7_device_reset(AR7_RESET_BIT_CPMAC_LO);
++		ar7_device_reset(AR7_RESET_BIT_CPMAC_HI);
++	}
+ 	ar7_device_reset(AR7_RESET_BIT_EPHY);
+ 
++	if (ar7_is_titan())
++		ar7_device_reset(TITAN_RESET_BIT_EPHY1);
++
+ 	cpmac_mii->reset(cpmac_mii);
+ 
+ 	for (i = 0; i < 300; i++) {
+@@ -1264,7 +1272,11 @@ int cpmac_init(void)
+ 		mask = 0;
+ 	}
+ 
+-	cpmac_mii->phy_mask = ~(mask | 0x80000000);
++	if (ar7_is_titan())
++		cpmac_mii->phy_mask = ~(mask | 0x80000000 | 0x40000000);
++	else
++		cpmac_mii->phy_mask = ~(mask | 0x80000000);
++
+ 	snprintf(cpmac_mii->id, MII_BUS_ID_SIZE, "cpmac-1");
+ 
+ 	res = mdiobus_register(cpmac_mii);
-- 
cgit v1.2.3