On Thu, 2024-11-14 at 08:57 +0200, Matti Vaittinen wrote: > All the sensors supported by kx022a driver seemed to require some delay > after software reset to be operational again. More or less a random > msleep(1) was added to cause the driver to go to sleep so the sensor has > time to become operational again. > > Now we have official docuumentation available: > https://fscdn.rohm.com/kionix/en/document/AN010_KX022ACR-Z_Power-on_Procedure_E.pdf > https://fscdn.rohm.com/kionix/en/document/TN027-Power-On-Procedure.pdf > https://fscdn.rohm.com/kionix/en/document/AN011_KX134ACR-LBZ_Power-on_Procedure_E.pdf > > stating the required time is 2 ms. > > Due to the nature of the current msleep implementation, the msleep(1) is > likely to be sleeping more than 2ms already - but the value "1" is > misleading in case someone needs to optimize the start time and change > the msleep to a more accurate delay. Hence it is better for > "documentation" purposes to use value which actually reflects the > specified 2ms wait time. > > Change the value of delay after software reset to match the > specifications and add links to the power-on procedure specifications. > > Signed-off-by: Matti Vaittinen <mazziesaccount@xxxxxxxxx> > --- > Sorry for not including this to the KX134ACR-LBZ series I sent > yesterday. It was only half an hour after I had sent the KX134ACR-LBZ > support when I was notified about the existence of the KX022ACR-Z > start-up procedure specification... Hence this lone patch to code which > I just sent a miscallaneous series for before. > > drivers/iio/accel/kionix-kx022a.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/iio/accel/kionix-kx022a.c b/drivers/iio/accel/kionix- > kx022a.c > index 32387819995d..ccabe2e3b130 100644 > --- a/drivers/iio/accel/kionix-kx022a.c > +++ b/drivers/iio/accel/kionix-kx022a.c > @@ -1121,10 +1121,15 @@ static int kx022a_chip_init(struct kx022a_data *data) > return ret; > > /* > - * I've seen I2C read failures if we poll too fast after the sensor > - * reset. Slight delay gives I2C block the time to recover. > + * According to the power-on procedure documents, there is (at least) > + * 2ms delay required after the software reset. This should be same > for > + * all, KX022ACR-Z, KX132-1211, KX132ACR-LBZ and KX134ACR-LBZ. > + * > + * > https://fscdn.rohm.com/kionix/en/document/AN010_KX022ACR-Z_Power-on_Procedure_E.pdf > + * > https://fscdn.rohm.com/kionix/en/document/TN027-Power-On-Procedure.pdf > + * > https://fscdn.rohm.com/kionix/en/document/AN011_KX134ACR-LBZ_Power-on_Procedure_E.pdf > */ > - msleep(1); > + msleep(2); msleep() is not advisable for something lower than 20ms. Maybe take the opportunity and change it to fsleep()? - Nuno Sá