Lines Matching +full:sdhci +full:- +full:caps
1 // SPDX-License-Identifier: GPL-2.0-only
5 * Copyright (C) 2013 - 2015 Fujitsu Semiconductor, Ltd
20 #include "sdhci-pltfm.h"
55 if (priv->vendor_hs200) { in sdhci_f_sdh30_soft_voltage_switch()
56 dev_info(priv->dev, "%s: setting hs200\n", __func__); in sdhci_f_sdh30_soft_voltage_switch()
58 ctrl |= priv->vendor_hs200; in sdhci_f_sdh30_soft_voltage_switch()
82 if (priv->enable_cmd_dat_delay) { in sdhci_f_sdh30_reset()
88 if ((host->mmc->caps & MMC_CAP_NONREMOVABLE) && in sdhci_f_sdh30_reset()
116 struct device *dev = &pdev->dev; in sdhci_f_sdh30_probe()
129 priv->dev = dev; in sdhci_f_sdh30_probe()
131 priv->enable_cmd_dat_delay = device_property_read_bool(dev, in sdhci_f_sdh30_probe()
132 "fujitsu,cmd-dat-delay-select"); in sdhci_f_sdh30_probe()
134 ret = mmc_of_parse(host->mmc); in sdhci_f_sdh30_probe()
141 priv->clk_iface = devm_clk_get(&pdev->dev, "iface"); in sdhci_f_sdh30_probe()
142 if (IS_ERR(priv->clk_iface)) { in sdhci_f_sdh30_probe()
143 ret = PTR_ERR(priv->clk_iface); in sdhci_f_sdh30_probe()
147 ret = clk_prepare_enable(priv->clk_iface); in sdhci_f_sdh30_probe()
151 priv->clk = devm_clk_get(&pdev->dev, "core"); in sdhci_f_sdh30_probe()
152 if (IS_ERR(priv->clk)) { in sdhci_f_sdh30_probe()
153 ret = PTR_ERR(priv->clk); in sdhci_f_sdh30_probe()
157 ret = clk_prepare_enable(priv->clk); in sdhci_f_sdh30_probe()
161 priv->rst = devm_reset_control_get_optional_shared(dev, NULL); in sdhci_f_sdh30_probe()
162 if (IS_ERR(priv->rst)) { in sdhci_f_sdh30_probe()
163 ret = PTR_ERR(priv->rst); in sdhci_f_sdh30_probe()
167 ret = reset_control_deassert(priv->rst); in sdhci_f_sdh30_probe()
186 priv->vendor_hs200 = F_SDH30_EMMC_HS200; in sdhci_f_sdh30_probe()
189 host->quirks |= SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK; in sdhci_f_sdh30_probe()
198 reset_control_assert(priv->rst); in sdhci_f_sdh30_probe()
200 clk_disable_unprepare(priv->clk); in sdhci_f_sdh30_probe()
202 clk_disable_unprepare(priv->clk_iface); in sdhci_f_sdh30_probe()
213 struct clk *clk_iface = priv->clk_iface; in sdhci_f_sdh30_remove()
214 struct reset_control *rst = priv->rst; in sdhci_f_sdh30_remove()
215 struct clk *clk = priv->clk; in sdhci_f_sdh30_remove()
226 { .compatible = "fujitsu,mb86s70-sdhci-3.0" },
227 { .compatible = "socionext,f-sdh30-e51-mmc" },