summaryrefslogtreecommitdiff
path: root/drivers/i2c
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2026-05-27 20:09:51 +0000
committerAndi Shyti <andi.shyti@kernel.org>2026-05-29 00:39:08 +0200
commit0a1b80e9db9db571d48d0f8cf2a7b31270950068 (patch)
tree84761e2419f369e35cbf78e5f1182c1f49fdf841 /drivers/i2c
parent42b4f04a2f825c88c723985ac2b61baf97590da1 (diff)
i2c: designware: Convert platform driver to use shutdown hook
Convert the platform driver to use the new i2c_dw_shutdown() hook, allowing the controller to gracefully NACK controllers requests during system shutdown. Signed-off-by: William A. Kennington III <william@wkennington.com> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://lore.kernel.org/r/20260527-dw-i2c-v5-3-3483057f8d67@wkennington.com
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/busses/i2c-designware-platdrv.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
index 3351c4a9ef11..da2babd6188b 100644
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
@@ -289,9 +289,23 @@ static const struct platform_device_id dw_i2c_platform_ids[] = {
};
MODULE_DEVICE_TABLE(platform, dw_i2c_platform_ids);
+static void dw_i2c_plat_shutdown(struct platform_device *pdev)
+{
+ struct dw_i2c_dev *i_dev;
+
+ i_dev = platform_get_drvdata(pdev);
+ if (!i_dev)
+ return;
+
+ pm_runtime_disable(&pdev->dev);
+ if (!pm_runtime_status_suspended(&pdev->dev))
+ i2c_dw_shutdown(i_dev);
+}
+
static struct platform_driver dw_i2c_driver = {
.probe = dw_i2c_plat_probe,
.remove = dw_i2c_plat_remove,
+ .shutdown = dw_i2c_plat_shutdown,
.driver = {
.name = "i2c_designware",
.of_match_table = dw_i2c_of_match,