diff options
| -rw-r--r-- | drivers/pinctrl/pinctrl-as3722.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/pinctrl/pinctrl-as3722.c b/drivers/pinctrl/pinctrl-as3722.c index 92ed4b2e3c07..c862f9c0e9ce 100644 --- a/drivers/pinctrl/pinctrl-as3722.c +++ b/drivers/pinctrl/pinctrl-as3722.c | |||
| @@ -64,7 +64,6 @@ struct as3722_pin_function { | |||
| 64 | }; | 64 | }; |
| 65 | 65 | ||
| 66 | struct as3722_gpio_pin_control { | 66 | struct as3722_gpio_pin_control { |
| 67 | bool enable_gpio_invert; | ||
| 68 | unsigned mode_prop; | 67 | unsigned mode_prop; |
| 69 | int io_function; | 68 | int io_function; |
| 70 | }; | 69 | }; |
| @@ -320,10 +319,8 @@ static int as3722_pinctrl_gpio_set_direction(struct pinctrl_dev *pctldev, | |||
| 320 | return mode; | 319 | return mode; |
| 321 | } | 320 | } |
| 322 | 321 | ||
| 323 | if (as_pci->gpio_control[offset].enable_gpio_invert) | 322 | return as3722_update_bits(as3722, AS3722_GPIOn_CONTROL_REG(offset), |
| 324 | mode |= AS3722_GPIO_INV; | 323 | AS3722_GPIO_MODE_MASK, mode); |
| 325 | |||
| 326 | return as3722_write(as3722, AS3722_GPIOn_CONTROL_REG(offset), mode); | ||
| 327 | } | 324 | } |
| 328 | 325 | ||
| 329 | static const struct pinmux_ops as3722_pinmux_ops = { | 326 | static const struct pinmux_ops as3722_pinmux_ops = { |
| @@ -496,10 +493,18 @@ static void as3722_gpio_set(struct gpio_chip *chip, unsigned offset, | |||
| 496 | { | 493 | { |
| 497 | struct as3722_pctrl_info *as_pci = to_as_pci(chip); | 494 | struct as3722_pctrl_info *as_pci = to_as_pci(chip); |
| 498 | struct as3722 *as3722 = as_pci->as3722; | 495 | struct as3722 *as3722 = as_pci->as3722; |
| 499 | int en_invert = as_pci->gpio_control[offset].enable_gpio_invert; | 496 | int en_invert; |
| 500 | u32 val; | 497 | u32 val; |
| 501 | int ret; | 498 | int ret; |
| 502 | 499 | ||
| 500 | ret = as3722_read(as3722, AS3722_GPIOn_CONTROL_REG(offset), &val); | ||
| 501 | if (ret < 0) { | ||
| 502 | dev_err(as_pci->dev, | ||
| 503 | "GPIO_CONTROL%d_REG read failed: %d\n", offset, ret); | ||
| 504 | return; | ||
| 505 | } | ||
| 506 | en_invert = !!(val & AS3722_GPIO_INV); | ||
| 507 | |||
| 503 | if (value) | 508 | if (value) |
| 504 | val = (en_invert) ? 0 : AS3722_GPIOn_SIGNAL(offset); | 509 | val = (en_invert) ? 0 : AS3722_GPIOn_SIGNAL(offset); |
| 505 | else | 510 | else |
