summaryrefslogtreecommitdiffstats
path: root/target/linux/mvebu/patches-3.8/009-mmc_mvsdio_add_pinctrl.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mvebu/patches-3.8/009-mmc_mvsdio_add_pinctrl.patch')
-rw-r--r--target/linux/mvebu/patches-3.8/009-mmc_mvsdio_add_pinctrl.patch66
1 files changed, 66 insertions, 0 deletions
diff --git a/target/linux/mvebu/patches-3.8/009-mmc_mvsdio_add_pinctrl.patch b/target/linux/mvebu/patches-3.8/009-mmc_mvsdio_add_pinctrl.patch
new file mode 100644
index 000000000..394ca5b9f
--- /dev/null
+++ b/target/linux/mvebu/patches-3.8/009-mmc_mvsdio_add_pinctrl.patch
@@ -0,0 +1,66 @@
+From patchwork Wed Jan 16 13:14:00 2013
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [5/5] mmc: mvsdio: add pinctrl integration
+Date: Wed, 16 Jan 2013 13:14:00 -0000
+From: Andrew Lunn <andrew@lunn.ch>
+X-Patchwork-Id: 1987901
+Message-Id: <1358342040-7130-6-git-send-email-andrew@lunn.ch>
+To: Jason Cooper <jason@lakedaemon.net>
+Cc: linux ARM <linux-arm-kernel@lists.infradead.org>,
+ linux-mmc@vger.kernel.org, linux@arm.linux.org.uk,
+ Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
+ Andrew Lunn <andrew@lunn.ch>
+
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+On many Marvell SoCs, the pins used for the SDIO interface are part of
+the MPP pins, that are muxable pins. In order to get the muxing of
+those pins correct, this commit integrates the mvsdio driver with the
+pinctrl infrastructure by calling devm_pinctrl_get_select_default()
+during ->probe().
+
+Note that we permit this function to fail because not all Marvell
+platforms have yet been fully converted to using the pinctrl
+infrastructure.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Signed-off-by: Andrew Lunn <andrew@lunn.ch>
+Tested-by: Stefan Peter <s.peter@mpl.ch>
+Tested-by: Florian Fainelli <florian@openwrt.org>
+Signed-off-by: Jason Cooper <jason@lakedaemon.net>
+
+---
+drivers/mmc/host/mvsdio.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/mmc/host/mvsdio.c
++++ b/drivers/mmc/host/mvsdio.c
+@@ -25,6 +25,7 @@
+ #include <linux/of_irq.h>
+ #include <linux/mmc/host.h>
+ #include <linux/mmc/slot-gpio.h>
++#include <linux/pinctrl/consumer.h>
+
+ #include <asm/sizes.h>
+ #include <asm/unaligned.h>
+@@ -690,6 +691,7 @@ static int __init mvsd_probe(struct plat
+ struct resource *r;
+ int ret, irq;
+ int gpio_card_detect, gpio_write_protect;
++ struct pinctrl *pinctrl;
+
+ r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ irq = platform_get_irq(pdev, 0);
+@@ -706,6 +708,10 @@ static int __init mvsd_probe(struct plat
+ host->mmc = mmc;
+ host->dev = &pdev->dev;
+
++ pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
++ if (IS_ERR(pinctrl))
++ dev_warn(&pdev->dev, "no pins associated\n");
++
+ /* Some non-DT platforms do not pass a clock, and the clock
+ frequency is passed through platform_data. On DT platforms,
+ a clock must always be passed, even if there is no gatable