]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
gpio: Use new GPIO_LINE_DIRECTION
authorMatti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Wed, 6 Nov 2019 08:54:12 +0000 (10:54 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 7 Nov 2019 08:27:48 +0000 (09:27 +0100)
It's hard for occasional GPIO code reader/writer to know if values 0/1
equal to IN or OUT. Use defined GPIO_LINE_DIRECTION_IN and
GPIO_LINE_DIRECTION_OUT to help them out.

NOTE - for gpio-amd-fch and gpio-bd9571mwv:
This commit also changes the return value for direction get to equal 1
for direction INPUT. Prior this commit these drivers might have
returned some other positive value but 1 for INPUT.

Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Acked-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
Reviewed-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Acked-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
60 files changed:
drivers/gpio/gpio-104-dio-48e.c
drivers/gpio/gpio-104-idi-48.c
drivers/gpio/gpio-104-idio-16.c
drivers/gpio/gpio-74xx-mmio.c
drivers/gpio/gpio-amd-fch.c
drivers/gpio/gpio-aspeed.c
drivers/gpio/gpio-bcm-kona.c
drivers/gpio/gpio-bd70528.c
drivers/gpio/gpio-bd9571mwv.c
drivers/gpio/gpio-dln2.c
drivers/gpio/gpio-exar.c
drivers/gpio/gpio-f7188x.c
drivers/gpio/gpio-gpio-mm.c
drivers/gpio/gpio-htc-egpio.c
drivers/gpio/gpio-ich.c
drivers/gpio/gpio-kempld.c
drivers/gpio/gpio-lp873x.c
drivers/gpio/gpio-lp87565.c
drivers/gpio/gpio-madera.c
drivers/gpio/gpio-max3191x.c
drivers/gpio/gpio-merrifield.c
drivers/gpio/gpio-mmio.c
drivers/gpio/gpio-mockup.c
drivers/gpio/gpio-moxtet.c
drivers/gpio/gpio-mvebu.c
drivers/gpio/gpio-mxs.c
drivers/gpio/gpio-omap.c
drivers/gpio/gpio-pca953x.c
drivers/gpio/gpio-pci-idio-16.c
drivers/gpio/gpio-pcie-idio-24.c
drivers/gpio/gpio-pisosr.c
drivers/gpio/gpio-pl061.c
drivers/gpio/gpio-raspberrypi-exp.c
drivers/gpio/gpio-rcar.c
drivers/gpio/gpio-reg.c
drivers/gpio/gpio-sa1100.c
drivers/gpio/gpio-sama5d2-piobu.c
drivers/gpio/gpio-sch.c
drivers/gpio/gpio-sch311x.c
drivers/gpio/gpio-siox.c
drivers/gpio/gpio-stmpe.c
drivers/gpio/gpio-tc3589x.c
drivers/gpio/gpio-tegra.c
drivers/gpio/gpio-tegra186.c
drivers/gpio/gpio-thunderx.c
drivers/gpio/gpio-tpic2810.c
drivers/gpio/gpio-tps65086.c
drivers/gpio/gpio-tps65912.c
drivers/gpio/gpio-tps68470.c
drivers/gpio/gpio-tqmx86.c
drivers/gpio/gpio-ts4900.c
drivers/gpio/gpio-twl4030.c
drivers/gpio/gpio-twl6040.c
drivers/gpio/gpio-uniphier.c
drivers/gpio/gpio-wcove.c
drivers/gpio/gpio-ws16c48.c
drivers/gpio/gpio-xgene.c
drivers/gpio/gpio-xra1403.c
drivers/gpio/gpio-xtensa.c
drivers/gpio/gpio-zynq.c

index a44fa8af5b0d714c160e7d5ad28b8dbd26623e1f..400c09b905f8ad2a65569368ece34747563a8283 100644 (file)
@@ -59,7 +59,10 @@ static int dio48e_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
        const unsigned port = offset / 8;
        const unsigned mask = BIT(offset % 8);
 
-       return !!(dio48egpio->io_state[port] & mask);
+       if (dio48egpio->io_state[port] & mask)
+               return  GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int dio48e_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
index 79dead61e7763568ab58a698bd53d5a6371e3db5..c50329ab493a5e5feeceed377b4d2e46a2651e43 100644 (file)
@@ -53,7 +53,7 @@ struct idi_48_gpio {
 
 static int idi_48_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
 {
-       return 1;
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int idi_48_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
index 8d2f51cd9d9174a6a298070f0f12352bd13c10f5..5752d9dab148e60901684e46bf5b87061fc67106 100644 (file)
@@ -51,9 +51,9 @@ struct idio_16_gpio {
 static int idio_16_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
 {
        if (offset > 15)
-               return 1;
+               return GPIO_LINE_DIRECTION_IN;
 
-       return 0;
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int idio_16_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
index 83a2286d93f62b25b74ea1385f4cf8929d1ab7d0..173e06758e6c2a46e77442a2e9ad77df17f1b8dc 100644 (file)
@@ -77,7 +77,10 @@ static int mmio_74xx_get_direction(struct gpio_chip *gc, unsigned offset)
 {
        struct mmio_74xx_gpio_priv *priv = gpiochip_get_data(gc);
 
-       return !(priv->flags & MMIO_74XX_DIR_OUT);
+       if (priv->flags & MMIO_74XX_DIR_OUT)
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return  GPIO_LINE_DIRECTION_IN;
 }
 
 static int mmio_74xx_dir_in(struct gpio_chip *gc, unsigned int gpio)
index 181df1581df5e0e12034ac9da820e2a2e2232af9..4e44ba4d7423c7d86065223887f08009e2566896 100644 (file)
@@ -92,7 +92,7 @@ static int amd_fch_gpio_get_direction(struct gpio_chip *gc, unsigned int gpio)
        ret = (readl_relaxed(ptr) & AMD_FCH_GPIO_FLAG_DIRECTION);
        spin_unlock_irqrestore(&priv->lock, flags);
 
-       return ret;
+       return ret ? GPIO_LINE_DIRECTION_IN : GPIO_LINE_DIRECTION_OUT;
 }
 
 static void amd_fch_gpio_set(struct gpio_chip *gc,
index 09e53c5f3b0a462170c0d83195bb8ea34097d409..f1037b61f7634c5ade7a24bb6d9e4ed37bea3dc4 100644 (file)
@@ -487,10 +487,10 @@ static int aspeed_gpio_get_direction(struct gpio_chip *gc, unsigned int offset)
        u32 val;
 
        if (!have_input(gpio, offset))
-               return 0;
+               return GPIO_LINE_DIRECTION_OUT;
 
        if (!have_output(gpio, offset))
-               return 1;
+               return GPIO_LINE_DIRECTION_IN;
 
        spin_lock_irqsave(&gpio->lock, flags);
 
@@ -498,8 +498,7 @@ static int aspeed_gpio_get_direction(struct gpio_chip *gc, unsigned int offset)
 
        spin_unlock_irqrestore(&gpio->lock, flags);
 
-       return !val;
-
+       return val ? GPIO_LINE_DIRECTION_OUT : GPIO_LINE_DIRECTION_IN;
 }
 
 static inline int irqd_to_aspeed_gpio_data(struct irq_data *d,
index 9fa6d3a967d2c3d796933949e241396c4e4de3ed..4122683eb1f987b9afc75aab29c2f1722c149e82 100644 (file)
@@ -127,7 +127,7 @@ static int bcm_kona_gpio_get_dir(struct gpio_chip *chip, unsigned gpio)
        u32 val;
 
        val = readl(reg_base + GPIO_CONTROL(gpio)) & GPIO_GPCTR0_IOTR_MASK;
-       return !!val;
+       return val ? GPIO_LINE_DIRECTION_IN : GPIO_LINE_DIRECTION_OUT;
 }
 
 static void bcm_kona_gpio_set(struct gpio_chip *chip, unsigned gpio, int value)
@@ -144,7 +144,7 @@ static void bcm_kona_gpio_set(struct gpio_chip *chip, unsigned gpio, int value)
        raw_spin_lock_irqsave(&kona_gpio->lock, flags);
 
        /* this function only applies to output pin */
-       if (bcm_kona_gpio_get_dir(chip, gpio) == 1)
+       if (bcm_kona_gpio_get_dir(chip, gpio) == GPIO_LINE_DIRECTION_IN)
                goto out;
 
        reg_offset = value ? GPIO_OUT_SET(bank_id) : GPIO_OUT_CLEAR(bank_id);
@@ -170,7 +170,7 @@ static int bcm_kona_gpio_get(struct gpio_chip *chip, unsigned gpio)
        reg_base = kona_gpio->reg_base;
        raw_spin_lock_irqsave(&kona_gpio->lock, flags);
 
-       if (bcm_kona_gpio_get_dir(chip, gpio) == 1)
+       if (bcm_kona_gpio_get_dir(chip, gpio) == GPIO_LINE_DIRECTION_IN)
                reg_offset = GPIO_IN_STATUS(bank_id);
        else
                reg_offset = GPIO_OUT_STATUS(bank_id);
index 0c1ead12d8839036382392a8d8f35c4131646fd2..734be6b752d0d85b9769913511c64b671b294304 100644 (file)
@@ -54,8 +54,10 @@ static int bd70528_get_direction(struct gpio_chip *chip, unsigned int offset)
                dev_err(bdgpio->chip.dev, "Could not read gpio direction\n");
                return ret;
        }
+       if (val & BD70528_GPIO_OUT_EN_MASK)
+               return GPIO_LINE_DIRECTION_OUT;
 
-       return !(val & BD70528_GPIO_OUT_EN_MASK);
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int bd70528_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
@@ -166,9 +168,9 @@ static int bd70528_gpio_get(struct gpio_chip *chip, unsigned int offset)
         * locking would make no sense.
         */
        ret = bd70528_get_direction(chip, offset);
-       if (ret == 0)
+       if (ret == GPIO_LINE_DIRECTION_OUT)
                ret = bd70528_gpio_get_o(bdgpio, offset);
-       else if (ret == 1)
+       else if (ret == GPIO_LINE_DIRECTION_IN)
                ret = bd70528_gpio_get_i(bdgpio, offset);
        else
                dev_err(bdgpio->chip.dev, "failed to read GPIO direction\n");
index 5224a946e8aba0f26dd9c7b50bc81735e866237b..c0abc9c6851b61c55f65f188df70e062e928c8f5 100644 (file)
@@ -37,8 +37,10 @@ static int bd9571mwv_gpio_get_direction(struct gpio_chip *chip,
        ret = regmap_read(gpio->bd->regmap, BD9571MWV_GPIO_DIR, &val);
        if (ret < 0)
                return ret;
+       if (val & BIT(offset))
+               return GPIO_LINE_DIRECTION_IN;
 
-       return val & BIT(offset);
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int bd9571mwv_gpio_direction_input(struct gpio_chip *chip,
index 8a33c2fc174d518778c5d876adef0d6000bb51a9..26b40c8b8a12a002ebc0176649d3eb52c7d7be0f 100644 (file)
@@ -200,9 +200,9 @@ static int dln2_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
        struct dln2_gpio *dln2 = gpiochip_get_data(chip);
 
        if (test_bit(offset, dln2->output_enabled))
-               return 0;
+               return GPIO_LINE_DIRECTION_OUT;
 
-       return 1;
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int dln2_gpio_get(struct gpio_chip *chip, unsigned int offset)
@@ -214,7 +214,7 @@ static int dln2_gpio_get(struct gpio_chip *chip, unsigned int offset)
        if (dir < 0)
                return dir;
 
-       if (dir == 1)
+       if (dir == GPIO_LINE_DIRECTION_IN)
                return dln2_gpio_pin_get_in_val(dln2, offset);
 
        return dln2_gpio_pin_get_out_val(dln2, offset);
index fae327d5b06e80a7728aef8d9dfea885b7f645cf..da1ef0b1c291bd331346d58ee382feeb86861a20 100644 (file)
@@ -77,7 +77,10 @@ static int exar_get_direction(struct gpio_chip *chip, unsigned int offset)
                EXAR_OFFSET_MPIOSEL_HI : EXAR_OFFSET_MPIOSEL_LO;
        unsigned int bit  = (offset + exar_gpio->first_pin) % 8;
 
-       return !!(exar_get(chip, addr) & BIT(bit));
+       if (exar_get(chip, addr) & BIT(bit))
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int exar_get_value(struct gpio_chip *chip, unsigned int offset)
index fdc639f856f1c2c1f8cb5a3fa562a5382318cddd..cadd02993539b87566e8787a679f9d49f2864462 100644 (file)
@@ -250,7 +250,10 @@ static int f7188x_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
 
        superio_exit(sio->addr);
 
-       return !(dir & 1 << offset);
+       if (dir & 1 << offset)
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int f7188x_gpio_direction_in(struct gpio_chip *chip, unsigned offset)
index 78a1db24e931f835e213a9e6a605a553af6fb5d2..c22d6f94129caff67baf1adea9d8eea36d62f3a1 100644 (file)
@@ -52,7 +52,10 @@ static int gpiomm_gpio_get_direction(struct gpio_chip *chip,
        const unsigned int port = offset / 8;
        const unsigned int mask = BIT(offset % 8);
 
-       return !!(gpiommgpio->io_state[port] & mask);
+       if (gpiommgpio->io_state[port] & mask)
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int gpiomm_gpio_direction_input(struct gpio_chip *chip,
index 8aa23d70b1e6f959dbf348555ed4ca7493f5a8c5..a40bd56673fe3678be91d5e6670b598361e17fc9 100644 (file)
@@ -220,7 +220,10 @@ static int egpio_get_direction(struct gpio_chip *chip, unsigned offset)
 
        egpio = gpiochip_get_data(chip);
 
-       return !test_bit(offset, &egpio->is_out);
+       if (test_bit(offset, &egpio->is_out))
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static void egpio_write_cache(struct egpio_info *ei)
index 90bf7742f9b07cca69a9cade036d93ee10e7460b..2f086d0aa1f4a214fce2c189e8812a34b73994a7 100644 (file)
@@ -159,7 +159,10 @@ static bool ichx_gpio_check_available(struct gpio_chip *gpio, unsigned nr)
 
 static int ichx_gpio_get_direction(struct gpio_chip *gpio, unsigned nr)
 {
-       return ichx_read_bit(GPIO_IO_SEL, nr);
+       if (ichx_read_bit(GPIO_IO_SEL, nr))
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int ichx_gpio_direction_input(struct gpio_chip *gpio, unsigned nr)
index ef51638f3f75937b5d0545c064c228b0e6c88e4a..4ea15f08e0f4ceca7b400a5360741d5a4b135952 100644 (file)
@@ -104,7 +104,10 @@ static int kempld_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
        struct kempld_gpio_data *gpio = gpiochip_get_data(chip);
        struct kempld_device_data *pld = gpio->pld;
 
-       return !kempld_gpio_get_bit(pld, KEMPLD_GPIO_DIR_NUM(offset), offset);
+       if (kempld_gpio_get_bit(pld, KEMPLD_GPIO_DIR_NUM(offset), offset))
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int kempld_gpio_pincount(struct kempld_device_data *pld)
index 801995dd9b2605908f3ee1ea9ffdb02583d42c2f..70fad87ff2db79f50f538bbc6df66ea0a19f4fbb 100644 (file)
@@ -33,7 +33,7 @@ static int lp873x_gpio_get_direction(struct gpio_chip *chip,
                                     unsigned int offset)
 {
        /* This device is output only */
-       return 0;
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int lp873x_gpio_direction_input(struct gpio_chip *chip,
index a121c8f1061005380464d4cf96ac68a4905b293c..e1244520cf7dd8a0af3914e7897abb2497e828c7 100644 (file)
@@ -57,7 +57,10 @@ static int lp87565_gpio_get_direction(struct gpio_chip *chip,
        if (ret < 0)
                return ret;
 
-       return !(val & BIT(offset));
+       if (val & BIT(offset))
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int lp87565_gpio_direction_input(struct gpio_chip *chip,
index 7086f8b5388fd712dc7c8198a7f1fe83fc280a4b..8f38303fcbc4a5621e93f5f22b189ac1dc4a241c 100644 (file)
@@ -34,7 +34,10 @@ static int madera_gpio_get_direction(struct gpio_chip *chip,
        if (ret < 0)
                return ret;
 
-       return !!(val & MADERA_GP1_DIR_MASK);
+       if (val & MADERA_GP1_DIR_MASK)
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int madera_gpio_direction_in(struct gpio_chip *chip, unsigned int offset)
index 4b4b2ceb82fcddfa33e49cec075b834ae6bd1d55..0696d5a214319cc9dfeb14215102767d36b21b08 100644 (file)
@@ -94,7 +94,7 @@ DECLARE_CRC8_TABLE(max3191x_crc8);
 
 static int max3191x_get_direction(struct gpio_chip *gpio, unsigned int offset)
 {
-       return 1; /* always in */
+       return GPIO_LINE_DIRECTION_IN; /* always in */
 }
 
 static int max3191x_direction_input(struct gpio_chip *gpio, unsigned int offset)
index 2f1e9da81c1e422644e1611fd5c43b6a14cc0b85..d4fa6e9560f330b159ac5254456c5ae96ca1f45a 100644 (file)
@@ -162,7 +162,10 @@ static int mrfld_gpio_get_direction(struct gpio_chip *chip, unsigned int offset)
 {
        void __iomem *gpdr = gpio_reg(chip, offset, GPDR);
 
-       return !(readl(gpdr) & BIT(offset % 32));
+       if (readl(gpdr) & BIT(offset % 32))
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int mrfld_gpio_set_debounce(struct gpio_chip *chip, unsigned int offset,
index 6f904c87467826c5e48a2e710c4929488f07ceec..cd07c948649feac6af3b9f6d0cffbb4aaf7ec0cb 100644 (file)
@@ -370,15 +370,24 @@ static int bgpio_dir_in(struct gpio_chip *gc, unsigned int gpio)
 static int bgpio_get_dir(struct gpio_chip *gc, unsigned int gpio)
 {
        /* Return 0 if output, 1 if input */
-       if (gc->bgpio_dir_unreadable)
-               return !(gc->bgpio_dir & bgpio_line2mask(gc, gpio));
-       if (gc->reg_dir_out)
-               return !(gc->read_reg(gc->reg_dir_out) & bgpio_line2mask(gc, gpio));
+       if (gc->bgpio_dir_unreadable) {
+               if (gc->bgpio_dir & bgpio_line2mask(gc, gpio))
+                       return GPIO_LINE_DIRECTION_OUT;
+               return GPIO_LINE_DIRECTION_IN;
+       }
+
+       if (gc->reg_dir_out) {
+               if (gc->read_reg(gc->reg_dir_out) & bgpio_line2mask(gc, gpio))
+                       return GPIO_LINE_DIRECTION_OUT;
+               return GPIO_LINE_DIRECTION_IN;
+       }
+
        if (gc->reg_dir_in)
-               return !!(gc->read_reg(gc->reg_dir_in) & bgpio_line2mask(gc, gpio));
+               if (!(gc->read_reg(gc->reg_dir_in) & bgpio_line2mask(gc, gpio)))
+                       return GPIO_LINE_DIRECTION_OUT;
 
        /* This should not happen */
-       return 1;
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int bgpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
index 213aedc97dc2e7d37c04194b889d95acb7763df5..47c172b2f5ad656c329ec6313cc00e2242b67b33 100644 (file)
 
 #define gpio_mockup_err(...)   pr_err(GPIO_MOCKUP_NAME ": " __VA_ARGS__)
 
-enum {
-       GPIO_MOCKUP_DIR_IN = 0,
-       GPIO_MOCKUP_DIR_OUT = 1,
-};
-
 /*
  * struct gpio_pin_status - structure describing a GPIO status
- * @dir:       Configures direction of gpio as "in" or "out", 0=in, 1=out
+ * @dir:       Configures direction of gpio as "in" or "out"
  * @value:     Configures status of the gpio as 0(low) or 1(high)
  */
 struct gpio_mockup_line_status {
@@ -152,7 +147,7 @@ static int gpio_mockup_dirout(struct gpio_chip *gc,
        struct gpio_mockup_chip *chip = gpiochip_get_data(gc);
 
        mutex_lock(&chip->lock);
-       chip->lines[offset].dir = GPIO_MOCKUP_DIR_OUT;
+       chip->lines[offset].dir = GPIO_LINE_DIRECTION_OUT;
        __gpio_mockup_set(chip, offset, value);
        mutex_unlock(&chip->lock);
 
@@ -164,7 +159,7 @@ static int gpio_mockup_dirin(struct gpio_chip *gc, unsigned int offset)
        struct gpio_mockup_chip *chip = gpiochip_get_data(gc);
 
        mutex_lock(&chip->lock);
-       chip->lines[offset].dir = GPIO_MOCKUP_DIR_IN;
+       chip->lines[offset].dir = GPIO_LINE_DIRECTION_IN;
        mutex_unlock(&chip->lock);
 
        return 0;
index 3fd729994a3878eb844a84a62180321f5cd441b1..8299909318f412451e0cfe6762ad3921d4fbdcff 100644 (file)
@@ -78,9 +78,9 @@ static int moxtet_gpio_get_direction(struct gpio_chip *gc, unsigned int offset)
 
        /* All lines are hard wired to be either input or output, not both. */
        if (chip->desc->in_mask & BIT(offset))
-               return 1;
+               return GPIO_LINE_DIRECTION_IN;
        else if (chip->desc->out_mask & BIT(offset))
-               return 0;
+               return GPIO_LINE_DIRECTION_OUT;
        else
                return -EINVAL;
 }
index 6c06876943412bc974999e247d6ffcd91301a7a3..9b2adf0ef88095fabd0ff041212efa2a7f6f341d 100644 (file)
@@ -384,7 +384,10 @@ static int mvebu_gpio_get_direction(struct gpio_chip *chip, unsigned int pin)
 
        regmap_read(mvchip->regs, GPIO_IO_CONF_OFF + mvchip->offset, &u);
 
-       return !!(u & BIT(pin));
+       if (u & BIT(pin))
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int mvebu_gpio_to_irq(struct gpio_chip *chip, unsigned int pin)
index 5e5437a2c607ee9c4817a36040431b5e7ac08a20..c4a314c68555df12f21aec2e1544e6f138bd1d67 100644 (file)
@@ -248,7 +248,10 @@ static int mxs_gpio_get_direction(struct gpio_chip *gc, unsigned offset)
        u32 dir;
 
        dir = readl(port->base + PINCTRL_DOE(port));
-       return !(dir & mask);
+       if (dir & mask)
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static const struct platform_device_id mxs_gpio_ids[] = {
index d0f27084a9420e948536bc873676165b04c21890..3bd8adaeed9ecaa3226b842d19bb1fc42e1d329a 100644 (file)
@@ -805,8 +805,10 @@ static int omap_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
 {
        struct gpio_bank *bank = gpiochip_get_data(chip);
 
-       return !!(readl_relaxed(bank->base + bank->regs->direction) &
-                 BIT(offset));
+       if (readl_relaxed(bank->base + bank->regs->direction) & BIT(offset))
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int omap_gpio_input(struct gpio_chip *chip, unsigned offset)
index de5d1383f28da9538336a16e67a127be14f8f9a2..82122c3c688ae45c475954afb3b3b68726c45b0e 100644 (file)
@@ -449,7 +449,10 @@ static int pca953x_gpio_get_direction(struct gpio_chip *gc, unsigned off)
        if (ret < 0)
                return ret;
 
-       return !!(reg_val & bit);
+       if (reg_val & bit)
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static void pca953x_gpio_set_multiple(struct gpio_chip *gc,
index 5aa136a6a3e0772c7f1c3363059016e5e757a1e9..df51dd08bdfe45f5698ca6303b2a498706c472c5 100644 (file)
@@ -61,9 +61,9 @@ static int idio_16_gpio_get_direction(struct gpio_chip *chip,
        unsigned int offset)
 {
        if (offset > 15)
-               return 1;
+               return GPIO_LINE_DIRECTION_IN;
 
-       return 0;
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int idio_16_gpio_direction_input(struct gpio_chip *chip,
index 52f1647a46fdffc12d7720d52b7e3ea6f72ef76e..44c1e4fc489faa28b102ecca2c3ee0fbb5d9e057 100644 (file)
@@ -104,15 +104,18 @@ static int idio_24_gpio_get_direction(struct gpio_chip *chip,
 
        /* FET Outputs */
        if (offset < 24)
-               return 0;
+               return GPIO_LINE_DIRECTION_OUT;
 
        /* Isolated Inputs */
        if (offset < 48)
-               return 1;
+               return GPIO_LINE_DIRECTION_IN;
 
        /* TTL/CMOS I/O */
        /* OUT MODE = 1 when TTL/CMOS Output Mode is set */
-       return !(ioread8(&idio24gpio->reg->ctl) & out_mode_mask);
+       if (ioread8(&idio24gpio->reg->ctl) & out_mode_mask)
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int idio_24_gpio_direction_input(struct gpio_chip *chip,
index f809a5a8e9ebf029759689dffe649bd09c98e659..1331b2a94679f4b1ec47cbd742c450bf52af8029 100644 (file)
@@ -65,7 +65,7 @@ static int pisosr_gpio_get_direction(struct gpio_chip *chip,
                                     unsigned offset)
 {
        /* This device always input */
-       return 1;
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int pisosr_gpio_direction_input(struct gpio_chip *chip,
index 722ce5cf861e870686731e4d0b12f6387643f5ce..5df7782e348ff9a04e638b606090da7ce09185f3 100644 (file)
@@ -63,7 +63,10 @@ static int pl061_get_direction(struct gpio_chip *gc, unsigned offset)
 {
        struct pl061 *pl061 = gpiochip_get_data(gc);
 
-       return !(readb(pl061->base + GPIODIR) & BIT(offset));
+       if (readb(pl061->base + GPIODIR) & BIT(offset))
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int pl061_direction_input(struct gpio_chip *gc, unsigned offset)
index b77ea16ffa031e4cbe291d8f5d6463338eaed536..bb100e0124e6306698a71c40e721c3fce51a6467 100644 (file)
@@ -147,7 +147,10 @@ static int rpi_exp_gpio_get_direction(struct gpio_chip *gc, unsigned int off)
                        get.gpio);
                return ret ? ret : -EIO;
        }
-       return !get.direction;
+       if (get.direction)
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int rpi_exp_gpio_get(struct gpio_chip *gc, unsigned int off)
index 187984d26f47a94080a77e6d485501b6c8b8401b..d7e6e68c25aff609a0c7cabe4b61b8334bf53446 100644 (file)
@@ -279,7 +279,10 @@ static int gpio_rcar_get_direction(struct gpio_chip *chip, unsigned int offset)
 {
        struct gpio_rcar_priv *p = gpiochip_get_data(chip);
 
-       return !(gpio_rcar_read(p, INOUTSEL) & BIT(offset));
+       if (gpio_rcar_read(p, INOUTSEL) & BIT(offset))
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int gpio_rcar_direction_input(struct gpio_chip *chip, unsigned offset)
index fdc7a9d5b38261610ac87416dbea0aa0e11343ea..d35169bde25a3da0d8091ffeffffd8b57310a292 100644 (file)
@@ -26,7 +26,8 @@ static int gpio_reg_get_direction(struct gpio_chip *gc, unsigned offset)
 {
        struct gpio_reg *r = to_gpio_reg(gc);
 
-       return r->direction & BIT(offset) ? 1 : 0;
+       return r->direction & BIT(offset) ? GPIO_LINE_DIRECTION_IN :
+                                           GPIO_LINE_DIRECTION_OUT;
 }
 
 static int gpio_reg_direction_output(struct gpio_chip *gc, unsigned offset,
index 46b7cf23fb0fea8f531aceb3a258ff4b6d3017f3..edff5e81489ff7cb4e75358d8727177de821d7f9 100644 (file)
@@ -53,7 +53,10 @@ static int sa1100_get_direction(struct gpio_chip *chip, unsigned offset)
 {
        void __iomem *gpdr = sa1100_gpio_chip(chip)->membase + R_GPDR;
 
-       return !(readl_relaxed(gpdr) & BIT(offset));
+       if (readl_relaxed(gpdr) & BIT(offset))
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int sa1100_direction_input(struct gpio_chip *chip, unsigned offset)
index 7d718557092e69fa69347366cd7e0252374489d9..b04c561f328058fcc3d939ced7d036f89fc651b0 100644 (file)
@@ -119,7 +119,8 @@ static int sama5d2_piobu_get_direction(struct gpio_chip *chip,
        if (ret < 0)
                return ret;
 
-       return (ret == PIOBU_IN) ? 1 : 0;
+       return (ret == PIOBU_IN) ? GPIO_LINE_DIRECTION_IN :
+                                  GPIO_LINE_DIRECTION_OUT;
 }
 
 /**
@@ -154,9 +155,9 @@ static int sama5d2_piobu_get(struct gpio_chip *chip, unsigned int pin)
        /* if pin is input, read value from PDS else read from SOD */
        int ret = sama5d2_piobu_get_direction(chip, pin);
 
-       if (ret == 1)
+       if (ret == GPIO_LINE_DIRECTION_IN)
                ret = sama5d2_piobu_read_value(chip, pin, PIOBU_PDS);
-       else if (!ret)
+       else if (ret == GPIO_LINE_DIRECTION_OUT)
                ret = sama5d2_piobu_read_value(chip, pin, PIOBU_SOD);
 
        if (ret < 0)
index fb143f28c386344c78ae00143eeee9b786322a4b..c65f35b68202716086b834cfed744f12f5418adc 100644 (file)
@@ -127,7 +127,10 @@ static int sch_gpio_get_direction(struct gpio_chip *gc, unsigned gpio_num)
 {
        struct sch_gpio *sch = gpiochip_get_data(gc);
 
-       return sch_gpio_reg_get(sch, gpio_num, GIO);
+       if (sch_gpio_reg_get(sch, gpio_num, GIO))
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static const struct gpio_chip sch_gpio_chip = {
index 8ecf336c9af49892bb84b9c3bbae3641eab80197..da01e1cad7cb24af74944205ea12e23e4046f00f 100644 (file)
@@ -228,7 +228,10 @@ static int sch311x_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
        data = inb(block->runtime_reg + block->config_regs[offset]);
        spin_unlock(&block->lock);
 
-       return !!(data & SCH311X_GPIO_CONF_DIR);
+       if (data & SCH311X_GPIO_CONF_DIR)
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int sch311x_gpio_set_config(struct gpio_chip *chip, unsigned offset,
index 006a7e6a75f21696543a436e2beaccfaef56715b..311f66757b92c5b2e27b8e09696109f2a2b8813c 100644 (file)
@@ -203,9 +203,9 @@ static int gpio_siox_direction_output(struct gpio_chip *chip,
 static int gpio_siox_get_direction(struct gpio_chip *chip, unsigned int offset)
 {
        if (offset < 12)
-               return 1; /* input */
+               return GPIO_LINE_DIRECTION_IN;
        else
-               return 0; /* output */
+               return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int gpio_siox_probe(struct siox_device *sdevice)
index 994d542daf53fca19537e17dcbae4ff1b7cbe2cc..542706a852e6ded94501ad6eb83cd71b1556bc7a 100644 (file)
@@ -84,7 +84,10 @@ static int stmpe_gpio_get_direction(struct gpio_chip *chip,
        if (ret < 0)
                return ret;
 
-       return !(ret & mask);
+       if (ret & mask)
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int stmpe_gpio_direction_output(struct gpio_chip *chip,
index 75b1135b383a7df8e6ffe8330398dd64d58a91e9..6be0684cfa494f2a234a92ad3b03f129eb171c22 100644 (file)
@@ -97,7 +97,10 @@ static int tc3589x_gpio_get_direction(struct gpio_chip *chip,
        if (ret < 0)
                return ret;
 
-       return !(ret & BIT(pos));
+       if (ret & BIT(pos))
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int tc3589x_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
index 8a01d3694b2817ebf43685b43f88e6e883c54f2a..6fdfe4c5303e5d727281fa367075eb5f2469f32f 100644 (file)
@@ -215,7 +215,10 @@ static int tegra_gpio_get_direction(struct gpio_chip *chip,
 
        oe = tegra_gpio_readl(tgi, GPIO_OE(tgi, offset));
 
-       return !(oe & pin_mask);
+       if (oe & pin_mask)
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int tegra_gpio_set_debounce(struct gpio_chip *chip, unsigned int offset,
index 8a2a69178925dc104f32b473c732dfc8d638761d..57185b96c1105f163f805d32e65cbd46145db15a 100644 (file)
@@ -111,9 +111,9 @@ static int tegra186_gpio_get_direction(struct gpio_chip *chip,
 
        value = readl(base + TEGRA186_GPIO_ENABLE_CONFIG);
        if (value & TEGRA186_GPIO_ENABLE_CONFIG_OUT)
-               return 0;
+               return GPIO_LINE_DIRECTION_OUT;
 
-       return 1;
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int tegra186_gpio_direction_input(struct gpio_chip *chip,
index ddad5c7ea61769446ef9d73e291ec42b6b2e7c08..d08d86a22b1f531854b85d571870a6b99b4ab359 100644 (file)
@@ -169,7 +169,10 @@ static int thunderx_gpio_get_direction(struct gpio_chip *chip, unsigned int line
 
        bit_cfg = readq(txgpio->register_base + bit_cfg_reg(line));
 
-       return !(bit_cfg & GPIO_BIT_CFG_TX_OE);
+       if (bit_cfg & GPIO_BIT_CFG_TX_OE)
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int thunderx_gpio_set_config(struct gpio_chip *chip,
index c8b34d787eedeb27fa6315cba34ea9b286cf9c59..99d5a84a9129e3d76de4b3113e72ba0cb09e6a19 100644 (file)
@@ -39,7 +39,7 @@ static int tpic2810_get_direction(struct gpio_chip *chip,
                                  unsigned offset)
 {
        /* This device always output */
-       return 0;
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int tpic2810_direction_input(struct gpio_chip *chip,
index 2eea98ff4ea32460de049f655e82f5a5039f8350..1e9d8262d0ffc44094b36ce4f1a52177aef5a768 100644 (file)
@@ -21,7 +21,7 @@ static int tps65086_gpio_get_direction(struct gpio_chip *chip,
                                       unsigned offset)
 {
        /* This device is output only */
-       return 0;
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int tps65086_gpio_direction_input(struct gpio_chip *chip,
index 3ad68bd78282590103a735c49430b6348276b803..510d9ed9fd2a358af99ac5d7e58cf0d39c2b3cd8 100644 (file)
@@ -32,9 +32,9 @@ static int tps65912_gpio_get_direction(struct gpio_chip *gc,
                return ret;
 
        if (val & GPIO_CFG_MASK)
-               return 0;
+               return GPIO_LINE_DIRECTION_OUT;
        else
-               return 1;
+               return GPIO_LINE_DIRECTION_IN;
 }
 
 static int tps65912_gpio_direction_input(struct gpio_chip *gc, unsigned offset)
index aff6e504c6668f80feca4dc2e7cd38dc4238374e..f7f5f770e0fbbb69d1ea6bbdf0aec11b30c6d742 100644 (file)
@@ -47,7 +47,6 @@ static int tps68470_gpio_get(struct gpio_chip *gc, unsigned int offset)
        return !!(val & BIT(offset));
 }
 
-/* Return 0 if output, 1 if input */
 static int tps68470_gpio_get_direction(struct gpio_chip *gc,
                                       unsigned int offset)
 {
@@ -57,7 +56,7 @@ static int tps68470_gpio_get_direction(struct gpio_chip *gc,
 
        /* rest are always outputs */
        if (offset >= TPS68470_N_REGULAR_GPIO)
-               return 0;
+               return GPIO_LINE_DIRECTION_OUT;
 
        ret = regmap_read(regmap, TPS68470_GPIO_CTL_REG_A(offset), &val);
        if (ret) {
@@ -67,7 +66,8 @@ static int tps68470_gpio_get_direction(struct gpio_chip *gc,
        }
 
        val &= TPS68470_GPIO_MODE_MASK;
-       return val >= TPS68470_GPIO_MODE_OUT_CMOS ? 0 : 1;
+       return val >= TPS68470_GPIO_MODE_OUT_CMOS ? GPIO_LINE_DIRECTION_OUT :
+                                                   GPIO_LINE_DIRECTION_IN;
 }
 
 static void tps68470_gpio_set(struct gpio_chip *gc, unsigned int offset,
index a3109bcaa0ac289911a2fe0b7d9f5882c5afd5e7..5022e0ad0faee70b379d7cd3ab0bce2661fe51cf 100644 (file)
@@ -101,7 +101,10 @@ static int tqmx86_gpio_direction_output(struct gpio_chip *chip,
 static int tqmx86_gpio_get_direction(struct gpio_chip *chip,
                                     unsigned int offset)
 {
-       return !!(TQMX86_DIR_INPUT_MASK & BIT(offset));
+       if (TQMX86_DIR_INPUT_MASK & BIT(offset))
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static void tqmx86_gpio_irq_mask(struct irq_data *data)
index 1da8d05863295b06f15e1d3b99255b867575ec1a..d885032cf814d89e184f7a10ab51fa09b2efc033 100644 (file)
@@ -44,7 +44,10 @@ static int ts4900_gpio_get_direction(struct gpio_chip *chip,
 
        regmap_read(priv->regmap, offset, &reg);
 
-       return !(reg & TS4900_GPIO_OE);
+       if (reg & TS4900_GPIO_OE)
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int ts4900_gpio_direction_input(struct gpio_chip *chip,
index fbfb648d350263426d0d5e00cc888d4e4baadb87..de249726230ec52465b2ff5170d14ffd35254cf5 100644 (file)
@@ -165,10 +165,10 @@ static int twl4030_get_gpio_direction(int gpio)
        if (ret < 0)
                return ret;
 
-       /* 1 = output, but gpiolib semantics are inverse so invert */
-       ret = !(ret & d_msk);
+       if (ret & d_msk)
+               return GPIO_LINE_DIRECTION_OUT;
 
-       return ret;
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int twl4030_set_gpio_dataout(int gpio, int enable)
@@ -380,10 +380,10 @@ static int twl_get_direction(struct gpio_chip *chip, unsigned offset)
 {
        struct gpio_twl4030_priv *priv = gpiochip_get_data(chip);
        /*
-        * Default 0 = output
+        * Default GPIO_LINE_DIRECTION_OUT
         * LED GPIOs >= TWL4030_GPIO_MAX are always output
         */
-       int ret = 0;
+       int ret = GPIO_LINE_DIRECTION_OUT;
 
        mutex_lock(&priv->mutex);
        if (offset < TWL4030_GPIO_MAX) {
index c845b2ff1f4376082cab35232ed00c09dcf8c4f3..648fb418d775bf2a69cbb2a98734629249f6c028 100644 (file)
@@ -34,8 +34,7 @@ static int twl6040gpo_get(struct gpio_chip *chip, unsigned offset)
 
 static int twl6040gpo_get_direction(struct gpio_chip *chip, unsigned offset)
 {
-       /* This means "out" */
-       return 0;
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int twl6040gpo_direction_out(struct gpio_chip *chip, unsigned offset,
index 93cdcc41e9fbc1949e7dbe4271cfd437b637aa0c..bd203e8fa58ee29320231630c5b5f5104bf2abd9 100644 (file)
@@ -113,7 +113,10 @@ static int uniphier_gpio_offset_read(struct gpio_chip *chip,
 static int uniphier_gpio_get_direction(struct gpio_chip *chip,
                                       unsigned int offset)
 {
-       return uniphier_gpio_offset_read(chip, offset, UNIPHIER_GPIO_PORT_DIR);
+       if (uniphier_gpio_offset_read(chip, offset, UNIPHIER_GPIO_PORT_DIR))
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int uniphier_gpio_direction_input(struct gpio_chip *chip,
index 444fe9e7f04acebc0863604fe3e9fc6cc9945af3..8b481b3c1ebebbdbf6984a15e634845980454c2e 100644 (file)
@@ -170,13 +170,16 @@ static int wcove_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio)
        int ret, reg = to_reg(gpio, CTRL_OUT);
 
        if (reg < 0)
-               return 0;
+               return GPIO_LINE_DIRECTION_OUT;
 
        ret = regmap_read(wg->regmap, reg, &val);
        if (ret)
                return ret;
 
-       return !(val & CTLO_DIR_OUT);
+       if (val & CTLO_DIR_OUT)
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 static int wcove_gpio_get(struct gpio_chip *chip, unsigned int gpio)
index e0ef66b6a237d4007438ac41e321a54346a86b05..fe456bea81f6c42a4f355803880393b7fedd5ced 100644 (file)
@@ -56,7 +56,10 @@ static int ws16c48_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
        const unsigned port = offset / 8;
        const unsigned mask = BIT(offset % 8);
 
-       return !!(ws16c48gpio->io_state[port] & mask);
+       if (ws16c48gpio->io_state[port] & mask)
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int ws16c48_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
index a6e66ac18e1f79165a6da5e6f511eb5848785350..532b0df8a1f27fe72d179823b94b84e9d6201838 100644 (file)
@@ -80,7 +80,10 @@ static int xgene_gpio_get_direction(struct gpio_chip *gc, unsigned int offset)
        bank_offset = GPIO_SET_DR_OFFSET + GPIO_BANK_OFFSET(offset);
        bit_offset = GPIO_BIT_OFFSET(offset);
 
-       return !!(ioread32(chip->base + bank_offset) & BIT(bit_offset));
+       if (ioread32(chip->base + bank_offset) & BIT(bit_offset))
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int xgene_gpio_dir_in(struct gpio_chip *gc, unsigned int offset)
index 05f1998c11a4f35ccea566297cf6d65ea3a26612..31b5072b2df0efe0e7043cc0d39371e14754ebe2 100644 (file)
@@ -83,7 +83,10 @@ static int xra1403_get_direction(struct gpio_chip *chip, unsigned int offset)
        if (ret)
                return ret;
 
-       return !!(val & BIT(offset % 8));
+       if (val & BIT(offset % 8))
+               return GPIO_LINE_DIRECTION_IN;
+
+       return GPIO_LINE_DIRECTION_OUT;
 }
 
 static int xra1403_get(struct gpio_chip *chip, unsigned int offset)
index 43d3fa5f511aafde5d568e42c6239efcca03bf13..08d7c3b3203869b5dd75cc42a4355746ea19ec48 100644 (file)
@@ -72,7 +72,7 @@ static inline void disable_cp(unsigned long flags, unsigned long cpenable)
 
 static int xtensa_impwire_get_direction(struct gpio_chip *gc, unsigned offset)
 {
-       return 1; /* input only */
+       return GPIO_LINE_DIRECTION_IN; /* input only */
 }
 
 static int xtensa_impwire_get_value(struct gpio_chip *gc, unsigned offset)
@@ -95,7 +95,7 @@ static void xtensa_impwire_set_value(struct gpio_chip *gc, unsigned offset,
 
 static int xtensa_expstate_get_direction(struct gpio_chip *gc, unsigned offset)
 {
-       return 0; /* output only */
+       return GPIO_LINE_DIRECTION_OUT; /* output only */
 }
 
 static int xtensa_expstate_get_value(struct gpio_chip *gc, unsigned offset)
index cd475ff4bcadbace686d7dc85d4e3ea9985e0589..4c3f6370eab4c104a8975356ea0f652e3f92372e 100644 (file)
@@ -360,7 +360,7 @@ static int zynq_gpio_dir_out(struct gpio_chip *chip, unsigned int pin,
  *
  * This function returns the direction of the specified GPIO.
  *
- * Return: 0 for output, 1 for input
+ * Return: GPIO_LINE_DIRECTION_OUT or GPIO_LINE_DIRECTION_IN
  */
 static int zynq_gpio_get_direction(struct gpio_chip *chip, unsigned int pin)
 {
@@ -372,7 +372,10 @@ static int zynq_gpio_get_direction(struct gpio_chip *chip, unsigned int pin)
 
        reg = readl_relaxed(gpio->base_addr + ZYNQ_GPIO_DIRM_OFFSET(bank_num));
 
-       return !(reg & BIT(bank_pin_num));
+       if (reg & BIT(bank_pin_num))
+               return GPIO_LINE_DIRECTION_OUT;
+
+       return GPIO_LINE_DIRECTION_IN;
 }
 
 /**