123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- From a30c65f4d5478eb53f267d71623ff2721c6f4c3d Mon Sep 17 00:00:00 2001
- From: Anup Patel <anup.patel@wdc.com>
- Date: Tue, 25 Jun 2019 11:50:05 +0530
- Subject: [PATCH 16/21] net: macb: Fix check for little-endian system in
- gmac_configure_dma()
- Instead of depending on CONFIG_SYS_LITTLE_ENDIAN, we check at runtime
- whether underlying system is little-endian or big-endian. This way
- we are not dependent on any U-Boot specific OR compiler specific macro
- to check system endianness.
- Signed-off-by: Anup Patel <anup.patel@wdc.com>
- Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
- Reviewed-By: Ramon Fried <rfried.dev@gmail.com>
- Upstream-Status: Submitted
- ---
- drivers/net/macb.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
- diff --git a/drivers/net/macb.c b/drivers/net/macb.c
- index 322302762a..a4015e9bd5 100644
- --- a/drivers/net/macb.c
- +++ b/drivers/net/macb.c
- @@ -84,6 +84,8 @@ struct macb_dma_desc {
- struct macb_device {
- void *regs;
-
- + bool is_big_endian;
- +
- const struct macb_config*config;
-
- unsigned int rx_tail;
- @@ -743,11 +745,10 @@ static void gmac_configure_dma(struct macb_device *macb)
- dmacfg |= GEM_BIT(TXPBMS) | GEM_BF(RXBMS, -1L);
- dmacfg &= ~GEM_BIT(ENDIA_PKT);
-
- -#ifdef CONFIG_SYS_LITTLE_ENDIAN
- - dmacfg &= ~GEM_BIT(ENDIA_DESC);
- -#else
- + if (macb->is_big_endian)
- dmacfg |= GEM_BIT(ENDIA_DESC); /* CPU in big endian */
- -#endif
- + else
- + dmacfg &= ~GEM_BIT(ENDIA_DESC);
-
- dmacfg &= ~GEM_BIT(ADDR64);
- gem_writel(macb, DMACFG, dmacfg);
- @@ -1221,6 +1222,9 @@ static int macb_eth_probe(struct udevice *dev)
-
- macb->regs = (void *)pdata->iobase;
-
- + macb->is_big_endian = (cpu_to_be32(0x12345678) == 0x12345678) ?
- + true : false;
- +
- macb->config = (struct macb_config *)dev_get_driver_data(dev);
- if (!macb->config)
- macb->config = &default_gem_config;
- --
- 2.22.0
|