|
@@ -33,6 +33,7 @@
|
|
|
#include <linux/amba/mmci.h>
|
|
|
#include <linux/pm_runtime.h>
|
|
|
#include <linux/types.h>
|
|
|
+#include <linux/pinctrl/consumer.h>
|
|
|
|
|
|
#include <asm/div64.h>
|
|
|
#include <asm/io.h>
|
|
@@ -1366,6 +1367,23 @@ static int __devinit mmci_probe(struct amba_device *dev,
|
|
|
mmc->f_max = min(host->mclk, fmax);
|
|
|
dev_dbg(mmc_dev(mmc), "clocking block at %u Hz\n", mmc->f_max);
|
|
|
|
|
|
+ host->pinctrl = devm_pinctrl_get(&dev->dev);
|
|
|
+ if (IS_ERR(host->pinctrl)) {
|
|
|
+ ret = PTR_ERR(host->pinctrl);
|
|
|
+ goto clk_disable;
|
|
|
+ }
|
|
|
+
|
|
|
+ host->pins_default = pinctrl_lookup_state(host->pinctrl,
|
|
|
+ PINCTRL_STATE_DEFAULT);
|
|
|
+
|
|
|
+ /* enable pins to be muxed in and configured */
|
|
|
+ if (!IS_ERR(host->pins_default)) {
|
|
|
+ ret = pinctrl_select_state(host->pinctrl, host->pins_default);
|
|
|
+ if (ret)
|
|
|
+ dev_warn(&dev->dev, "could not set default pins\n");
|
|
|
+ } else
|
|
|
+ dev_warn(&dev->dev, "could not get default pinstate\n");
|
|
|
+
|
|
|
#ifdef CONFIG_REGULATOR
|
|
|
/* If we're using the regulator framework, try to fetch a regulator */
|
|
|
host->vcc = regulator_get(&dev->dev, "vmmc");
|