.. | .. |
---|
47 | 47 | return !!(val & BIT(offset)); |
---|
48 | 48 | } |
---|
49 | 49 | |
---|
50 | | -/* Return 0 if output, 1 if input */ |
---|
51 | 50 | static int tps68470_gpio_get_direction(struct gpio_chip *gc, |
---|
52 | 51 | unsigned int offset) |
---|
53 | 52 | { |
---|
.. | .. |
---|
57 | 56 | |
---|
58 | 57 | /* rest are always outputs */ |
---|
59 | 58 | if (offset >= TPS68470_N_REGULAR_GPIO) |
---|
60 | | - return 0; |
---|
| 59 | + return GPIO_LINE_DIRECTION_OUT; |
---|
61 | 60 | |
---|
62 | 61 | ret = regmap_read(regmap, TPS68470_GPIO_CTL_REG_A(offset), &val); |
---|
63 | 62 | if (ret) { |
---|
.. | .. |
---|
67 | 66 | } |
---|
68 | 67 | |
---|
69 | 68 | val &= TPS68470_GPIO_MODE_MASK; |
---|
70 | | - return val >= TPS68470_GPIO_MODE_OUT_CMOS ? 0 : 1; |
---|
| 69 | + return val >= TPS68470_GPIO_MODE_OUT_CMOS ? GPIO_LINE_DIRECTION_OUT : |
---|
| 70 | + GPIO_LINE_DIRECTION_IN; |
---|
71 | 71 | } |
---|
72 | 72 | |
---|
73 | 73 | static void tps68470_gpio_set(struct gpio_chip *gc, unsigned int offset, |
---|
.. | .. |
---|
91 | 91 | struct tps68470_gpio_data *tps68470_gpio = gpiochip_get_data(gc); |
---|
92 | 92 | struct regmap *regmap = tps68470_gpio->tps68470_regmap; |
---|
93 | 93 | |
---|
| 94 | + /* Set the initial value */ |
---|
| 95 | + tps68470_gpio_set(gc, offset, value); |
---|
| 96 | + |
---|
94 | 97 | /* rest are always outputs */ |
---|
95 | 98 | if (offset >= TPS68470_N_REGULAR_GPIO) |
---|
96 | 99 | return 0; |
---|
97 | | - |
---|
98 | | - /* Set the initial value */ |
---|
99 | | - tps68470_gpio_set(gc, offset, value); |
---|
100 | 100 | |
---|
101 | 101 | return regmap_update_bits(regmap, TPS68470_GPIO_CTL_REG_A(offset), |
---|
102 | 102 | TPS68470_GPIO_MODE_MASK, |
---|