diff options
| -rw-r--r-- | drivers/gpio/cs5535-gpio.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpio/cs5535-gpio.c b/drivers/gpio/cs5535-gpio.c index 0fdbe94f24a3..0c3c498f2260 100644 --- a/drivers/gpio/cs5535-gpio.c +++ b/drivers/gpio/cs5535-gpio.c | |||
| @@ -154,7 +154,7 @@ static int chip_gpio_request(struct gpio_chip *c, unsigned offset) | |||
| 154 | 154 | ||
| 155 | static int chip_gpio_get(struct gpio_chip *chip, unsigned offset) | 155 | static int chip_gpio_get(struct gpio_chip *chip, unsigned offset) |
| 156 | { | 156 | { |
| 157 | return cs5535_gpio_isset(offset, GPIO_OUTPUT_VAL); | 157 | return cs5535_gpio_isset(offset, GPIO_READ_BACK); |
| 158 | } | 158 | } |
| 159 | 159 | ||
| 160 | static void chip_gpio_set(struct gpio_chip *chip, unsigned offset, int val) | 160 | static void chip_gpio_set(struct gpio_chip *chip, unsigned offset, int val) |
| @@ -172,6 +172,7 @@ static int chip_direction_input(struct gpio_chip *c, unsigned offset) | |||
| 172 | 172 | ||
| 173 | spin_lock_irqsave(&chip->lock, flags); | 173 | spin_lock_irqsave(&chip->lock, flags); |
| 174 | __cs5535_gpio_set(chip, offset, GPIO_INPUT_ENABLE); | 174 | __cs5535_gpio_set(chip, offset, GPIO_INPUT_ENABLE); |
| 175 | __cs5535_gpio_clear(chip, offset, GPIO_OUTPUT_ENABLE); | ||
| 175 | spin_unlock_irqrestore(&chip->lock, flags); | 176 | spin_unlock_irqrestore(&chip->lock, flags); |
| 176 | 177 | ||
| 177 | return 0; | 178 | return 0; |
| @@ -184,6 +185,7 @@ static int chip_direction_output(struct gpio_chip *c, unsigned offset, int val) | |||
| 184 | 185 | ||
| 185 | spin_lock_irqsave(&chip->lock, flags); | 186 | spin_lock_irqsave(&chip->lock, flags); |
| 186 | 187 | ||
| 188 | __cs5535_gpio_set(chip, offset, GPIO_INPUT_ENABLE); | ||
| 187 | __cs5535_gpio_set(chip, offset, GPIO_OUTPUT_ENABLE); | 189 | __cs5535_gpio_set(chip, offset, GPIO_OUTPUT_ENABLE); |
| 188 | if (val) | 190 | if (val) |
| 189 | __cs5535_gpio_set(chip, offset, GPIO_OUTPUT_VAL); | 191 | __cs5535_gpio_set(chip, offset, GPIO_OUTPUT_VAL); |
