gpio: mmio: Drop bgpio_dir_inverted
authorLinus Walleij <linus.walleij@linaro.org>
Thu, 4 Apr 2019 16:55:14 +0000 (23:55 +0700)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 8 Apr 2019 09:17:43 +0000 (11:17 +0200)
The direction inversion semantics are now handled by simply
using the registers for in/out available, no need to keep
track of inversion semantics exmplicitly anymore.

Reviewed-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Jan Kotas <jank@cadence.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-mmio.c
include/linux/gpio/driver.h

index 04be18b..6f904c8 100644 (file)
@@ -533,13 +533,6 @@ static int bgpio_setup_direction(struct gpio_chip *gc,
                gc->direction_output = bgpio_dir_out;
                gc->direction_input = bgpio_dir_in;
                gc->get_direction = bgpio_get_dir;
-               /*
-                * If only dirin is available, this means we need
-                * inverted semantics when handling get/set registers
-                * so detect this here.
-                */
-               if (dirin && !dirout)
-                       gc->bgpio_dir_inverted = true;
        } else {
                if (flags & BGPIOF_NO_OUTPUT)
                        gc->direction_output = bgpio_dir_out_err;
index 95a5179..4d69d45 100644 (file)
@@ -229,9 +229,6 @@ struct gpio_irq_chip {
  * @reg_clr: output clear register (out=low) for generic GPIO
  * @reg_dir_out: direction out setting register for generic GPIO
  * @reg_dir_in: direction in setting register for generic GPIO
- * @bgpio_dir_inverted: indicates that the direction register is inverted
- *     (gpiolib private state variable) this means @reg_dir_in is
- *     available but not @reg_dir_out.
  * @bgpio_dir_unreadable: indicates that the direction register(s) cannot
  *     be read and we need to rely on out internal state tracking.
  * @bgpio_bits: number of register bits used for a generic GPIO i.e.
@@ -305,7 +302,6 @@ struct gpio_chip {
        void __iomem *reg_clr;
        void __iomem *reg_dir_out;
        void __iomem *reg_dir_in;
-       bool bgpio_dir_inverted;
        bool bgpio_dir_unreadable;
        int bgpio_bits;
        spinlock_t bgpio_lock;