summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTanmay Kathpalia <[email protected]>2025-12-03 04:21:37 -0800
committerPeng Fan <[email protected]>2025-12-11 20:53:52 +0800
commit3dafdeface93a68c78f0921ea3d9237c7c622fdc (patch)
tree3a2951743925e2bbf898a755f5ed43cf928bf993 /drivers
parent7d52b66b9b8e00815ef968c4ad0f2f704228fb69 (diff)
mmc: sdhci-cadence: Enable software tuning for both SD and eMMC interfaces
Remove interface type restrictions in sdhci_cdns_execute_tuning() to enable software tuning for both SD and eMMC devices. The previous assumption that SD timing should be handled by SDHCI core is incorrect based on the actual function assignment logic. The execute_tuning function is assigned based on MMC_SUPPORTS_TUNING config, which is enabled by both MMC_UHS_SUPPORT and MMC_HS200_SUPPORT. Changes: Remove IS_MMC() check that restricted tuning to eMMC only Remove opcode validation limited to MMC_CMD_SEND_TUNING_BLOCK_HS200 Signed-off-by: Tanmay Kathpalia <[email protected]> Reviewed-by: Balsundar Ponnusamy <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/sdhci-cadence.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/drivers/mmc/sdhci-cadence.c b/drivers/mmc/sdhci-cadence.c
index a0b9434e4f0..c7f88977ef9 100644
--- a/drivers/mmc/sdhci-cadence.c
+++ b/drivers/mmc/sdhci-cadence.c
@@ -207,16 +207,10 @@ static int __maybe_unused sdhci_cdns_execute_tuning(struct udevice *dev,
int i;
/*
- * This handler only implements the eMMC tuning that is specific to
- * this controller. The tuning for SD timing should be handled by the
- * SDHCI core.
+ * This function performs the tuning process for both SD and eMMC
+ * interfaces. It sweeps through all available tuning points,
+ * sending tuning commands at each step.
*/
- if (!IS_MMC(mmc))
- return -ENOTSUPP;
-
- if (WARN_ON(opcode != MMC_CMD_SEND_TUNING_BLOCK_HS200))
- return -EINVAL;
-
for (i = 0; i < SDHCI_CDNS_MAX_TUNING_LOOP; i++) {
if (sdhci_cdns_set_tune_val(plat, i) ||
mmc_send_tuning(mmc, opcode)) { /* bad */