On Tue, Jan 28, 2020 at 12:04:34PM +0000, Rasmus Villemoes wrote: > The driver correctly handles reading back the value of an output gpio > by reading from the shadow register for output, and from gpdat for > inputs. > > Unfortunately, when setting the value of some gpio, we do a RMW cycle > on the gpdat register without taking the shadow register into account, > thus accidentally setting other output gpios (at least those whose > value cannot be read back) to 0 at the same time. > > When changing a gpio from input to output, we still need to make sure > it initially has the requested value. So, the procedure is > > - update the shadow register > - compute the new gpdir register > - write the bitwise and of the shadow and new gpdir register to gpdat > - write the new gpdir register > > Signed-off-by: Rasmus Villemoes <rasmus.villem...@prevas.dk>
Applied to u-boot/master, thanks! -- Tom
signature.asc
Description: PGP signature