| .. | .. |
|---|
| 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, |
|---|