[linux-yocto] [PATCH 89/94] drivers/net: FEMAC hprot register wasn't being set to uncached mode

Paul Butler butler.paul at gmail.com
Thu Nov 7 17:18:24 PST 2013


From: SangeethaRao <sangeetha.rao at lsi.com>

FEMAC hprot register wasn't being set to uncached mode in Linux
and hence there was a dependency on U-boot FEMAC initialization
for network support in Linux to work.

Signed-off-by: SangeethaRao <sangeetha.rao at lsi.com>
---
 drivers/net/ethernet/lsi/lsi_acp_net.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/net/ethernet/lsi/lsi_acp_net.c b/drivers/net/ethernet/lsi/lsi_acp_net.c
index 8854948..95ccd7d 100644
--- a/drivers/net/ethernet/lsi/lsi_acp_net.c
+++ b/drivers/net/ethernet/lsi/lsi_acp_net.c
@@ -108,6 +108,10 @@ MODULE_LICENSE("GPL");
 static void *rx_base;
 static void *tx_base;
 static void *dma_base;
+#ifdef CONFIG_ARM
+static void *gpreg_base;
+#define GPREG_BASE 0x002010094000ULL
+#endif
 
 /* BCM5221 registers */
 #define PHY_BCM_TEST_REG	0x1f
@@ -1363,6 +1367,13 @@ int appnic_init(struct net_device *dev)
 	struct appnic_dma_descriptor descriptor;
 	struct sockaddr address;
 
+#ifdef CONFIG_ARM
+	/* Set FEMAC to uncached */
+	gpreg_base = ioremap(GPREG_BASE, 0x1000);
+	writel(0x0, gpreg_base+0x78);
+#endif
+
+
 	/*
 	 * Reset the MAC
 	 */
@@ -1916,6 +1927,7 @@ device_tree_failed:
 	iounmap(rx_base);
 	iounmap(tx_base);
 	iounmap(dma_base);
+	iounmap(gpreg_base);
 	return -EINVAL;
 }
 #else
@@ -2108,6 +2120,7 @@ static int __devexit appnic_drv_remove(struct platform_device *pdev)
 	iounmap(rx_base);
 	iounmap(tx_base);
 	iounmap(dma_base);
+	iounmap(gpreg_base);
 
 	return 0;
 }
-- 
1.8.3.4




More information about the linux-yocto mailing list