mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 16:52:14 +02:00
mmc: sdhci: Check and call config_dll callback functions
Check if the low level driver supports config_dll callback function and call it if it does. Call with dll disable before calling set_clock and with dll enable after it. Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com>
This commit is contained in:
committed by
Jaehoon Chung
parent
14ef4c7be5
commit
6f5bb9913c
@@ -396,6 +396,14 @@ int sdhci_set_clock(struct mmc *mmc, unsigned int clock)
|
||||
}
|
||||
}
|
||||
|
||||
if (host->ops && host->ops->config_dll) {
|
||||
ret = host->ops->config_dll(host, clock, false);
|
||||
if (ret) {
|
||||
printf("%s: Error while configuring dll\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) {
|
||||
/*
|
||||
* Check if the Host Controller supports Programmable Clock
|
||||
@@ -439,6 +447,14 @@ int sdhci_set_clock(struct mmc *mmc, unsigned int clock)
|
||||
if (host->ops && host->ops->set_clock)
|
||||
host->ops->set_clock(host, div);
|
||||
|
||||
if (host->ops && host->ops->config_dll) {
|
||||
ret = host->ops->config_dll(host, clock, true);
|
||||
if (ret) {
|
||||
printf("%s: Error while configuring dll\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
clk |= (div & SDHCI_DIV_MASK) << SDHCI_DIVIDER_SHIFT;
|
||||
clk |= ((div & SDHCI_DIV_HI_MASK) >> SDHCI_DIV_MASK_LEN)
|
||||
<< SDHCI_DIVIDER_HI_SHIFT;
|
||||
|
@@ -272,6 +272,8 @@ struct sdhci_ops {
|
||||
void (*set_clock)(struct sdhci_host *host, u32 div);
|
||||
int (*platform_execute_tuning)(struct mmc *host, u8 opcode);
|
||||
int (*set_delay)(struct sdhci_host *host);
|
||||
/* Callback function to set DLL clock configuration */
|
||||
int (*config_dll)(struct sdhci_host *host, u32 clock, bool enable);
|
||||
int (*deferred_probe)(struct sdhci_host *host);
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user