On Fri, 29 Sep 2023 12:23:15 -0500 David Lechner <dlechner@xxxxxxxxxxxx> wrote: > From: David Lechner <david@xxxxxxxxxxxxxx> > > From: David Lechner <dlechner@xxxxxxxxxxxx> > > This makes use of the regmap API to read and write the configuration > registers. This simplifies code quite a bit and makes it safer > (previously, it was easy to write a bad value to the config registers > which causes the chip to lock up and need to be reset). > > This chip has multiple modes of operation. In normal mode, we do not use > regmap since there is no addressing - data is just bitshifted out during > the SPI read. In config mode, we use regmap since it requires writing > the address (with read/write flag) before reading and writing. > > We don't use the lock provided by the regmap because we need to also > synchronize with the normal mode SPI reads and with the various GPIOs. > > There is also a quirk when reading registers (other than the fault > register). If the address/data bit is set in the value read, then it > indicates there is a configuration parity error and the data is not > valid. Previously, this was checked in a few places, but not > consistently. Now, we always check it in the regmap read function. > > Signed-off-by: David Lechner <dlechner@xxxxxxxxxxxx> This was a complex change, so I'm partly relying on the fact it clearly works after the change to be sure it is correct ;) Anyhow, code is much cleaner and probably right, so applied to the togreg branch of iio.git and pushed out as testing for all the normal reasons. Thanks, Jonathan