diff mbox series

[2/2] i2c: mux: pca954x: Resume the mux early

Message ID 20230831181753.154787-2-marex@denx.de
State New
Headers show
Series [1/2] i2c: mux: pca954x: Make sure the mux remains configured the same as before resume | expand

Commit Message

Marek Vasut Aug. 31, 2023, 6:17 p.m. UTC
The mux resumes alongside its subdevices, which means the subdevices may
resume while the mux is not yet fully configured and those subdevices may
fail to access I2C registers through the mux. Use resume_early to resume
the mux before any of the other i2c devices.

Signed-off-by: Marek Vasut <marex@denx.de>
---
NOTE: This might be wrong approach
---
Cc: Peter Rosin <peda@axentia.se>
Cc: Wolfram Sang <wsa@kernel.org>
Cc: linux-i2c@vger.kernel.org
---
 drivers/i2c/muxes/i2c-mux-pca954x.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c b/drivers/i2c/muxes/i2c-mux-pca954x.c
index 97cf475dde0f4..87fd8d3ba56b2 100644
--- a/drivers/i2c/muxes/i2c-mux-pca954x.c
+++ b/drivers/i2c/muxes/i2c-mux-pca954x.c
@@ -627,12 +627,14 @@  static int pca954x_resume(struct device *dev)
 	return ret;
 }
 
-static DEFINE_SIMPLE_DEV_PM_OPS(pca954x_pm, NULL, pca954x_resume);
+static const struct dev_pm_ops pca954x_pm = {
+	.resume_early = pca954x_resume,
+};
 
 static struct i2c_driver pca954x_driver = {
 	.driver		= {
 		.name	= "pca954x",
-		.pm	= pm_sleep_ptr(&pca954x_pm),
+		.pm	= &pca954x_pm,
 		.of_match_table = pca954x_of_match,
 	},
 	.probe		= pca954x_probe,