treewide: convert gpio-export to platform driver
authorRené van Dorst <opensource@vdorst.com>
Thu, 19 Jul 2018 10:55:55 +0000 (12:55 +0200)
committerMathias Kresin <dev@kresin.me>
Sat, 4 Aug 2018 06:39:35 +0000 (08:39 +0200)
Without this patch you will get an error "gpio-export probe deferral
not supported" when you try to export i2c expander gpio pins.

gpio-export is probed long before i2c-bus and i2c expander are created
and it doesn't retry it so none pins are exported.

Signed-off-by: René van Dorst <opensource@vdorst.com>
apply the change to all instances of the gpio exports patch
Signed-off-by: Mathias Kresin <dev@kresin.me>
target/linux/ath79/patches-4.14/0024-GPIO-add-named-gpio-exports.patch
target/linux/lantiq/patches-4.14/0030-GPIO-add-named-gpio-exports.patch
target/linux/ramips/patches-4.14/0024-GPIO-add-named-gpio-exports.patch

index 10ca24bc7115c7d36a541470155b22668bbc3730..ea93538a4ce7020937f4f97dfbe974b48cfbe97e 100644 (file)
@@ -22,7 +22,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  
  #include "gpiolib.h"
  
-@@ -506,3 +508,71 @@ void of_gpiochip_remove(struct gpio_chip
+@@ -506,3 +508,68 @@ void of_gpiochip_remove(struct gpio_chip
        gpiochip_remove_pin_ranges(chip);
        of_node_put(chip->of_node);
  }
@@ -32,7 +32,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +      { /* sentinel */ }
 +};
 +
-+static int __init of_gpio_export_probe(struct platform_device *pdev)
++static int of_gpio_export_probe(struct platform_device *pdev)
 +{
 +      struct device_node *np = pdev->dev.of_node;
 +      struct device_node *cnp;
@@ -87,13 +87,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +              .owner  = THIS_MODULE,
 +              .of_match_table = of_match_ptr(gpio_export_ids),
 +      },
++      .probe          = of_gpio_export_probe,
 +};
 +
-+static int __init of_gpio_export_init(void)
-+{
-+      return platform_driver_probe(&gpio_export_driver, of_gpio_export_probe);
-+}
-+device_initcall(of_gpio_export_init);
++module_platform_driver(gpio_export_driver);
 --- a/drivers/gpio/gpiolib-sysfs.c
 +++ b/drivers/gpio/gpiolib-sysfs.c
 @@ -553,7 +553,7 @@ static struct class gpio_class = {
index 013d802265026d24df7361b81f2971fe8ff4b379..95cdf8c5af8174c695215c354cfddfdf0b6b674b 100644 (file)
@@ -22,7 +22,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  
  #include "gpiolib.h"
  
-@@ -506,3 +508,75 @@ void of_gpiochip_remove(struct gpio_chip
+@@ -506,3 +508,72 @@ void of_gpiochip_remove(struct gpio_chip
        gpiochip_remove_pin_ranges(chip);
        of_node_put(chip->of_node);
  }
@@ -34,7 +34,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +      { /* sentinel */ }
 +};
 +
-+static int __init of_gpio_export_probe(struct platform_device *pdev)
++static int of_gpio_export_probe(struct platform_device *pdev)
 +{
 +      struct device_node *np = pdev->dev.of_node;
 +      struct device_node *cnp;
@@ -89,13 +89,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +              .owner  = THIS_MODULE,
 +              .of_match_table = of_match_ptr(gpio_export_ids),
 +      },
++      .probe          = of_gpio_export_probe,
 +};
 +
-+static int __init of_gpio_export_init(void)
-+{
-+      return platform_driver_probe(&gpio_export_driver, of_gpio_export_probe);
-+}
-+device_initcall(of_gpio_export_init);
++module_platform_driver(gpio_export_driver);
 +
 +#endif
 --- a/include/asm-generic/gpio.h
index 10ca24bc7115c7d36a541470155b22668bbc3730..ea93538a4ce7020937f4f97dfbe974b48cfbe97e 100644 (file)
@@ -22,7 +22,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  
  #include "gpiolib.h"
  
-@@ -506,3 +508,71 @@ void of_gpiochip_remove(struct gpio_chip
+@@ -506,3 +508,68 @@ void of_gpiochip_remove(struct gpio_chip
        gpiochip_remove_pin_ranges(chip);
        of_node_put(chip->of_node);
  }
@@ -32,7 +32,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +      { /* sentinel */ }
 +};
 +
-+static int __init of_gpio_export_probe(struct platform_device *pdev)
++static int of_gpio_export_probe(struct platform_device *pdev)
 +{
 +      struct device_node *np = pdev->dev.of_node;
 +      struct device_node *cnp;
@@ -87,13 +87,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +              .owner  = THIS_MODULE,
 +              .of_match_table = of_match_ptr(gpio_export_ids),
 +      },
++      .probe          = of_gpio_export_probe,
 +};
 +
-+static int __init of_gpio_export_init(void)
-+{
-+      return platform_driver_probe(&gpio_export_driver, of_gpio_export_probe);
-+}
-+device_initcall(of_gpio_export_init);
++module_platform_driver(gpio_export_driver);
 --- a/drivers/gpio/gpiolib-sysfs.c
 +++ b/drivers/gpio/gpiolib-sysfs.c
 @@ -553,7 +553,7 @@ static struct class gpio_class = {