summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2021-06-07 12:44:06 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2021-06-10 15:16:13 +0200
commit21e5f283cb72070e3132a93f711c0f75763707ba (patch)
treeda63a9387aabe220fab11a78abb9e2c1510367a3 /drivers
parenta035d2404e9bb4ba95806dd2a45e37c2a73dee12 (diff)
downloadbarebox-21e5f283cb72070e3132a93f711c0f75763707ba.tar.gz
barebox-21e5f283cb72070e3132a93f711c0f75763707ba.tar.xz
mci: sdhci: arasan: Use sdhci_setup_host()
Use common code instead of duplicating it in the driver. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Link: https://lore.barebox.org/20210607104411.23071-8-s.hauer@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mci/arasan-sdhci.c32
1 files changed, 5 insertions, 27 deletions
diff --git a/drivers/mci/arasan-sdhci.c b/drivers/mci/arasan-sdhci.c
index 23762fa979..a50b2bd91b 100644
--- a/drivers/mci/arasan-sdhci.c
+++ b/drivers/mci/arasan-sdhci.c
@@ -313,32 +313,6 @@ error:
return ret;
}
-
-static void arasan_sdhci_set_mci_caps(struct arasan_sdhci_host *host)
-{
- u32 caps = sdhci_read32(&host->sdhci, SDHCI_CAPABILITIES);
-
- if ((caps & SDHCI_CAN_VDD_180) &&
- !(host->quirks & SDHCI_ARASAN_QUIRK_NO_1_8_V))
- host->mci.voltages |= MMC_VDD_165_195;
- if (caps & SDHCI_CAN_VDD_300)
- host->mci.voltages |= MMC_VDD_29_30 | MMC_VDD_30_31;
- if (caps & SDHCI_CAN_VDD_330)
- host->mci.voltages |= MMC_VDD_32_33 | MMC_VDD_33_34;
-
- if (caps & SDHCI_CAN_DO_HISPD)
- host->mci.host_caps |= (MMC_CAP_MMC_HIGHSPEED_52MHZ |
- MMC_CAP_MMC_HIGHSPEED |
- MMC_CAP_SD_HIGHSPEED);
-
- /* parse board supported bus width capabilities */
- mci_of_parse(&host->mci);
-
- /* limit bus widths to controller capabilities */
- if (!(caps & SDHCI_CAN_DO_8BIT))
- host->mci.host_caps &= ~MMC_CAP_8_BIT_DATA;
-}
-
static int arasan_sdhci_probe(struct device_d *dev)
{
struct device_node *np = dev->device_node;
@@ -393,6 +367,7 @@ static int arasan_sdhci_probe(struct device_d *dev)
arasan_sdhci->sdhci.write32 = arasan_sdhci_writel;
arasan_sdhci->sdhci.write16 = arasan_sdhci_writew;
arasan_sdhci->sdhci.write8 = arasan_sdhci_writeb;
+ arasan_sdhci->sdhci.mci = mci;
mci->send_cmd = arasan_sdhci_send_cmd;
mci->set_ios = arasan_sdhci_set_ios;
mci->init = arasan_sdhci_init;
@@ -403,7 +378,10 @@ static int arasan_sdhci_probe(struct device_d *dev)
mci->f_max = clk_get_rate(clk_xin);
mci->f_min = 50000000 / 256;
- arasan_sdhci_set_mci_caps(arasan_sdhci);
+ /* parse board supported bus width capabilities */
+ mci_of_parse(&arasan_sdhci->mci);
+
+ sdhci_setup_host(&arasan_sdhci->sdhci);
dev->priv = arasan_sdhci;