[v3,00/11] mmc: sdhci: code clean-up and fix cache coherency problem
mbox series

Message ID 20200214074027.19824-1-yamada.masahiro@socionext.com
Headers show
Series
  • mmc: sdhci: code clean-up and fix cache coherency problem
Related show

Message

Masahiro Yamada Feb. 14, 2020, 7:40 a.m. UTC
My main motivation of this series is the last patch
"mmc: sdhci: fix missing cache invalidation after reading by DMA".

Currently, read data are occasionally corrupted due to the
missing cache invalidation.

To fix it nicely (adds dma_unmap_single(), which follows the
Linux coding style), I did some cleaups first.

Patch 01-04 tidies up the DMA helpers.

Patch 05-10 are code clean-ups.

Patch 11 fixes the bug.


Masahiro Yamada (11):
  dma-mapping: fix the prototype of dma_map_single()
  dma-mapping: fix the prototype of dma_unmap_single()
  dma-mapping: move dma_map_(un)single() to <linux/dma-mapping.h>
  dma-mapping: add <asm/dma-mapping.h> for all architectures
  mmc: sdhci: put the aligned buffer pointer to struct sdhci_host
  mmc: sdhci: reduce code duplication for aligned buffer
  mmc: sdhci: use lower_32_bit2() and upper_32_bits() for setting
    adma_addr
  mmc: sdhci: remove unneeded casts
  mmc: add mmc_get_dma_dir() helper
  mmc: sdhci: use dma_map_single() instead of flush_cache() before DMA
  mmc: sdhci: fix missing cache invalidation after reading by DMA

 arch/arc/include/asm/dma-mapping.h        |  1 +
 arch/arm/include/asm/dma-mapping.h        | 29 +------
 arch/m68k/include/asm/dma-mapping.h       |  1 +
 arch/microblaze/include/asm/dma-mapping.h |  1 +
 arch/mips/include/asm/dma-mapping.h       |  1 +
 arch/nds32/include/asm/dma-mapping.h      | 27 +------
 arch/nios2/include/asm/dma-mapping.h      | 25 +-----
 arch/powerpc/include/asm/dma-mapping.h    |  1 +
 arch/riscv/include/asm/dma-mapping.h      | 29 +------
 arch/sandbox/include/asm/dma-mapping.h    |  1 +
 arch/sh/include/asm/dma-mapping.h         |  1 +
 arch/x86/include/asm/dma-mapping.h        | 29 +------
 arch/xtensa/include/asm/dma-mapping.h     |  1 +
 drivers/dma/ti/k3-udma.c                  |  2 +-
 drivers/mmc/sdhci.c                       | 96 +++++++++++------------
 drivers/mmc/tmio-common.c                 |  5 +-
 drivers/mtd/nand/raw/denali.c             |  5 +-
 drivers/net/altera_tse.c                  |  2 +-
 drivers/net/ftmac110.c                    |  2 +-
 drivers/net/macb.c                        |  4 +-
 drivers/soc/ti/k3-navss-ringacc.c         |  2 +-
 drivers/ufs/ufs.c                         |  2 +-
 drivers/usb/cdns3/gadget.c                |  2 +-
 drivers/usb/dwc3/core.c                   |  8 +-
 drivers/usb/dwc3/gadget.c                 |  2 +-
 drivers/usb/gadget/udc/udc-core.c         |  4 +-
 include/linux/dma-mapping.h               | 63 +++++++++++++++
 include/mmc.h                             |  6 ++
 include/sdhci.h                           |  3 +
 29 files changed, 150 insertions(+), 205 deletions(-)
 create mode 100644 arch/arc/include/asm/dma-mapping.h
 create mode 100644 arch/m68k/include/asm/dma-mapping.h
 create mode 100644 arch/microblaze/include/asm/dma-mapping.h
 create mode 100644 arch/mips/include/asm/dma-mapping.h
 create mode 100644 arch/powerpc/include/asm/dma-mapping.h
 create mode 100644 arch/sandbox/include/asm/dma-mapping.h
 create mode 100644 arch/sh/include/asm/dma-mapping.h
 create mode 100644 arch/xtensa/include/asm/dma-mapping.h
 create mode 100644 include/linux/dma-mapping.h