diff options
| -rw-r--r-- | drivers/pinctrl/stm32/pinctrl-stm32.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c b/drivers/pinctrl/stm32/pinctrl-stm32.c index eb6ae1462f4e..111225ec075c 100644 --- a/drivers/pinctrl/stm32/pinctrl-stm32.c +++ b/drivers/pinctrl/stm32/pinctrl-stm32.c | |||
| @@ -639,6 +639,11 @@ static int stm32_pmx_set_mux(struct pinctrl_dev *pctldev, | |||
| 639 | } | 639 | } |
| 640 | 640 | ||
| 641 | range = pinctrl_find_gpio_range_from_pin(pctldev, g->pin); | 641 | range = pinctrl_find_gpio_range_from_pin(pctldev, g->pin); |
| 642 | if (!range) { | ||
| 643 | dev_err(pctl->dev, "No gpio range defined.\n"); | ||
| 644 | return -EINVAL; | ||
| 645 | } | ||
| 646 | |||
| 642 | bank = gpiochip_get_data(range->gc); | 647 | bank = gpiochip_get_data(range->gc); |
| 643 | pin = stm32_gpio_pin(g->pin); | 648 | pin = stm32_gpio_pin(g->pin); |
| 644 | 649 | ||
| @@ -807,11 +812,17 @@ static int stm32_pconf_parse_conf(struct pinctrl_dev *pctldev, | |||
| 807 | unsigned int pin, enum pin_config_param param, | 812 | unsigned int pin, enum pin_config_param param, |
| 808 | enum pin_config_param arg) | 813 | enum pin_config_param arg) |
| 809 | { | 814 | { |
| 815 | struct stm32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | ||
| 810 | struct pinctrl_gpio_range *range; | 816 | struct pinctrl_gpio_range *range; |
| 811 | struct stm32_gpio_bank *bank; | 817 | struct stm32_gpio_bank *bank; |
| 812 | int offset, ret = 0; | 818 | int offset, ret = 0; |
| 813 | 819 | ||
| 814 | range = pinctrl_find_gpio_range_from_pin(pctldev, pin); | 820 | range = pinctrl_find_gpio_range_from_pin(pctldev, pin); |
| 821 | if (!range) { | ||
| 822 | dev_err(pctl->dev, "No gpio range defined.\n"); | ||
| 823 | return -EINVAL; | ||
| 824 | } | ||
| 825 | |||
| 815 | bank = gpiochip_get_data(range->gc); | 826 | bank = gpiochip_get_data(range->gc); |
| 816 | offset = stm32_gpio_pin(pin); | 827 | offset = stm32_gpio_pin(pin); |
| 817 | 828 | ||
| @@ -893,6 +904,9 @@ static void stm32_pconf_dbg_show(struct pinctrl_dev *pctldev, | |||
| 893 | bool val; | 904 | bool val; |
| 894 | 905 | ||
| 895 | range = pinctrl_find_gpio_range_from_pin_nolock(pctldev, pin); | 906 | range = pinctrl_find_gpio_range_from_pin_nolock(pctldev, pin); |
| 907 | if (!range) | ||
| 908 | return; | ||
| 909 | |||
| 896 | bank = gpiochip_get_data(range->gc); | 910 | bank = gpiochip_get_data(range->gc); |
| 897 | offset = stm32_gpio_pin(pin); | 911 | offset = stm32_gpio_pin(pin); |
| 898 | 912 | ||
| @@ -1173,7 +1187,7 @@ int stm32_pctl_probe(struct platform_device *pdev) | |||
| 1173 | return PTR_ERR(pctl->pctl_dev); | 1187 | return PTR_ERR(pctl->pctl_dev); |
| 1174 | } | 1188 | } |
| 1175 | 1189 | ||
| 1176 | for_each_child_of_node(np, child) | 1190 | for_each_available_child_of_node(np, child) |
| 1177 | if (of_property_read_bool(child, "gpio-controller")) | 1191 | if (of_property_read_bool(child, "gpio-controller")) |
| 1178 | banks++; | 1192 | banks++; |
| 1179 | 1193 | ||
| @@ -1186,7 +1200,7 @@ int stm32_pctl_probe(struct platform_device *pdev) | |||
| 1186 | if (!pctl->banks) | 1200 | if (!pctl->banks) |
| 1187 | return -ENOMEM; | 1201 | return -ENOMEM; |
| 1188 | 1202 | ||
| 1189 | for_each_child_of_node(np, child) { | 1203 | for_each_available_child_of_node(np, child) { |
| 1190 | if (of_property_read_bool(child, "gpio-controller")) { | 1204 | if (of_property_read_bool(child, "gpio-controller")) { |
| 1191 | ret = stm32_gpiolib_register_bank(pctl, child); | 1205 | ret = stm32_gpiolib_register_bank(pctl, child); |
| 1192 | if (ret) | 1206 | if (ret) |
