]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
i2c: designware: Convert platform driver to use shutdown hook
authorWilliam A. Kennington III <william@wkennington.com>
Wed, 27 May 2026 20:09:51 +0000 (20:09 +0000)
committerAndi Shyti <andi.shyti@kernel.org>
Thu, 28 May 2026 22:39:08 +0000 (00:39 +0200)
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
drivers/i2c/busses/i2c-designware-platdrv.c

index 3351c4a9ef118bc4f7f5651fd65078e043e8a7f2..da2babd6188b5abac083864259ce9bae82f676e6 100644 (file)
@@ -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,