[PATCH v2 RESEND 3/6] mmc: rtsx_usb_sdmmc: advertise UHS SDR104 and DDR50

Sean Rhodes posted 6 patches 3 weeks, 5 days ago
[PATCH v2 RESEND 3/6] mmc: rtsx_usb_sdmmc: advertise UHS SDR104 and DDR50
Posted by Sean Rhodes 3 weeks, 5 days ago
The rtsx_usb_sdmmc driver already implements UHS-I voltage switching,
timing setup and tuning, but it only advertises support up to SDR50.

Like the old rts5139 driver, also advertise SDR104 and DDR50 so the MMC
core can pick the best mode supported by the card.

Tested: Realtek RTS5129 (0bda:0129) + tray + Lexar 2TB SDXC
Tested: timing spec SDR104 @ 208 MHz, signal voltage 1.8 V (2026-02-24)
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
---
 drivers/mmc/host/rtsx_usb_sdmmc.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/mmc/host/rtsx_usb_sdmmc.c b/drivers/mmc/host/rtsx_usb_sdmmc.c
index 6be98926387d..8d5ebe92018e 100644
--- a/drivers/mmc/host/rtsx_usb_sdmmc.c
+++ b/drivers/mmc/host/rtsx_usb_sdmmc.c
@@ -1487,6 +1487,7 @@ static void rtsx_usb_init_host(struct rtsx_usb_sdmmc *host)
 	mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED |
 		MMC_CAP_MMC_HIGHSPEED | MMC_CAP_BUS_WIDTH_TEST |
 		MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25 | MMC_CAP_UHS_SDR50 |
+		MMC_CAP_UHS_DDR50 | MMC_CAP_UHS_SDR104 |
 		MMC_CAP_SYNC_RUNTIME_PM;
 	mmc->caps2 = MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_FULL_PWR_CYCLE |
 		MMC_CAP2_NO_SDIO;
-- 
2.51.0
Re: [PATCH v2 RESEND 3/6] mmc: rtsx_usb_sdmmc: advertise UHS SDR104 and DDR50
Posted by Ulf Hansson 2 weeks ago
On Thu, 12 Mar 2026 at 13:16, Sean Rhodes <sean@starlabs.systems> wrote:
>
> The rtsx_usb_sdmmc driver already implements UHS-I voltage switching,
> timing setup and tuning, but it only advertises support up to SDR50.
>
> Like the old rts5139 driver, also advertise SDR104 and DDR50 so the MMC
> core can pick the best mode supported by the card.
>
> Tested: Realtek RTS5129 (0bda:0129) + tray + Lexar 2TB SDXC
> Tested: timing spec SDR104 @ 208 MHz, signal voltage 1.8 V (2026-02-24)
> Signed-off-by: Sean Rhodes <sean@starlabs.systems>
> ---
>  drivers/mmc/host/rtsx_usb_sdmmc.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/mmc/host/rtsx_usb_sdmmc.c b/drivers/mmc/host/rtsx_usb_sdmmc.c
> index 6be98926387d..8d5ebe92018e 100644
> --- a/drivers/mmc/host/rtsx_usb_sdmmc.c
> +++ b/drivers/mmc/host/rtsx_usb_sdmmc.c
> @@ -1487,6 +1487,7 @@ static void rtsx_usb_init_host(struct rtsx_usb_sdmmc *host)
>         mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED |
>                 MMC_CAP_MMC_HIGHSPEED | MMC_CAP_BUS_WIDTH_TEST |
>                 MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25 | MMC_CAP_UHS_SDR50 |
> +               MMC_CAP_UHS_DDR50 | MMC_CAP_UHS_SDR104 |

Please drop this patch from the series for now.

My point is that the series addresses enough of complicated problems,
so I suggest we start by fixing them first before adding new
functionality.

>                 MMC_CAP_SYNC_RUNTIME_PM;
>         mmc->caps2 = MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_FULL_PWR_CYCLE |
>                 MMC_CAP2_NO_SDIO;
> --
> 2.51.0

Kind regards
Uffe