Commit a9a83785 authored by Linus Walleij's avatar Linus Walleij Committed by Russell King

ARM: 7562/2: MMCI: fetch pinctrl handle and set default state

This fetches the pinctrl resource for the MMCI driver, and if
a "default" state is found, it is activated.
Acked-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 70ac0935
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include <linux/amba/mmci.h> #include <linux/amba/mmci.h>
#include <linux/pm_runtime.h> #include <linux/pm_runtime.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/pinctrl/consumer.h>
#include <asm/div64.h> #include <asm/div64.h>
#include <asm/io.h> #include <asm/io.h>
...@@ -1366,6 +1367,23 @@ static int __devinit mmci_probe(struct amba_device *dev, ...@@ -1366,6 +1367,23 @@ static int __devinit mmci_probe(struct amba_device *dev,
mmc->f_max = min(host->mclk, fmax); mmc->f_max = min(host->mclk, fmax);
dev_dbg(mmc_dev(mmc), "clocking block at %u Hz\n", mmc->f_max); 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 #ifdef CONFIG_REGULATOR
/* If we're using the regulator framework, try to fetch a regulator */ /* If we're using the regulator framework, try to fetch a regulator */
host->vcc = regulator_get(&dev->dev, "vmmc"); host->vcc = regulator_get(&dev->dev, "vmmc");
......
...@@ -195,6 +195,10 @@ struct mmci_host { ...@@ -195,6 +195,10 @@ struct mmci_host {
unsigned int size; unsigned int size;
struct regulator *vcc; struct regulator *vcc;
/* pinctrl handles */
struct pinctrl *pinctrl;
struct pinctrl_state *pins_default;
#ifdef CONFIG_DMA_ENGINE #ifdef CONFIG_DMA_ENGINE
/* DMA stuff */ /* DMA stuff */
struct dma_chan *dma_current; struct dma_chan *dma_current;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment