From nobody Sat Jun 13 00:36:15 2026 Received: from mail-dy1-f178.google.com (mail-dy1-f178.google.com [74.125.82.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 48B7E379EFE for ; Mon, 11 May 2026 20:06:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778529991; cv=none; b=pDzwVaLagslfohJ2+DuDuOCHLNiuzqOB4l9U5+TiZboy4LrmrMxxu6oFMFKTOtTA9u7iqxhd6/zPOGRZ4ePu84rdrl7c8yuxW8GAKHHsDGg4OOhmKWm707bR2bXi152SQ/k2JReuXXQM+vI99ArkonosSiwHzlztDSZpGxxg3HM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778529991; c=relaxed/simple; bh=9cnCXAufsosxjIZlhO5qAW+KUJEicaWmss7ww0qWQ2g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rg+f0UYOrFEyj6fhErmpzTPPVCnsle6cJjpnFy2GSQxr8nNBTP5p4jj2wIPcVfE9GNad268mQ0A8IOaaOAsWjHiPtrfnemSIP1y0D7u5+XIB/T0hXl+fM9xjQU5rj9OYBWHixLvq2LrifgyR7BowLjrERAptUh+pND5Xp58FJeQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wkennington.com; spf=none smtp.mailfrom=wkennington.com; dkim=pass (2048-bit key) header.d=wkennington-com.20251104.gappssmtp.com header.i=@wkennington-com.20251104.gappssmtp.com header.b=MgdGWHD5; arc=none smtp.client-ip=74.125.82.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wkennington.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=wkennington.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wkennington-com.20251104.gappssmtp.com header.i=@wkennington-com.20251104.gappssmtp.com header.b="MgdGWHD5" Received: by mail-dy1-f178.google.com with SMTP id 5a478bee46e88-2ef2a1cc06dso8051707eec.0 for ; Mon, 11 May 2026 13:06:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1778529989; x=1779134789; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=HhNfRO8ZbDuzpCSUfRVvSXinww41Sv3w98mHeEXQDv4=; b=MgdGWHD5LGWKMs7aN8dbgJQ5Fp+zW3NnDvhUtCa7KTGRdI4RhjM/jhJiTw9K1/sUan IFSpkfCoSAMUraEF6he+Q4Ibg4wgAjLyynj1lAYcEZ5FfvQ4rlF0PhVnKc5p01TO3jFJ NkQYfET9T9Q0f9cD16HxfMXwZNk2PVNn8SXPmmrTuJBm/44RZnq8uBF3BVMbzTxHqo4C DPNcAiOyTZIe3DrDBgB6xD6z7yjmbtQegdzHq4tPAs6fj9lK11o+j5mOfCG/FaTjIj8y k8G/nxXf3kZfDN/Wa78zaEXg8ieECuNjTfsWO7dW92bn4CUS9aV0uhHv9geI0DKcFhts 392w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778529989; x=1779134789; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=HhNfRO8ZbDuzpCSUfRVvSXinww41Sv3w98mHeEXQDv4=; b=O3gO24NBNqqQso9tubXlZ69ZI/RCC5VXaGNRhicSUgdrKKQrHcwgjIOc/GzEZYlt0w VdX/Dbj1cIQyNbZOxSXFXsAVNx8W5bLGAx40bPfevEgHyvlrlvybP5gTdaAS262aaVqy 9uGES+ScPQjalZeLsLXPhI2lE4irbKeCiRtAsHOvELxelru6yc+tLOLzwOkgIzWd5TsH X9zBILZ3liW/POj8c6YLRm3sH4daMs/odlGWd7LZbUwHIlby7uoBSJUxpgITGVBWgtwW sfQtRXKVUwuEebgDOUZ5rGN7loIZQ+RQWGggkpHMHkyQwO29ewM9rYso0qgBIBIXqQfr Xolw== X-Forwarded-Encrypted: i=1; AFNElJ88pmQkMhSoVZi87x4OSgnh7H4wB5IHG6IKyzQGs1iRJd/QEA+3pSsKxQIqgUKSDb8ATMt2GKU4SqHTMxc=@vger.kernel.org X-Gm-Message-State: AOJu0YylFi1PlVS9hhZ6bD2GS+dIqfS5B1/7m9mKvDdOLeAC80i84Jzk a7QRvr1lYZ9V+mW1aG/MOVqbcZ18ggs5kqC+1JEjarOG9S9sbIqxpTLCwC+jgY84L09Ybu/onik PYM/AsoU= X-Gm-Gg: Acq92OHj/5hpoZrHWK8WvSUIq+D/AESx1q9+nbYmY4nb3Yf1OubvV9ZioZxfa5R3sTu nvDoI7TRs/vg7Pl58npN7XV9YRYM+i+37wSwo0+8NNAHOl5paH45IP6fR+RafWU6NgmZgABBxSA oQv9ZM1bzemWqa+75kQouFKPmRoNWsBHXhsnR67bXLMcvN1B8NhnIWLzg+Re79xbi/TJBgmKcwN Jg9YINW29YhUTU/gdoohaRqgFszSYPGN6+NOcJCGc+vzC2krM+9ZW8PP5dtcSzZfHVuSHUboATL EnUHpa0rMAdjWWvjX9DYOh0Ed3A10+OSK7JCr0UUs/p9xRsl1U+ScRew4XyPe3Yc/9sqqRrZxw4 CW6Y60Y/2ia5vHO8Qih0r0p1ORDqKEXUxAoet97NhSSMYpqfAMNr4uZ3QWSdtrhkIeZdTJmLkmR wDeaDI1NoyN5KTrqm894SySRPCY344aZFC3Hq4J+V1MopVFUIocr7feQE3FSmQsDCN0FQo6pBvX HhLXlcre+FJ1FYohRrgbwPR0Q== X-Received: by 2002:a05:693c:3b0b:b0:2f2:b544:2fd4 with SMTP id 5a478bee46e88-2fb4c3e4291mr5469098eec.34.1778529989053; Mon, 11 May 2026 13:06:29 -0700 (PDT) Received: from wakbuild.c.googlers.com (123.143.125.34.bc.googleusercontent.com. [34.125.143.123]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f888c469b6sm15066942eec.24.2026.05.11.13.06.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 13:06:28 -0700 (PDT) From: "William A. Kennington III" Date: Mon, 11 May 2026 20:06:26 +0000 Subject: [PATCH v5 1/4] i2c: designware: Introduce shutdown exported function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260511-dw-i2c-v5-1-6c382e1b5de6@wkennington.com> References: <20260511-dw-i2c-v5-0-6c382e1b5de6@wkennington.com> In-Reply-To: <20260511-dw-i2c-v5-0-6c382e1b5de6@wkennington.com> To: Mika Westerberg , Andy Shevchenko , Jan Dabros , Andi Shyti Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, "William A. Kennington III" X-Mailer: b4 0.14.3 Introduce an exported shutdown function to safely shutdown the DesignWare I2C controller. This shutdown hook gracefully sets the target disable bit before disabling the controller. This guarantees that any incoming requests from the controller are immediately NACKed during shutdown, preventing the bus from hanging. Signed-off-by: William A. Kennington III Reviewed-by: Andy Shevchenko Acked-by: Mika Westerberg --- drivers/i2c/busses/i2c-designware-common.c | 24 ++++++++++++++++++++++++ drivers/i2c/busses/i2c-designware-core.h | 1 + 2 files changed, 25 insertions(+) diff --git a/drivers/i2c/busses/i2c-designware-common.c b/drivers/i2c/busse= s/i2c-designware-common.c index 4dc57fd56170..ef618d3e1ace 100644 --- a/drivers/i2c/busses/i2c-designware-common.c +++ b/drivers/i2c/busses/i2c-designware-common.c @@ -1028,5 +1028,29 @@ EXPORT_GPL_DEV_PM_OPS(i2c_dw_dev_pm_ops) =3D { RUNTIME_PM_OPS(i2c_dw_runtime_suspend, i2c_dw_runtime_resume, NULL) }; =20 +void i2c_dw_shutdown(struct dw_i2c_dev *dev) +{ + unsigned int con; + + /* + * We only need to handle shutdown for target mode to ensure + * we NACK any incoming controller requests. Controller mode cleanup + * is handled after each transfer in i2c_dw_xfer(). + */ + if (dev->mode !=3D DW_IC_SLAVE) + return; + + /* + * To quickly NACK the controller during shutdown, we set the target + * disable bit while the controller is still enabled. + */ + regmap_read(dev->map, DW_IC_CON, &con); + con |=3D DW_IC_CON_SLAVE_DISABLE; + regmap_write(dev->map, DW_IC_CON, con); + + i2c_dw_disable(dev); +} +EXPORT_SYMBOL_GPL(i2c_dw_shutdown); + MODULE_DESCRIPTION("Synopsys DesignWare I2C bus adapter core"); MODULE_LICENSE("GPL"); diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/= i2c-designware-core.h index 9d8d104cc391..c71aa2dd368d 100644 --- a/drivers/i2c/busses/i2c-designware-core.h +++ b/drivers/i2c/busses/i2c-designware-core.h @@ -417,6 +417,7 @@ static inline void i2c_dw_configure(struct dw_i2c_dev *= dev) =20 int i2c_dw_probe(struct dw_i2c_dev *dev); int i2c_dw_init(struct dw_i2c_dev *dev); +void i2c_dw_shutdown(struct dw_i2c_dev *dev); void i2c_dw_set_mode(struct dw_i2c_dev *dev, int mode); =20 #if IS_ENABLED(CONFIG_I2C_DESIGNWARE_BAYTRAIL) --=20 2.54.0.563.g4f69b47b94-goog From nobody Sat Jun 13 00:36:15 2026 Received: from mail-dy1-f180.google.com (mail-dy1-f180.google.com [74.125.82.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C047B37CD53 for ; Mon, 11 May 2026 20:06:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778529991; cv=none; b=udDQy7scJP2IU5wWAUvXLcvReF1/irh72eQvIhWtticm3qzTE6NKEFJZs42xYMysr1GuLTkxBHpmUSa/N6sZy6WEUjZY3KkZvoBM17R7UhWWy8ybVcAnlaaD/UgoU9oVtd+Fa5FxbsU8sgDVTDJc5RxukJqREwwMRmzm4n+syjg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778529991; c=relaxed/simple; bh=i4mD15MJaYvk9BsNCp+/D7q7HYHneZDzDwI5LzchOYY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X7eHes2R0xYJAQe3Qa6tAZY0jxs92DzeYQepVPsxD//bJ23OLTACfWHIcZDOLN4vtdW/X3LeMOQbstV1xSCdoaEv4E/rjoDKozwqe0QJOBrsjbnU4zp9NBWWF6iR9YGCZG9P/xbT6+kFq/dHZimbf3Zh/atoC7o3QO9WyXtMwtA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wkennington.com; spf=none smtp.mailfrom=wkennington.com; dkim=pass (2048-bit key) header.d=wkennington-com.20251104.gappssmtp.com header.i=@wkennington-com.20251104.gappssmtp.com header.b=BSKDyit/; arc=none smtp.client-ip=74.125.82.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wkennington.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=wkennington.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wkennington-com.20251104.gappssmtp.com header.i=@wkennington-com.20251104.gappssmtp.com header.b="BSKDyit/" Received: by mail-dy1-f180.google.com with SMTP id 5a478bee46e88-2f7ca62a3c4so4743674eec.0 for ; Mon, 11 May 2026 13:06:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1778529990; x=1779134790; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=or16F3QI3wbVcFGF3Sy78Pg5a2SE5j6ngUICpjDsMuw=; b=BSKDyit/o0V5oQTv248jKpBQWrtng/k7nJxe+bRyeX7gBduBN93nl4kNn3tBuWpzC7 MI23lozeiXPtzMUEgKN6DMjNRsMvn8ac9JsaeVXy5B2t1ExbmbHQpHHkkz0fCw0F16He JXGDRkptl/fptlINrS8vRXztJmrCXwiGgnEHkBBRwUWbzABC+EPlAj46Z5rLP7SVWBh3 md9ETSgTo70RyMplL9AtKTPr9cBuHoGwXzNVc3lW02SXSF/AGlBxk3CXRv7Tpbm6NYvP bUmz1oL2vLhujbb4ai2HfH0g6uV5TMqK4Ly9kdtRKxUklzychivjxCiyPdkOK4NVQy6g PBDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778529990; x=1779134790; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=or16F3QI3wbVcFGF3Sy78Pg5a2SE5j6ngUICpjDsMuw=; b=AeWoVBCWm/63schRK1QdskGGf9P2QSEYuc/Omm02x2YZul0/G3lwuKUG7i1wwvBfvf x1gMbt1+qNxFZjGuikQxlXxSFcD0PzsPBuBatEZNjze/GxPkfAicSF+irYhhL48c4O3L 1goWiJ5RK5b0OB0LwrdXD8QHQeJioNJXHy7dGo0UvByjDCp/EZ+a/jr4QMFtAMBP/k20 ZAMHY/Qkcaix4sbesUygGJplfVkbG0we88kfWup2wHNu4Ot4AgkYWRe9dHhB72OB8U/S xjelD2FJBL/13owbCWMe0Hav2jq95R2/rCPlgoF1s481vRXL8GE6vvoxljGv92Uv9Q4e UhmQ== X-Forwarded-Encrypted: i=1; AFNElJ9c+fUNVTJUZkUiM7EXGO0LvvcPPwBD9Fa9SIC6AjT3JxsBdlsiERECUAQIa2DPUW9DGm1OuDy/DAEF8aA=@vger.kernel.org X-Gm-Message-State: AOJu0YwCIYIOOkvyrOV0ISWFOp42OD64cpfnZ97Zm6l/g3wc/qgwJ9qy C/FTArBivLoghMEZC4xVjeOMevPtb2mtMk4n5fRGyT18zmKjNK5IDJzHNrX6Svq+ZiuWiJuK9g1 PIwsWFNU= X-Gm-Gg: Acq92OHNU2zkHk6TzhClk3bqOe0WVRUvIBkkcprNgiLbFFWuZBs3o7Xfe/JgnjJQufc KdCpLMRf/9fRnqzWkPz883bY+A8lbK9YfyzwGUpPSG2f1BMM7805EKAozm8+lR5hzGHu+b+IkwH guWVZarVI5G6Nv4L1aNb9x4s/nJDBUFa7yIKOSgI9/Std3AFbPrORrvNsBHMyQlg+9m0EToemll A6wrfmJJkdLCrw0D7BqwaOWG2Rl1GqoiibJQ46lVTR5gg6VOEExTZTQxjFpGz4bZcRolC9fHT8v tvTPxotwnFILiobVud07d1Qzra2Hyv2aIOQs7EaE9MUTAMGOI11qcelmYG5mdS6EriBvYl9Ggik AR6J72rXU3AF9O2zstcmqHXJ1JytDaPC/7AeCEIKv81zTGUyHgSu+dkbr12HvpX6snoEDVEu7g1 mWK/nuAV5wbunpmTWsizSavgcy6jFyJi0Q4jbL988PRKo8Vpg6Csn7nwscwkRnnZ8eFbYwnigA/ jqaYD4aVCDybbg= X-Received: by 2002:a05:7300:4313:b0:2d8:b814:29af with SMTP id 5a478bee46e88-2f54b89a0cemr12984893eec.3.1778529989711; Mon, 11 May 2026 13:06:29 -0700 (PDT) Received: from wakbuild.c.googlers.com (123.143.125.34.bc.googleusercontent.com. [34.125.143.123]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f888c469b6sm15066942eec.24.2026.05.11.13.06.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 13:06:29 -0700 (PDT) From: "William A. Kennington III" Date: Mon, 11 May 2026 20:06:27 +0000 Subject: [PATCH v5 2/4] i2c: designware: Convert PCI driver to use shutdown hook Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260511-dw-i2c-v5-2-6c382e1b5de6@wkennington.com> References: <20260511-dw-i2c-v5-0-6c382e1b5de6@wkennington.com> In-Reply-To: <20260511-dw-i2c-v5-0-6c382e1b5de6@wkennington.com> To: Mika Westerberg , Andy Shevchenko , Jan Dabros , Andi Shyti Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, "William A. Kennington III" X-Mailer: b4 0.14.3 Convert the PCI driver to use the new i2c_dw_shutdown() hook, allowing the controller to gracefully NACK controller requests during system shutdown. Signed-off-by: William A. Kennington III Acked-by: Mika Westerberg --- drivers/i2c/busses/i2c-designware-pcidrv.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/i2c/busses/i2c-designware-pcidrv.c b/drivers/i2c/busse= s/i2c-designware-pcidrv.c index f21f9877c040..ab21d4414681 100644 --- a/drivers/i2c/busses/i2c-designware-pcidrv.c +++ b/drivers/i2c/busses/i2c-designware-pcidrv.c @@ -356,10 +356,24 @@ static const struct pci_device_id i2c_designware_pci_= ids[] =3D { }; MODULE_DEVICE_TABLE(pci, i2c_designware_pci_ids); =20 +static void i2c_dw_pci_shutdown(struct pci_dev *pdev) +{ + struct dw_i2c_dev *i_dev; + + i_dev =3D pci_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 pci_driver dw_i2c_driver =3D { .name =3D DRIVER_NAME, .probe =3D i2c_dw_pci_probe, .remove =3D i2c_dw_pci_remove, + .shutdown =3D i2c_dw_pci_shutdown, .driver =3D { .pm =3D pm_ptr(&i2c_dw_dev_pm_ops), }, --=20 2.54.0.563.g4f69b47b94-goog From nobody Sat Jun 13 00:36:15 2026 Received: from mail-dy1-f175.google.com (mail-dy1-f175.google.com [74.125.82.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 63E4237EFFF for ; Mon, 11 May 2026 20:06:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778529992; cv=none; b=h9oc6H0BZ/8n+/AihPjQhY7oCaIPg/tVd6iaTHvyWg8UkjZxlhDzw5WnhMsMAm4K0GMxDHLtQYu2RkDpS338wfKTvMfDIbiGbHGXBUFL55ZTMO1hJkFTw9o+l4jJUEK8zcvDUoT5+WQJ2lrdxcvwvF/azdG9WeaKx/6n2b7mXAg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778529992; c=relaxed/simple; bh=Ao1+s9xEtiD6QBHowI6J7Mkv3FXHYl0iJlmorIy3mQc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=saT1cRmpioFxpM/1/1a21gxbCzTcXg/yxpguVz/cFyZs8EM7s09RZJ9DVha1Wv5bwp+GIkbsulHfM1X4oRi1hYBiDTOn891Gi6vUFkBZo3OXnuVIuoXU1hKP1eWL5XZ8PCpYRKcC2InbXn0i9HIaV/cndKCmP4EDCmtSFBt10qQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wkennington.com; spf=none smtp.mailfrom=wkennington.com; dkim=pass (2048-bit key) header.d=wkennington-com.20251104.gappssmtp.com header.i=@wkennington-com.20251104.gappssmtp.com header.b=pUmyBP6d; arc=none smtp.client-ip=74.125.82.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wkennington.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=wkennington.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wkennington-com.20251104.gappssmtp.com header.i=@wkennington-com.20251104.gappssmtp.com header.b="pUmyBP6d" Received: by mail-dy1-f175.google.com with SMTP id 5a478bee46e88-2b4520f6b32so8262621eec.0 for ; Mon, 11 May 2026 13:06:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1778529990; x=1779134790; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=J4YeuQQs5xPCqUDNxVj/DEq8wwCdgbhYL0v3c1ldlH8=; b=pUmyBP6dpTkLgscSKNDvdAsWyvS41oDGkdPFHZY4fYG+3Bqo/yGMvpfz3Am1hj6hpq ZcWCHGGlALaCcSz5RSzbyltt5yvIDCDvkvrkuSSAntHXqIcw9YZutBXhyO/mVJBOrVst KYMBLg5P5oTja1zo9tesLlpzGkS8b344rkLTo4SX+1Nr8gk9bXg2HImxvp1TjY4A5ImW 6Tt65J4hCwg7VAeag3j0i/e0Kv70ifXzpC76c8qLjMckY/sM6rmBWLFd3b3KfnBHdNUl 62MnXnsGAK4bRN8jGqCNq6ZUSvG2qEA9JAC/UoTdz0atITZqB0TbAUOZEDJnavCRH8DH Kd4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778529990; x=1779134790; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=J4YeuQQs5xPCqUDNxVj/DEq8wwCdgbhYL0v3c1ldlH8=; b=H2N0Ln2LDGJuvBN8YaOPNx/wYx/30qMvOqIfMQmnxstIq9itB3C5v1em/gAyK9jcOK XkVTMujKiH/RB1Lk98K3JCIdx7lEFIYR5Nc2ZFSWbXyDoBOlMql1ediuWnqdQ6ELFAcm ZzpIbkv5yup9yaPXBX3HfcAjHIUhs+m712vD9VhZklzggRxJQMwkuOZ2uWkMc1/L5t6Y xHQx2Ll+OirK3354PMFRMKJ164gLtXVcHACw6JgCF/DHsXLZ1aDJhIZbj3T4WR8FMjNo lOkgo12bAch7RWDEahQmMi3HQiaJO2FA9rEu/ynpX/GbAqtl/0E04v5nPU52Dk8bKuG3 vOwA== X-Forwarded-Encrypted: i=1; AFNElJ9Inm7RCcnf613zNJOFPFlYqNSkHpm4x5IUXMf/UMFO7St01UMUs5ooNo0vv5LyZapxDOgsQMZzCrFxZic=@vger.kernel.org X-Gm-Message-State: AOJu0YzQCxTZB59IwiuKlW6AfKSU4VSIjg4LmBvVaqZLrhOhN2rHDHaU YGiy+ogSEQqvw5i6ppLILaVfnWb1YKoKHIlI9BBPNSk3CKVUnDGOt5LDdQDjtedlUxi2cQe/7AW pTFZYf+M= X-Gm-Gg: Acq92OE/UTLity5CT4TD2WH8C0vy+5r6T9Xyhg4/9N0MZIMMaEibjev8e7ZGyI5hJg8 0wcpeU8nQXUg4G9a1JuI5eGYkpxfKEascocYJFsZrx5sdRFhmW+X511Cld8IED7GSnkrzBfdMTQ ogillp/QU63+UtFmVbNU4332Fi8MEWc0Ddmi8wOdc4SBIzCIQFxJo+jaFFb9bodNcFckBEMSZ2+ Ov9165LZ4Gp01mnVcMa77Ya5RoXrybvazBM72bowxyGunF1a1TIIgi14LhsZCIhNkqJ/PY6XxnZ YSG8pElxS6zXIyAPPm4Vbhf5bWXPzsdwRtRQpnc+KT6Y5hh3piY+nFTGmLXzhMxSBZzy/YOlBdq RIU4UGbLbkUSto4nJJ/+D6zPfNttG9l6k1mDCBHkbqW5yo+0ipKpTebPArowkfXAAxR3f8uQq1A 9MNdQCndK7hqfQWHEXf8OLywmLYfrRd7IpnHZ3jPv8jwhmtkizFTI8ssqSnktZniHuVgOgZm5f5 E26U0LOWKNf6aapq/BqnZcruA== X-Received: by 2002:a05:693c:394c:b0:2df:71f0:e5b3 with SMTP id 5a478bee46e88-2f54f9447a6mr12068082eec.20.1778529990290; Mon, 11 May 2026 13:06:30 -0700 (PDT) Received: from wakbuild.c.googlers.com (123.143.125.34.bc.googleusercontent.com. [34.125.143.123]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f888c469b6sm15066942eec.24.2026.05.11.13.06.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 13:06:29 -0700 (PDT) From: "William A. Kennington III" Date: Mon, 11 May 2026 20:06:28 +0000 Subject: [PATCH v5 3/4] i2c: designware: Convert platform driver to use shutdown hook Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260511-dw-i2c-v5-3-6c382e1b5de6@wkennington.com> References: <20260511-dw-i2c-v5-0-6c382e1b5de6@wkennington.com> In-Reply-To: <20260511-dw-i2c-v5-0-6c382e1b5de6@wkennington.com> To: Mika Westerberg , Andy Shevchenko , Jan Dabros , Andi Shyti Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, "William A. Kennington III" X-Mailer: b4 0.14.3 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 Acked-by: Mika Westerberg --- drivers/i2c/busses/i2c-designware-platdrv.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/buss= es/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[] =3D { }; MODULE_DEVICE_TABLE(platform, dw_i2c_platform_ids); =20 +static void dw_i2c_plat_shutdown(struct platform_device *pdev) +{ + struct dw_i2c_dev *i_dev; + + i_dev =3D 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 =3D { .probe =3D dw_i2c_plat_probe, .remove =3D dw_i2c_plat_remove, + .shutdown =3D dw_i2c_plat_shutdown, .driver =3D { .name =3D "i2c_designware", .of_match_table =3D dw_i2c_of_match, --=20 2.54.0.563.g4f69b47b94-goog From nobody Sat Jun 13 00:36:15 2026 Received: from mail-dy1-f176.google.com (mail-dy1-f176.google.com [74.125.82.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D9CAA346E5D for ; Mon, 11 May 2026 20:06:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778529993; cv=none; b=Ekx2kxZ3t3NOWYibN31ahfwSscOzzbie7HrvBNnD24v+0n6HBCdPMErHG6hYx3DM7FOyUYwzqBaKzjAULsOMEykEx3ydQxXMjm7oshk3qUPoA1g8N/n1iJhrSZu49oE+m42RGledplM6muj5xI2NwHNU0BbNoAyJG4UXL71Hz3A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778529993; c=relaxed/simple; bh=maWy64YLlRB732kUgHTdJdy5XYo42YyqBugNE3vRYd4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Gae3/blQZHvsEpNXaNuXqsK3B3NDUK54sjMLqNLYmheTt822QGZtUbyHdYIQTs9gUzqIJxAuku61wzSWJ7yrSRF1VxntWUl2KDrjVLNKlj1Jy0KuZMJHKJhtzw7e1uFDy93eNOGdWyKZBA93wUhBKH5b5hMfFH7XAbPFag+oV7Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wkennington.com; spf=none smtp.mailfrom=wkennington.com; dkim=pass (2048-bit key) header.d=wkennington-com.20251104.gappssmtp.com header.i=@wkennington-com.20251104.gappssmtp.com header.b=eQcOOMaq; arc=none smtp.client-ip=74.125.82.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wkennington.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=wkennington.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wkennington-com.20251104.gappssmtp.com header.i=@wkennington-com.20251104.gappssmtp.com header.b="eQcOOMaq" Received: by mail-dy1-f176.google.com with SMTP id 5a478bee46e88-2ef8d6ba48bso2793731eec.1 for ; Mon, 11 May 2026 13:06:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1778529991; x=1779134791; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=5qe1WFsOyIztipU9mcAPjFDXZdMGa3f5fAzVGnu1+Kw=; b=eQcOOMaqRPAcXVsAAVA3H5HFp02arz2zmUt6wIS0ndRmC5TzyZlu0fQ2TesXy5GJ0R AFO/G5sQ++8ef5oTmlOJMndvzFTx8xXPj6O69UQ7o5uFQtT8OuKBB+uS/VjlyC1OhQ5E P2rImKKfLOlNHgVWvQXVAx5FalT9ArMHcdvimSpKq3l0vujaPgn+CRYH2RElMRJA48VN BlaexD4V/nopc5cdKWfAUb0SS/gE9eLeT2WcXCAEYPp6kolNE0pC7OPMltUp7/A5Z9xG kkbFEVxp/BxrU5FK5YXGs5sbe0kasHFZEtaZjqHUvTSDuorShCaYKI677OCw5CLhgUrt +1vQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778529991; x=1779134791; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=5qe1WFsOyIztipU9mcAPjFDXZdMGa3f5fAzVGnu1+Kw=; b=jmk3xkJQHjChDGUsHkxpTgGwyntGcm83m66vjlt3LC1aTam5IkYsn0JcqJt9kxmLM+ fjGddFWy/yQNdAZbO31fHXho5U1JMP43uhV5fS0A1yM2hO/qP4gW7R5O7PraUesOQjcl UF+aZxFi786acYXLw8CbK4lebmxK4UsVGBVSIg96cm9c6c24jf8IRPv8fNANu5eOfPIB mHc6MaUlzvef4cd1SG5WWLPTonBkfi2L20Y46HTspEyJAlVk5Px5C+13LhiE4t2h99/p CdghxqtdsDDxxDQSj/HH0aQhwFCD6EIIVNZd+Z3BLrPBWXyep8tyZ0scRslfe9lmnL1k Lwow== X-Forwarded-Encrypted: i=1; AFNElJ/nn/sbFvbXpa0IL8hykKy4ybkWO40BvjcQH4iFspn/4HroLNTz1ngxdcAlSuTH+Q99xeUBpiSl8oxY0Xw=@vger.kernel.org X-Gm-Message-State: AOJu0Yx/4OgXO1FZ6O95LnDLZoO7EXyfx5xeAXOXNRZhxpmEAzBUw775 VNIYkeoSamHb+exgE27R1eTrk9T7+HWXXfnTzutMX+QXIpJIMiuZuZwlL/zATs+T2+AstiMwB+l nfU+XhHg= X-Gm-Gg: Acq92OGmFECGPjZERYS9bf9tqhM/9QedV3Bu7xSb4YFttGFAbQzkVYT1LgG5ND4QT+m E67YKn8obbiB8cIu5H8Mk2Sv55c1qlFv5DPfFva2uXwB72LNN3a6Uxn5wbmWI3GQQHpC5q2eklH 0KhCFr7o9+L1Xq7t4E/4jymhKD9VeNdSV5IkZlrRhmwnYl7WnOi3uNcKe8/wu3I7k3v7Cw0YVq9 Dq74rDSWQPjqDfz9X9CNPcCQRRqzw2eiQSBJzLbu6tdDzA/NyDcl/MlePpQzn93Fza6Bn+X22ef IqPjmxFVwalIgFwWpESiVfBNFIAmD5gnMUEyo5BqabdsUS/AaBXiFsbyyPnExhpABM/bsrwi1BB EMkSrKId9SQUOcUbR+z+ZyYyYtRQKH1xDwcpCv3Pb6QWQeLD3f+TUdjtc4kDyIldDhdRG95UqsE RkuZfG3xmfU00Limm/H0gGHkvPEZ9Jfyu/iIWzv4Ko4RkxCFd2P6B+H0mxbfc4FCGGWsqH9CCGa sTrtQdil4CMbKeIP3ahxi4ikA== X-Received: by 2002:a05:693c:839c:20b0:2d1:9b35:4edb with SMTP id 5a478bee46e88-2ff907f1630mr456690eec.0.1778529990860; Mon, 11 May 2026 13:06:30 -0700 (PDT) Received: from wakbuild.c.googlers.com (123.143.125.34.bc.googleusercontent.com. [34.125.143.123]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f888c469b6sm15066942eec.24.2026.05.11.13.06.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 13:06:30 -0700 (PDT) From: "William A. Kennington III" Date: Mon, 11 May 2026 20:06:29 +0000 Subject: [PATCH v5 4/4] i2c: designware: Handle active target cleanly Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260511-dw-i2c-v5-4-6c382e1b5de6@wkennington.com> References: <20260511-dw-i2c-v5-0-6c382e1b5de6@wkennington.com> In-Reply-To: <20260511-dw-i2c-v5-0-6c382e1b5de6@wkennington.com> To: Mika Westerberg , Andy Shevchenko , Jan Dabros , Andi Shyti Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, "William A. Kennington III" X-Mailer: b4 0.14.3 When the I2C controller attempts a new transaction while the target controller is shutting down or restarting, it can lead to bus lockups and system bootloops if the hardware enters an inconsistent state. Address this by ensuring that the internal state machines are properly cleared when disabling the controller if target activity is detected. If the controller remains active after disabling, perform a bus recovery to reset it to a known good state. Signed-off-by: William A. Kennington III Reviewed-by: Andy Shevchenko Acked-by: Mika Westerberg --- drivers/i2c/busses/i2c-designware-common.c | 8 ++++++++ drivers/i2c/busses/i2c-designware-master.c | 31 ++++++++++++++++++--------= ---- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/drivers/i2c/busses/i2c-designware-common.c b/drivers/i2c/busse= s/i2c-designware-common.c index ef618d3e1ace..7d9c6a5148cd 100644 --- a/drivers/i2c/busses/i2c-designware-common.c +++ b/drivers/i2c/busses/i2c-designware-common.c @@ -633,6 +633,14 @@ void __i2c_dw_disable(struct dw_i2c_dev *dev) =20 abort_needed =3D (raw_intr_stats & DW_IC_INTR_MST_ON_HOLD) || (ic_stats & DW_IC_STATUS_MASTER_HOLD_TX_FIFO_EMPTY); + + /* + * If we are in target mode and there is activity, we should also + * trigger an abort to clear the internal state machines. + */ + if (dev->mode =3D=3D DW_IC_SLAVE && (ic_stats & DW_IC_STATUS_SLAVE_ACTIVI= TY)) + abort_needed =3D true; + if (abort_needed) { if (!(enable & DW_IC_ENABLE_ENABLE)) { regmap_write(dev->map, DW_IC_ENABLE, DW_IC_ENABLE_ENABLE); diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busse= s/i2c-designware-master.c index de929b91d5ea..7a301c8b604e 100644 --- a/drivers/i2c/busses/i2c-designware-master.c +++ b/drivers/i2c/busses/i2c-designware-master.c @@ -785,18 +785,25 @@ __i2c_dw_xfer_one_part(struct dw_i2c_dev *dev, struct= i2c_msg *msgs, size_t num) * IC_RAW_INTR_STAT.MASTER_ON_HOLD holding SCL low. Check if * controller is still ACTIVE before disabling I2C. */ - if (i2c_dw_is_controller_active(dev)) - dev_err(dev->dev, "controller active\n"); - - /* - * We must disable the adapter before returning and signaling the end - * of the current transfer. Otherwise the hardware might continue - * generating interrupts which in turn causes a race condition with - * the following transfer. Needs some more investigation if the - * additional interrupts are a hardware bug or this driver doesn't - * handle them correctly yet. - */ - __i2c_dw_disable_nowait(dev); + if (i2c_dw_is_controller_active(dev)) { + /* + * If the controller is still active after the timeout, attempt a + * bus recovery to clear any potentially locked state. + */ + dev_err(dev->dev, "controller active after xfer, recovering\n"); + i2c_recover_bus(&dev->adapter); + i2c_dw_init(dev); + } else { + /* + * We must disable the adapter before returning and signaling the end + * of the current transfer. Otherwise the hardware might continue + * generating interrupts which in turn causes a race condition with + * the following transfer. Needs some more investigation if the + * additional interrupts are a hardware bug or this driver doesn't + * handle them correctly yet. + */ + __i2c_dw_disable_nowait(dev); + } =20 if (dev->msg_err) return dev->msg_err; --=20 2.54.0.563.g4f69b47b94-goog