From: Mathias Kresin Date: Thu, 28 Jun 2018 18:28:19 +0000 (+0200) Subject: lantiq: backport stp-xway get callback implementation X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=603870e8717ad6c45a8789b238c91e4204f1b3c5;p=openwrt%2Fstaging%2Fxback.git lantiq: backport stp-xway get callback implementation To keep the status of a LED connected to the stp during boot, the get callback is required. If the callback is missing and the LED default state is set to keep in the devicetree, the gpio led driver errors out during load. Fixes: FS#1620 Signed-off-by: Mathias Kresin --- diff --git a/target/linux/lantiq/patches-4.14/0002-gpio-stp-xway-Implement-get-callback.patch b/target/linux/lantiq/patches-4.14/0002-gpio-stp-xway-Implement-get-callback.patch new file mode 100644 index 0000000000..c32b3d6bba --- /dev/null +++ b/target/linux/lantiq/patches-4.14/0002-gpio-stp-xway-Implement-get-callback.patch @@ -0,0 +1,47 @@ +From 5b9b2b5284f81941972105b13337c58489ea8fca Mon Sep 17 00:00:00 2001 +From: Mathias Kresin +Date: Thu, 28 Jun 2018 21:57:40 +0200 +Subject: [PATCH] gpio: stp-xway: Implement get callback + +Add an implementation to get the current GPIO state. + +The callback is used by the leds-gpio driver for example, in case the +current LED/GPIO state should be kept during driver load. + +Signed-off-by: Mathias Kresin +Signed-off-by: Linus Walleij +--- + drivers/gpio/gpio-stp-xway.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +--- a/drivers/gpio/gpio-stp-xway.c ++++ b/drivers/gpio/gpio-stp-xway.c +@@ -91,6 +91,20 @@ struct xway_stp { + }; + + /** ++ * xway_stp_get() - gpio_chip->get - get gpios. ++ * @gc: Pointer to gpio_chip device structure. ++ * @gpio: GPIO signal number. ++ * ++ * Gets the shadow value. ++ */ ++static int xway_stp_get(struct gpio_chip *gc, unsigned int gpio) ++{ ++ struct xway_stp *chip = gpiochip_get_data(gc); ++ ++ return (xway_stp_r32(chip->virt, XWAY_STP_CPU0) & BIT(gpio)); ++} ++ ++/** + * xway_stp_set() - gpio_chip->set - set gpios. + * @gc: Pointer to gpio_chip device structure. + * @gpio: GPIO signal number. +@@ -215,6 +229,7 @@ static int xway_stp_probe(struct platfor + chip->gc.parent = &pdev->dev; + chip->gc.label = "stp-xway"; + chip->gc.direction_output = xway_stp_dir_out; ++ chip->gc.get = xway_stp_get; + chip->gc.set = xway_stp_set; + chip->gc.request = xway_stp_request; + chip->gc.base = -1; diff --git a/target/linux/lantiq/patches-4.9/0002-gpio-stp-xway-Implement-get-callback.patch b/target/linux/lantiq/patches-4.9/0002-gpio-stp-xway-Implement-get-callback.patch new file mode 100644 index 0000000000..c32b3d6bba --- /dev/null +++ b/target/linux/lantiq/patches-4.9/0002-gpio-stp-xway-Implement-get-callback.patch @@ -0,0 +1,47 @@ +From 5b9b2b5284f81941972105b13337c58489ea8fca Mon Sep 17 00:00:00 2001 +From: Mathias Kresin +Date: Thu, 28 Jun 2018 21:57:40 +0200 +Subject: [PATCH] gpio: stp-xway: Implement get callback + +Add an implementation to get the current GPIO state. + +The callback is used by the leds-gpio driver for example, in case the +current LED/GPIO state should be kept during driver load. + +Signed-off-by: Mathias Kresin +Signed-off-by: Linus Walleij +--- + drivers/gpio/gpio-stp-xway.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +--- a/drivers/gpio/gpio-stp-xway.c ++++ b/drivers/gpio/gpio-stp-xway.c +@@ -91,6 +91,20 @@ struct xway_stp { + }; + + /** ++ * xway_stp_get() - gpio_chip->get - get gpios. ++ * @gc: Pointer to gpio_chip device structure. ++ * @gpio: GPIO signal number. ++ * ++ * Gets the shadow value. ++ */ ++static int xway_stp_get(struct gpio_chip *gc, unsigned int gpio) ++{ ++ struct xway_stp *chip = gpiochip_get_data(gc); ++ ++ return (xway_stp_r32(chip->virt, XWAY_STP_CPU0) & BIT(gpio)); ++} ++ ++/** + * xway_stp_set() - gpio_chip->set - set gpios. + * @gc: Pointer to gpio_chip device structure. + * @gpio: GPIO signal number. +@@ -215,6 +229,7 @@ static int xway_stp_probe(struct platfor + chip->gc.parent = &pdev->dev; + chip->gc.label = "stp-xway"; + chip->gc.direction_output = xway_stp_dir_out; ++ chip->gc.get = xway_stp_get; + chip->gc.set = xway_stp_set; + chip->gc.request = xway_stp_request; + chip->gc.base = -1;