lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <CABtds-12OYfBo8pS5zZrNp7Rvgifh0jqZ3SyRvoZz+mAVJM3kw@mail.gmail.com>
Date: Tue, 4 Nov 2025 12:02:40 -0500
from: Sean Rhodes <sean@...rlabs.systems>
To: linux-kernel@...r.kernel.org
Subject: [PATCH] drivers/mmc: rtsx_usb: gate UHS/MMC caps on supported

>From 2dfdbea7ff59c9f7b4927a8d020810bfb1c11e24 Mon Sep 17 00:00:00 2001
From: Sean Rhodes <sean@...rlabs.systems>
Date: Tue, 4 Nov 2025 16:02:01 +0000
Subject: [PATCH 3/5] drivers/mmc: rtsx_usb: gate UHS/MMC caps on supported
 parts

Only advertise SDR50, DDR50 and MMC DDR when the USB companion reports
support, and treat MMC DDR timing like DDR50 so the host can switch to
that mode safely

Cc: Ulf Hansson <ulf.hansson@...aro.org>
Cc: Ricky Wu <ricky_wu@...ltek.com>
Cc: Avri Altman <avri.altman@...disk.com>
Cc: Jisheng Zhang <jszhang@...nel.org>
Cc: Dan Carpenter <dan.carpenter@...aro.org>
Cc: Binbin Zhou <zhoubinbin@...ngson.cn>
Cc: linux-mmc@...r.kernel.org
Cc: linux-kernel@...r.kernel.org
Signed-off-by: Sean Rhodes <sean@...rlabs.systems>
---
 drivers/mmc/host/rtsx_usb_sdmmc.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/rtsx_usb_sdmmc.c
b/drivers/mmc/host/rtsx_usb_sdmmc.c
index 84674659a84d..e23ef4111dab 100644
--- a/drivers/mmc/host/rtsx_usb_sdmmc.c
+++ b/drivers/mmc/host/rtsx_usb_sdmmc.c
@@ -1097,6 +1097,7 @@ static int sd_set_timing(struct rtsx_usb_sdmmc *host,
 		break;

 	case MMC_TIMING_UHS_DDR50:
+	case MMC_TIMING_MMC_DDR52:
 		*ddr_mode = true;

 		rtsx_usb_add_cmd(ucr, WRITE_REG_CMD, SD_CFG1,
@@ -1161,6 +1162,7 @@ static void sdmmc_set_ios(struct mmc_host *mmc,
struct mmc_ios *ios)
 		host->double_clk = false;
 		break;
 	case MMC_TIMING_UHS_DDR50:
+	case MMC_TIMING_MMC_DDR52:
 	case MMC_TIMING_UHS_SDR25:
 		host->ssc_depth = SSC_DEPTH_1M;
 		break;
@@ -1343,8 +1345,14 @@ static void rtsx_usb_init_host(struct
rtsx_usb_sdmmc *host)
 	mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195;
 	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_SDR12 | MMC_CAP_UHS_SDR25 |
 		MMC_CAP_SYNC_RUNTIME_PM;
+	if (host->ucr->supports_sdr50)
+		mmc->caps |= MMC_CAP_UHS_SDR50;
+	if (host->ucr->supports_ddr50)
+		mmc->caps |= MMC_CAP_UHS_DDR50;
+	if (host->ucr->supports_mmc_ddr)
+		mmc->caps |= MMC_CAP_1_8V_DDR;
 	mmc->caps2 = MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_FULL_PWR_CYCLE |
 		MMC_CAP2_NO_SDIO;

-- 
2.51.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ