From nobody Sat Jun 13 11:22:00 2026 Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.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 8707734BA42 for ; Thu, 7 May 2026 20:05:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778184325; cv=none; b=fnc77+ChS8gtImnAN+KrKr+34tmaTfLyv+XzwUSlzblD86B7aHsnuvMCZXtOO2b6VRXmD/yuaNJSzkxTRd/9grWXTeZTImj9iaBSk4uCSkPuNTYkkrob6n+TemSWcFWpWEgyMgkUuuzDVphuwlGw5nNIpPI0wpJ6/hFQTgNhakE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778184325; c=relaxed/simple; bh=xdMaato8TzQhG7sEcha36250OMNuC2a38m+gB16kRFU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=F3KqDnbRlisQRy+POOV5indS7jGPxM+PFbpSsgpt92T8B6dW/ParonAkZ4uo0DlbhfrzpghPbzLxjm/OVMaJyx9k03fkwGb/at8akp8ctALIXV7iPzp9egfPYTBp+YSj5yCBWAIYh+l3tDnCZD1V5r5R/MtaiAktFvvQLlQKlig= 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=S2f3MXYk; arc=none smtp.client-ip=209.85.215.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="S2f3MXYk" Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-c8026aa4d53so796997a12.3 for ; Thu, 07 May 2026 13:05:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1778184324; x=1778789124; 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=Dbh8YwmHjgZJuVNCq9Cmjprrm6eEx/Q8kVEN8sLgRu4=; b=S2f3MXYkmsULTzHHrDWjRXAQe57gPyh+CxofFXbwX5F3xigvl8lacDyDy/HaAolYu8 yYb93yqwLL2CV6OUgBUqX4Vx/nIaNVQH0jI+csXVBdK0JaPKhtebirOhwAfV03x+o9OS Cf6Fvpf/qaftpAFfsvsdcyH9C0XLaiV/9n/CsH9EhhCkp1c1dz3HVK2FKTcMDGZM0gMg d0fI+B4Zl20sWzVJj+vXeaCgVyc/5DpRWd8z8XbjJHk6mysh2wNhvqWN0/xvpP/BZ8oi bmjdC+Wyjpwt7l5EsEDlZunK1S9Sj5K9bs9cjoDHzFXG2RW+0zdEfLMgvhI2230o5bH0 wQUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778184324; x=1778789124; 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=Dbh8YwmHjgZJuVNCq9Cmjprrm6eEx/Q8kVEN8sLgRu4=; b=Gn18hrl+EpDtubByP+jKpDef5RWd+bd0+3xMkAHxUz4Rn0On3U0Ysec9Flri9dNUaz F9REKaMxB/Gm1P/OSv3o0hpXAiCP8iePVfTAmVVfp5NcSlQgWQZCQovUUedN+yrmJOmF GARes2MXXByuYRC2x1TUlFzMdEA1+/J6sZvgUsCERSU3rfvAMkAQRJLyEElYKxrUv1RN Qn7HEKJZTXRdf2yvrxuJWkSpFSx4rRkrMU7ju9i7BCt96ULb8W5OPyZ3USFFWQjtXHdU BVwdjHinCUX+EuJbM/N03QPBSSrH272idwoeZB4JkxKAE4tebbApiXtd9xCKRjF143Ty GUVA== X-Forwarded-Encrypted: i=1; AFNElJ9tHq6vN+RIjMLwqyeeVh0xmxwglUEd7zI7WeLFrWHRF95jg0Z0q12z12QxpomFDYvIuHxBWyEgRkXcsMQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxVudEnW8B/dC0KQQ0azHLvxmD+OZLoyWDRZZWKXE2NWUR3mxt6 kSK5FWn67TBxx6UBEyPMcZFKiT/irEUEt95OXqrCuIQ3r6PPrD931+XohZEW/eAeKH4= X-Gm-Gg: AeBDietOugFSL9fRa5pC9GTvy+G3gynWT/htjD283GQSaO9+Jc+wSnVopIv//ZA3xg1 YYCuOkeild57a8lMnX6J9XDUymPAggQ75KffJ4PzOj0fpsWS6qc+x4Ggi7rpHHh0YQ/+j8CO2fE s52JQDlXTyyHzm4VXFaGdZCRgRx5ust1cPZQUHF3HNklj2RER1IYfL1Hhd+EHitD6Cex9qjSWj1 Eam6J+23N4r0ORD0/qiew6mKz8EzIwvK/mwWxOyHr9iuOZZTeTFEdurBx64BvFCDVFpNS0tHtP7 m7elXflErzOIyLPEUDrfuMdJuk354+gda1jEikfvyPCPe4hxbQ9Qr0aIUQeDtmqCbtWwUW/RR8j epFuMbTgB2tkW8wAmdQz4FFMSfq5OrZHbxLSdB+o5Sg5UmYLDbo0g5yBToZGXtBz8g4DrGmc4Cu WZfOqlLoOp9WiNwhtBULoBgwDoaQQaOy+mbkxv1sgM5LqCbrPEIzsvlYE2Qe89v1Tdq6rVCNp2I JJ2JkVsuxruQaI= X-Received: by 2002:a05:6a21:6d88:b0:39f:3efb:e888 with SMTP id adf61e73a8af0-3aa5a983571mr10254508637.25.1778184323838; Thu, 07 May 2026 13:05:23 -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 41be03b00d2f7-c8263ff29c2sm443200a12.12.2026.05.07.13.05.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 13:05:23 -0700 (PDT) From: "William A. Kennington III" Date: Thu, 07 May 2026 20:05:15 +0000 Subject: [PATCH v4 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: <20260507-dw-i2c-v4-1-9a447b23bfdf@wkennington.com> References: <20260507-dw-i2c-v4-0-9a447b23bfdf@wkennington.com> In-Reply-To: <20260507-dw-i2c-v4-0-9a447b23bfdf@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 --- 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..886f4dad166a 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. Master 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 11:22:00 2026 Received: from mail-pg1-f175.google.com (mail-pg1-f175.google.com [209.85.215.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 5C14636494A for ; Thu, 7 May 2026 20:05:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778184326; cv=none; b=teL/Gyf8JQLkHUCJJ6l3hf2KxfZibQPzdy9biqKkNH9WQ9xu1Y5vruLf90VA3PCkDwpGMKLM1ciFYPccZbDhIAHR/plqWmDHIIjDCTgzZpPHv3UKQdx0CQU6QuNywI1kuLQussL/zm2H51M6weBt4MOrzL5YzSvlx+ps3q1YsDA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778184326; c=relaxed/simple; bh=Oc5uAz/uYSFLgaMHLuonmdBsOam9MFJorSalJ6/K7XY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZsB/akD8ELTrWuWkdaajep1fClF00FbFif0cOZGOHrdQDnibzMlyS+GVXAT2LAcdB76imiRC0kd620UBmbWmVRTvsaTxGdQ7gFSReKsUjM5jCTcHiOZr5mKYWof0YythnEtZ7wAEdJQTZXB9neVZWcR/h6hg97L+4d43d1LwZG8= 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=BcaUe7C4; arc=none smtp.client-ip=209.85.215.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="BcaUe7C4" Received: by mail-pg1-f175.google.com with SMTP id 41be03b00d2f7-c8028fa6039so723235a12.2 for ; Thu, 07 May 2026 13:05:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1778184325; x=1778789125; 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=ak/jJ3kjPdO09tXdhAf8w2E2HP3MFaM+RhiEMxW3OfY=; b=BcaUe7C4cHEChkVAkBNZ53xvVCUmGa8iT2Tdh9k7jgXR4WHj+FQ9brIdAHSPyTt2W5 QNelk+lAlo3Dq7xlrPTeuG8RySaOvEhS8sut6y57brdsDOsKKZ7M4KwgFRV/B9J3GksL FwYXUxjt5CXhlMCxpuyG5GFfREc8yXxjCkzOcaXpnjbCoaLONSrMpE4hnebt3Qz3GqSn OoGVY90csKNiEp0sqth/RWTRnprZEz3+tSWp1dUKxFYp0U9piAFxXq+AzDovGF5K+Z/c YeCp+ZbMU7h2qX7/eyTC+2yMcw04mHmM68CKFuDFAIaaDrXRotSz1ruoq38Jt7b+o6Of cwLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778184325; x=1778789125; 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=ak/jJ3kjPdO09tXdhAf8w2E2HP3MFaM+RhiEMxW3OfY=; b=fXxZ0GGzqlHIUou5BU7PAivQOD42FP2XHxpQruVnI15GJoxBEKRe1gUT0X+zjFjMdL D6ZLx/YhJWWizJyQLdDp0xSHNHlEjmrVaplIShyZOZ9aT6SNSdPKQsNDDOPRA6XjbrNO AvQfd+efwNOLTVnKeS2Cu/+jMBm37mVkc8oZxODE/diEhjT4gFaI/Ds4CCwJBHHGgZi0 CXnP7yoNYf9WtqoElzk3QffcGzo0xxwW5XWr8MXlxVLbzJFIi53OFFkk7xvpj4C4cykT OXpa6Y21awSXwEKSXE55oA/hHcOQODThaWTlRBLYBm49+iXHe3AIq33rsZCeUB3MSgSG Y7xg== X-Forwarded-Encrypted: i=1; AFNElJ+NGBEeJBaiefwGzL9UibETOwTdALPwFEzAHRYwEGLbw7ZYDqJH+NJBmXQGY88MTfL09SkQ/M9ZBjdkpLg=@vger.kernel.org X-Gm-Message-State: AOJu0YyGwQHRVNKW3vczxzWPhs2lAFPyQTFgim5FYoyZcx06Hno0VHxq vid+8GsL+8gcJ0KuOs1cbsK9wUHGgsLESpbnNGjw54ZOMLm/I/RoEG8S3yZxPfcqJwjWscNrlgJ 3ANHqs/U= X-Gm-Gg: AeBDiesOOrZ8JK5kTAEjdl2CpVu0+jyopH76zbGJzylPK0F0KZkne9Z3yYqAwvjpjf3 3cbaFj+6WtlEnJSz6V6dhEHoBSnirq3JMfGhOK8rrNjlOYGlS2lU+U3Qpxifs/uXntFxJP8EuPT wHYNugPAReRVtrau2GnDNuOcBu7G3bCU5vaAgd1coACTHadnc3rR9PXtrFAUUICN3cKXm/x9XOh JLnyeQETjiiBQ/6YNGPOe5Xpem8SE81J/Z5It+73OgMfsdhpOU1VaQfbKF+x4QHR136eNGRYQuD cdMa0R2Fw4mAm2QtM/vnjCqSWZ3pJPGHRyQOJ0MfPTFnopAykrIQWFkgs2U5zlZIAmLBAh0Bndt 3X+zbC15TMEwQWoIP+wTqHI/ZWtwSmluECrRVumRyeWaz7pYXVpZ3xJyRxrWZwELgt6hvQvIs4r HRqEhMC5ADgqTBFthMQ1wjywyVL9ZZ/cW5OLeuMKV3ulA2m6Uvbjshif8RrCXqH8aP07DlJW9Ry 2A85pfVb6urFEg= X-Received: by 2002:a05:6a20:3941:b0:3a2:9c28:9c3c with SMTP id adf61e73a8af0-3aa5a831d73mr10599771637.11.1778184324647; Thu, 07 May 2026 13:05:24 -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 41be03b00d2f7-c8263ff29c2sm443200a12.12.2026.05.07.13.05.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 13:05:24 -0700 (PDT) From: "William A. Kennington III" Date: Thu, 07 May 2026 20:05:16 +0000 Subject: [PATCH v4 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: <20260507-dw-i2c-v4-2-9a447b23bfdf@wkennington.com> References: <20260507-dw-i2c-v4-0-9a447b23bfdf@wkennington.com> In-Reply-To: <20260507-dw-i2c-v4-0-9a447b23bfdf@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 master requests during system shutdown. Signed-off-by: William A. Kennington III --- 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 11:22:00 2026 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (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 31D4635E950 for ; Thu, 7 May 2026 20:05:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778184327; cv=none; b=S5rthVnRuZUyZA5AUPJF+V8qsIfchwoVX5a19EhiBtnKIgn4oG5VnqUZ2jWYhQxmkhUXru5vUM0pX+b/zO6Hq0RBzVBFvlPY8p3DrKzCfr/CdhN3IrZZjf73W1SfrRFK5wRIg0uORL3qOUImkot66AkAr5slxfycIknjRF1aHQg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778184327; c=relaxed/simple; bh=4evtoOZVO2A/G6eOp1vXsIAEnmO/V0PzVvlW6tZ8LWE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Mzig1DVLA7NGOB+oGUyKQ/TfAzhi4IZ1cwwOCydHAxjbBy2EFdBguEppeHAWWqoAyIMJ1c/8Sng03VsuCwhcX6EMBEqHvFYUOtYRwUnGDelvP8i7bvvEGpceQr/0xuX80vNbTf2qilPnPnSK6CFcPta5uRVr067yhWCoh2VjIxM= 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=FY4ix1LB; arc=none smtp.client-ip=209.85.216.42 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="FY4ix1LB" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-36608b2f2dcso733659a91.2 for ; Thu, 07 May 2026 13:05:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1778184326; x=1778789126; 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=Ucibh90VG32FPtRrP0vVUl7eKuOrNfTmwf7a/Zp51ZY=; b=FY4ix1LBMXST2GsTbN836rD1Sayb6w+swbGtbHn17BlbZax2Xyra46CSCkhXtMkzMb 32CihZJxSBTB3FhHVleyHOJtsM49s8jNRkZpYGCKiLR9VZHl1GptyDtxTIAarmqVKWs8 DSyiXjeNK9HL9/X7x53e93125vupxJPh6P9GI9KKwcMkq8PZxkkUd5wXiH6oxqOXg/W0 9GmJD/24YYVAiXDqFhmp7zV0ZNN7IouKMrY+KrsKx34mB/q/ISs3+bP3xoQAAXM8nk/A GfH1Q8LzjpSAVO0NjciX4HNuG0jkMJQENPkG89g/nZhIJlcdiuY25agMYPdJNszLckkT 3+6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778184326; x=1778789126; 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=Ucibh90VG32FPtRrP0vVUl7eKuOrNfTmwf7a/Zp51ZY=; b=r6A4cG1Ua7kqXPTkvuUMyt4zC5shHeJNIwdk55rteisp3D6s3iFImnp6IESWfzLlgh xXQVDTH1nP2KcA3r2E8QbvZ2On/5uJQo27Abhl+xIDEJHHdAMdVL1cNUcqC32yHwdCK/ Mna+c2zffFn1ZuFUmgIr/k7jfzLNjuQ/dUcRyPyPra66SECkiNl9I7baXlZaH1Jf5/Zb dAA3gaF4IPodEJWo+XOjD2UkViPbr6uEsqiV0T23xD0fD7l16GHsK6dt72G6e/DY2TZd vFjWyhYSTsyl3Kcb8DWUhNk4xFedJoV033K4Pgm+wOh14jAybTYd74T30TanGi94+YLe iyfA== X-Forwarded-Encrypted: i=1; AFNElJ+S3lVgA3j7FBOxw4lucoQln6DdFXnZdHsrezMC5aqrwqLgd8PO1SWAajyPW2rdwaDc7fZW1Q4vKb72WLM=@vger.kernel.org X-Gm-Message-State: AOJu0Yx47tJdafQoKR0f1ergMTsW9Gvdn/QH977u58+IBA7I650yrC11 Un5nfE9hfvwEQNRbh/H26AiyEcux6gMaDwA4ddSHXc5CEkJi8JntGS6GS4EcN1pbBu8= X-Gm-Gg: Acq92OHezzP53V0DcqLIlYBCCEWSYr/FZij5X61sWBli0N5K0FjeX6baQLivFZpf4o6 kDGaR8KPbvpdcjExVO+eCjRNCyxN9kgvfvXq95bHiMHraIrtmLh9gL9/frPk7PoAuGgyGDZibTO SoeoXtZbV8r0HGhu9ZjY7vR9CV0iawKEQGL8sAlODCNOrM3y6COPc2EV0Do9gCVFnNxQk3ACIkP fiQoUY4DlE3j61ItfEwFKv1vfK0Nk6bL855DePF4r269CiFnETj/6Jp8XB6aOMZjauB9RytFxIm rzWDH3IlFhzOfHLb/AxY9oLEhNmz2Og/i0ZZVsaN/QR+4v8clB19egp6IiJ8UZezynRb0Pm5eQb lDwyX11G8JZLIGxgsnNG2EJK+2FFOpRP8qrH9TYnTNHh2l7FYXu5AikPQXoK/5uVFlUTwweWmgC FP6HWfe7PwmvBUVlj8QeHliUyR4BnscM7IkSq2qFHcI5iBTjHC/L3eVpq0q645i1Rfw0MXYupFt G6lUnKUv69L06s= X-Received: by 2002:a17:90b:38c3:b0:364:a6a4:596e with SMTP id 98e67ed59e1d1-365ac775a97mr9947878a91.24.1778184325521; Thu, 07 May 2026 13:05:25 -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 41be03b00d2f7-c8263ff29c2sm443200a12.12.2026.05.07.13.05.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 13:05:25 -0700 (PDT) From: "William A. Kennington III" Date: Thu, 07 May 2026 20:05:17 +0000 Subject: [PATCH v4 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: <20260507-dw-i2c-v4-3-9a447b23bfdf@wkennington.com> References: <20260507-dw-i2c-v4-0-9a447b23bfdf@wkennington.com> In-Reply-To: <20260507-dw-i2c-v4-0-9a447b23bfdf@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 master requests during system shutdown. Signed-off-by: William A. Kennington III --- 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 11:22:00 2026 Received: from mail-pg1-f173.google.com (mail-pg1-f173.google.com [209.85.215.173]) (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 2FCFE365A18 for ; Thu, 7 May 2026 20:05:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778184328; cv=none; b=gAHXk3Bc4BI9PZWhfAIhyR0bkCo8q+tAhVG+AyOnyqQBk91sVZJo5UMyHVtoazaofnWU0Lv38DD5qfNEdqBAJpk6uShWod9K3LgoOrEWqJN5+lKwLSrS4tqF8EpJnpTnWUOxzQqU11suAp4o4LyJP+E/iLeVjGZNWOSvRGF0rn8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778184328; c=relaxed/simple; bh=dWw2eeSEN5euvjVJ3wXeI34saYGcPcQNp2hNwJvzVPY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=toIPxge/KqAeAen8hYp6YEIBRbgp+whqkWgbm4W8BDmBQIC9NaffLeguEJCy2gxsWLGpQTH4OCnbkp1V14G/9AuN1choLMFS6AARaaH7SHs0A2tMdp3YpK2L9rwRh/rDKcozTC+/V3N1fKhUC802yit+4mMvO7ENTSOuOpOdSm4= 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=KUiE9X5C; arc=none smtp.client-ip=209.85.215.173 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="KUiE9X5C" Received: by mail-pg1-f173.google.com with SMTP id 41be03b00d2f7-c70ea5e9e9dso538848a12.1 for ; Thu, 07 May 2026 13:05:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1778184326; x=1778789126; 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=oC1FmSZRpBHqB8kjyzbhzh5I8FZEHW+KmWxwvZd/drI=; b=KUiE9X5C+Jsx1BuO3PudTjxQ+N7CuINFeFaZ+jBIj9A4Uz6gTWDQ+sdmDxoks7LXW8 fv8e6oZWEg+n5V9xsTyDuyVcuVlf3QaImRLRhv3uoi7VShE98MKNnZX2y8HblsUzXm4+ /AcHAvu2nl93+8gf8KwXdnh6tVegD3qSOAPftaWulUeAZBFhyOua9mzkTqe7nnAp8iyI p9gh3iLttdJi59IxztlQCoEpXj7V0trALNFk4c+8+2P+W+Dqg8t0PihjhPTFkIqYY0mm 684cv+IEnIYcu93G2akwtk7ddBjemL+vGQs0RuVOOYaPJsjcqANBI05JegBK4OCPXQw7 DdhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778184326; x=1778789126; 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=oC1FmSZRpBHqB8kjyzbhzh5I8FZEHW+KmWxwvZd/drI=; b=oNMQHml8CTUv7HKjYMAKCdxevNnaJqB6p7VGl0/feNpkr9C8cioFe3M8jmGvzQ837d y8kORANEfTgncueuWJ7dTO9IHvGqpSFGM/i/1Vhgd5a5KDxcYebjo5joZV9fcw+s4lZ2 T8Wnh4gz9ZYN+j4RSv8E1LahSL3gWRc4MffZpPFnez/Lekhx2Rk3XVCm4tifuTWZxQe3 ZFau+T1A6yhs2oPAQk491aElZmFu0t8/5+lL7nPrCHCIi1xIBIv34xAPdEtZZdP1v2l9 yZuZcKUnX9DT0JigUDGrFK9PDMrrDNRGk3mtNwpUzgaD7t4x1k/ng+XM3VjeBdICJY2j eAOw== X-Forwarded-Encrypted: i=1; AFNElJ+asIlTdZjZ1HCyrZ2E0k5VakLEdl0Lz3YhaytduyB5wGIVQKUdnCb7oNAl4Eq+Br/k7WDz84aPUF0gMew=@vger.kernel.org X-Gm-Message-State: AOJu0YzAp0yuq3qp7LvTRtXxemqoMoX+SASnW7UeQikBHHh9PT3qkEqz 1LdbI+F2F6T71cX8hP/ZSZxc+SFegvSFgKV6jiTHUKKkUouaPTSIv3A1o2cXPG69LR0= X-Gm-Gg: AeBDieuwIDeNyJ1WjqBhl730mM28ICKvL8q4XYislmt9O+mDGsrPuC2Z5xZ+eWYDttC wAmsu1nfr7iYMjLLzuh6ywsdstFVJguthcCdlAteBqYO+H2Iik8wvd94jMjONxQDS+gTCqJlBcP P8hNE4wSg4nrR6mGVaBCn8xVIirp/bFsfomXjZmfc4fXPNl/HdnMcnM3Hac5oU7Fhj2U1hO6UFi 0W+WhgmKIZpnd1SjCuJuV3NJk6DVl43uLh+Y6b5JQ0OxbyW+89J/VNr68W4jUaRZ7s4fgCzZEor niSO7upMdTYL9p2GOhomRi3+crb9RloptbT6GFHhTtVlqXcrJErx5rPK6UUKmv9PnuZbm+kFgnO 4kfozrUEb7vYsmWZgCtP7XhVmLHAtlheNL3xoQaqIdZHq3AO2JQmgOIe7xeWoIuxTX6noj0ojQt YQNwmHwvD87illlRkI8dd7MU1bMWk8GIjQpH9MEZfSNQcuo6kWHYKjcZKqTR4joWrwKv2csguw5 3njXd9YwfPrVHs= X-Received: by 2002:a05:6a21:99a9:b0:39b:e321:67ea with SMTP id adf61e73a8af0-3aa5ab855bemr9904536637.45.1778184326443; Thu, 07 May 2026 13:05:26 -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 41be03b00d2f7-c8263ff29c2sm443200a12.12.2026.05.07.13.05.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 13:05:26 -0700 (PDT) From: "William A. Kennington III" Date: Thu, 07 May 2026 20:05:18 +0000 Subject: [PATCH v4 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: <20260507-dw-i2c-v4-4-9a447b23bfdf@wkennington.com> References: <20260507-dw-i2c-v4-0-9a447b23bfdf@wkennington.com> In-Reply-To: <20260507-dw-i2c-v4-0-9a447b23bfdf@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 --- 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 886f4dad166a..cf5feed269bd 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