From nobody Mon Jun 8 17:38:44 2026 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (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 4DA823B2FF9 for ; Wed, 27 May 2026 20:10:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779912616; cv=none; b=fQnHFAAAYkKwlSFLN78dpk5XYgaMPncF5l+U8GdRGRPiOPkkr2yyGh3OsA2IL9UnJWPBKGu1n1awPb0uebUs0b+U2iu6Qm5NT2M/24QiDLUH5Hc/EHuFMBtNWYTHD3C7iIbT8Kyg1rU0z5S47GTJqtnexHSAA7hedafZO0Q/k9o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779912616; c=relaxed/simple; bh=BR2iveUU1nhkZu5eEnbrvTBIk+kDYBBkoMkU+yko3V8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f7B6QRMZgVFJ72vAQfAnmSHshlUCNu2vfD1xS0TBju/ohg0PREYAHqHTXFFhotW5yXXdgUBb8xjwRuVNEVZ2/pZ22Th8PZfbZsju0Xjg8zXME7LwEgyPSUiiaBQYwL8un5qKngShFT4t4ckqwT0UncDOT5UIfoPK0S3Revy3zM8= 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=gTy3LY9m; arc=none smtp.client-ip=209.85.216.41 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="gTy3LY9m" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-36ac67f489aso2823415a91.0 for ; Wed, 27 May 2026 13:10:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1779912614; x=1780517414; 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=OikO7LECaMFgoDK/X1/jiTfHTUrsVlBaCWwcQEZ7NcE=; b=gTy3LY9mavWfUMpicUKxDyRJfte3wm2AevvpArNVRNeZPn0LIbQnoBLBncu/TmvcZ9 8pwSCr9A25LVYzAItCIK+1M62L9+Je7uoL8aVTokivVmwwbCtdlh6CCtdnZExx4+O+nE 4oO3RUXpuQ+FEvq7CaNlVFzHSAU0LIEwUuQkEnHPAWQHnmc8dIieaH4sDPQuua/8mo6P /tzR4omWuIsebc1QhOaAcihPWvO6/SHLUjXqsjZTv9gNaULDUYHaVWfKBpzgcyTmhrwc 9PiK+4QEDmN36mnAUkB9Vmohwmhv9xgjkSAOS8N89FeNnpY8qz+ERZafKSZbkqxK9Y+4 qpjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779912614; x=1780517414; 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=OikO7LECaMFgoDK/X1/jiTfHTUrsVlBaCWwcQEZ7NcE=; b=NM+O6HuDn4yVlRNwstb5UVd+11NhLkkkZ1k2mXFefO8BzKgVq7p+a0+O5QWE4Fs8WZ CuzvsjNvGTOdvsSJ4aivmIv3qM73xwAkSjT0xvCDZ+GmEKsg5VBbyjFu8AH8VCKxrRZI ifkisk61YRf+flUB7gL/zv5xLEjSGUKhTXLgGqQ8WuQ2f+NJoyB8IVn3q0qKZNYQScEj 3bkms6jQokD22e0z23k+O3X80iwbMF89bxyROhyeEBqfq6isMPbMHiO0yGvGfO4S7zN+ jfSagHOJhtMfAWPiEZFyN32kYF2BSjYmQFi0LqizILcgdSgfSofmmqB8oxfGe6Rtp+fr 2Ucw== X-Forwarded-Encrypted: i=1; AFNElJ8E2CoFDaX2oPwfIJTb8H5f+8Y9muzy9ZJWNKOgitwhol2DmJFGHs1eXCzjDexjExXwrxRB1eZ87dWQ0Ec=@vger.kernel.org X-Gm-Message-State: AOJu0YwlnYNuxwSHOdN8xfxrIoG0oKoBuVc7YhJqhbiOWtYV9GwusXxl 7DRc6Qr18CiBPmrBowR/a7qg7+6Nw2YeHav4J3zKSBCF7O0VBpQXmXA4K6HgeMS+fWlgL5SHaWn QL6E/Gtw= X-Gm-Gg: Acq92OHlThkLr8hKrkIk9qtQT23SZ83q7m5oQziHa5sfkk2MJ10y6/NiWYfR1mrUBkW ACggwdPSZanqF/ST5qZfVUb2uQBEAwpT0KtYb3rNvosQOeNizx0fnRVaF1mI8XQphJ6dajksl0V jOCd7ngiO2na5jTzeXr0UVNGex0Pop/Qn5UxgmR/P65Omr5elN9xw9N1jptGGyatYpG7ZGWU6yG wClOmr/RkEOaJzvWqJkoinAY7B2NGtFob3ue7uOGAOWM5SYMUF3AWlnlFogscErB/LOOaBJBmJG qnLa2NCtNLFRubz4kUPBnKyCLojXoPEB5Wd9TO10bXEPUQrcphDzhacA0SyoCgUkwvNc5l+i7BD V3+LhwtybabGAY6mZkXWGMBtiraKEYCxxaJOQvcTBAwJkbho2Iro4aLIej4SUjO6kLhxrVSrDOv tY0bicQRVYMvOXTLQgMSNkOHApC1Ydmtf2BfsGNupCoA0TlS1rbsimtvFXwJdIvTgqXdr4Sgvy0 TbV6G/yKvMCf6x6ZxYYjGg= X-Received: by 2002:a17:90b:4a89:b0:36a:8254:8eb1 with SMTP id 98e67ed59e1d1-36a82549048mr15765525a91.6.1779912613626; Wed, 27 May 2026 13:10:13 -0700 (PDT) Received: from wakbuild.c.googlers.com (27.117.125.34.bc.googleusercontent.com. [34.125.117.27]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36a71d9416csm21875253a91.3.2026.05.27.13.10.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 May 2026 13:10:13 -0700 (PDT) From: "William A. Kennington III" Date: Wed, 27 May 2026 20:09:49 +0000 Subject: [PATCH RESEND 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: <20260527-dw-i2c-v5-1-3483057f8d67@wkennington.com> References: <20260527-dw-i2c-v5-0-3483057f8d67@wkennington.com> In-Reply-To: <20260527-dw-i2c-v5-0-3483057f8d67@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.794.g4f17f83d09-goog From nobody Mon Jun 8 17:38:44 2026 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 15FF93B4EA1 for ; Wed, 27 May 2026 20:10:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779912616; cv=none; b=r030rr1Pfa8XLuZpt6oCNjLNPGCylolx6wXf7V3eLuSdprWuxiVwCchW+BcMvxxX7skclkpw+a85w508jqL+7yVyLyDZBX9zSn3LQa8C16TDUYRnHAkCNy4LS8noCb36kD3b4lnp8Ixqxymj+IJVQh8y5b2u21haaNbNNbHtftU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779912616; c=relaxed/simple; bh=wNDplq0YqnffOYbsYnOSFvRKdTxylDnq3Hrxa4ha8LY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A80ll/qn+V2LH5B42WEyRXPa0XtMyZQxZDvQ4l/gdd8N+g/LpFgdOCFx2rK2y8m9+4MOmyCchWxImEImCvpNY9xSqAhO6K+JFWu+41ijqUiu6jesy91fj7Y7HGk6UcFOUswnyGF6D59uKO50UtQYnJhuuAn7Nvqo4+yaB5XwaqQ= 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=rZkX2wPw; arc=none smtp.client-ip=209.85.216.46 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="rZkX2wPw" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-367d88b9940so8020540a91.1 for ; Wed, 27 May 2026 13:10:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1779912614; x=1780517414; 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=yowAEUOtQuzWZAIQXcwy3+wvBYyr2OnsXsvl8HFebjU=; b=rZkX2wPw4vAevc2XwSDSvI5s+W5yY9N2awJJB263B/9kRhqrMqhPyTca4i8D9KDWCx GnA3eJtaxJbMPiClAtifMa2Tr3BaWrZ/OqPc17U12o+Ub+eDvadzCnOe47E8pIfSSxWY OdxHL87HNhh6RlohcAyXiK59gCTXGOqmY+2/tmg1m1o2gD6lYG3wJxONN6KpKLelhOWv hjgamoGKDPdh1ndTEkpEcBABlVD/0P26ZIoo7sGRBdbdhGKNb9Ge3z7KboM+VuHZ2IN2 wPV1P2mn6D/rk3Ihm9exN+DBBgSo6LMfo+Ili1hNenVeUOWi5oCGuwOeD3ra3pCT6RqP jtaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779912614; x=1780517414; 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=yowAEUOtQuzWZAIQXcwy3+wvBYyr2OnsXsvl8HFebjU=; b=hCdAv7DXWpveKs1YoCYOECTZKYQW7MOLatLAJjkHkTVEDtE1p8zWlKWfR/wT46k1Qq dirClicOgWLzj0fU0aj1d7ygWaRjzXNwcAqMG/0QBCRpDMNt9pkXFV9aO3hylWU+YC+d oFO9ghZ+0pz7H5LYN6hJkEM+w5StlQJzb+oTDn9DGq+lh7mY8t5p0Si4oeXTJdOXb6Y9 nGqOlz++2HKWA1EDcvMXY2NJmSxyhBrHqskD4pL9uTauyTR61kuMLM86QSq+BGRs42Cm bTCM9epViDbrOe4RmZGw5gBH5pYllmxpAM8CWAjgGZOVCmL5URcrK4hZ+ip5OfgG1kDv YgtQ== X-Forwarded-Encrypted: i=1; AFNElJ9jbqMinjZhl6yJTCisUrUNl2EDc+tsgmGBVvntwbQfLiZUD+5843W1nQT2vRYcaHVSr2aHLR9D/6jb2G0=@vger.kernel.org X-Gm-Message-State: AOJu0YxfpAtvJFHTNzm1wT+YWt+jw6zfSsTL/EliwmJ4ncNZHpPK5o0+ xoOfA7/5c40VdkvlbHl4mG01XlxRJpPvSbSIBrq3uL06ypsMzGQY0KqPMyz8auQTVEydJS0PN3p ZBbARnMQHCA== X-Gm-Gg: Acq92OHRRbMsdSNjZwJRbtajLx5XFNyNHF01sVQIFCkarqi/4iloGEWUG6NAs2MDd4d eLDXl3/KWn+2wMQB77b6EneXMAvPid0V5erP7UqPOEtEDUDYu+Xec2VGWjtnF8i1JMx0Y4/tGiV JtAPK6n0Agtn/aGd4l76cYmAf/HK24GtzvPmL5RcSEJ5NUsZUZcMIvvZqTFGT6Sjrg0NO1oX+B9 N3reFd24slVIlX6HDclkXEmMbIxCPi1ZBQhpIW+++JLmDbB624MuHFHX+yVsF8GbpLWL7TWZ89W Z+1YMW0F4Mh/SuJC76SLVP/C4nujANqxztSO9/dl4sNF8jaeV90PGV4QJdKkb5NhOGO5id6Jkl2 9xPVn3dX8zIxt0VNEF3uE9PSfpikakwB9cqdfxemX8+Nt58qkVYLx8+1jRKk83Aym4AQPoOMVuM ECidgRNWqASkWiTk32iOwFJfWVxNRHOEIAAHK1ucLebQdgkgjRWpUevSDx8N452X+PsNPJ6pf81 p7O+THdR1J6+RBC9eE5uGo= X-Received: by 2002:a17:90b:5863:b0:366:479e:63a5 with SMTP id 98e67ed59e1d1-36a676f5008mr20487157a91.2.1779912614533; Wed, 27 May 2026 13:10:14 -0700 (PDT) Received: from wakbuild.c.googlers.com (27.117.125.34.bc.googleusercontent.com. [34.125.117.27]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36a71d9416csm21875253a91.3.2026.05.27.13.10.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 May 2026 13:10:14 -0700 (PDT) From: "William A. Kennington III" Date: Wed, 27 May 2026 20:09:50 +0000 Subject: [PATCH RESEND 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: <20260527-dw-i2c-v5-2-3483057f8d67@wkennington.com> References: <20260527-dw-i2c-v5-0-3483057f8d67@wkennington.com> In-Reply-To: <20260527-dw-i2c-v5-0-3483057f8d67@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.794.g4f17f83d09-goog From nobody Mon Jun 8 17:38:44 2026 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 CE92A3B5DE9 for ; Wed, 27 May 2026 20:10:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779912617; cv=none; b=bBYKp6/FzEnIG0Oh49wR+5Ec+VetdbDUt6A9ykWaiLIsxy9QP4uaPHks+i/yQhSYurH+Nl+wj3FcVzOWuQWaa6LNSWPEf/vlDJWdQP5ZSTWaOvxZb9Eh6hfbJLV/3R+3rRVud2STCXymkbo07ASwYCq8dDHD0rxTEFwF+BMyboI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779912617; c=relaxed/simple; bh=znQoNKFpKH+T9cooha3b3mPmhi78mBH5UqoBp7OvjfU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NZ/eOui/sT0ls9RLd4UeOFJAEXUn9kEbCabAhhUNJeujH83bmzkILF8jA8/6mRmJaNhz+myXslQ8HcNZ0g2f7UNBn0wxtUimRnlkf9ELC2Usbg67L3If3IvqnWJZeD+gDcS6FoBllTvtvj8QGN9Wg9Qgq+nXvlZSEzo9rh2hwDo= 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=VpHmx4Dt; arc=none smtp.client-ip=209.85.216.46 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="VpHmx4Dt" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-3665a90bcd3so12971895a91.1 for ; Wed, 27 May 2026 13:10:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1779912615; x=1780517415; 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=yJYlGop0TKEOKbzHRXHcyUDP0UgfdalyI8xtfUez22k=; b=VpHmx4DtHTGT53WkPw3KLtYau67nTgaoqKB8VbYXU0nIxCXB9G45C4dy95ykBFiqtt bpiB4xtPH31CcA7ckS/8E5MdGAMXrTZxQZMurc+c1JFnNevmsabFdMyb/f1yxWA9j4Qz u7izjEed2FXXSOaY03xyd1dj+boiYCRShJ+2w10PRLNTYHT3jXoCJf21DG3WpFpM03fK pgnkQJDVlIbZQSN3v/r2uM7n3wTyTJ3caNXISTAFOKFExQlp2OU66lFG5dLnLXWr3b7f xvGri7MPbtoKTIQDP8z5I9XIwVSijrmEl9LawNJGsIO2K5wySmIIh9eP2GAyJRqbgqjQ oCjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779912615; x=1780517415; 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=yJYlGop0TKEOKbzHRXHcyUDP0UgfdalyI8xtfUez22k=; b=bFJSeli2mgLTTLQEKy2KIug2JJ61JyZzFpyQxEPDsv40hVlGNGyTi6Zk8kxNDMhcFu rXVrb8BBmmuFDWWaaAUuIPT3uVYyWEdQC7RgrjCrNBNW/FbpEDH6dYyaPKbwiQYY0rRa dw8DDQPUbJ1TXNSThDdmcKyzn3RQgNm4XMwH6ov342rl/iSpzPrl1JtW8EOBGaHkQiRy fpRMV5UWuisEqED/j72XcNXdRKKlDjSBIvWrj9NNW1LEc0h1LECCYxMN8X0UdAc46PhG XLnYrBjxL3YL2WfniEVFEF98mx+8Wi3Wwa6Se5nnE9fcOkBG+0kQe89dG0FeaYW8OMcb gAUg== X-Forwarded-Encrypted: i=1; AFNElJ/+8gJKPKeYguVzf8o0y1Eaq2OZIAEVsw79rzw9D4oJqVM9FZRh4WIR0dj5qooE+lXygfyVYpOSUYSdtr4=@vger.kernel.org X-Gm-Message-State: AOJu0Yx7v9tLtZgE5GmzFjqh6cJVvXXUvA3pSM+uh8Sbx294rXbiqqHC GUEyEBEVgTV3ydhQSnPyaOLzrxxXMXKU399j50p4nwyaKDppsV1bNdbRF2t3Xi/8kz8OOxuXoqQ TvxNkV6Ul3Q== X-Gm-Gg: Acq92OE3Sn7dT9UQfts5gyP/sNvW4Vir7Wcp+BpEso3BLOqVO272V/AEdRMMuqwEevv f7rfRaAv76ZtmbDfGW+F/Zd2fpsUAADSyZmo678wwRpOloWIPDVtJ4mpVWZPICsMZ48enAUcM2+ gTZz5CBva9tlMoa7E4EHuhd6nfzvi7bC4iy1jX+OjumMEcyD258eIg1ArJsbUS8LQlAKMPMIXTR O12ed1J48SydCwYnzwwlQNpWtBiCgMY0OkJKNEJWo66GsIgHml1Wb3RUl3r6uIcUesWAVqub9yM j21gToFAx+fNjR844IWv4xPaKjKiSZ782HV7eyE7T1/7SPyh1p6q/N41F/64bqkvw3euum3FgnA qAN/qqJAZT0hsJB2vrClzShcyXzhLsUv9hz90BvtnymDtGQs0ScVye6+rfHk8oS4DB6SFtygcUU ZfUKktUUya+KGVDekHq82iUW6gWBRpv9Ak+Nmc/8L/08yB98EpknRB0xqsaBsZJbq30uKjm++eA PJ/+h1o0CGeoFezMa4wURQeJ084JDfKog== X-Received: by 2002:a17:90b:4986:b0:36a:f623:83a4 with SMTP id 98e67ed59e1d1-36af6238686mr10835710a91.26.1779912615387; Wed, 27 May 2026 13:10:15 -0700 (PDT) Received: from wakbuild.c.googlers.com (27.117.125.34.bc.googleusercontent.com. [34.125.117.27]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36a71d9416csm21875253a91.3.2026.05.27.13.10.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 May 2026 13:10:15 -0700 (PDT) From: "William A. Kennington III" Date: Wed, 27 May 2026 20:09:51 +0000 Subject: [PATCH RESEND 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: <20260527-dw-i2c-v5-3-3483057f8d67@wkennington.com> References: <20260527-dw-i2c-v5-0-3483057f8d67@wkennington.com> In-Reply-To: <20260527-dw-i2c-v5-0-3483057f8d67@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.794.g4f17f83d09-goog From nobody Mon Jun 8 17:38:44 2026 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (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 10ACC3B6BF1 for ; Wed, 27 May 2026 20:10:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779912618; cv=none; b=rDSKOJMTYCX07Ffm2oyyZkGBD3L/qgaKHCkXo1RGU+DgX3LVaxTiq8+qPM4mb+FVmiszrjs5zlByShM0dmDLkxu7hIaDbHXYVGVnGU73o3H5jlQTOwYocE3ZARhb3r4xEIrpMNNMmYp/leztRyhteNZzNwHW+A1x8xqqzKl7lqA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779912618; c=relaxed/simple; bh=gLLA3yyHeohOG2GTebtGSeCoVbwDGh3LRV+lAp+ifus=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Vj1k4Yb7rNOhj03bO6ew5a9FFKt1zhcSj18q7OAP/nMjl19AYHjigxPzzzzMtpVGQVnuQFg8yS1LOhB9moiYImSkVplD7BpljsAnvL1GS5zpQfs7pVM3/hVJade4HK4/hBFdYvqk2J9EZIoT5AoEtGanPTOFjYF+3YndaOP+DOk= 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=RAVHXciU; arc=none smtp.client-ip=209.85.216.41 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="RAVHXciU" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-3665a90bcd3so12971910a91.1 for ; Wed, 27 May 2026 13:10:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wkennington-com.20251104.gappssmtp.com; s=20251104; t=1779912616; x=1780517416; 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=GMbCijtkQtm47ZP7cdCWnRygezzmp+zq/74mENw1x54=; b=RAVHXciUfUq/r/RAgBJdyhM7nrO+8tHloSJOAak+jn2SkVO8Z8knegn8iodVycpva+ ADGXGjP965deWfdB8rknCZYtpSkGr5w9YQFyL+6F88pJjsVkjCAogu/WraeeW910GJLq QDrlmVvmvI6imIPdTFNL0ol+VP86BliOCYlNidQQ9NAi+ZDQlDcNCkxyZguIKMcweT+6 CodtS0qIu8guZxo4MTHpPOx8MRUbMx45NHzCB0jrB3ctvcWGDKgUoHoBV3bOzxYp9Pw5 0yi+cXVc6l3G5/yIFvtXhXS7P+33+L2jD25802nZa0szJ2O/6Oo4FKF1zAAheLrELayz 4THw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779912616; x=1780517416; 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=GMbCijtkQtm47ZP7cdCWnRygezzmp+zq/74mENw1x54=; b=qQe+LHGWncgG8WK+UCqjiDROWm5BVo+7BcEHjiGBymGa0NhTJ4RDEfQ4HeSWsnv6MK +ALGCo7L3TZYg8YGNIWYoy3kbyq8kNAN+jizyuxGexeTQTSzC4HL0rJ1MyQGr9/qZJVH 4icLd/MNAxRG6FxcQzxRdqSisiwbvtboF24uk3pZuO4B5CPSRLBIaBMQyK7aO+6qR9P3 ZN30CE8Pwen+ZIIaiJ1Rlns8F0DX3weTtzbOdg7DEy/h/deyAeQ88G/tZwykJg65dV+z +nb704tzuwkU1qzmu6wCrp0ceMyyHnCHz8jbo83SPhDFpHlFc+S4QDSdJs6hFP1SuaJJ 0f8Q== X-Forwarded-Encrypted: i=1; AFNElJ8iTSDzIbWawRZrAQH3MeSPkrpnHxJfbAoCeBgpPeSvaRnkMI5N15Q0Lv7gJJSQ7M/POqBn5A9zVAr2k44=@vger.kernel.org X-Gm-Message-State: AOJu0Yxd6ld0Q1tF5VWFO9MmPqtGiM8Cv3b6f768TzTc26evnwKgNKvd K7jK+bcn/MYFV6GTqRWBQgXmjboNaFzBm6nmvpvfgE1xbZPWF26iZbJEnwVCvPZNj/+mRz+OI/1 gBlQ9s8vcbg== X-Gm-Gg: Acq92OGI/gQKQac0nja0zW3gM20MupRXyXQyq8UpQihGx1wumF2+jhMF/VD2PuCFH8q bmGb4ckiaYgwbFbEo4JPor8n8/GjymTfurSA+v6BLVlApTub27alG2KXLtA/tC4xMmPuIA6UQ4b M0xY3pZsKo58aiV3Zj7I9GjLz/d3E2HOuwyeet/pUgmRv8ZSkPPqUbUHg1pPI8Szip6gAABjh3x sdVWxq2RKMo52isQ3cXTBD1HuvRInv4zNaLfBk1r0RaBFF3Unb1hUAfhGY91d3lgeyFSBw4IsJi LPAHLLMm8P8M22n1l8+FXVYHje6RCH2YV/D34KWh2P5T9gdd1NozcMN9Fca8zctIRUFxvW961KM KonwKCQZoKZP6IqKTa0+qVUDw5bD6ucF77ZfjunC1Fhqlzv4lcPAexABhBb6qCQNaHwaysrChLl yo/bnKVsQgdV34LAk80hFMPuzDWDOTf0BP9hRE3L0Obz3lrAa+7r8yvDueiSKeHDRA+TNT3nSSw c+svyrWVH+fy1O0Bp6mnPk= X-Received: by 2002:a17:90a:c88d:b0:369:73a:326a with SMTP id 98e67ed59e1d1-36a6760034amr24042873a91.13.1779912616350; Wed, 27 May 2026 13:10:16 -0700 (PDT) Received: from wakbuild.c.googlers.com (27.117.125.34.bc.googleusercontent.com. [34.125.117.27]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36a71d9416csm21875253a91.3.2026.05.27.13.10.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 May 2026 13:10:15 -0700 (PDT) From: "William A. Kennington III" Date: Wed, 27 May 2026 20:09:52 +0000 Subject: [PATCH RESEND 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: <20260527-dw-i2c-v5-4-3483057f8d67@wkennington.com> References: <20260527-dw-i2c-v5-0-3483057f8d67@wkennington.com> In-Reply-To: <20260527-dw-i2c-v5-0-3483057f8d67@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.794.g4f17f83d09-goog