From: SangeethaRao <sangeetha....@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....@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.4.3

_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to