summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Kresin <dev@kresin.me>2018-06-28 20:28:19 +0200
committerMathias Kresin <dev@kresin.me>2018-07-03 20:59:27 +0200
commit603870e8717ad6c45a8789b238c91e4204f1b3c5 (patch)
tree20a4031c259607558c2d6f2db737d7efaaf6a3d4
parent2a7d8cd165be3045727fabd9bbfd53fc84fda675 (diff)
downloadmtk-20170518-603870e8717ad6c45a8789b238c91e4204f1b3c5.zip
mtk-20170518-603870e8717ad6c45a8789b238c91e4204f1b3c5.tar.gz
mtk-20170518-603870e8717ad6c45a8789b238c91e4204f1b3c5.tar.bz2
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 <dev@kresin.me>
-rw-r--r--target/linux/lantiq/patches-4.14/0002-gpio-stp-xway-Implement-get-callback.patch47
-rw-r--r--target/linux/lantiq/patches-4.9/0002-gpio-stp-xway-Implement-get-callback.patch47
2 files changed, 94 insertions, 0 deletions
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 0000000..c32b3d6
--- /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 <dev@kresin.me>
+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 <dev@kresin.me>
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+---
+ 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 0000000..c32b3d6
--- /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 <dev@kresin.me>
+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 <dev@kresin.me>
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+---
+ 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;