[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200710110752.28853-1-benchuanggli@gmail.com>
Date: Fri, 10 Jul 2020 19:07:52 +0800
From: Ben Chuang <benchuanggli@...il.com>
To: adrian.hunter@...el.com, ulf.hansson@...aro.org
Cc: linux-mmc@...r.kernel.org, linux-kernel@...r.kernel.org,
ben.chuang@...esyslogic.com.tw, takahiro.akashi@...aro.org,
greg.tu@...esyslogic.com.tw, Ben Chuang <benchuanggli@...il.com>
Subject: [RFC PATCH V3 00/21] Add support UHS-II for GL9755
Summary
=======
These patches[1] support UHS-II and fix GL9755 UHS-II compatibility.
About UHS-II, roughly deal with the following three parts:
1) A UHS-II detection and initialization:
- Host setup to support UHS-II (Section 3.13.1 Host Controller Setup Sequence
[2]).
- Detect a UHS-II I/F (Section 3.13.2 Card Interface Detection Sequence[2]).
- In step(9) of Section 3.13.2 in [2], UHS-II initialization is include Section
3.13.3 UHS-II Card Initialization and Section 3.13.4 UHS-II Setting Register
Setup Sequence.
2) Send Legacy SD command through SD-TRAN
- Encapsulated SD packets are defined in SD-TRAN in order to ensure Legacy SD
compatibility and preserve Legacy SD infrastructures (Section 7.1.1 Packet
Types and Format Overview[3]).
- Host issue a UHS-II CCMD packet or a UHS-II DCMD (Section 3.13.5 UHS-II
CCMD Packet issuing and Section 3.13.6 UHS-II DCMD Packet issuing[2]).
3) UHS-II Interrupt
- Except for UHS-II error interrupts, most interrupts share the original
interrupt registers.
Patch structure
===============
patch#1-#7: for core
patch#8-#17: for sdhci
patch#18-#21: for GL9755
Tests
=====
Ran 'dd' command to evaluate the performance:
(SanDisk UHS-II card on GL9755 controller)
Read Write
UHS-II disabled (UHS-I): 88.3MB/s 60.7MB/s
UHS-II enabled : 206MB/s 80MB/s
TODO
====
- replace some define with BIT macro
Reference
=========
[1] https://gitlab.com/ben.chuang/linux-uhs2-gl9755.git
[2] SD Host Controller Simplified Specification 4.20
[3] UHS-II Simplified Addendum 1.02
Changes in v3 (Jul. 10, 2020)
* rebased to v5.8-rc4
* add copyright notice
* reorganize the patch set and split some commits into smaller ones
* separate uhs-2 headers from others
* correct wrong spellings
* fix most of checkpatch warnings/errors
* remove all k[cz]alloc() from the code
* guard sdhci-uhs2 specific code with
'if (IS_ENABLED(CONFIG_MMC_SDHCI_UHS2))'
* make sdhci-uhs2.c as a module
* trivial changes, including
- rename back sdhci-core.c to sdhci.c
- allow vendor code to disable uhs2 if v4_mode == 0
in __sdhci_add_host()
- merge uhs2_power_up() into mmc_power_up()
- remove flag_uhs2 from mmc_attach_sd()
- add function descriptions to EXPORT'ed functions
- other minor code optimization
Changes in v2 (Jan. 9, 2020)
* rebased to v5.5-rc5
AKASHI Takahiro (15):
mmc: core: UHS-II support, modify power-up sequence
mmc: core: UHS-II support, skip set_chip_select()
mmc: core: UHS-II support, skip TMODE setup in some cases
mmc: core: UHS-II support, generate UHS-II SD command packet
mmc: core: UHS-II support, set APP_CMD bit if necessary
mmc: sdhci: add a kernel configuration for enabling UHS-II support
mmc: sdhci: add UHS-II related definitions in headers
mmc: sdhci: UHS-II support, dump UHS-II registers
mmc: sdhci: UHS-II support, export host operations to core
mmc: sdhci: UHS-II support, skip signal_voltage_switch()
mmc: sdhci: UHS-II support, handle vdd2 in case of power-off
mmc: sdhci: UHS-II support, modify set_power() to handle vdd2
mmc: sdhci: UHS-II support, export helper functions to a module
mmc: sdhci: UHS-II support, implement operations as a module
mmc: core: add post-mmc_attach_sd hook
Ben Chuang (6):
mmc: add UHS-II related definitions in public headers
mmc: core: UHS-II support, try to select UHS-II interface
mmc: sdhci: UHS-II support, add hooks for additional operations
mmc: sdhci-uhs2: add pre-detect_init hook
mmc: sdhci-uhs2: add post-mmc_attach_sd hook
mmc: sdhci-pci-gli: enable UHS-II mode for GL9755
drivers/mmc/core/Makefile | 2 +-
drivers/mmc/core/block.c | 7 +-
drivers/mmc/core/bus.c | 5 +-
drivers/mmc/core/core.c | 119 +++-
drivers/mmc/core/regulator.c | 14 +
drivers/mmc/core/sd.c | 32 ++
drivers/mmc/core/sd_ops.c | 12 +
drivers/mmc/core/uhs2.c | 874 ++++++++++++++++++++++++++++++
drivers/mmc/core/uhs2.h | 21 +
drivers/mmc/host/Kconfig | 10 +
drivers/mmc/host/Makefile | 1 +
drivers/mmc/host/sdhci-omap.c | 2 +-
drivers/mmc/host/sdhci-pci-core.c | 4 +-
drivers/mmc/host/sdhci-pci-gli.c | 361 +++++++++++-
drivers/mmc/host/sdhci-pxav3.c | 4 +-
drivers/mmc/host/sdhci-uhs2.c | 797 +++++++++++++++++++++++++++
drivers/mmc/host/sdhci-uhs2.h | 215 ++++++++
drivers/mmc/host/sdhci-xenon.c | 4 +-
drivers/mmc/host/sdhci.c | 321 +++++++++--
drivers/mmc/host/sdhci.h | 113 +++-
include/linux/mmc/card.h | 1 +
include/linux/mmc/core.h | 6 +
include/linux/mmc/host.h | 31 ++
include/linux/mmc/uhs2.h | 268 +++++++++
24 files changed, 3151 insertions(+), 73 deletions(-)
create mode 100644 drivers/mmc/core/uhs2.c
create mode 100644 drivers/mmc/core/uhs2.h
create mode 100644 drivers/mmc/host/sdhci-uhs2.c
create mode 100644 drivers/mmc/host/sdhci-uhs2.h
create mode 100644 include/linux/mmc/uhs2.h
--
2.27.0
Powered by blists - more mailing lists