dmaengine: at_xdmac: Fix at_xdmac_lld struct definition
authorTudor Ambarus <tudor.ambarus@microchip.com>
Wed, 15 Dec 2021 11:01:13 +0000 (13:01 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 08:01:01 +0000 (09:01 +0100)
commit 912f7c6f7fac273f40e621447cf17d14b50d6e5b upstream.

The hardware channel next descriptor view structure contains just
fields of 32 bits, while dma_addr_t can be of type u64 or u32
depending on CONFIG_ARCH_DMA_ADDR_T_64BIT. Force u32 to comply with
what the hardware expects.

Fixes: e1f7c9eee707 ("dmaengine: at_xdmac: creation of the atmel eXtended DMA Controller driver")
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Link: https://lore.kernel.org/r/20211215110115.191749-11-tudor.ambarus@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/dma/at_xdmac.c

index 43451d76b8adf37b88e84916feb991a31b215bdf..5b182061da22126204e0286e61b0ab0092ca6148 100644 (file)
@@ -232,15 +232,15 @@ struct at_xdmac {
 
 /* Linked List Descriptor */
 struct at_xdmac_lld {
-       dma_addr_t      mbr_nda;        /* Next Descriptor Member */
-       u32             mbr_ubc;        /* Microblock Control Member */
-       dma_addr_t      mbr_sa;         /* Source Address Member */
-       dma_addr_t      mbr_da;         /* Destination Address Member */
-       u32             mbr_cfg;        /* Configuration Register */
-       u32             mbr_bc;         /* Block Control Register */
-       u32             mbr_ds;         /* Data Stride Register */
-       u32             mbr_sus;        /* Source Microblock Stride Register */
-       u32             mbr_dus;        /* Destination Microblock Stride Register */
+       u32 mbr_nda;    /* Next Descriptor Member */
+       u32 mbr_ubc;    /* Microblock Control Member */
+       u32 mbr_sa;     /* Source Address Member */
+       u32 mbr_da;     /* Destination Address Member */
+       u32 mbr_cfg;    /* Configuration Register */
+       u32 mbr_bc;     /* Block Control Register */
+       u32 mbr_ds;     /* Data Stride Register */
+       u32 mbr_sus;    /* Source Microblock Stride Register */
+       u32 mbr_dus;    /* Destination Microblock Stride Register */
 };
 
 /* 64-bit alignment needed to update CNDA and CUBC registers in an atomic way. */