[PATCH/RFC 0/5 repost] mmc: renesas_sdhi: add support for R-Car Gen3 SDHI DMAC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

this series adds support for the internal DMAC used by r8a779[56] SoCs.
This is achieved by adding a new variant of the SDHI driver for this
DMA controller with compat strings for the r8a779[56] SoCs.
Compat strings for these SoCs are also removed from the existing SYS DMAC
variant of the SDHI driver.

Based on mmc/next

Headline performance boost: 9.5MB/s -> 39.7MB/s
More run-time information below.

Simon Horman (4):
  mmc: sh_mobile_sdhi: set max_segs and max_blk_count values R-Car Gen3
  mmc: tmio: add complete to DMA ops
  mmc: renesas_sdhi: add support for R-Car Gen3 SDHI DMAC
  mmc: renesas-sdhi: remove gen3 support from sysc dmac driver

Yoshihiro Shimoda (1):
  mmc: tmio: add max_segs and max_blk_count in tmio_mmc_data

 drivers/mmc/host/Kconfig                      |  17 ++
 drivers/mmc/host/Makefile                     |   8 +-
 drivers/mmc/host/renesas_sdhi.h               |   2 +
 drivers/mmc/host/renesas_sdhi_core.c          |   2 +
 drivers/mmc/host/renesas_sdhi_internal_dmac.c | 275 ++++++++++++++++++++++++++
 drivers/mmc/host/renesas_sdhi_sys_dmac.c      |  23 +--
 drivers/mmc/host/tmio_mmc.h                   |   2 +
 drivers/mmc/host/tmio_mmc_core.c              |  16 +-
 include/linux/mfd/tmio.h                      |   2 +
 9 files changed, 319 insertions(+), 28 deletions(-)
 create mode 100644 drivers/mmc/host/renesas_sdhi_internal_dmac.c

-- 
2.1.4

M3-W ES1.0

fd9437fc8884 (topic/sdhi-gen3-dma-2017) mmc: renesas-sdhi: remove gen3 support from sysc dmac driver

# dmesg | egrep '(sd|mmc)'
[    1.412911] sdhci: Secure Digital Host Controller Interface driver
[    1.419120] sdhci: Copyright(c) Pierre Ossman
[    1.423990] renesas_sdhi_internal_dmac ee100000.sd: Got CD GPIO
[    1.429951] renesas_sdhi_internal_dmac ee100000.sd: Got WP GPIO
[    1.560503] renesas_sdhi_internal_dmac ee140000.sd: mmc0 base at 0xee140000 max clock rate 200 MHz
[    1.569871] renesas_sdhi_internal_dmac ee160000.sd: Got CD GPIO
[    1.575846] renesas_sdhi_internal_dmac ee160000.sd: Got WP GPIO
[    1.590584] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.638687] renesas_sdhi_internal_dmac ee100000.sd: Got CD GPIO
[    1.644661] renesas_sdhi_internal_dmac ee100000.sd: Got WP GPIO
[    1.772556] renesas_sdhi_internal_dmac ee100000.sd: mmc1 base at 0xee100000 max clock rate 200 MHz
[    1.782613] renesas_sdhi_internal_dmac ee160000.sd: Got CD GPIO
[    1.788580] renesas_sdhi_internal_dmac ee160000.sd: Got WP GPIO
[    1.842940] mmc0: new high speed MMC card at address 0001
[    1.852857] mmcblk0: mmc0:0001 eMMC   28.8 GiB
[    1.857624] mmcblk0boot0: mmc0:0001 eMMC   partition 1 4.00 MiB
[    1.867734] mmcblk0boot1: mmc0:0001 eMMC   partition 2 4.00 MiB
[    1.877858] mmcblk0rpmb: mmc0:0001 eMMC   partition 3 4.00 MiB
[    1.887028]  mmcblk0: p1
[    1.916589] renesas_sdhi_internal_dmac ee160000.sd: mmc2 base at 0xee160000 max clock rate 200 MHz
[    2.060534] mmc1: new ultra high speed SDR50 SDHC card at address e624
[    2.071600] mmcblk1: mmc1:e624 SU08G 7.40 GiB
[    2.086875]  mmcblk1: p1
[    2.260532] mmc2: new ultra high speed SDR50 SDHC card at address 0001
[    2.267407] mmcblk2: mmc2:0001 00000 29.8 GiB
[    2.281572]  mmcblk2: p1

# grep sd /proc/interrupts
100:      24972          0     GIC-0 197 Level     ee100000.sd
101:        604          0     GIC-0 199 Level     ee140000.sd
102:      24980          0     GIC-0 200 Level     ee160000.sd
178:          0          0  e6053000.gpio  12 Edge      ee100000.sd cd
197:          0          0  e6054000.gpio  15 Edge      ee160000.sd cd

# cat /sys/devices/platform/soc/ee100000.sd/mmc_host/mmc1/mmc1:e624
035344535530384780b1b8a11200d300
# dd if=/dev/mmcblk1 of=/dev/null bs=1M count=512 iflag=direct
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 13.5376 s, 39.7 MB/s

# cat /sys/devices/platform/soc/ee160000.sd/mmc_host/mmc2/mmc2:0001
1b534d3030303030103916141700f600
# dd if=/dev/mmcblk2 of=/dev/null bs=1M count=512 iflag=direct
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 17.5562 s, 30.6 MB/s

# grep sd /proc/interrupts
100:      49548          0     GIC-0 197 Level     ee100000.sd
101:        604          0     GIC-0 199 Level     ee140000.sd
102:      49556          0     GIC-0 200 Level     ee160000.sd
178:          0          0  e6053000.gpio  12 Edge      ee100000.sd cd
197:          0          0  e6054000.gpio  15 Edge      ee160000.sd cd

-----------------------

6e75316c15df (mmc/next) mmc: tmio: make sure SDIO gets reinitialized after resume

# dmesg | egrep '(sd|mmc)'
[    1.428112] sdhci: Secure Digital Host Controller Interface driver
[    1.434620] sdhci: Copyright(c) Pierre Ossman
[    1.439831] sh_mobile_sdhi ee100000.sd: Got CD GPIO
[    1.444764] sh_mobile_sdhi ee100000.sd: Got WP GPIO
[    1.571160] sh_mobile_sdhi ee140000.sd: mmc0 base at 0xee140000 max clock rate 200 MHz
[    1.579496] sh_mobile_sdhi ee160000.sd: Got CD GPIO
[    1.584434] sh_mobile_sdhi ee160000.sd: Got WP GPIO
[    1.598138] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.647916] sh_mobile_sdhi ee100000.sd: Got CD GPIO
[    1.652857] sh_mobile_sdhi ee100000.sd: Got WP GPIO
[    1.779234] sh_mobile_sdhi ee100000.sd: mmc1 base at 0xee100000 max clock rate 200 MHz
[    1.788368] sh_mobile_sdhi ee160000.sd: Got CD GPIO
[    1.793300] sh_mobile_sdhi ee160000.sd: Got WP GPIO
[    1.832493] mmc0: new high speed MMC card at address 0001
[    1.842368] mmcblk0: mmc0:0001 eMMC   28.8 GiB
[    1.851133] mmcblk0boot0: mmc0:0001 eMMC   partition 1 4.00 MiB
[    1.857245] mmcblk0boot1: mmc0:0001 eMMC   partition 2 4.00 MiB
[    1.867323] mmcblk0rpmb: mmc0:0001 eMMC   partition 3 4.00 MiB
[    1.876809]  mmcblk0: p1
[    1.919252] sh_mobile_sdhi ee160000.sd: mmc2 base at 0xee160000 max clock rate 200 MHz
[    2.063208] mmc1: new ultra high speed SDR50 SDHC card at address e624
[    2.074300] mmcblk1: mmc1:e624 SU08G 7.40 GiB
[    2.089887]  mmcblk1: p1
[    2.263192] mmc2: new ultra high speed SDR50 SDHC card at address 0001
[    2.270073] mmcblk2: mmc2:0001 00000 29.8 GiB
[    2.284583]  mmcblk2: p1

# grep sd /proc/interrupts
100:       2276          0     GIC-0 197 Level     ee100000.sd
101:       3040          0     GIC-0 199 Level     ee140000.sd
102:       2284          0     GIC-0 200 Level     ee160000.sd
178:          0          0  e6053000.gpio  12 Edge      ee100000.sd cd
197:          0          0  e6054000.gpio  15 Edge      ee160000.sd cd

# cat /sys/devices/platform/soc/ee100000.sd/mmc_host/mmc1/mmc1:e624 
035344535530384780b1b8a11200d300

# cat /sys/devices/platform/soc/ee160000.sd/mmc_host/mmc2/mmc2:0001 
1b534d3030303030103916141700f600
# dd if=/dev/mmcblk2 of=/dev/null bs=1M count=512 iflag=direct
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 56.7809 s, 9.5 MB/s

# grep sd /proc/interrupts
100:       2276          0     GIC-0 197 Level     ee100000.sd
101:       3040          0     GIC-0 199 Level     ee140000.sd
102:    2124012          0     GIC-0 200 Level     ee160000.sd
178:          0          0  e6053000.gpio  12 Edge      ee100000.sd cd
197:          0          0  e6054000.gpio  15 Edge      ee160000.sd cd



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux