Allow adding a set_uhs_signaling callback in a host driver. If the callback is not provided, just call the generic sdhci_set_uhs_signaling function as before.
Signed-off-by: Steffen Trumtrar <[email protected]> --- drivers/mci/sdhci.c | 7 +++++-- drivers/mci/sdhci.h | 1 + include/mci.h | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/mci/sdhci.c b/drivers/mci/sdhci.c index cfdfdbba8d..e24575d541 100644 --- a/drivers/mci/sdhci.c +++ b/drivers/mci/sdhci.c @@ -473,7 +473,7 @@ void sdhci_set_bus_width(struct sdhci *host, int width) sdhci_write8(host, SDHCI_HOST_CONTROL, ctrl); } -static void sdhci_set_uhs_signaling(struct sdhci *host, unsigned timing) +void sdhci_set_uhs_signaling(struct sdhci *host, unsigned timing) { u16 ctrl_2; @@ -999,7 +999,10 @@ void sdhci_set_clock(struct sdhci *host, unsigned int clock, unsigned int input_ host->mci->ios.clock = 0; - sdhci_set_uhs_signaling(host, host->mci->ios.timing); + if (host->mci->ops.set_uhs_signaling) + host->mci->ops.set_uhs_signaling(host->mci, host->mci->ios.timing); + else + sdhci_set_uhs_signaling(host, host->mci->ios.timing); sdhci_wait_idle_data(host, NULL); diff --git a/drivers/mci/sdhci.h b/drivers/mci/sdhci.h index 6b3849e5f7..9c70eae111 100644 --- a/drivers/mci/sdhci.h +++ b/drivers/mci/sdhci.h @@ -344,6 +344,7 @@ static inline void sdhci_write8(struct sdhci *host, int reg, u32 val) } #define SDHCI_NO_DMA DMA_ERROR_CODE +void sdhci_set_uhs_signaling(struct sdhci *host, unsigned timing); int sdhci_execute_tuning(struct sdhci *sdhci, u32 opcode); int sdhci_wait_idle_data(struct sdhci *host, struct mci_cmd *cmd); int sdhci_wait_idle(struct sdhci *host, struct mci_cmd *cmd, struct mci_data *data); diff --git a/include/mci.h b/include/mci.h index e54f6eba8d..c4faf11054 100644 --- a/include/mci.h +++ b/include/mci.h @@ -583,6 +583,7 @@ struct mci_ops { int (*card_write_protected)(struct mci_host *); /* The tuning command opcode value is different for SD and eMMC cards */ int (*execute_tuning)(struct mci_host *, u32); + void (*set_uhs_signaling)(struct mci_host *, unsigned int); }; /** host information */ -- 2.51.0
