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