OpenWrt – Blame information for rev 4
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
4 | office | 1 | From e64023aab5addf920379e9f919d7c5cd4c8d0981 Mon Sep 17 00:00:00 2001 |
2 | From: Phil Elwell <phil@raspberrypi.org> |
||
3 | Date: Fri, 6 May 2016 12:32:47 +0100 |
||
4 | Subject: [PATCH] pinctrl-bcm2835: Return pins to inputs when freed |
||
5 | |||
6 | When dynamically unloading overlays, it is important that freed pins are |
||
7 | restored to being inputs to prevent functions from being enabled in |
||
8 | multiple places at once. |
||
9 | |||
10 | Signed-off-by: Phil Elwell <phil@raspberrypi.org> |
||
11 | --- |
||
12 | drivers/pinctrl/bcm/pinctrl-bcm2835.c | 11 +++++++++++ |
||
13 | 1 file changed, 11 insertions(+) |
||
14 | |||
15 | --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c |
||
16 | +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c |
||
17 | @@ -838,6 +838,16 @@ static const struct pinctrl_ops bcm2835_ |
||
18 | .dt_free_map = bcm2835_pctl_dt_free_map, |
||
19 | }; |
||
20 | |||
21 | +static int bcm2835_pmx_free(struct pinctrl_dev *pctldev, |
||
22 | + unsigned offset) |
||
23 | +{ |
||
24 | + struct bcm2835_pinctrl *pc = pinctrl_dev_get_drvdata(pctldev); |
||
25 | + |
||
26 | + /* disable by setting to GPIO_IN */ |
||
27 | + bcm2835_pinctrl_fsel_set(pc, offset, BCM2835_FSEL_GPIO_IN); |
||
28 | + return 0; |
||
29 | +} |
||
30 | + |
||
31 | static int bcm2835_pmx_get_functions_count(struct pinctrl_dev *pctldev) |
||
32 | { |
||
33 | return BCM2835_FSEL_COUNT; |
||
34 | @@ -897,6 +907,7 @@ static int bcm2835_pmx_gpio_set_directio |
||
35 | } |
||
36 | |||
37 | static const struct pinmux_ops bcm2835_pmx_ops = { |
||
38 | + .free = bcm2835_pmx_free, |
||
39 | .get_functions_count = bcm2835_pmx_get_functions_count, |
||
40 | .get_function_name = bcm2835_pmx_get_function_name, |
||
41 | .get_function_groups = bcm2835_pmx_get_function_groups, |