[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