On Wed, May 29, 2024 at 09:45:14AM +0200, Matthias Schiffer wrote: > The TQMx86 GPIO controller uses the same register address for input and > output data. Reading the register will always return current inputs > rather than the previously set outputs (regardless of the current > direction setting). Therefore, using a RMW pattern does not make sense > when setting output values. Instead, the previously set output register > value needs to be stored as a shadow register. > > As there is no reliable way to get the current output values from the > hardware, also initialize all channels to 0, to ensure that stored and > actual output values match. This should usually not have any effect in > practise, as the TQMx86 UEFI sets all outputs to 0 during boot. > > Also prepare for extension of the driver to more than 8 GPIOs by using > DECLARE_BITMAP. > > Fixes: b868db94a6a7 ("gpio: tqmx86: Add GPIO from for this IO controller") > Signed-off-by: Matthias Schiffer <matthias.schiffer@xxxxxxxxxxxxxxx> Reviewed-by: Andrew Lunn <andrew@xxxxxxx> Andrew