mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 19:11:53 +00: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:
parent
14ef4c7be5
commit
6f5bb9913c
2 changed files with 18 additions and 0 deletions
|
@ -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);
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue