i2c: algo: pca: Reapply i2c bus settings after reset
authorEvan Nimmo <evan.nimmo@alliedtelesis.co.nz>
Tue, 8 Sep 2020 20:32:47 +0000 (08:32 +1200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 23 Sep 2020 10:59:52 +0000 (12:59 +0200)
commit13773c6dba30539409d0b6ab7f0cea60ec1296a1
tree73ced68a131e90ddd0cc05c1991a7eda660d3abc
parentf50a7062223dfd24fc38f52d33d6204774032a13
i2c: algo: pca: Reapply i2c bus settings after reset

[ Upstream commit 0a355aeb24081e4538d4d424cd189f16c0bbd983 ]

If something goes wrong (such as the SCL being stuck low) then we need
to reset the PCA chip. The issue with this is that on reset we lose all
config settings and the chip ends up in a disabled state which results
in a lock up/high CPU usage. We need to re-apply any configuration that
had previously been set and re-enable the chip.

Signed-off-by: Evan Nimmo <evan.nimmo@alliedtelesis.co.nz>
Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/i2c/algos/i2c-algo-pca.c
include/linux/i2c-algo-pca.h