mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-05 20:33:21 +09:00
![Stefan Herbrechtsmeier](/assets/img/avatar_default.png)
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>
35 lines
658 B
C
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;
|
|
}
|