aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorChris Ball <cjb@laptop.org>2013-01-28 06:26:53 -0500
committerChris Ball <cjb@laptop.org>2013-01-28 15:42:49 -0500
commitd2938758caae523768f60208dbc8a487be3f0bd5 (patch)
tree47a966cba62909af8ed73fa842981290a44fe3b4 /drivers
parent182ce2162bcc2a1f7bb7137d621a6ea97ccdd635 (diff)
mmc: mvsdio: add pinctrl integration
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> Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/host/mvsdio.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
index 78d3abf837c2..145cdaf000d1 100644
--- a/drivers/mmc/host/mvsdio.c
+++ b/drivers/mmc/host/mvsdio.c
@@ -25,6 +25,7 @@
25#include <linux/of_irq.h> 25#include <linux/of_irq.h>
26#include <linux/mmc/host.h> 26#include <linux/mmc/host.h>
27#include <linux/mmc/slot-gpio.h> 27#include <linux/mmc/slot-gpio.h>
28#include <linux/pinctrl/consumer.h>
28 29
29#include <asm/sizes.h> 30#include <asm/sizes.h>
30#include <asm/unaligned.h> 31#include <asm/unaligned.h>
@@ -690,6 +691,7 @@ static int __init mvsd_probe(struct platform_device *pdev)
690 struct resource *r; 691 struct resource *r;
691 int ret, irq; 692 int ret, irq;
692 int gpio_card_detect, gpio_write_protect; 693 int gpio_card_detect, gpio_write_protect;
694 struct pinctrl *pinctrl;
693 695
694 r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 696 r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
695 irq = platform_get_irq(pdev, 0); 697 irq = platform_get_irq(pdev, 0);
@@ -706,6 +708,10 @@ static int __init mvsd_probe(struct platform_device *pdev)
706 host->mmc = mmc; 708 host->mmc = mmc;
707 host->dev = &pdev->dev; 709 host->dev = &pdev->dev;
708 710
711 pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
712 if (IS_ERR(pinctrl))
713 dev_warn(&pdev->dev, "no pins associated\n");
714
709 /* 715 /*
710 * Some non-DT platforms do not pass a clock, and the clock 716 * Some non-DT platforms do not pass a clock, and the clock
711 * frequency is passed through platform_data. On DT platforms, 717 * frequency is passed through platform_data. On DT platforms,