u-boot-brain/drivers/mmc/ftsdc021_sdhci.c
Stefan Herbrechtsmeier 6d0e34bf4e mmc: sdhci: Distinguish between base clock and maximum peripheral frequency
The sdhci controller assumes that the base clock frequency is fully supported by
the peripheral and doesn't support hardware limitations. The Linux kernel
distinguishes between base clock (max_clk) of the host controller and maximum
frequency (f_max) of the card interface. Use the same differentiation and allow
the platform to constrain the peripheral interface.

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
2017-01-23 15:37:42 +09:00

35 lines
658 B
C

/*
* (C) Copyright 2013 Faraday Technology
* Kuo-Jung Su <dantesu@faraday-tech.com>
*
* SPDX-License-Identifier: GPL-2.0+
*/
#include <common.h>
#include <malloc.h>
#include <sdhci.h>
#ifndef CONFIG_FTSDC021_CLOCK
#define CONFIG_FTSDC021_CLOCK clk_get_rate("MMC")
#endif
int ftsdc021_sdhci_init(u32 regbase)
{
struct sdhci_host *host = NULL;
uint32_t freq = CONFIG_FTSDC021_CLOCK;
host = calloc(1, sizeof(struct sdhci_host));
if (!host) {
puts("sdh_host malloc fail!\n");
return -ENOMEM;
}
host->name = "FTSDC021";
host->ioaddr = (void __iomem *)regbase;
host->quirks = 0;
host->max_clk = freq;
add_sdhci(host, 0, 0);
return 0;
}