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 <tanmay.kathpalia@altera.com>
Reviewed-by: Balsundar Ponnusamy <balsundar.ponnusamy@altera.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
Tanmay Kathpalia 2025-12-03 04:21:37 -08:00 committed by Peng Fan
parent 7d52b66b9b
commit 3dafdeface

View File

@ -207,16 +207,10 @@ static int __maybe_unused sdhci_cdns_execute_tuning(struct udevice *dev,
int i; int i;
/* /*
* This handler only implements the eMMC tuning that is specific to * This function performs the tuning process for both SD and eMMC
* this controller. The tuning for SD timing should be handled by the * interfaces. It sweeps through all available tuning points,
* SDHCI core. * 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++) { for (i = 0; i < SDHCI_CDNS_MAX_TUNING_LOOP; i++) {
if (sdhci_cdns_set_tune_val(plat, i) || if (sdhci_cdns_set_tune_val(plat, i) ||
mmc_send_tuning(mmc, opcode)) { /* bad */ mmc_send_tuning(mmc, opcode)) { /* bad */