gpio: ts4900: Do not set DAT and OE together
authorMark Featherston <mark@embeddedTS.com>
Thu, 10 Mar 2022 01:16:16 +0000 (17:16 -0800)
committerBartosz Golaszewski <brgl@bgdev.pl>
Thu, 10 Mar 2022 09:00:27 +0000 (10:00 +0100)
commit03fe003547975680fdb9ff5ab0e41cb68276c4f2
tree81d8f01cbc76e3bbe1fca4a3189f72b94a00fb95
parenta9a5b720dc8227243f433141ba1343aa53ef57e4
gpio: ts4900: Do not set DAT and OE together

This works around an issue with the hardware where both OE and
DAT are exposed in the same register. If both are updated
simultaneously, the harware makes no guarantees that OE or DAT
will actually change in any given order and may result in a
glitch of a few ns on a GPIO pin when changing direction and value
in a single write.

Setting direction to input now only affects OE bit. Setting
direction to output updates DAT first, then OE.

Fixes: 9c6686322d74 ("gpio: add Technologic I2C-FPGA gpio support")
Signed-off-by: Mark Featherston <mark@embeddedTS.com>
Signed-off-by: Kris Bahnsen <kris@embeddedTS.com>
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
drivers/gpio/gpio-ts4900.c