hwmon: (ucd90320) Add minimum delay between bus accesses
stable inclusion from stable-v5.10.176 commit c5bd9719b53be9afe872bc03a88ba5df3a5fd00e category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I8CHVQ Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c5bd9719b53be9afe872bc03a88ba5df3a5fd00e -------------------------------- [ Upstream commit 8d655e65 ] When probing the ucd90320 access to some of the registers randomly fails. Sometimes it NACKs a transfer, sometimes it returns just random data and the PEC check fails. Experimentation shows that this seems to be triggered by a register access directly back to back with a previous register write. Experimentation also shows that inserting a small delay after register writes makes the issue go away. Use a similar solution to what the max15301 driver does to solve the same problem. Create a custom set of bus read and write functions that make sure that the delay is added. Fixes: a470f11c ("hwmon: (pmbus/ucd9000) Add support for UCD90320 Power Sequencer") Signed-off-by:Lars-Peter Clausen <lars@metafoo.de> Link: https://lore.kernel.org/r/20230312160312.2227405-1-lars@metafoo.de Signed-off-by:
Guenter Roeck <linux@roeck-us.net> Signed-off-by:
Sasha Levin <sashal@kernel.org> Signed-off-by:
sanglipeng <sanglipeng1@jd.com>
Loading
Please sign in to comment