On Wed, Mar 18, 2015 at 4:27 PM, Ben Dooks <[email protected]> wrote:
>
> [note this has yet to be compile tested on avr32]
>
> The changes to run the macb driver in 29af05aeb98e ("net: macb:

Yes I mistakenly thought zynq board was the first to run it in
BIG endian mode.

> Add big endian CPU support") to support big endian operation on
> ARM may not work on AVR32 which already is naturally big endian
> architecture (and the driver already works here).
>
> In this case  the readl/writel relaxed will do the opposite of __raw
> accesors which arleady work. Add an indirection of cdneth_ prefixed
> accesors which are changed as necessary. Also do not issue the DMA
> descritpor endian fetch configuration for AVR32.
>
> From discussions with Arnd Bergman, the following fix changes the use
> of readl_relaxed and writel_relaxed with a version that can be put
> back to __raw_readl/__raw_writel for the CONFIG_AVR32 case (and also
> remove the change to the DMA descriptor endian).
>
> Signed-off-by: Ben Dooks <[email protected]>
> Reported-by: Arnd Bergmann <[email protected]>
> --
> CC: Linux Networking List <[email protected]>
> CC: Arun Chandran <[email protected]>
> CC: Haavard Skinnemoen <[email protected]>
> CC: Hans-Christian Egtvedt <[email protected]>
> CC: Linux Kernel List <[email protected]>
> CC: Nicolas Ferre <[email protected]>
> ---
>  drivers/net/ethernet/cadence/macb.c | 14 +++++++-------
>  drivers/net/ethernet/cadence/macb.h | 20 ++++++++++++++------
>  2 files changed, 21 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/net/ethernet/cadence/macb.c 
> b/drivers/net/ethernet/cadence/macb.c
> index b71e316..1c3f6e7 100644
> --- a/drivers/net/ethernet/cadence/macb.c
> +++ b/drivers/net/ethernet/cadence/macb.c
> @@ -449,7 +449,7 @@ static void macb_update_stats(struct macb *bp)
>         WARN_ON((unsigned long)(end - p - 1) != (MACB_TPF - MACB_PFR) / 4);
>
>         for(; p < end; p++, reg++)
> -               *p += readl_relaxed(reg);
> +               *p += cdneth_readl(reg);
>  }
>
>  static int macb_halt_tx(struct macb *bp)
> @@ -1587,7 +1587,7 @@ static void macb_configure_dma(struct macb *bp)
>                 dmacfg |= GEM_BIT(TXPBMS) | GEM_BF(RXBMS, -1L);
>                 dmacfg &= ~GEM_BIT(ENDIA_PKT);
>                 /* Tell the chip to byteswap descriptors on big-endian hosts 
> */
> -#ifdef __BIG_ENDIAN


With 
https://kernel.googlesource.com/pub/scm/linux/kernel/git/davem/net-next/+/62f6924cb1543a10d05150d77f9a5e01e12c9ce1
in net-next I think CONFIG_AVR32 check is not required.

--Arun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to