Bug 216913
Summary: | i2c not working after hibernation (i2c_designware) | ||
---|---|---|---|
Product: | Drivers | Reporter: | Georg (g.wenzel) |
Component: | I2C | Assignee: | Drivers/I2C virtual user (drivers-i2c) |
Status: | RESOLVED CODE_FIX | ||
Severity: | high | CC: | bjorn, g.wenzel, mario.limonciello, rjw |
Priority: | P1 | ||
Hardware: | AMD | ||
OS: | Linux | ||
Kernel Version: | v6.1.x v6.2.x | Subsystem: | |
Regression: | No | Bisected commit-id: |
Description
Georg
2023-01-11 12:59:15 UTC
I checked some files and found something. This solution works for me. diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c index ba043b547393..289879c56a0c 100644 --- a/drivers/i2c/busses/i2c-designware-platdrv.c +++ b/drivers/i2c/busses/i2c-designware-platdrv.c @@ -484,7 +484,7 @@ static int __maybe_unused dw_i2c_plat_resume(struct device *dev) static const struct dev_pm_ops dw_i2c_dev_pm_ops = { .prepare = dw_i2c_plat_prepare, .complete = dw_i2c_plat_complete, - SET_LATE_SYSTEM_SLEEP_PM_OPS(dw_i2c_plat_suspend, dw_i2c_plat_resume) + SET_SYSTEM_SLEEP_PM_OPS(dw_i2c_plat_suspend, dw_i2c_plat_resume) SET_RUNTIME_PM_OPS(dw_i2c_plat_runtime_suspend, dw_i2c_plat_runtime_resume, NULL) }; Sorry, quick question: who do I actually have to report the problem and solution to? Georg, I would start with these folks: $ ./scripts/get_maintainer.pl -f drivers/i2c/busses/i2c-designware-platdrv.c Jarkko Nikula <jarkko.nikula@linux.intel.com> (supporter:SYNOPSYS DESIGNWARE I2C DRIVER) Andy Shevchenko <andriy.shevchenko@linux.intel.com> (reviewer:SYNOPSYS DESIGNWARE I2C DRIVER) Mika Westerberg <mika.westerberg@linux.intel.com> (reviewer:SYNOPSYS DESIGNWARE I2C DRIVER) Jan Dabros <jsd@semihalf.com> (reviewer:SYNOPSYS DESIGNWARE I2C DRIVER) Philipp Zabel <p.zabel@pengutronix.de> (maintainer:RESET CONTROLLER FRAMEWORK) linux-i2c@vger.kernel.org (open list:SYNOPSYS DESIGNWARE I2C DRIVER) linux-kernel@vger.kernel.org (open list) I would also add Hans de Goede <hdegoede@redhat.com> and Rafael J. Wysocki <rafael.j.wysocki@intel.com> since they made recent changes in that area: https://git.kernel.org/linus/c57813b8b288 https://git.kernel.org/linus/541527728341 With kernel version 6.2.0-rc6, the i2c hibernate and resuming works again. Thanks. Georg, can you identify the commit that fixed this? I think, the commit https://git.kernel.org/linus/75507a319876aba88932e2c7dab58b6c22d89f6b from Richard Fitzgerald fixed the problem. |