[PATCH v2 19/30] mci: add mci_set_timing helper
Ahmad Fatoum
a.fatoum at pengutronix.de
Wed May 7 01:21:58 PDT 2025
HS400 support when it goes in will add a number of extra calls to
mci_set_ios after changing just the timing. We already have two places
where we do this, so let's have a helper for it like Linux does.
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
drivers/mci/mci-core.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c
index 2f80763d9831..f123fce59cb1 100644
--- a/drivers/mci/mci-core.c
+++ b/drivers/mci/mci-core.c
@@ -1093,6 +1093,19 @@ static void mci_set_bus_width(struct mci *mci, enum mci_bus_width width)
mci_set_ios(mci);
}
+/**
+ * Setup host's interface timing
+ * @param mci MCI instance
+ * @param width New timing
+ */
+static void mci_set_timing(struct mci *mci, enum mci_timing timing)
+{
+ struct mci_host *host = mci->host;
+
+ host->ios.timing = timing;
+ mci_set_ios(mci);
+}
+
/**
* Extract card's version from its CSD
* @param mci MCI instance
@@ -1709,8 +1722,7 @@ static int mmc_select_hs200(struct mci *mci)
old_timing = mci->host->ios.timing;
old_clock = mci->host->ios.clock;
- mci->host->ios.timing = MMC_TIMING_MMC_HS200;
- mci_set_ios(mci);
+ mci_set_timing(mci, MMC_TIMING_MMC_HS200);
mci_set_clock(mci, mci->host->hs_max_dtr);
err = mci_switch_status(mci, true);
@@ -1721,8 +1733,7 @@ static int mmc_select_hs200(struct mci *mci)
*/
if (err == -EBADMSG) {
mci->host->ios.clock = old_clock;
- mci->host->ios.timing = old_timing;
- mci_set_ios(mci);
+ mci_set_timing(mci, old_timing);
}
}
err:
--
2.39.5
More information about the barebox
mailing list