[PATCH] dmaengine: fsldma: Add 64-bit I/O accessors for powerpc64

Scott Wood oss at buserror.net
Mon Dec 24 15:45:43 AEDT 2018


On Mon, 2018-12-24 at 03:42 +0000, Peng Ma wrote:
> Hi Scott,
> 
> You are right, we should support powerpc64, so could I changed it as
> fallows:
> 
> diff --git a/drivers/dma/fsldma.h b/drivers/dma/fsldma.h
> index 88db939..057babf 100644
> --- a/drivers/dma/fsldma.h
> +++ b/drivers/dma/fsldma.h
> @@ -202,35 +202,10 @@ struct fsldma_chan {
>  #define fsl_iowrite32(v, p)    out_le32(p, v)
>  #define fsl_iowrite32be(v, p)  out_be32(p, v)
>  
> -#ifndef __powerpc64__
> -static u64 fsl_ioread64(const u64 __iomem *addr)
> -{
> -       u32 fsl_addr = lower_32_bits(addr);
> -       u64 fsl_addr_hi = (u64)in_le32((u32 *)(fsl_addr + 1)) << 32;
> -
> -       return fsl_addr_hi | in_le32((u32 *)fsl_addr);
> -}
> -
> -static void fsl_iowrite64(u64 val, u64 __iomem *addr)
> -{
> -       out_le32((u32 __iomem *)addr + 1, val >> 32);
> -       out_le32((u32 __iomem *)addr, (u32)val);
> -}
> -
> -static u64 fsl_ioread64be(const u64 __iomem *addr)
> -{
> -       u32 fsl_addr = lower_32_bits(addr);
> -       u64 fsl_addr_hi = (u64)in_be32((u32 *)fsl_addr) << 32;
> -
> -       return fsl_addr_hi | in_be32((u32 *)(fsl_addr + 1));
> -}
> -
> -static void fsl_iowrite64be(u64 val, u64 __iomem *addr)
> -{
> -       out_be32((u32 __iomem *)addr, val >> 32);
> -       out_be32((u32 __iomem *)addr + 1, (u32)val);
> -}
> -#endif
> +#define fsl_ioread64(p)                in_le64(p)
> +#define fsl_ioread64be(p)      in_be64(p)
> +#define fsl_iowrite64(v, p)    out_le64(p, v)
> +#define fsl_iowrite64be(v, p)  out_be64(p, v)
>  #endif

Then you'll break 32-bit, assuming those fake-it-with-two-32-bit-accesses were
actually needed.

-Scott




More information about the Linuxppc-dev mailing list