pinctrl: xway: fix gpio-hog related boot issues
Subsystems (2)
PATCH 1/1 pinctrl: xway: fix gpio-hog related boot issues
This patch is based on commit a86caa9ba5d7 ("pinctrl: msm: fix gpio-hog related boot issues").
It fixes the issue that the gpio ranges needs to be defined before gpiochip_add().
Therefore, we also have to swap the order of registering the pinctrl driver and registering the gpio chip.
You also have to add the "gpio-ranges" property to the pinctrl device node to get it finally working.
--- drivers/pinctrl/pinctrl-xway.c | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-)
drivers/pinctrl/pinctrl-xway.c +27 -12
@@ -1746,14 +1746,6 @@ static int pinmux_xway_probe(struct platform_device *pdev) } xway_pctrl_desc.pins = xway_info.pads; -/* register the gpio chip */ - xway_chip.parent = &pdev->dev; - ret =devm_gpiochip_add_data (&pdev->dev, &xway_chip,NULL ); -if (ret) { -dev_err (&pdev->dev,"Failed to register gpio chip\n" ); -return ret; - } -/* setup the data needed by pinctrl */ xway_pctrl_desc.name =dev_name (&pdev->dev); xway_pctrl_desc.npins = xway_chip.ngpio;
@@ -1775,10 +1767,33 @@ static int pinmux_xway_probe(struct platform_device *pdev)return ret; } -/* finish with registering the gpio range in pinctrl */ - xway_gpio_range.npins = xway_chip.ngpio; - xway_gpio_range.base = xway_chip.base; -pinctrl_add_gpio_range (xway_info.pctrl, &xway_gpio_range); +/* register the gpio chip */ + xway_chip.parent = &pdev->dev; + xway_chip.owner =THIS_MODULE ; + xway_chip.of_node = pdev->dev.of_node; + ret =devm_gpiochip_add_data (&pdev->dev, &xway_chip,NULL ); +if (ret) { +dev_err (&pdev->dev,"Failed to register gpio chip\n" ); +return ret; + } + +/* +* For DeviceTree-supported systems, the gpio core checks the +* pinctrl's device node for the "gpio-ranges" property. +* If it is present, it takes care of adding the pin ranges +* for the driver. In this case the driver can skip ahead. +* +* In order to remain compatible with older, existing DeviceTree +* files which don't set the "gpio-ranges" property or systems that +* utilize ACPI the driver has to call gpiochip_add_pin_range(). +*/ +if (!of_property_read_bool (pdev->dev.of_node,"gpio-ranges" )) { +/* finish with registering the gpio range in pinctrl */ + xway_gpio_range.npins = xway_chip.ngpio; + xway_gpio_range.base = xway_chip.base; +pinctrl_add_gpio_range (xway_info.pctrl, &xway_gpio_range); + } +dev_info (&pdev->dev,"Init done\n" );return 0 ; }
Signature · 1 line
2.11.0
Quoted 6 lines · Martin Schiller
This patch is based on commit
a86caa9ba5d7("pinctrl: msm: fix gpio-hog related boot issues").It fixes the issue that the gpio ranges needs to be defined before
gpiochip_add().
Quoted 7 lines
Therefore, we also have to swap the order of registering the pinctrl driver and registering the gpio chip.
You also have to add the "gpio-ranges" property to the pinctrl device node to get it finally working.
Signed-off-by Martin Schiller <[email protected]>
Patch applied unless John Crispin has objections, it looks good to me!
Yours,
Linus Walleij
John Crispin
Acked-byQuoted 14 lines · Linus Walleij
Quoted 12 lines · Martin Schiller
This patch is based on commit
a86caa9ba5d7("pinctrl: msm: fix gpio-hog related boot issues").It fixes the issue that the gpio ranges needs to be defined before
gpiochip_add().Therefore, we also have to swap the order of registering the pinctrl driver and registering the gpio chip.
You also have to add the "gpio-ranges" property to the pinctrl device node to get it finally working.
Quoted 6 lines
Quoted 1 line
Signed-off-by Martin Schiller <[email protected]>Patch applied unless John Crispin has objections, it looks good to me!
Yours,
Linus Walleij
sorry did not see the patch in my inbox
Quoted 16 lines · John Crispin
Quoted 15 lines · Linus Walleij
Quoted 13 lines · Martin Schiller
This patch is based on commit
a86caa9ba5d7("pinctrl: msm: fix gpio-hog related boot issues").It fixes the issue that the gpio ranges needs to be defined before
gpiochip_add().Therefore, we also have to swap the order of registering the pinctrl driver and registering the gpio chip.
You also have to add the "gpio-ranges" property to the pinctrl device node to get it finally working.
Signed-off-by Martin Schiller <[email protected]>
Quoted 9 lines
Quoted 5 lines
Patch applied unless John Crispin has objections, it looks good to me!
Yours,
Linus Walleijsorry did not see the patch in my inbox
Sorry, that was my fault.
I've added everyone from getmaintainers.pl output, but forgot to also add you.
Regards,
Martin