mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 06:00:43 +00:00
mmc: Support bypass mode with the get_mmc_clk() method
Some SoCs want to adjust the input clock to the DWMMC block as a way of controlling the MMC bus clock. Update the get_mmc_clk() method to support this. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
This commit is contained in:
parent
6a436c9182
commit
e3563f2ec7
3 changed files with 17 additions and 3 deletions
|
@ -266,7 +266,7 @@ static int dwmci_setup_bus(struct dwmci_host *host, u32 freq)
|
|||
* host->bus_hz should be set by user.
|
||||
*/
|
||||
if (host->get_mmc_clk)
|
||||
sclk = host->get_mmc_clk(host);
|
||||
sclk = host->get_mmc_clk(host, freq);
|
||||
else if (host->bus_hz)
|
||||
sclk = host->bus_hz;
|
||||
else {
|
||||
|
|
|
@ -39,7 +39,7 @@ static void exynos_dwmci_clksel(struct dwmci_host *host)
|
|||
dwmci_writel(host, DWMCI_CLKSEL, priv->sdr_timing);
|
||||
}
|
||||
|
||||
unsigned int exynos_dwmci_get_clk(struct dwmci_host *host)
|
||||
unsigned int exynos_dwmci_get_clk(struct dwmci_host *host, uint freq)
|
||||
{
|
||||
unsigned long sclk;
|
||||
int8_t clk_div;
|
||||
|
|
|
@ -163,7 +163,21 @@ struct dwmci_host {
|
|||
|
||||
void (*clksel)(struct dwmci_host *host);
|
||||
void (*board_init)(struct dwmci_host *host);
|
||||
unsigned int (*get_mmc_clk)(struct dwmci_host *host);
|
||||
|
||||
/**
|
||||
* Get / set a particular MMC clock frequency
|
||||
*
|
||||
* This is used to request the current clock frequency of the clock
|
||||
* that drives the DWMMC peripheral. The caller will then use this
|
||||
* information to work out the divider it needs to achieve the
|
||||
* required MMC bus clock frequency. If you want to handle the
|
||||
* clock external to DWMMC, use @freq to select the frequency and
|
||||
* return that value too. Then DWMMC will put itself in bypass mode.
|
||||
*
|
||||
* @host: DWMMC host
|
||||
* @freq: Frequency the host is trying to achieve
|
||||
*/
|
||||
unsigned int (*get_mmc_clk)(struct dwmci_host *host, uint freq);
|
||||
|
||||
struct mmc_config cfg;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue