diff mbox series

[2/9] dma-mapping: fix the prototype of dma_unmap_single()

Message ID 20200204110906.9377-3-yamada.masahiro@socionext.com
State Superseded
Headers show
Series mmc: sdhci: code clean-up and fix cache coherency problem. | expand

Commit Message

Masahiro Yamada Feb. 4, 2020, 11:08 a.m. UTC
dma_unmap_single() takes the dma address, not virtual address.

Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
---

 arch/arm/include/asm/dma-mapping.h   | 4 +---
 arch/nds32/include/asm/dma-mapping.h | 4 +---
 arch/riscv/include/asm/dma-mapping.h | 4 +---
 arch/x86/include/asm/dma-mapping.h   | 4 +---
 drivers/mmc/tmio-common.c            | 2 +-
 drivers/mtd/nand/raw/denali.c        | 2 +-
 drivers/net/macb.c                   | 2 +-
 drivers/usb/dwc3/core.c              | 6 +++---
 drivers/usb/gadget/udc/udc-core.c    | 2 +-
 9 files changed, 11 insertions(+), 19 deletions(-)

Comments

Simon Glass Feb. 5, 2020, 12:16 a.m. UTC | #1
On Tue, 4 Feb 2020 at 04:09, Masahiro Yamada
<yamada.masahiro at socionext.com> wrote:
>
> dma_unmap_single() takes the dma address, not virtual address.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
> ---
>
>  arch/arm/include/asm/dma-mapping.h   | 4 +---
>  arch/nds32/include/asm/dma-mapping.h | 4 +---
>  arch/riscv/include/asm/dma-mapping.h | 4 +---
>  arch/x86/include/asm/dma-mapping.h   | 4 +---
>  drivers/mmc/tmio-common.c            | 2 +-
>  drivers/mtd/nand/raw/denali.c        | 2 +-
>  drivers/net/macb.c                   | 2 +-
>  drivers/usb/dwc3/core.c              | 6 +++---
>  drivers/usb/gadget/udc/udc-core.c    | 2 +-
>  9 files changed, 11 insertions(+), 19 deletions(-)

Reviewed-by: Simon Glass <sjg at chromium.org>

But please also add a comment to the header files.
Rick Chen Feb. 6, 2020, 1:13 a.m. UTC | #2
> From: Masahiro Yamada [mailto:yamada.masahiro at socionext.com]
> Sent: Tuesday, February 04, 2020 7:09 PM
> To: u-boot at lists.denx.de
> Cc: Masahiro Yamada; Bin Meng; Joe Hershberger; Lukasz Majewski; Marek Vasut; Peng Fan; Rick Jian-Zhi Chen(陳建志); Simon Glass
> Subject: [PATCH 2/9] dma-mapping: fix the prototype of dma_unmap_single()
>
> dma_unmap_single() takes the dma address, not virtual address.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>

Acked-by: Rick Chen <rick at andestech.com>

> ---
>
>  arch/arm/include/asm/dma-mapping.h   | 4 +---
>  arch/nds32/include/asm/dma-mapping.h | 4 +---  arch/riscv/include/asm/dma-mapping.h | 4 +---
>  arch/x86/include/asm/dma-mapping.h   | 4 +---
>  drivers/mmc/tmio-common.c            | 2 +-
>  drivers/mtd/nand/raw/denali.c        | 2 +-
>  drivers/net/macb.c                   | 2 +-
>  drivers/usb/dwc3/core.c              | 6 +++---
>  drivers/usb/gadget/udc/udc-core.c    | 2 +-
>  9 files changed, 11 insertions(+), 19 deletions(-)
>
> diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h
> index d0895a209666..efdbed7280dd 100644
> --- a/arch/arm/include/asm/dma-mapping.h
> +++ b/arch/arm/include/asm/dma-mapping.h
> @@ -42,11 +42,9 @@ static inline dma_addr_t dma_map_single(void *vaddr, size_t len,
>         return addr;
>  }
>
> -static inline void dma_unmap_single(volatile void *vaddr, size_t len,
> +static inline void dma_unmap_single(dma_addr_t addr, size_t len,
>                                     enum dma_data_direction dir)
>  {
> -       unsigned long addr = (unsigned long)vaddr;
> -
>         len = ALIGN(len, ARCH_DMA_MINALIGN);
>
>         if (dir != DMA_TO_DEVICE)
> diff --git a/arch/nds32/include/asm/dma-mapping.h b/arch/nds32/include/asm/dma-mapping.h
> index 9387dec34768..784f489db54e 100644
> --- a/arch/nds32/include/asm/dma-mapping.h
> +++ b/arch/nds32/include/asm/dma-mapping.h
> @@ -34,11 +34,9 @@ static inline dma_addr_t dma_map_single(void *vaddr, size_t len,
>         return addr;
>  }
>
> -static inline void dma_unmap_single(volatile void *vaddr, size_t len,
> +static inline void dma_unmap_single(dma_addr_t addr, size_t len,
>                                     enum dma_data_direction dir)
>  {
> -       unsigned long addr = (unsigned long)vaddr;
> -
>         len = ALIGN(len, ARCH_DMA_MINALIGN);
>
>         if (dir != DMA_TO_DEVICE)
> diff --git a/arch/riscv/include/asm/dma-mapping.h b/arch/riscv/include/asm/dma-mapping.h
> index eac56f8fbdfa..1ac4a4fed58d 100644
> --- a/arch/riscv/include/asm/dma-mapping.h
> +++ b/arch/riscv/include/asm/dma-mapping.h
> @@ -44,11 +44,9 @@ static inline dma_addr_t dma_map_single(void *vaddr, size_t len,
>         return addr;
>  }
>
> -static inline void dma_unmap_single(volatile void *vaddr, size_t len,
> +static inline void dma_unmap_single(dma_addr_t addr, size_t len,
>                                     enum dma_data_direction dir)
>  {
> -       unsigned long addr = (unsigned long)vaddr;
> -
>         len = ALIGN(len, ARCH_DMA_MINALIGN);
>
>         if (dir != DMA_TO_DEVICE)
> diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h
> index 7e205e3313ac..37704da5dd4f 100644
> --- a/arch/x86/include/asm/dma-mapping.h
> +++ b/arch/x86/include/asm/dma-mapping.h
> @@ -42,11 +42,9 @@ static inline dma_addr_t dma_map_single(void *vaddr, size_t len,
>         return addr;
>  }
>
> -static inline void dma_unmap_single(volatile void *vaddr, size_t len,
> +static inline void dma_unmap_single(dma_addr_t addr, size_t len,
>                                     enum dma_data_direction dir)
>  {
> -       unsigned long addr = (unsigned long)vaddr;
> -
>         len = ALIGN(len, ARCH_DMA_MINALIGN);
>
>         if (dir != DMA_TO_DEVICE)
> diff --git a/drivers/mmc/tmio-common.c b/drivers/mmc/tmio-common.c index 5a8506dcb6bd..e5d9d64b9684 100644
> --- a/drivers/mmc/tmio-common.c
> +++ b/drivers/mmc/tmio-common.c
> @@ -352,7 +352,7 @@ static int tmio_sd_dma_xfer(struct udevice *dev, struct mmc_data *data)
>         if (poll_flag == TMIO_SD_DMA_INFO1_END_RD)
>                 udelay(1);
>
> -       dma_unmap_single(buf, len, dir);
> +       dma_unmap_single(dma_addr, len, dir);
>
>         return ret;
>  }
> diff --git a/drivers/mtd/nand/raw/denali.c b/drivers/mtd/nand/raw/denali.c index 8537c609fb62..8dfffad63b60 100644
> --- a/drivers/mtd/nand/raw/denali.c
> +++ b/drivers/mtd/nand/raw/denali.c
> @@ -577,7 +577,7 @@ static int denali_dma_xfer(struct denali_nand_info *denali, void *buf,
>
>         iowrite32(0, denali->reg + DMA_ENABLE);
>
> -       dma_unmap_single(buf, size, dir);
> +       dma_unmap_single(dma_addr, size, dir);
>
>         if (irq_status & INTR__ERASED_PAGE)
>                 memset(buf, 0xff, size);
> diff --git a/drivers/net/macb.c b/drivers/net/macb.c index 0d4929bec131..7a2b1abeeb03 100644
> --- a/drivers/net/macb.c
> +++ b/drivers/net/macb.c
> @@ -342,7 +342,7 @@ static int _macb_send(struct macb_device *macb, const char *name, void *packet,
>                 udelay(1);
>         }
>
> -       dma_unmap_single(packet, length, DMA_TO_DEVICE);
> +       dma_unmap_single(paddr, length, DMA_TO_DEVICE);
>
>         if (i <= MACB_TX_TIMEOUT) {
>                 if (ctrl & MACB_BIT(TX_UNDERRUN))
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 77c555e76924..c5907534692e 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -285,8 +285,8 @@ static int dwc3_setup_scratch_buffers(struct dwc3 *dwc)
>         return 0;
>
>  err1:
> -       dma_unmap_single((void *)(uintptr_t)dwc->scratch_addr, dwc->nr_scratch *
> -                        DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL);
> +       dma_unmap_single(scratch_addr, dwc->nr_scratch * DWC3_SCRATCHBUF_SIZE,
> +                        DMA_BIDIRECTIONAL);
>
>  err0:
>         return ret;
> @@ -300,7 +300,7 @@ static void dwc3_free_scratch_buffers(struct dwc3 *dwc)
>         if (!dwc->nr_scratch)
>                 return;
>
> -       dma_unmap_single((void *)(uintptr_t)dwc->scratch_addr, dwc->nr_scratch *
> +       dma_unmap_single(dwc->scratch_addr, dwc->nr_scratch *
>                          DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL);
>         kfree(dwc->scratchbuf);
>  }
> diff --git a/drivers/usb/gadget/udc/udc-core.c b/drivers/usb/gadget/udc/udc-core.c
> index 8d1d90e3e39f..8437d9079bef 100644
> --- a/drivers/usb/gadget/udc/udc-core.c
> +++ b/drivers/usb/gadget/udc/udc-core.c
> @@ -65,7 +65,7 @@ void usb_gadget_unmap_request(struct usb_gadget *gadget,
>         if (req->length == 0)
>                 return;
>
> -       dma_unmap_single((void *)(uintptr_t)req->dma, req->length,
> +       dma_unmap_single(req->dma, req->length,
>                          is_in ? DMA_TO_DEVICE : DMA_FROM_DEVICE);  }  EXPORT_SYMBOL_GPL(usb_gadget_unmap_request);
> --
> 2.17.1
Masahiro Yamada Feb. 11, 2020, 3:20 p.m. UTC | #3
On Wed, Feb 5, 2020 at 9:17 AM Simon Glass <sjg at chromium.org> wrote:
>
> On Tue, 4 Feb 2020 at 04:09, Masahiro Yamada
> <yamada.masahiro at socionext.com> wrote:
> >
> > dma_unmap_single() takes the dma address, not virtual address.
> >
> > Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
> > ---
> >
> >  arch/arm/include/asm/dma-mapping.h   | 4 +---
> >  arch/nds32/include/asm/dma-mapping.h | 4 +---
> >  arch/riscv/include/asm/dma-mapping.h | 4 +---
> >  arch/x86/include/asm/dma-mapping.h   | 4 +---
> >  drivers/mmc/tmio-common.c            | 2 +-
> >  drivers/mtd/nand/raw/denali.c        | 2 +-
> >  drivers/net/macb.c                   | 2 +-
> >  drivers/usb/dwc3/core.c              | 6 +++---
> >  drivers/usb/gadget/udc/udc-core.c    | 2 +-
> >  9 files changed, 11 insertions(+), 19 deletions(-)
>
> Reviewed-by: Simon Glass <sjg at chromium.org>
>
> But please also add a comment to the header files.

Same here.

See my reply to 1/9.



--
Best Regards

Masahiro Yamada
diff mbox series

Patch

diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h
index d0895a209666..efdbed7280dd 100644
--- a/arch/arm/include/asm/dma-mapping.h
+++ b/arch/arm/include/asm/dma-mapping.h
@@ -42,11 +42,9 @@  static inline dma_addr_t dma_map_single(void *vaddr, size_t len,
 	return addr;
 }
 
-static inline void dma_unmap_single(volatile void *vaddr, size_t len,
+static inline void dma_unmap_single(dma_addr_t addr, size_t len,
 				    enum dma_data_direction dir)
 {
-	unsigned long addr = (unsigned long)vaddr;
-
 	len = ALIGN(len, ARCH_DMA_MINALIGN);
 
 	if (dir != DMA_TO_DEVICE)
diff --git a/arch/nds32/include/asm/dma-mapping.h b/arch/nds32/include/asm/dma-mapping.h
index 9387dec34768..784f489db54e 100644
--- a/arch/nds32/include/asm/dma-mapping.h
+++ b/arch/nds32/include/asm/dma-mapping.h
@@ -34,11 +34,9 @@  static inline dma_addr_t dma_map_single(void *vaddr, size_t len,
 	return addr;
 }
 
-static inline void dma_unmap_single(volatile void *vaddr, size_t len,
+static inline void dma_unmap_single(dma_addr_t addr, size_t len,
 				    enum dma_data_direction dir)
 {
-	unsigned long addr = (unsigned long)vaddr;
-
 	len = ALIGN(len, ARCH_DMA_MINALIGN);
 
 	if (dir != DMA_TO_DEVICE)
diff --git a/arch/riscv/include/asm/dma-mapping.h b/arch/riscv/include/asm/dma-mapping.h
index eac56f8fbdfa..1ac4a4fed58d 100644
--- a/arch/riscv/include/asm/dma-mapping.h
+++ b/arch/riscv/include/asm/dma-mapping.h
@@ -44,11 +44,9 @@  static inline dma_addr_t dma_map_single(void *vaddr, size_t len,
 	return addr;
 }
 
-static inline void dma_unmap_single(volatile void *vaddr, size_t len,
+static inline void dma_unmap_single(dma_addr_t addr, size_t len,
 				    enum dma_data_direction dir)
 {
-	unsigned long addr = (unsigned long)vaddr;
-
 	len = ALIGN(len, ARCH_DMA_MINALIGN);
 
 	if (dir != DMA_TO_DEVICE)
diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h
index 7e205e3313ac..37704da5dd4f 100644
--- a/arch/x86/include/asm/dma-mapping.h
+++ b/arch/x86/include/asm/dma-mapping.h
@@ -42,11 +42,9 @@  static inline dma_addr_t dma_map_single(void *vaddr, size_t len,
 	return addr;
 }
 
-static inline void dma_unmap_single(volatile void *vaddr, size_t len,
+static inline void dma_unmap_single(dma_addr_t addr, size_t len,
 				    enum dma_data_direction dir)
 {
-	unsigned long addr = (unsigned long)vaddr;
-
 	len = ALIGN(len, ARCH_DMA_MINALIGN);
 
 	if (dir != DMA_TO_DEVICE)
diff --git a/drivers/mmc/tmio-common.c b/drivers/mmc/tmio-common.c
index 5a8506dcb6bd..e5d9d64b9684 100644
--- a/drivers/mmc/tmio-common.c
+++ b/drivers/mmc/tmio-common.c
@@ -352,7 +352,7 @@  static int tmio_sd_dma_xfer(struct udevice *dev, struct mmc_data *data)
 	if (poll_flag == TMIO_SD_DMA_INFO1_END_RD)
 		udelay(1);
 
-	dma_unmap_single(buf, len, dir);
+	dma_unmap_single(dma_addr, len, dir);
 
 	return ret;
 }
diff --git a/drivers/mtd/nand/raw/denali.c b/drivers/mtd/nand/raw/denali.c
index 8537c609fb62..8dfffad63b60 100644
--- a/drivers/mtd/nand/raw/denali.c
+++ b/drivers/mtd/nand/raw/denali.c
@@ -577,7 +577,7 @@  static int denali_dma_xfer(struct denali_nand_info *denali, void *buf,
 
 	iowrite32(0, denali->reg + DMA_ENABLE);
 
-	dma_unmap_single(buf, size, dir);
+	dma_unmap_single(dma_addr, size, dir);
 
 	if (irq_status & INTR__ERASED_PAGE)
 		memset(buf, 0xff, size);
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 0d4929bec131..7a2b1abeeb03 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -342,7 +342,7 @@  static int _macb_send(struct macb_device *macb, const char *name, void *packet,
 		udelay(1);
 	}
 
-	dma_unmap_single(packet, length, DMA_TO_DEVICE);
+	dma_unmap_single(paddr, length, DMA_TO_DEVICE);
 
 	if (i <= MACB_TX_TIMEOUT) {
 		if (ctrl & MACB_BIT(TX_UNDERRUN))
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 77c555e76924..c5907534692e 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -285,8 +285,8 @@  static int dwc3_setup_scratch_buffers(struct dwc3 *dwc)
 	return 0;
 
 err1:
-	dma_unmap_single((void *)(uintptr_t)dwc->scratch_addr, dwc->nr_scratch *
-			 DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL);
+	dma_unmap_single(scratch_addr, dwc->nr_scratch * DWC3_SCRATCHBUF_SIZE,
+			 DMA_BIDIRECTIONAL);
 
 err0:
 	return ret;
@@ -300,7 +300,7 @@  static void dwc3_free_scratch_buffers(struct dwc3 *dwc)
 	if (!dwc->nr_scratch)
 		return;
 
-	dma_unmap_single((void *)(uintptr_t)dwc->scratch_addr, dwc->nr_scratch *
+	dma_unmap_single(dwc->scratch_addr, dwc->nr_scratch *
 			 DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL);
 	kfree(dwc->scratchbuf);
 }
diff --git a/drivers/usb/gadget/udc/udc-core.c b/drivers/usb/gadget/udc/udc-core.c
index 8d1d90e3e39f..8437d9079bef 100644
--- a/drivers/usb/gadget/udc/udc-core.c
+++ b/drivers/usb/gadget/udc/udc-core.c
@@ -65,7 +65,7 @@  void usb_gadget_unmap_request(struct usb_gadget *gadget,
 	if (req->length == 0)
 		return;
 
-	dma_unmap_single((void *)(uintptr_t)req->dma, req->length,
+	dma_unmap_single(req->dma, req->length,
 			 is_in ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
 }
 EXPORT_SYMBOL_GPL(usb_gadget_unmap_request);