* [PATCH v1 1/3] gpio: pca953x: Introduce a long awaited ->get_direction()
@ 2017-03-20 15:45 Andy Shevchenko
2017-03-20 15:45 ` [PATCH v1 2/3] gpio: pca953x: Sort headers alphabetically Andy Shevchenko
2017-03-20 15:45 ` [PATCH v1 3/3] gpio: pca953x: Expand comment for "reset" GPIO in ACPI case Andy Shevchenko
0 siblings, 2 replies; 3+ messages in thread
From: Andy Shevchenko @ 2017-03-20 15:45 UTC (permalink / raw)
To: Linus Walleij, linux-gpio; +Cc: Andy Shevchenko
Introduce ->get_direction() callback for the driver.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/gpio/gpio-pca953x.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c
index d44232aadb6c..968e8bf5b286 100644
--- a/drivers/gpio/gpio-pca953x.c
+++ b/drivers/gpio/gpio-pca953x.c
@@ -363,6 +363,21 @@ static void pca953x_gpio_set_value(struct gpio_chip *gc, unsigned off, int val)
mutex_unlock(&chip->i2c_lock);
}
+static int pca953x_gpio_get_direction(struct gpio_chip *gc, unsigned off)
+{
+ struct pca953x_chip *chip = gpiochip_get_data(gc);
+ u32 reg_val;
+ int ret;
+
+ mutex_lock(&chip->i2c_lock);
+ ret = pca953x_read_single(chip, chip->regs->direction, ®_val, off);
+ mutex_unlock(&chip->i2c_lock);
+ if (ret < 0)
+ return ret;
+
+ return (reg_val & (1u << (off % BANK_SZ))) ? GPIOF_DIR_OUT : GPIOF_DIR_IN;
+}
+
static void pca953x_gpio_set_multiple(struct gpio_chip *gc,
unsigned long *mask, unsigned long *bits)
{
@@ -408,6 +423,7 @@ static void pca953x_setup_gpio(struct pca953x_chip *chip, int gpios)
gc->direction_output = pca953x_gpio_direction_output;
gc->get = pca953x_gpio_get_value;
gc->set = pca953x_gpio_set_value;
+ gc->get_direction = pca953x_gpio_get_direction;
gc->set_multiple = pca953x_gpio_set_multiple;
gc->can_sleep = true;
--
2.11.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v1 2/3] gpio: pca953x: Sort headers alphabetically
2017-03-20 15:45 [PATCH v1 1/3] gpio: pca953x: Introduce a long awaited ->get_direction() Andy Shevchenko
@ 2017-03-20 15:45 ` Andy Shevchenko
2017-03-20 15:45 ` [PATCH v1 3/3] gpio: pca953x: Expand comment for "reset" GPIO in ACPI case Andy Shevchenko
1 sibling, 0 replies; 3+ messages in thread
From: Andy Shevchenko @ 2017-03-20 15:45 UTC (permalink / raw)
To: Linus Walleij, linux-gpio; +Cc: Andy Shevchenko
For sake of better maintenance sort the headers by alphabetical order.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/gpio/gpio-pca953x.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c
index 968e8bf5b286..cd6c9c5f3e77 100644
--- a/drivers/gpio/gpio-pca953x.c
+++ b/drivers/gpio/gpio-pca953x.c
@@ -11,18 +11,19 @@
* the Free Software Foundation; version 2 of the License.
*/
-#include <linux/module.h>
-#include <linux/init.h>
+#include <linux/acpi.h>
#include <linux/gpio.h>
#include <linux/gpio/consumer.h>
-#include <linux/interrupt.h>
#include <linux/i2c.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/module.h>
+#include <linux/of_platform.h>
#include <linux/platform_data/pca953x.h>
+#include <linux/regulator/consumer.h>
#include <linux/slab.h>
+
#include <asm/unaligned.h>
-#include <linux/of_platform.h>
-#include <linux/acpi.h>
-#include <linux/regulator/consumer.h>
#define PCA953X_INPUT 0
#define PCA953X_OUTPUT 1
--
2.11.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v1 3/3] gpio: pca953x: Expand comment for "reset" GPIO in ACPI case
2017-03-20 15:45 [PATCH v1 1/3] gpio: pca953x: Introduce a long awaited ->get_direction() Andy Shevchenko
2017-03-20 15:45 ` [PATCH v1 2/3] gpio: pca953x: Sort headers alphabetically Andy Shevchenko
@ 2017-03-20 15:45 ` Andy Shevchenko
1 sibling, 0 replies; 3+ messages in thread
From: Andy Shevchenko @ 2017-03-20 15:45 UTC (permalink / raw)
To: Linus Walleij, linux-gpio; +Cc: Andy Shevchenko
GPIO ACPI library is going to be stricter about resources, thus, expand
comment regarding "reset" GPIO resource in this driver to clarify its
usage in ACPI case.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/gpio/gpio-pca953x.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c
index cd6c9c5f3e77..7a503d2b7d15 100644
--- a/drivers/gpio/gpio-pca953x.c
+++ b/drivers/gpio/gpio-pca953x.c
@@ -777,7 +777,13 @@ static int pca953x_probe(struct i2c_client *client,
chip->gpio_start = -1;
irq_base = 0;
- /* See if we need to de-assert a reset pin */
+ /*
+ * See if we need to de-assert a reset pin.
+ *
+ * There is no known ACPI-enabled platforms that are
+ * using "reset" GPIO. Otherwise any of those platform
+ * must use _DSD method with corresponding property.
+ */
reset_gpio = devm_gpiod_get_optional(&client->dev, "reset",
GPIOD_OUT_LOW);
if (IS_ERR(reset_gpio))
--
2.11.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-03-20 15:46 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-20 15:45 [PATCH v1 1/3] gpio: pca953x: Introduce a long awaited ->get_direction() Andy Shevchenko
2017-03-20 15:45 ` [PATCH v1 2/3] gpio: pca953x: Sort headers alphabetically Andy Shevchenko
2017-03-20 15:45 ` [PATCH v1 3/3] gpio: pca953x: Expand comment for "reset" GPIO in ACPI case Andy Shevchenko
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.