aboutsummaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorMatthias Brugger2019-07-24 15:39:09 +0100
committerMatthias Brugger2019-09-06 18:16:59 +0200
commite0e3c7dadac4fa45f91c31299045cb7ada94f495 (patch)
tree14c4d13ac51bb91cf921c6df0b21e6914e589c26 /drivers/mmc
parent76bce8c2ad7ee7b89c9bd1e4678e2868153acb95 (diff)
mmc: bcm283x: Add support for bcm2711 device in bcm2835_sdhci
The bcm2711 has two emmc controllers. The difference is the clocks they use. Add support for the second emmc controller. Signed-off-by: Matthias Brugger <mbrugger@suse.com> Signed-off-by: Andrei Gherzan <andrei@balena.io>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/bcm2835_sdhci.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/mmc/bcm2835_sdhci.c b/drivers/mmc/bcm2835_sdhci.c
index bf3304c4dc5..bc9ee95fd5c 100644
--- a/drivers/mmc/bcm2835_sdhci.c
+++ b/drivers/mmc/bcm2835_sdhci.c
@@ -178,12 +178,13 @@ static int bcm2835_sdhci_probe(struct udevice *dev)
fdt_addr_t base;
int emmc_freq;
int ret;
+ int clock_id = (int)dev_get_driver_data(dev);
base = devfdt_get_addr(dev);
if (base == FDT_ADDR_T_NONE)
return -EINVAL;
- ret = bcm2835_get_mmc_clock(BCM2835_MBOX_CLOCK_ID_EMMC);
+ ret = bcm2835_get_mmc_clock(clock_id);
if (ret < 0) {
debug("%s: Failed to set MMC clock (err=%d)\n", __func__, ret);
return ret;
@@ -230,7 +231,14 @@ static int bcm2835_sdhci_probe(struct udevice *dev)
}
static const struct udevice_id bcm2835_sdhci_match[] = {
- { .compatible = "brcm,bcm2835-sdhci" },
+ {
+ .compatible = "brcm,bcm2835-sdhci",
+ .data = BCM2835_MBOX_CLOCK_ID_EMMC
+ },
+ {
+ .compatible = "brcm,bcm2711-emmc2",
+ .data = BCM2835_MBOX_CLOCK_ID_EMMC2
+ },
{ /* sentinel */ }
};