You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.4 KiB
41 lines
1.4 KiB
From e64023aab5addf920379e9f919d7c5cd4c8d0981 Mon Sep 17 00:00:00 2001
|
|
From: Phil Elwell <phil@raspberrypi.org>
|
|
Date: Fri, 6 May 2016 12:32:47 +0100
|
|
Subject: [PATCH] pinctrl-bcm2835: Return pins to inputs when freed
|
|
|
|
When dynamically unloading overlays, it is important that freed pins are
|
|
restored to being inputs to prevent functions from being enabled in
|
|
multiple places at once.
|
|
|
|
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|
---
|
|
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 11 +++++++++++
|
|
1 file changed, 11 insertions(+)
|
|
|
|
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
|
|
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
|
|
@@ -838,6 +838,16 @@ static const struct pinctrl_ops bcm2835_
|
|
.dt_free_map = bcm2835_pctl_dt_free_map,
|
|
};
|
|
|
|
+static int bcm2835_pmx_free(struct pinctrl_dev *pctldev,
|
|
+ unsigned offset)
|
|
+{
|
|
+ struct bcm2835_pinctrl *pc = pinctrl_dev_get_drvdata(pctldev);
|
|
+
|
|
+ /* disable by setting to GPIO_IN */
|
|
+ bcm2835_pinctrl_fsel_set(pc, offset, BCM2835_FSEL_GPIO_IN);
|
|
+ return 0;
|
|
+}
|
|
+
|
|
static int bcm2835_pmx_get_functions_count(struct pinctrl_dev *pctldev)
|
|
{
|
|
return BCM2835_FSEL_COUNT;
|
|
@@ -897,6 +907,7 @@ static int bcm2835_pmx_gpio_set_directio
|
|
}
|
|
|
|
static const struct pinmux_ops bcm2835_pmx_ops = {
|
|
+ .free = bcm2835_pmx_free,
|
|
.get_functions_count = bcm2835_pmx_get_functions_count,
|
|
.get_function_name = bcm2835_pmx_get_function_name,
|
|
.get_function_groups = bcm2835_pmx_get_function_groups,
|
|
|