Lines Matching +full:sdhci +full:- +full:caps
2 * Support of SDHCI platform devices for Microchip PIC32.
7 * Inspired by sdhci-pltfm.c
26 #include "sdhci.h"
27 #include "sdhci-pltfm.h"
28 #include <linux/platform_data/sdhci-pic32.h>
55 return clk_get_rate(sdhci_pdata->base_clk); in pic32_sdhci_get_max_clock()
65 if (host->version >= SDHCI_SPEC_300) in pic32_sdhci_set_bus_width()
68 if (host->version >= SDHCI_SPEC_300) in pic32_sdhci_set_bus_width()
109 u32 bus = readl(host->ioaddr + SDH_SHARED_BUS_CTRL); in pic32_sdhci_shared_bus()
121 writel(bus, host->ioaddr + SDH_SHARED_BUS_CTRL); in pic32_sdhci_shared_bus()
132 host->caps = readl(host->ioaddr + SDHCI_CAPABILITIES); in pic32_sdhci_probe_platform()
133 caps_slot_type = (host->caps & SDH_CAPS_SDH_SLOT_TYPE_MASK) >> 30; in pic32_sdhci_probe_platform()
158 plat_data = pdev->dev.platform_data; in pic32_sdhci_probe()
159 if (plat_data && plat_data->setup_dma) { in pic32_sdhci_probe()
160 ret = plat_data->setup_dma(ADMA_FIFO_RD_THSHLD, in pic32_sdhci_probe()
166 sdhci_pdata->sys_clk = devm_clk_get(&pdev->dev, "sys_clk"); in pic32_sdhci_probe()
167 if (IS_ERR(sdhci_pdata->sys_clk)) { in pic32_sdhci_probe()
168 ret = PTR_ERR(sdhci_pdata->sys_clk); in pic32_sdhci_probe()
169 dev_err(&pdev->dev, "Error getting clock\n"); in pic32_sdhci_probe()
173 ret = clk_prepare_enable(sdhci_pdata->sys_clk); in pic32_sdhci_probe()
175 dev_err(&pdev->dev, "Error enabling clock\n"); in pic32_sdhci_probe()
179 sdhci_pdata->base_clk = devm_clk_get(&pdev->dev, "base_clk"); in pic32_sdhci_probe()
180 if (IS_ERR(sdhci_pdata->base_clk)) { in pic32_sdhci_probe()
181 ret = PTR_ERR(sdhci_pdata->base_clk); in pic32_sdhci_probe()
182 dev_err(&pdev->dev, "Error getting clock\n"); in pic32_sdhci_probe()
186 ret = clk_prepare_enable(sdhci_pdata->base_clk); in pic32_sdhci_probe()
188 dev_err(&pdev->dev, "Error enabling clock\n"); in pic32_sdhci_probe()
192 ret = mmc_of_parse(host->mmc); in pic32_sdhci_probe()
198 dev_err(&pdev->dev, "failed to probe platform!\n"); in pic32_sdhci_probe()
206 dev_info(&pdev->dev, "Successfully added sdhci host\n"); in pic32_sdhci_probe()
210 clk_disable_unprepare(sdhci_pdata->base_clk); in pic32_sdhci_probe()
212 clk_disable_unprepare(sdhci_pdata->sys_clk); in pic32_sdhci_probe()
216 dev_err(&pdev->dev, "pic32-sdhci probe failed: %d\n", ret); in pic32_sdhci_probe()
226 scratch = readl(host->ioaddr + SDHCI_INT_STATUS); in pic32_sdhci_remove()
228 clk_disable_unprepare(sdhci_pdata->base_clk); in pic32_sdhci_remove()
229 clk_disable_unprepare(sdhci_pdata->sys_clk); in pic32_sdhci_remove()
236 { .compatible = "microchip,pic32mzda-sdhci" },
243 .name = "pic32-sdhci",
253 MODULE_DESCRIPTION("Microchip PIC32 SDHCI driver");