On 18/10/24 13:53, Victor Shih wrote: > From: Victor Shih <victor.shih@xxxxxxxxxxxxxxxxxxx> > > Summary > ======= > These patches[1] support UHS-II and fix GL9755 and GL9767 > 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: for core > patch#2-#14: for sdhci > patch#15: for GL9755 > patch#16: for GL9767 > > Tests > ===== > Ran 'dd' command to evaluate the performance 3 times: > (SanDisk UHS-II card on GL9755 controller) > Read Write > UHS-II disabled (UHS-I): 81.9MB/s 51.4MB/s > UHS-II enabled : 206MB/s 80.5MB/s > Read Write > UHS-II disabled (UHS-I): 82.3MB/s 49.7MB/s > UHS-II enabled : 208MB/s 80.8MB/s > Read Write > UHS-II disabled (UHS-I): 82.9MB/s 50.8MB/s > UHS-II enabled : 205MB/s 90.0MB/s > (SanDisk UHS-II card on GL9767 controller) > Read Write > UHS-II disabled (UHS-I): 83.5MB/s 50.5MB/s > UHS-II enabled : 200MB/s 75.3MB/s > Read Write > UHS-II disabled (UHS-I): 85.2MB/s 56.3MB/s > UHS-II enabled : 203MB/s 75.8MB/s > Read Write > UHS-II disabled (UHS-I): 82.9MB/s 51.1MB/s > UHS-II enabled : 196MB/s 77.8MB/s > > Test command > ===== > Read: dd if=/dev/mmcxxx of=/dev/null bs=4096k count=2000 iflag=direct > Write:dd if=/dev/zero of=/dev/mmcxxx bs=4096k count=2000 oflag=direct > > Changes in v23 (October. 18, 2024) > * Rebase on latest mmc/next. > * Version 22 patch#1-patch#6 have already been applied to the mmc/next > branch, so the patch order for version 23 has been shifted forward. > * Patch#1: Remove mmc_uhs2_card_prepare_cmd() function. > Remove mmc_sd_can_poweroff_notify() function. > Modify ios.timing setting in the sd_uhs2_power_off() function. > Restore the position of assign the host->card to original > position in the sd_uhs2_init_card() function. > Remove unnecessary error handle in the sd_uhs2_init_card() > function. > Add oldcard judgment to skip some programs in the > sd_uhs2_legacy_init() function. > Remove unnecessary error handle in the sd_uhs2_legacy_init() > function. > Remove mmc_card_set_present() function in the > sd_uhs2_reinit()function. > > Reference > ========= > [1] https://gitlab.com/VictorShih/linux-uhs2.git > [2] SD Host Controller Simplified Specification 4.20 > [3] UHS-II Simplified Addendum 1.02 > [4] https://patchwork.kernel.org/project/linux-mmc/cover/20240913102836.6144-1-victorshihgli@xxxxxxxxx/ Not all SDHCI patches show my Acked-by although I did give it in V22 for SDHCI patches. So again for SDHCI: Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> Ulf mentioned checkpatch warnings. Here is a summary: --------------------------------------------------------------------------------------- heads/head-2024-10-24-01/0002-mmc-sdhci-add-UHS-II-related-definitions-in-headers.patch --------------------------------------------------------------------------------------- WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #20: new file mode 100644 Nope - already covered by drivers/mmc/host/sdhci* WARNING: It's generally not useful to have the filename in the file #27: FILE: drivers/mmc/host/sdhci-uhs2.h:3: + * linux/drivers/mmc/host/sdhci-uhs2.h - Secure Digital Host Controller Interface driver Could drop the file name ---------------------------------------------------------------------------------------- heads/head-2024-10-24-01/0003-mmc-sdhci-add-UHS-II-module-and-add-a-kernel-configu.patch ---------------------------------------------------------------------------------------- WARNING: please write a help paragraph that fully describes the config symbol #33: FILE: drivers/mmc/host/Kconfig:101: +config MMC_SDHCI_UHS2 + tristate "UHS2 support on SDHCI controller" + depends on MMC_SDHCI + help + This option is selected by SDHCI controller drivers that want to + support UHS2-capable devices. + + If you have a controller with this feature, say Y or M here. + A web-search for uhs2 says what it is, so I have no strong feelings about adding more. WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #58: new file mode 100644 Nope - already covered by drivers/mmc/host/sdhci* ---------------------------------------------------------------------------------------- heads/head-2024-10-24-01/0010-mmc-sdhci-uhs2-add-related-functions-to-initialize-t.patch ---------------------------------------------------------------------------------------- WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?) #11: After detected the UHS-II interface, the host's UHS-II capabilities will be set up here and Commit message could be wrapped as requested There is also the ones below, but please _leave_ the code as it is consistent with the current code in the struct. ------------------------------------------------------------------------------ heads/head-2024-10-24-01/0014-mmc-sdhci-pci-add-UHS-II-support-framework.patch ------------------------------------------------------------------------------ WARNING: Unnecessary space before function pointer arguments #81: FILE: drivers/mmc/host/sdhci-pci.h:148: + void (*remove_host) (struct sdhci_pci_slot *, int); WARNING: function definition argument 'struct sdhci_pci_slot *' should also have an identifier name #81: FILE: drivers/mmc/host/sdhci-pci.h:148: + void (*remove_host) (struct sdhci_pci_slot *, int); WARNING: function definition argument 'int' should also have an identifier name #81: FILE: drivers/mmc/host/sdhci-pci.h:148: + void (*remove_host) (struct sdhci_pci_slot *, int); total: 0 errors, 3 warnings, 0 checks, 56 lines checked