mfd: twl6040: Fix device init errors for ACCCTL register
authorTony Lindgren <tony@atomide.com>
Thu, 14 Feb 2019 16:03:45 +0000 (08:03 -0800)
committerLee Jones <lee.jones@linaro.org>
Tue, 14 May 2019 07:13:25 +0000 (08:13 +0100)
commit48171d0ea7caccf21c9ee3ae75eb370f2a756062
treec0ef9d087c96799a0ec9180f5f274c0dd00bdabb
parenta00406b71c5f08f2bd8171bc43331f0726f9bdae
mfd: twl6040: Fix device init errors for ACCCTL register

I noticed that we can get a -EREMOTEIO errors on at least omap4 duovero:

twl6040 0-004b: Failed to write 2d = 19: -121

And then any following register access will produce errors.

There 2d offset above is register ACCCTL that gets written on twl6040
powerup. With error checking added to the related regcache_sync() call,
the -EREMOTEIO error is reproducable on twl6040 powerup at least
duovero.

To fix the error, we need to wait until twl6040 is accessible after the
powerup. Based on tests on omap4 duovero, we need to wait over 8ms after
powerup before register write will complete without failures. Let's also
make sure we warn about possible errors too.

Note that we have twl6040_patch[] reg_sequence with the ACCCTL register
configuration and regcache_sync() will write the new value to ACCCTL.

Signed-off-by: Tony Lindgren <tony@atomide.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/twl6040.c