From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (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 D28BB414DD5 for ; Mon, 13 Jul 2026 13:05:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947954; cv=none; b=gKIvvTvBVU4zpn7Jy3u9f0C+jlqVzXVciDyzaBBFmOdJzu0V3C9xaEXQLdpaT78AzHmIjtih67y9fxO40JQu2LQbcPlfQzEPjAfmYSVivLJa6AZ/8dA5+fe12mIz8sYpt7Ie+snVuPnQHORPp9T/WbPYqFMtYRwPOSIGgU2NQOA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947954; c=relaxed/simple; bh=vpQtCTf9lK6ZUysGw0BojPKDiQ0w5G9QuaCqYXbcuJ4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KdXW0cQtO2SFNPfiqMpQdqmw3YBT/vou5sUU9WOwi+sINEDHEoZ4pB03oraU7ikh8BaOo0DapomWFYjuhhmM38P3THQq7N3/ebFFXnWGKOlPXyuitHX6THQz2+Lwg01nQ3xC+oXqiJPhWWMnCOxcvHsMrk1HAUSIngnd+SpAgNM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=kVcUtVWq; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="kVcUtVWq" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-47defd0c1c5so2058539f8f.3 for ; Mon, 13 Jul 2026 06:05:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947951; x=1784552751; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=vIEzViZhXjAraDf7Ayi3/ThvikdI1szu91oMmQWBOX0=; b=kVcUtVWqz4+2IYUTZRLOGopB2MOTMQJPnoo5pwatZXPEny6WksWCXuDWM9aurECGwr 4SVCXoMD61wDQwd7KyTwQoFm79BQ2AULGwVr29FajrFUNCJJK+e8Rw+IeuHcYiWdcjuW McwUVRrE1mfjgwgqigAdN2kZdweCtmxYxhbCSzHXAo/G0NEqJcy8fW3blJ4v2tJLf46f y7DTdguH+8h8QZrvLjOe5wZRoUEp60DEsTMSsOIWMKWNamw3IrS1PBbl2WCaFk/gtc2i gmdyU/AFhvNOHoG31bpBOs5Qp0VIf99Nby4+0D7HjeoeADP7mz9geU4wuCWdBk6LC1Sw k45Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947951; x=1784552751; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=vIEzViZhXjAraDf7Ayi3/ThvikdI1szu91oMmQWBOX0=; b=i/r8csRHb5ggyWImS6zfp5gty2gSxsjf1ybj3qEMniG+6rNUzcXegDZQFAaA999hUM 3SZG9F1tLy7wPd44MnSGn9l4SjdZAAxOIp7LW1tCP7jir/XeqPi0hiEHZylx8txCSb9+ YGp1wCsBiJGVRoXrox3fx9hCR12Fw02QZkx1Tr9Q+I5kFkseVUhkFnFbkF4h5OH1362O Q6RvK4eAlXpgQ8mqnXzQeDa4YVczI0M9f01QKV0xhZQxVJpFT3aGs88EV0D47EUOBT4S B+x57NGLn3JOgQS4m1O/MAUzhwULogTdSS9z4/DZZd9VbQUVWSoL6B5osNMZ4M7CZOes xz/g== X-Forwarded-Encrypted: i=1; AHgh+Rr2JZWhyWj89HJaJ1SFxKXPoqNsPAEl+fdblrdlVX4LyBAEZVDRufPtr9stQPSZGwko+AKbiToY4uLLnfs=@vger.kernel.org X-Gm-Message-State: AOJu0YxlvlrRsXjcuJBVlMH6rVRHU/h/oXFdxc9R8cpeGgVVEFog1AEW W3pKUdbj7CZaRJmkzNRTltQ2SWX4C0FMy/rQZ46Jacys/lkvv+4ahkjI0BUpZOPpT9s= X-Gm-Gg: AfdE7clLdgKzyh4/R670I/NGHiFgbADDrYGxUlfEuzncARUXVvWd2F13HyRa3IreD6L xsgNlCRBPVyMEpKYG5WPUGJNBC6o9c3ltngTA5u4pMuyL2evIguUtzEue3ZQBLgrnl1yRu80xpF /NR05JCTn6B6E9OIsrt3aJeZQmD7NwP8exwsm69SUycFcxe3RpJdkOCjsa+7JikV+pTMT2tz0h8 U0u+vWOFiYGkqBqrkQOF6UgQOyzVg9EVgHeEU5eb+WRO0lU0GaIaa3b7CC/fzn6LDTzvlWDoHVn 0HOWUjJOge2Rcz69yDALUv5CIcwncaMwpy0UsbvGmpkgueeLUzzgXv+hKSxJhxR3FhnLitHv+7D MKtUcbOwEwjYDE/HMCT8bXg2hG5UYktJioDVrlSnT5RL2B7s+xewS1ieOs3S+0f1gEePMA4wWqI FXnreQhpaYP/ube8KQbF0xStpryqHP5LNgXqe8gqFB1VK91I7ifFyz3UlI27tfp4NoubkicU4= X-Received: by 2002:a05:6000:2902:b0:473:1ccc:15bf with SMTP id ffacd0b85a97d-47f2dce2fcemr10893103f8f.42.1783947951174; Mon, 13 Jul 2026 06:05:51 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.05.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:05:50 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea , stable@vger.kernel.org Subject: [PATCH v5 01/17] i3c: renesas: Check that the transfer is valid before accessing it Date: Mon, 13 Jul 2026 16:05:29 +0300 Message-ID: <20260713130545.568657-2-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea The Renesas I3C driver uses an asynchronous model to transfer data. It prepares a struct renesas_i3c_xfer, enqueues it, and waits for completion. The interrupt handler dequeues the transfer, updates/uses it, and signals the waiting thread. If the completion times out, the waiting thread dequeues the transfer and free it. If an interrupt fires after that, the handler may access freed memory, leading to crashes. Check that the transfer is still valid before accessing it in the interrupt handler. With it clear any status flags and disable all the interrupts to avoid triggering the same interrupts again. Fixes: d028219a9f14 ("i3c: master: Add basic driver for the Renesas I3C con= troller") Cc: stable@vger.kernel.org Signed-off-by: Claudiu Beznea Reviewed-by: Frank Li Tested-by: Tommaso Merciai --- Changes in v5: - introduced renesas_i3c_irqs_mask_and_clear_locked() that keeps unified the IRQ mask and clean path - updated the patch description Changes in v4: - disable also the interrupts - dropped the Rb tag Changes in v3: - none Changes in v2: - clean the IRQ status bits before returning IRQ_HANDLED and adjusted the patch description to reflect this change - collected Frank's tag. Frank, please let me know if you consider I should drop your tag. Thanks! drivers/i3c/master/renesas-i3c.c | 52 +++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index f39c449922ca..38b8428f464c 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -433,6 +433,21 @@ static void renesas_i3c_enqueue_xfer(struct renesas_i3= c *i3c, struct renesas_i3c } } =20 +static void renesas_i3c_irqs_mask_and_clear_locked(struct renesas_i3c *i3c) +{ + /* Disable all the interrupts. */ + renesas_writel(i3c->regs, BIE, 0); + renesas_writel(i3c->regs, NTIE, 0); + + /* Clear normal transfer status flags. */ + renesas_writel(i3c->regs, NTST, 0); + + /* Clear bus status flags. */ + renesas_writel(i3c->regs, BST, 0); + /* Read back registers to confirm writes have fully propagated. */ + renesas_readl(i3c->regs, BST); +} + static void renesas_i3c_wait_xfer(struct renesas_i3c *i3c, struct renesas_= i3c_xfer *xfer) { unsigned long time_left; @@ -1014,6 +1029,11 @@ static irqreturn_t renesas_i3c_tx_isr(int irq, void = *data) =20 scoped_guard(spinlock, &i3c->xferqueue.lock) { xfer =3D i3c->xferqueue.cur; + if (!xfer) { + renesas_i3c_irqs_mask_and_clear_locked(i3c); + return IRQ_HANDLED; + } + cmd =3D xfer->cmds; =20 if (xfer->is_i2c_xfer) { @@ -1054,6 +1074,11 @@ static irqreturn_t renesas_i3c_resp_isr(int irq, voi= d *data) =20 scoped_guard(spinlock, &i3c->xferqueue.lock) { xfer =3D i3c->xferqueue.cur; + if (!xfer) { + renesas_i3c_irqs_mask_and_clear_locked(i3c); + return IRQ_HANDLED; + } + cmd =3D xfer->cmds; =20 /* Clear the Respone Queue Full status flag*/ @@ -1138,6 +1163,11 @@ static irqreturn_t renesas_i3c_tend_isr(int irq, voi= d *data) =20 scoped_guard(spinlock, &i3c->xferqueue.lock) { xfer =3D i3c->xferqueue.cur; + if (!xfer) { + renesas_i3c_irqs_mask_and_clear_locked(i3c); + return IRQ_HANDLED; + } + cmd =3D xfer->cmds; =20 if (xfer->is_i2c_xfer) { @@ -1184,6 +1214,11 @@ static irqreturn_t renesas_i3c_rx_isr(int irq, void = *data) =20 scoped_guard(spinlock, &i3c->xferqueue.lock) { xfer =3D i3c->xferqueue.cur; + if (!xfer) { + renesas_i3c_irqs_mask_and_clear_locked(i3c); + return IRQ_HANDLED; + } + cmd =3D xfer->cmds; =20 if (xfer->is_i2c_xfer) { @@ -1234,15 +1269,13 @@ static irqreturn_t renesas_i3c_stop_isr(int irq, vo= id *data) struct renesas_i3c_xfer *xfer; =20 scoped_guard(spinlock, &i3c->xferqueue.lock) { - xfer =3D i3c->xferqueue.cur; - - /* read back registers to confirm writes have fully propagated */ - renesas_writel(i3c->regs, BST, 0); - renesas_readl(i3c->regs, BST); - renesas_writel(i3c->regs, BIE, 0); - renesas_clear_bit(i3c->regs, NTST, NTST_TDBEF0 | NTST_RDBFF0); + renesas_i3c_irqs_mask_and_clear_locked(i3c); renesas_clear_bit(i3c->regs, SCSTRCTL, SCSTRCTL_RWE); =20 + xfer =3D i3c->xferqueue.cur; + if (!xfer) + return IRQ_HANDLED; + xfer->ret =3D 0; complete(&xfer->comp); } @@ -1259,6 +1292,11 @@ static irqreturn_t renesas_i3c_start_isr(int irq, vo= id *data) =20 scoped_guard(spinlock, &i3c->xferqueue.lock) { xfer =3D i3c->xferqueue.cur; + if (!xfer) { + renesas_i3c_irqs_mask_and_clear_locked(i3c); + return IRQ_HANDLED; + } + cmd =3D xfer->cmds; =20 if (xfer->is_i2c_xfer) { --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 791FC413258 for ; Mon, 13 Jul 2026 13:05:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947955; cv=none; b=XjIhY8Xzosvtj8I+LQto9Yr4bxvaT1qCn233Zf5Gimhk/lhSJJXF5sMKV/vO80TN81phEmVT/WGsFffuHwWX641/cJprJAQb1knsyB0XiFyZ1drM09IOPZltbeZIts4EuO40eetr8dGdk3ku+ZO0G777hnHG1kuFiiOvBFN5OLQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947955; c=relaxed/simple; bh=FtnknuqUHzlJVSz5DKvAQlnk/GzeCzKCShgoXUtLKYI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WQPGKyJspN/5/slreHY8V+ic0WK20Zzqm8iZ9SclPLCPt7aeIs/sPlIpXzuuW1PvCRo+1EcaWAjU4coD3y/GZlN+KfV+zf0TgArlu1FYt3wWkwaI1hoxi4kPw3KlwnNXfK6I6jZtxBCtNY2Yue54oJQbSRtPdTXoo9PQO9GwIUg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=gmJMNhF0; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="gmJMNhF0" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-4798bea72f9so1663820f8f.1 for ; Mon, 13 Jul 2026 06:05:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947953; x=1784552753; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=UH5mcedIpIiZlH9zrS1BV7uvFaa9p7I+Dq7Nzg++u6k=; b=gmJMNhF0L4T1eiXPGKWMkSCEnshbF828m7t+8yD/Q4kaLhDXSD/Y/HdUcLsqNpC+vm fICNwkkmmM+Z3sasDeiZC5exJAggoQP3FTWYf22ZihuGi8piS2CRZb0AkZN0Hl1G7orr 6IbHMD64565T35KkOWeIeV/8oxnbgBfQ2kMO6woJLR0pNZPcHLCsMmmtGUwmbDGojTQr RE/NW1djMR/H06AKoSyHNVM1OafQUZd+haOXxut4+T4DtE2sCSP3clA3MyYnV07DwQAD gm6K8vYsON9EvNIJ2nXVH+kCa/yglw8eUXLzRfOw6lXi+0bv4/CCem/8Ol1M0hLWmkvZ 3DIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947953; x=1784552753; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=UH5mcedIpIiZlH9zrS1BV7uvFaa9p7I+Dq7Nzg++u6k=; b=AQ/C0AGRBaxDM1yTmDeQ9XGI+kFPOf2rRMj+ec4+sivi0Syizru/NjQoHLg4TgAL9t TT5b+z8d4QpQwdNLLXBTlkO5Wqp8/uKFKDXWYvGP4HKcYIOWVIdEkxfGmNhOVfJAlJ6r QOeZRuXAX8eqzjSoUMccfLZAG1n4LX+PgCLiV+P3bpE2lWvBJOiX2xO1yoWMheSaf0US Gs5+GXSzL91YpycW0D5O0ucZqxRZKASSIfMfBAlLrlvq3OWQVRR5+Rw/wI29PJrP/LXL xk9HNp1NEBW3pcuCAoTbOQSeim0hupDTicR2Zz1R1LFhBh9ZkkrFPyxtxWho64dOvjuM JMWQ== X-Forwarded-Encrypted: i=1; AHgh+RrLO8A6kyVy8BadV20x8xmmz/0Uf7Gw2L6wG4osXAHdi997em+Y9yY5b//manpY4TQx+25x2xbIB8I8m2s=@vger.kernel.org X-Gm-Message-State: AOJu0YyA4QP8FOJs2oB16fvYAQko+E+nlSpJbNKTmOgklzgOLsf2hy/d Tqb5Cq1RnMHi6BLYx3CzErbPDGic9/+Q8o5Y2svg6NqB0Rm08twTyf2PMGGRb9D2zNo= X-Gm-Gg: AfdE7ck0EOZ1HMC8+WJN1sqVaIiMfcvbZP74v4+e1z49CyEnhCd3YJBakwoxKNUCGCV PaYppws+ryfJgXqnCZoBx0CunQ1BOtxlufPfwlcUg7tOhADhrmhoAsHTqaYl0OrqoIeZbIe1+HE Emj3+q148jChURCpcaYUZ9ZWZz3c4MHDD9l9QMafObELxSeejgx5k+GYHU8XwwNCkwLLaD1v18F FqPmQ+/yVzjk0bitnv+//3sUz8UunZGCev4F7RT9PkhpXSisnD5FKKZh4h2khbAEulBESnAbLZF VntmYM7zkO1E0JGDcnRb62mHPIjm5z8oy1/OIlzy4u+p0eFbS1YQBEHGlTrjZxNOJPTTFTkxLgd /PudCDyVvfbYLUVhpB+oEpqtbQ/UL5Omf7uTEDO9Y5zAeo7TBderCH0YCObG9dIgpczeANt9b6X I0GEWAVWMCLhMFDdC7wrKOPkj9j/AIu33DDrpNAb4Vcj9xo3N2S8GskU8i9yhK6QGlnyPNWvA= X-Received: by 2002:a05:6000:2209:b0:47e:4b03:1aac with SMTP id ffacd0b85a97d-47f2dcc657bmr9421634f8f.38.1783947952926; Mon, 13 Jul 2026 06:05:52 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.05.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:05:52 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea , stable@vger.kernel.org Subject: [PATCH v5 02/17] i3c: renesas: Restore STDBR and EXTBR registers on resume Date: Mon, 13 Jul 2026 16:05:30 +0300 Message-ID: <20260713130545.568657-3-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea The Renesas RZ/G3S supports a power saving state where power to the most SoC componentes (including I3C) is lost. The STDBR and EXTBR are configured in initialization phase though the struct i3c_master_controller_ops::bus_init. Set them on resume function as well to keep the same state of the controller after a suspend with power loss and a similar initialization sequence as in bus_init. Fixes: e7218986319b ("i3c: renesas: Add suspend/resume support") Cc: stable@vger.kernel.org Reviewed-by: Frank Li Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - none Changes in v2: - collected tags drivers/i3c/master/renesas-i3c.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index 38b8428f464c..cd9928649c7f 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -260,6 +260,7 @@ struct renesas_i3c { u32 dyn_addr; u32 i2c_STDBR; u32 i3c_STDBR; + u32 extbr; unsigned long rate; u8 addrs[RENESAS_I3C_MAX_DEVS]; struct renesas_i3c_xferqueue xferqueue; @@ -622,10 +623,9 @@ static int renesas_i3c_bus_init(struct i3c_master_cont= roller *m) renesas_writel(i3c->regs, STDBR, i3c->i3c_STDBR); =20 /* Extended Bit Rate setting */ - renesas_writel(i3c->regs, EXTBR, EXTBR_EBRLO(od_low_ticks) | - EXTBR_EBRHO(od_high_ticks) | - EXTBR_EBRLP(pp_low_ticks) | - EXTBR_EBRHP(pp_high_ticks)); + i3c->extbr =3D EXTBR_EBRLO(od_low_ticks) | EXTBR_EBRHO(od_high_ticks) | + EXTBR_EBRLP(pp_low_ticks) | EXTBR_EBRHP(pp_high_ticks); + renesas_writel(i3c->regs, EXTBR, i3c->extbr); =20 renesas_writel(i3c->regs, REFCKCTL, REFCKCTL_IREFCKS(cks)); i3c->refclk_div =3D cks; @@ -1468,6 +1468,8 @@ static int renesas_i3c_resume_noirq(struct device *de= v) goto err_tresetn; =20 /* Re-store I3C registers value. */ + renesas_writel(i3c->regs, STDBR, i3c->i3c_STDBR); + renesas_writel(i3c->regs, EXTBR, i3c->extbr); renesas_writel(i3c->regs, REFCKCTL, REFCKCTL_IREFCKS(i3c->refclk_div)); renesas_writel(i3c->regs, MSDVAD, MSDVAD_MDYADV | --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (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 4321A416D13 for ; Mon, 13 Jul 2026 13:05:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947957; cv=none; b=IWogYpr1Ms51UbQuFl193oxuZEDXbtbQGXLEIKI/0c3lg0hhuKSVm4GNOBe/yFNqa9u5Q6QniMZFsKJamii6gb6lTpXHxEFCDhKUzkSZbnx1Ya4iq9K/FJg9DX3L4GZ5a5ydrZ9eOb/pQy7QK9cxKk6SePRVkkaV87vQIIjd6TU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947957; c=relaxed/simple; bh=0qC7ujzOLaFd2s8Fn3l9j7PEA6FfGcqP1hFRcFudcsE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eawd7pq9zLLIBwilEUUuNZZjlUSEI1seMzQX45cmgYfeiPKQzaIF5krkLWrisIM2cmr4WZ5z3706+9LfzSZ0DNOIA0mBK5DjRoWxSrMm5AgvzQ1u9Iew/hlcu9ox4U4ncbExUfd1VkyOAJC7/qIgLhgCbJDaAKKHq2flApHZvP0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=b0n+Ye0d; arc=none smtp.client-ip=209.85.221.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="b0n+Ye0d" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-4759b4f0897so1693385f8f.1 for ; Mon, 13 Jul 2026 06:05:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947954; x=1784552754; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=sUK3J4PNfu7w2oijinZPF7ASv5k/jbRTm1vrjO45FNA=; b=b0n+Ye0dhn+H621l7a85fSOJYvb3gmbLeI27l2+gzwNxc6wQb4ANdgg07mov1OcYoU cn1olCgWHLWKlQif4/jBRwrAyFVeFN8vv4wxe+vWq906F7ZX411Uom9YWp4zx/qMGT9y mmm5j9g6Lx0wlPK3Kdei8FD66gouRaflCVpKACIMalAGbGZdHSAvZ22i60/Cn1a9auUJ slLJe088ZO2/ptCA1ltHxppZ+pdlmvX96lKTMApUyHqzQQzmMMRCdE9avFlGW271BEcf omcDRnbK/QvvSPLKBhjMNtApWZeIfm89vXJewEYYHFzHX1Xl29t9Cd6SbSchv9tUMe93 qv6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947954; x=1784552754; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=sUK3J4PNfu7w2oijinZPF7ASv5k/jbRTm1vrjO45FNA=; b=jqZo286F2mwvefgbfYILjlNEF74bCIycxAKXX4oMZPdry5UbFF2Z2tqJtRaUcnkp9u YIRpw69JI9FyRcBJJ3dS10AzLo+hxHwcn/AqnDtuZg1hzMrJVj6F2j91Y+wn9mA2TQ/L so6Cv7Jz5FCyVqdSjpMnh6YFN+zND4dbgnEEQK/uzoV5d2d9R5beeWpIhE6RhDw79KUb HD5t3jCJDZtg+Txt6o87O8gzdv5SvfhffX+3mV1OfdL3yqMTY13nkYZFYisBzpfU2As4 z1AFm5pEwKVQSJEskLk3rZ1Zyrr1Si9QiDS563CEwlBZ16tyaoxcFM8j42WzxKOdN++I 3HPg== X-Forwarded-Encrypted: i=1; AHgh+RqP0o2aJY5DOtdN/hXIBmU3CGfdVPUzWG7PNeQtvw0QBf6mh6MvPoWkX1yzI7+gn4PRE4bURyshB3VkSsI=@vger.kernel.org X-Gm-Message-State: AOJu0Yy68mo9ISiwNqq6pi/WyUYbOtKG7SfmfSp5aiGGzulJjOYikvxf tMeiJfdMJi7Cw32Msmuu0NEnJ0Osp3Hy2CWhSLOBEwv65gv3fn+WkGn5cPSeKUHyuj4= X-Gm-Gg: AfdE7clEqkv8wiYYxbcJgPHqESrbg3ba1ghjc7C5wH16jsVuWynI/xErAG0tOC6kG8b ripx72FlzspiCPpLG8kgf+xcfvXt97iv/MJ4VqvPc7OTS/QCko1DaGAzrSqDOjlarzVkV5q2eAh re31Btwd5FNtTBWccn7DvZGQzzEJ29dORv/kVVLYw22wJCHBBfyJgngjrWI121NNyMkeF5bXzV5 y0zQ1eahVgF5nRZnJgE5zgN2v+R7j/QXE6qshhYVgstxeZte3qCmlLhYPt0abaGNN7qze5Qmrpb JUgtSTAmuqIek58XSu545tFj0rW2gN9uQl9WUtUKb5TYXF/CYERf9/04ze4AZGgrOmYmZRJkN5w PDWFGiiebuXOlmT0DFu5oeu2Xy7X1uuuntb/PnE6AVltD5grz0zh76sRuwD0RdPlLsyxwlXLrrP RVcSMT9asvuN/9rq4iZKFz1f6hDeaJZEh5f0NY7FwGVMbayZ5Ma+KHDsVSdd9QacfWy/b1Yqg= X-Received: by 2002:a05:6000:420a:b0:47f:285c:9769 with SMTP id ffacd0b85a97d-47f2dc8d86bmr11100953f8f.10.1783947954635; Mon, 13 Jul 2026 06:05:54 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.05.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:05:54 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea , stable@vger.kernel.org Subject: [PATCH v5 03/17] i3c: renesas: Follow the reset deassert order used in probe Date: Mon, 13 Jul 2026 16:05:31 +0300 Message-ID: <20260713130545.568657-4-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea Use the same reset deassert order in the resume and probe paths to avoid potential failures due to ordering differences. Fixes: e7218986319b ("i3c: renesas: Add suspend/resume support") Cc: stable@vger.kernel.org Reviewed-by: Frank Li Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - none Changes in v2: - collected tags drivers/i3c/master/renesas-i3c.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index cd9928649c7f..ccf55afcdedc 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -1455,17 +1455,17 @@ static int renesas_i3c_resume_noirq(struct device *= dev) struct renesas_i3c *i3c =3D dev_get_drvdata(dev); int i, ret; =20 - ret =3D reset_control_deassert(i3c->presetn); + ret =3D reset_control_deassert(i3c->tresetn); if (ret) return ret; =20 - ret =3D reset_control_deassert(i3c->tresetn); + ret =3D reset_control_deassert(i3c->presetn); if (ret) - goto err_presetn; + goto err_tresetn; =20 ret =3D clk_bulk_enable(i3c->num_clks, i3c->clks); if (ret) - goto err_tresetn; + goto err_presetn; =20 /* Re-store I3C registers value. */ renesas_writel(i3c->regs, STDBR, i3c->i3c_STDBR); @@ -1486,10 +1486,10 @@ static int renesas_i3c_resume_noirq(struct device *= dev) =20 return 0; =20 -err_tresetn: - reset_control_assert(i3c->tresetn); err_presetn: reset_control_assert(i3c->presetn); +err_tresetn: + reset_control_assert(i3c->tresetn); return ret; } =20 --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 1BDC2414DD5 for ; Mon, 13 Jul 2026 13:05:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947959; cv=none; b=eA6upYPjIjPnzYd/AVBgwFraX/fKDxagxzo04M1k+3RIm9yJmAiTStEjx8OcQyxNALvABrR14+FSZKlWVyUV01LqWe4TcPanpndS+spe65STMptlxTHxzhRKPdWOT6y6vLSXX7bmMet1dd1ke5acZLTKt+GD1Ta02g4DW+GC+Ic= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947959; c=relaxed/simple; bh=FJSjIhSdTIDlboDC85YK/17wAGiKxAM9/NtAhKhzYOw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SLWmR9+5qNElN2/vc6g6hKmtppRqEDFZGA4ZPeL2VD/RHkD7ltq1IW4DzkNDe20bMywatghnUSYXTGCHBlUcJlsU17FkdWA1NFw1vQNvTZh8pxADUNPZWSyxlvCPrk/nwvxMEic9vApHoQOq+a5oFipkItNn+nI0aql/hBWPaP4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=PoAMaJiA; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="PoAMaJiA" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-490cf322ed0so23425835e9.1 for ; Mon, 13 Jul 2026 06:05:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947956; x=1784552756; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=hSMCQsQ7LVIlHm1OHZIZQGorFPeOXnJuXX7KCA2GxmU=; b=PoAMaJiAaMEVZ5sGtDrDBGdTzXFOfQjetj+8ZKYc024V1joDJeiWyKI3Rk6jcm867m YYchtMJQnk4UJ94YlmvhC3GeVyJNzBl2tyxsxmpYIbuk+f6gVjlex+PO+DUKTGdJSDKk CS1Vs36rVSMqsLzlmWIf6rQEmOY1ozL4w7OCQj3DStXN0uo+4KLqdMt1SsdYsMwl8DIS 20zjKXBTXRrRCDN4X9LrNzL6/jbvGKYzfTuNHPC28v5Jp6FnihvJToXSkY+iZDlQowlY y62ssLDBwjF7Ojew1HazrfN0oXDpjQKyJcYM8w2ld6NrmUaKZcD8Gad9ObotqJpV0zye ragw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947956; x=1784552756; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=hSMCQsQ7LVIlHm1OHZIZQGorFPeOXnJuXX7KCA2GxmU=; b=oIaYG0VjGnwBWjEJnN9jTk3ORu+pG+hvQ74G+5J0Qn5BbJQ7kw+xgfTRLA4jJ6R0f0 OxVU2mcj0PvsXrXbfkp8fiwVNxxZHylgXZj69qrGE2GjRf6hddJlrgwhvqCWD1iBTdjk JeAD95KSZjfGk3FUbcU63T4gia09CbCo8tDD8Qa7Vqbd9U4ooMKO/sHwhioHrtJ3QFSD qiexm6Gbna1rPiXMjslABLTzUTulrqjQqWIQnI/1NN5C7LDPtkCd9Xi8+OzgQzKMwZDl f4JwL6mmjdbTZTRw8OGvTymAC8d/zHeNQZtfl+uWZTjrr/tZXebELiSh7o1TdhDZopiX pxJw== X-Forwarded-Encrypted: i=1; AHgh+Rr2e/hkCND4/5W77SuY6N/8zuQvQA/LCpYBLJw0g4Laa+Np03ceDG0J2bCEBptfXxOV6rbuNqtZFIVYKcA=@vger.kernel.org X-Gm-Message-State: AOJu0YzCVnFlE92Wz55A5DMCdwn56uE3qQD6SrUIwxJvjqKdmWmF6JmD 30Se2lzkquZ/oSLqYYibnKtEIwtb2zLBhCcHLa9KVpxCxqiXo03sPtGfr8tXRv0haCA= X-Gm-Gg: AfdE7cl7c3f+qc88zNbAornQuykji9dOOKto9+iSUGXmTHGrfN6TotR+zQPe1L6M6K2 T1QKMnFe2ZMPXoUK5Mqr+9j36FP2qwWojH6qXABSpKx67RqGduCWXAjgLJDTb62hLlonAV5zH8q PzXU3r4+LkFMGuYNkVUPHL41Kw3XGaAjfYna/UajUBcJ/NOsSLNCsV/fNL5giP+OFLBVgSGsPGi vyASpyGY1AtX93MSZbWWo+1bLd93fQeQbgsL6A4YCoV2g1s2tzaYtzI0rPaEAzxF89GL5UpyPrY unXkcqGbLpfRgVYkQytxOiYKNTnXz9q3GvZslT6DB1BHzdkAVMoEeJ65iS5idvFH2zJGuGTyXoh iCW1ul2B4HtGrKoaVp6VQm1H9xWaNyfzXrdDS2lclnQ6YDPLgcLl5SgaOghpjNEXcdhNE+ZKfN9 /ke/StyXY9iiOhvDPGhBx40wwK9pJ7Qnh7KuT54EITX9q7ZwYVNTK0FisO+4WoBsJrYU3+FYY= X-Received: by 2002:a05:600c:1d06:b0:494:6baa:ccef with SMTP id 5b1f17b1804b1-4946baacd33mr10753825e9.11.1783947956381; Mon, 13 Jul 2026 06:05:56 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.05.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:05:55 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea , stable@vger.kernel.org Subject: [PATCH v5 04/17] i3c: renesas: Reconfigure the DATBAS register on re-attach Date: Mon, 13 Jul 2026 16:05:32 +0300 Message-ID: <20260713130545.568657-5-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea During re-attach, the device may change its position in the i3c->addrs[] array. As a result, it may use a different Device Address Table Basic Register (DATBAS), which needs to be reconfigured. Reconfigure the DATBAS register on re-attach. Along with it update software caches. Fixes: d028219a9f14 ("i3c: master: Add basic driver for the Renesas I3C con= troller") Cc: stable@vger.kernel.org Reviewed-by: Frank Li Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - use "data->index > pos" condition Changes in v3: - collected tags Changes in v2: - dropped the "if (pos < 0)" check in renesas_i3c_reattach_i3c_dev() to all= ow re-attaching in case of a full bus; along with it the condition to update the DATBAS register and software caches was updated to if (data->index !=3D pos && pos >=3D 0) - adjusted the patch title drivers/i3c/master/renesas-i3c.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index ccf55afcdedc..517ac2df9bd4 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -907,10 +907,26 @@ static int renesas_i3c_reattach_i3c_dev(struct i3c_de= v_desc *dev, struct i3c_master_controller *m =3D i3c_dev_get_master(dev); struct renesas_i3c *i3c =3D to_renesas_i3c(m); struct renesas_i3c_i2c_dev_data *data =3D i3c_dev_get_master_data(dev); + int pos; + + pos =3D renesas_i3c_get_free_pos(i3c); + + if (data->index > pos && pos >=3D 0) { + renesas_writel(i3c->regs, DATBAS(data->index), 0); + i3c->addrs[data->index] =3D 0; + i3c->free_pos |=3D BIT(data->index); + + data->index =3D pos; + i3c->free_pos &=3D ~BIT(data->index); + } =20 i3c->addrs[data->index] =3D dev->info.dyn_addr ? dev->info.dyn_addr : dev->info.static_addr; =20 + renesas_writel(i3c->regs, DATBAS(data->index), + DATBAS_DVSTAD(dev->info.static_addr) | + datbas_dvdyad_with_parity(i3c->addrs[data->index])); + return 0; } =20 --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.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 A95E64189A9 for ; Mon, 13 Jul 2026 13:05:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947961; cv=none; b=Bsxb6nAMkcISLlz/3+90FYnDhSAXV+oYnipkKiAkIZnLXJzGMBBTXcrHdI/WGT4uffPHLiEuU4OLjow4LIR+xURhBlaY6IwH/MaCzJpgd2cluyZ9FyF0MrMvAJOgKRrOdYbwXoenluCzBEpNSg2ZhRX2XxLTU/oSjps+Awypxfk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947961; c=relaxed/simple; bh=P6aF/BzzUSeDLiv0rHRqB287uvz592GL/Gcl7iDIHpE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HFx8/J/OsltAK5SKZKH3tW4gdpoueGeLqjocpL4IBKFbJTkrEan8NBHl8rXE9YBGfoRxJWLTFi0MbfwA7ZLvw2Xp6K6muuY85jzlDf44XmQpEYDxAsJMFXFHBVCKISOKAJPpFqTHpgYw3iYtEcJ08qTneV3TLbtiBwpnOEAIeeA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=EM5whsZz; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="EM5whsZz" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-47de0093c42so2462387f8f.3 for ; Mon, 13 Jul 2026 06:05:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947958; x=1784552758; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OAq3iUlWeKBxi9BzVp2LKHNg5+ivMc/cKZSPqbSeCas=; b=EM5whsZz3dG6kBBlgx903lUYLl7DcMbcZFFI39sBBEfqx+ZfK3WxpRhDaxcxF50CfZ aOTDATVfViHvCMQOv50h2B3f7hIJjFqlpm5jtl1XJMgYtAN1RH+dPALmsCStkTvdGnAq g1GnIXahKJNQwx4h9iukgzcJB9DLpKqs76UKg5PNr9ssQl+1PZwwy6Mo2Hc7414r+jtN UFiPZzku2zIJX1A35ka51OUPVNN0uY/yCdpg6ybdk6Nk1PvxlMPY86X4doK8PbGb9z5r IgoOSgxt1GAYw8pyJ6aLUbBoI/dZgkx0Gu/2HtvCsfNEGE6HSc/6b7Kahri5CurKs0tK AOTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947958; x=1784552758; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=OAq3iUlWeKBxi9BzVp2LKHNg5+ivMc/cKZSPqbSeCas=; b=neh7MUsefJYKfbOTx+0Uzm2yDdVuKs8mpOq/HjbdkSekiIcharQ9NNojIQwAbAPQ24 omIlg9XAlQiT/QqC79NPnMs+6kIi+dTLFeJDxhG2N6sebJVAyFGkj/rG59qFSgy27WqF OhqYqurB0Ay2JokQ/b/9ibe1/rErBjAyHJfGLkdsODh/zSEDjxcw2LDhhUoLNKEckNVU HIracD1VREbYifGe7b6tBU6g/1/UvY10yjkEbFc3bnGC09bKDm44q6bUk4Ck//RQp9o9 9Q281H4vsAEXM6dKMCiOwxIFY0ttpxjD5CZ/FHNATrDmX58FtOdYixGCM2rWm7AZ0phn zIXg== X-Forwarded-Encrypted: i=1; AHgh+Ro6VT6CFGEY+U53wahrsImKE1FIbEmvhRGBkoDrqen8As+MHbEgWfA133l5h2NXsEp8MTXpm/hUptRycDk=@vger.kernel.org X-Gm-Message-State: AOJu0Yzw0MY3qoAsrFTDRqYpuVzJbtCrlIFLX3Oi+bbMP/GI/l+NKCFs miGyPWaW6lWe6fFMSyEg9B+a2qhvYRR+TPAyuF3dv7MVt8FWccrxnZWU1PARBHNrhPY= X-Gm-Gg: AfdE7cnhsbfGsf3qr969OqzinYXdDztqsIUILpX4Pf8Uxe+W/dKSll2xe2fvaXpUNgv mZyiT46pJA4ftk+gWEgcM4Ju3XbqoMBSI4TTwzmjIRGqfR2rdJwElVyYYSpDLgxlVdF61RGDpZ9 pKwRBDhaE7YUTlBJ+vsTkwQFAbf26/EnSlJo3xjmHuBdTfZKKt4qPh81ScG3QOkUF6KG4HsCIop y6IuMJ3ih9Oyd/cJW9U3hYhzPgb24XyC4HVFkjvVDh5bnmiQ9SU2Msjq4urAQsejmwTvXMAe3+1 INiih04Otk53Tv075azNt2SUCbXE6IYf6Ch3BesRv2fEyjIsGaEr5PWp0aMx0+y5qC6nC4VkRjE P+qIXBafgmyQ2bi4jDHPkxn2f+cDU0PcLUWeQkY6ih13Sg8UYIxlv8mbByiyQKZTiUU7zkvWwND zA1j96zF3/Rla+/bd239kS8wnzsDn/oMxRgZiviEovq4HczkKPfJFeAWCBU0TATRns9sFkfCGzf HfrmWWRFA== X-Received: by 2002:a05:6000:2510:b0:473:1ccc:15c9 with SMTP id ffacd0b85a97d-47f2dd04861mr10170497f8f.40.1783947958166; Mon, 13 Jul 2026 06:05:58 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.05.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:05:57 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea , stable@vger.kernel.org Subject: [PATCH v5 05/17] i3c: renesas: Reset the controller on resume Date: Mon, 13 Jul 2026 16:05:33 +0300 Message-ID: <20260713130545.568657-6-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea Reset the controller on resume after enabling the clocks to follow the same sequence as in probe and avoid potential ordering related failures. With it, renesas_i3c_reset() was updated to use read_poll_timeout_atomic(), as the driver's resume callback is executed during the noirq phase of resume, where interrupts are disabled. Fixes: e7218986319b ("i3c: renesas: Add suspend/resume support") Cc: stable@vger.kernel.org Reviewed-by: Frank Li Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - collected tags Changes in v2: - replaced the read_poll_timeout() in renesas_i3c_reset() with read_poll_timeout_atomic() as the renesas_i3c_reset() is called in noirq phase of the suspend/resume; updated the patch description to reflect that - collected Frank's tag. Frank, please let me know if this should be dropped. Thanks! drivers/i3c/master/renesas-i3c.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index 517ac2df9bd4..6590da962592 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -495,8 +495,8 @@ static int renesas_i3c_reset(struct renesas_i3c *i3c) renesas_writel(i3c->regs, BCTL, 0); renesas_set_bit(i3c->regs, RSTCTL, RSTCTL_RI3CRST); =20 - return read_poll_timeout(renesas_readl, val, !(val & RSTCTL_RI3CRST), - 0, 1000, false, i3c->regs, RSTCTL); + return read_poll_timeout_atomic(renesas_readl, val, !(val & RSTCTL_RI3CRS= T), + 0, 1000, false, i3c->regs, RSTCTL); } =20 static void renesas_i3c_hw_init(struct renesas_i3c *i3c) @@ -1483,6 +1483,10 @@ static int renesas_i3c_resume_noirq(struct device *d= ev) if (ret) goto err_presetn; =20 + ret =3D renesas_i3c_reset(i3c); + if (ret) + goto err_clks_disable; + /* Re-store I3C registers value. */ renesas_writel(i3c->regs, STDBR, i3c->i3c_STDBR); renesas_writel(i3c->regs, EXTBR, i3c->extbr); @@ -1502,6 +1506,8 @@ static int renesas_i3c_resume_noirq(struct device *de= v) =20 return 0; =20 +err_clks_disable: + clk_bulk_disable(i3c->num_clks, i3c->clks); err_presetn: reset_control_assert(i3c->presetn); err_tresetn: --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.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 7E261416CFF for ; Mon, 13 Jul 2026 13:06:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947963; cv=none; b=FhvfIFUpxhgFsiBhi5z8Y6cRq5XGTXYV7JtoDANC7CUYJG7Ov04aUWfkzfFoG+wTxRByxzp9POYoPFTwrlOPiR6p7guP/cF/0GdYkPOgBtuCKwwD2zRQFFq5IRmejK/EfKL5haPOCkKEZmNKokiyuynQLSnvGZkxIR3KJoOI2ig= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947963; c=relaxed/simple; bh=rUKg2lEbEKF1/6fRaBq+MRXhYFcsSMiVFbDM59i1uYU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sQXTVhCiCAv8unc+9gAftqayikNRgfZMqcn4d9hbaxvXdbePdC7n1G6qKGiUGMi5upbqIddBYHfvXz8/VLH+H5Sty6CIhiEwpsEkVbxwN03JJQz1I7qe/Vgj0AlcYwadKGGJ9nV8VIuZMmHxtrXr/HTPs8cAKHw6O9BHz2xeDgY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=PJcM4ZK2; arc=none smtp.client-ip=209.85.221.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="PJcM4ZK2" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-47f3e6cc44aso983516f8f.3 for ; Mon, 13 Jul 2026 06:06:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947960; x=1784552760; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=7c25tAQuKLxSupdY9CktEZj3cba9VcnGd28lC32imf8=; b=PJcM4ZK2GkgcJ+n4l3XjEVtzBHZ/BdJcmbHGJFSRaGcJ//D2WMEU2AWM/ZxKV9DYoS qw+EaSNgIhz+Y9xkKYCQjMElzkd0DTOOAxtbvouqZ6ZUXSlVwZVEYguXhK3X2VsqefVu mHTJoowLfZnlbuoGG5bXn0bO+D4o6zZNcIyy5q/vGRHxyMUCUOVd0pH3vUbjbxoikRQt qLkCbBftTgZ0GZhgMxrmKwQh591K9pEleFfSosS/KDbiaKHY9S+SxHrQk3tnspn9Vb1p u+6Q6EckJlIKcVR46jhJvdAg9XdXCsxtpxKi4SNJzCe3xGWGzhlipCbJ3ljbW3fUg0sn drtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947960; x=1784552760; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=7c25tAQuKLxSupdY9CktEZj3cba9VcnGd28lC32imf8=; b=TFSUWrli9tqUTErsc6ncO8U/WB3N/6WJ56y7zLQZGScPcDAWXnqmooopHSivgpxSxG N0i7udq7P4zTSLR5lm1qOp29yt6/WC4y3m8javzGoA5RGQegOwph0/4/S/5jplr/EBlu J9eVejYiZfodpfeGgii1BGn889+eubosInn7S7R7OVoi5z8bSJMjac7R4dBjhwsulFVB vTJqHmYQUfoPfnoEpn2umtu9myw7Qiok+8OAkQBGz9gmBX/O0RAFAtJNdLIIxuuHo58r LKeFvZ5ZY/ZtTmJmsGoqo3lVMm193QRBvik4VWlxUgeEmveBhsbgf/HyCRZ4YHnqxVCP 1YCQ== X-Forwarded-Encrypted: i=1; AHgh+RoOkSsT+ZcQXGB4lhP8jUF844ANaa1a4nQo0zHdLxsTGcLDA4QABnUntE99OZ1RhxOpEbmnuh6+qoGLsQ8=@vger.kernel.org X-Gm-Message-State: AOJu0YyuJpNfJcxCn4iyasbOeBuKjFkzQrjsUTslv8EBLZilpa2HzXuk UHNsVuggcIXYvgcAVSRGwVSjLbIyZo7P8iIS69Z9YmGYcL2tDLsW68litrjxUX+jZy8= X-Gm-Gg: AfdE7ckP49/E2+quxRTs9NKZEr0m9WmB0dGZIKu4pZwnNOf/dz3uC0OTlk6tbWv2yhg TYdK0CjJyVI8B0K138fik/hzOkwmQErVkKbk23m7bDuIXFqG7eeWk0EYWkxkec3v+K3uC3KoF2K 8hlc+kJxIfdwR2RTSBD0njUHlbza+uwI2gwsHgc0FwaF7tUtY1M/G9bYqj3YAeCU6AowaN0Oaiu JtHE002NDcxIbNlyuofW1/bpil7X1VsAX0uz2gFZy9PjPjJmcMkzu/gKFy0Sn42K38Xc7dI24fd ucNxj7FIpJM12DqkDOQVrFm+ZP9GSmLEUBwu2dMG7Q5czqInwtf4aFhCoeC0CckCAvhPbLhRhom exACdLn+LUZNYpYpDb5uWS7fraMUFONj/T+mFP5SqQ+2VE1gts31Rgj6ODa0pHFy5IZCPKfWVvF b8c7wEUVvnEkpcWjxdNhpljgbusZSDGjBBBp/gr4hKbH5jxoljy2IK2Q63oVnbj4qgsJNfljtql ZutRQFP1w== X-Received: by 2002:a05:6000:4283:b0:473:8f65:c978 with SMTP id ffacd0b85a97d-47f2dc8cd9bmr10407081f8f.1.1783947959860; Mon, 13 Jul 2026 06:05:59 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.05.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:05:59 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea , stable@vger.kernel.org Subject: [PATCH v5 06/17] i3c: renesas: Perform Dynamic Address Assignment on resume Date: Mon, 13 Jul 2026 16:05:34 +0300 Message-ID: <20260713130545.568657-7-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea The Renesas RZ/G3S SoC supports a power saving mode where power to most SoC components, including I3C, is turned off. On systems where the I3C devices also loses power during suspend (e.g. NXP P3T1085UK-ARD connected to the PMOD1_6A connector of the RZ SMARC Carrier 2 + Renesas RZ/G3S SMARC SOM), the devices becomes unreachable after resume. Running DAA in the controller resume path restores communication. However, DAA relies on interrupts for TX/RX, which are not available in the noirq suspend/resume phase (unless they are wakeup interrupts). For this, the suspend/resume callbacks were moved out of the noirq phase. Currently, there is no identified use case on either the Renesas RZ/G3S or Renesas RZ/G3E SoCs that requires the controller suspend/resume hooks to be part of the noirq suspend/resume phase. Since renesas_i3c_reset() is not called anymore in atomic context update it to use read_poll_timeout(). Along with this, struct renesas_i3c::DATBASn and its usage were removed, as they are no longer needed. Fixes: e7218986319b ("i3c: renesas: Add suspend/resume support") Cc: stable@vger.kernel.org Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - restore it to the level of v1; the other scenarios updated by sashiko were already present w/ and w/o this patch and could be addressed incrementally - updated the patch description Changes in v4: - used directly i3c_dev instead of i3c_dev->dev->desc - fixed the swap in renesas_i3c_group_devs_in_slots() for i3c->addr[] Changes in v3: - added renesas_i3c_group_devs_in_slots(); along with it, the struct renesas_i3c_addr was updated with i3c_dev and i3c_dev and the attach/detach/re-attach APIs were adjusted accordingly - dropped DATBASn member of struct renesas_i3c - used i3c_master_reattach_i3c_dev_locked() to re-attach devices on a fully occupied bus - in resume, moved i2c_mark_adapter_resumed() after i3c_master_do_daa_ext() since it can update the internal driver data structure i2c specific Changes in v2: - adjusted the code to still work in case the full bus was occupied before a suspend/resume cycle; for that: -- introduced struct renesas_i3c_addr -- preserved i3c->DATBASn[] which is saved in suspend and used in resume, in renesas_i3c_daa() - updated the patch description to reflect the new updates drivers/i3c/master/renesas-i3c.c | 38 +++++++++++++------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index 6590da962592..acc30ed615ab 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -265,7 +265,6 @@ struct renesas_i3c { u8 addrs[RENESAS_I3C_MAX_DEVS]; struct renesas_i3c_xferqueue xferqueue; void __iomem *regs; - u32 *DATBASn; struct clk_bulk_data *clks; struct reset_control *presetn; struct reset_control *tresetn; @@ -495,8 +494,8 @@ static int renesas_i3c_reset(struct renesas_i3c *i3c) renesas_writel(i3c->regs, BCTL, 0); renesas_set_bit(i3c->regs, RSTCTL, RSTCTL_RI3CRST); =20 - return read_poll_timeout_atomic(renesas_readl, val, !(val & RSTCTL_RI3CRS= T), - 0, 1000, false, i3c->regs, RSTCTL); + return read_poll_timeout(renesas_readl, val, !(val & RSTCTL_RI3CRST), + 0, 1000, false, i3c->regs, RSTCTL); } =20 static void renesas_i3c_hw_init(struct renesas_i3c *i3c) @@ -1419,12 +1418,6 @@ static int renesas_i3c_probe(struct platform_device = *pdev) i3c->maxdevs =3D RENESAS_I3C_MAX_DEVS; i3c->free_pos =3D GENMASK(i3c->maxdevs - 1, 0); =20 - /* Allocate dynamic Device Address Table backup. */ - i3c->DATBASn =3D devm_kzalloc(&pdev->dev, sizeof(u32) * i3c->maxdevs, - GFP_KERNEL); - if (!i3c->DATBASn) - return -ENOMEM; - return i3c_master_register(&i3c->base, &pdev->dev, &renesas_i3c_ops, fals= e); } =20 @@ -1435,17 +1428,13 @@ static void renesas_i3c_remove(struct platform_devi= ce *pdev) i3c_master_unregister(&i3c->base); } =20 -static int renesas_i3c_suspend_noirq(struct device *dev) +static int renesas_i3c_suspend(struct device *dev) { struct renesas_i3c *i3c =3D dev_get_drvdata(dev); - int i, ret; + int ret; =20 i2c_mark_adapter_suspended(&i3c->base.i2c); =20 - /* Store Device Address Table values. */ - for (i =3D 0; i < i3c->maxdevs; i++) - i3c->DATBASn[i] =3D renesas_readl(i3c->regs, DATBAS(i)); - ret =3D reset_control_assert(i3c->presetn); if (ret) goto err_mark_resumed; @@ -1466,10 +1455,10 @@ static int renesas_i3c_suspend_noirq(struct device = *dev) return ret; } =20 -static int renesas_i3c_resume_noirq(struct device *dev) +static int renesas_i3c_resume(struct device *dev) { struct renesas_i3c *i3c =3D dev_get_drvdata(dev); - int i, ret; + int ret; =20 ret =3D reset_control_deassert(i3c->tresetn); if (ret) @@ -1495,15 +1484,19 @@ static int renesas_i3c_resume_noirq(struct device *= dev) renesas_writel(i3c->regs, MSDVAD, MSDVAD_MDYADV | MSDVAD_MDYAD(i3c->dyn_addr)); =20 - /* Restore Device Address Table values. */ - for (i =3D 0; i < i3c->maxdevs; i++) - renesas_writel(i3c->regs, DATBAS(i), i3c->DATBASn[i]); - /* I3C hw init. */ renesas_i3c_hw_init(i3c); =20 + ret =3D i3c_master_do_daa_ext(&i3c->base, true); + if (ret) + dev_err(dev, "DAA failed on resume, ret=3D%d", ret); + i2c_mark_adapter_resumed(&i3c->base.i2c); =20 + /* + * I3C devices may have retained their dynamic address anyway. Do not + * fail the resume because of DAA error. + */ return 0; =20 err_clks_disable: @@ -1516,8 +1509,7 @@ static int renesas_i3c_resume_noirq(struct device *de= v) } =20 static const struct dev_pm_ops renesas_i3c_pm_ops =3D { - NOIRQ_SYSTEM_SLEEP_PM_OPS(renesas_i3c_suspend_noirq, - renesas_i3c_resume_noirq) + SYSTEM_SLEEP_PM_OPS(renesas_i3c_suspend, renesas_i3c_resume) }; =20 static const struct of_device_id renesas_i3c_of_ids[] =3D { --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 0F5AB4189CD for ; Mon, 13 Jul 2026 13:06:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947965; cv=none; b=FJNJrkwghCQw+2qXChm0WHUwB8qEdUT4aHRs4YfNxF3I9oXUI9eV/vI5PBuJm1tv8Ckxn5R8D5XvL4bAC9g5brkox+9pGh8CEb40XkO5qXLLR9lRXuWuBg5QTovu7KIpSil0WUwKoAOf2ChhyUHDstMhxgdTi8/A7OkMshJwE2Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947965; c=relaxed/simple; bh=XVXaVxL+lneg9duu/TbnwymCvCWqh29aY5BS/FFAisE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EcgYJ3iiElcrt6zzbknJJh+CqgT8ockMWL9NOhKZg2FgAWVR9aFyGmQwtFuTt1bd/X0z2OtoI02khKKRX+2mYgNM/W3rorsUg0sobpPn3z/FnQ1ONAjgzNRlxcJUlZi8mX01uPMLkhOugYzCjRqt6aByPJ3mKEbjMYRiNBa7Wuo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=CIWD6zmV; arc=none smtp.client-ip=209.85.221.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="CIWD6zmV" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-47f36a122fdso1138053f8f.2 for ; Mon, 13 Jul 2026 06:06:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947961; x=1784552761; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=/juGqGDG2fLncz3tYXEPSwjfCpIrvLGtrL87h0T1kX4=; b=CIWD6zmVa0Abt3Fdzj1f8mK8xPKZMMKJRQc41pzVrxAKy/2xzmPq4/WJN1721yPSj9 DyJqW9Wo/mgzQBLVGztQjmFpseUTXOk6HC4SnWGfJ8YIk5Jh6eSKufF1CaCTsdChvaXm tO0SvuWoIAbOsxDAkPMsw5U0AX1aAAWg5WX1VdHkKtjGTuiUkaIhVdWsE/7CW56G7gn4 FrV40LU9QqITXqgRH8xr13ulyIHd8CR5kOAG6pSp0WqjgT78hAWvCFd14GvI5SN70aYx qjw1Odtk0Xw8jYHMnbXyqaV6ejTh/8qgg9uUQNVVweztwIgGtgf2z74kiYesnw5iqZqz MFxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947961; x=1784552761; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=/juGqGDG2fLncz3tYXEPSwjfCpIrvLGtrL87h0T1kX4=; b=r3s8iCc111dknRShgQlL8nn0H58XBJ1NS9w41bQKA9NuhTuX26OoS3PtF6+CyNn3xk uVFExc6UzS5vtu6yAW59Owxv2B2xveGOyfLlSc0md73lO0+op4678Fkl4grV7cOXAj6G 8QH2U+fttpVdBDXqeERiHmW9xIUMAgJDlHZXVHzVGl+kdvy7vG0EOBV+uZLL4XajSUIa jaNNFlnHjCrJbG12/a/jPbpgtNgxDeOYoAkPLPRHJbMJsRTmzQS9GnPM83FE3waFwsiA sWblDAaCkdxicXaCQgGvjQdewxQJlvYvXS75gIsQsK9PSw9ZNp91Ytut63R1o42X47ty Tl2w== X-Forwarded-Encrypted: i=1; AHgh+RpylwIxjUGrcpJD5Au638sHOG3sUjKdT843d3IXAUtmbckFMePnmIc6CCdvsxXSxIY6OU7eLdDPpGF3hcs=@vger.kernel.org X-Gm-Message-State: AOJu0YxTFyBniDjn6MIiz8uQoXZ06hAV2DNAHea9mTnoKEIlrj43aVsB 00qKkAPY4RUfZsIU+LcnV5TH9WFHnkX/7HvzkU5NKDtYNL2LTRK0YFmUNDPJ3MuW0Qc= X-Gm-Gg: AfdE7cnSp/DE7m+VrEJwuB0ci2a6NsW6yLqbMemP5cXpLRIvaig9qV33kuH37wHRHKn udJplALrN/e0kaHiepLEApohayfMTVjpKl8nTxtMT1KkRMFdNMyZq7G//duOKmFjFaHCHcXLbyK WK1in9yGnX1bcoSQN5ZL9H2qUbo/Vtu2QpW664LNe+VV+6htXpr6AwuV14HMxEmTakhFplSmDTH jexaFfuUh9Mf0Kb5r/bX7ye7uD1D1b8qf3wLVRXREtdnjWXDEe1/xK9x/ceH1i1ULq/kN64Pu71 tcYa2xDurrLPJxMHDbHKOiRIisbGBmsPmXPmr4FfSnrodfFVdzce7y+DQx1x9YfEMaSiJpvA/ud WRC3swamRy7/ItECUv8+kCZcpwjscVEcab+JLh7B46ZZX+ck3QgFNJoOblDECVkvVSfNu0s+MJI xpb3xaQH6Ix1ZTNDmZQOo66lP0alXlo4bPUSFObH3LxBVi3SLrf9un0VNS+sHEkRMFxITLnCk= X-Received: by 2002:a05:6000:4b01:b0:475:f100:35fa with SMTP id ffacd0b85a97d-47f2dd439ebmr9925829f8f.55.1783947961456; Mon, 13 Jul 2026 06:06:01 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.06.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:06:00 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea , stable@vger.kernel.org Subject: [PATCH v5 07/17] i3c: renesas: Clean DATBAS register on detach Date: Mon, 13 Jul 2026 16:05:35 +0300 Message-ID: <20260713130545.568657-8-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea The controller uses DATBAS registers on TX/RX logic. Clean the DATBAS register for the detached I3C device to avoid issues. Fixes: d028219a9f14 ("i3c: master: Add basic driver for the Renesas I3C con= troller") Cc: stable@vger.kernel.org Reviewed-by: Frank Li Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - none Changes in v2: - collected tags drivers/i3c/master/renesas-i3c.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index acc30ed615ab..b9784d238f61 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -935,6 +935,8 @@ static void renesas_i3c_detach_i3c_dev(struct i3c_dev_d= esc *dev) struct i3c_master_controller *m =3D i3c_dev_get_master(dev); struct renesas_i3c *i3c =3D to_renesas_i3c(m); =20 + renesas_writel(i3c->regs, DATBAS(data->index), 0); + i3c_dev_set_master_data(dev, NULL); i3c->addrs[data->index] =3D 0; i3c->free_pos |=3D BIT(data->index); --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 B3B4E41C2E2 for ; Mon, 13 Jul 2026 13:06:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947966; cv=none; b=O92FTDewOW/hYaqCBtQXK0EoW5Maddick2sZmbpxSgzCKFc4H92gI2QbQK7v618qS8Pip1bihM6OwuMdC6XnnliHHkhyeFdnH9/88SQsFvjy0wD17b14BMiLVPLEWGMzl74sMCOSbQOA/CKkGOgi2kaRID4X+ZvwEouAYibOJxE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947966; c=relaxed/simple; bh=yIpwaIQ3XL+j837k7sGNNcyGvaBkKgpHdoGUX8DP3aE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MV2byj+WoHNzIs/4Xfa+12HV1tjviDANe9kgUCkVFzOBFMhem/er1WtEKgfZVjFn4IwgueJU3iarkve7B6TrqYTnpn2A4n8/NZECEdbWTWCq6Z/al6KbCAQBClu2zROdef/PxL0FxmWNPhTslIFQFjTpOTQN5APfoccU2nIq5Vk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=ZsZlPld2; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="ZsZlPld2" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-493f25d47dcso22488805e9.1 for ; Mon, 13 Jul 2026 06:06:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947963; x=1784552763; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=0uLPM+01Tsv/yEFxBZFkTxOO3Vsml2pOVlgqkzc7WeY=; b=ZsZlPld2fZQbL5X/Sj/cgypz+q8pDLxHFM4dd4BU93jBdtU41UuHTcHBcqt7LEcyst 8k2B2snI1Knl6mtmNNM1I5dbPCYNIAIw4zt3VJpgQZ8Fztl1GB1XzU6VIVWmPYcUOe/w qD6V8jgyAAeRRHfN6+0VTrw7tP16L8PP/yDJC8dLyBDJMtpLG3oK4qePQMjB6fvTYl4g Az1s1k5XJ/Qlexjh9Pc3XTiyKMQpxBaJ66zYDYQeX7s1aFgoUjWLmD5TlAUEQIb4TkQH JCbOTK+P7iuD6eVEgrv1UJgdt2VqZyijoHzI3G64r+NJw9h6OHGW9C0egbtIbK6gls0j Px2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947963; x=1784552763; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0uLPM+01Tsv/yEFxBZFkTxOO3Vsml2pOVlgqkzc7WeY=; b=p9TWG8eJ/tkE6qS1wwo67Qxu2cH/4Agrv1+30EMTCFGB9kTXuqZh28ToqfhLsH3soX 6qf8VB4z6YnCUKAVHlEt8oKeZ1QRaXAj+MmPVnp3iZEXou85F0V3Cd5eFFOKHJpwInPA V1kdH89DtR55/ion2p8j8T/dmYsA0zjUKoO/KFKES3v4XGrpTV0OwGjOW+S/8lh53hsY kN39S8/+o6hDgA2kcwOwr8/owk9j5TZOSJTNDcaAoNfmNoD7Q7hInmGHg6mFdzGX2wHw 7TOd73/ZNduLXCA2aGOs4EYoNlFrc9+yPF0MIZvbCjs4EccVxJ8rlfIkDrlmVUkGpIsf kjrg== X-Forwarded-Encrypted: i=1; AHgh+RqrIFBYK1kRVjpdVqwtpOjsqudwM4k32+pCVVEg9deFvOHbVOrhHaZhwEm0+8wJRxQeLHpWlZq4ip6JLck=@vger.kernel.org X-Gm-Message-State: AOJu0YxQve1KDrF0TnvKZQVhf+6kBjLdT0MjIy0js5+Tdu9/bVkEwM51 sZB5tm4+e0IEDkWepBR7WL0hqDskld20j7gFtQzQFqGhMIFxkswHHjzbqgS0S8oi/YY= X-Gm-Gg: AfdE7cnrdoY1NSiPJsIK1zp/Aod8AKo8DhiocGXwBp8Z2Vn8IaLxopohgBKC3xwUWvX qT9Jifqm+gLCQFAXbpdObT/0Vg84Ml0TdKgI1paX13KN3hL0j0XTpFpPngrA0bpCgryh6xG7sO0 7fJjBjWVgZ9tLAdxmE/bSH3i0r/qz/JY/PexKuACnGzeX3KUaMpukQGGjm0vFykXQnAAiHp315o GNwxNH/rqn5WW3eTiDgt3KDMryczhR8kCpOQ5/l8yHAuyiBG84qfr5RJqB7eP7xmCkbrkA8NJms V08gwTPZCrYape3Me7HODGl2poStv/RIV606nKK9neM+T5CUqH6CxEvvbj4CADTizjPYfIyZ/Q2 FtXS9FgxjJyGrLgnDjpt5SnBQwIjy+ZYdDGCudqzgXF0670bsZgA/3ctFyxtnEYDkGrjFcfCI0f eg33ar+7inaZgmZCfOQ3j3nVOoO66CTuEgxXQDJ18vTiTnFSvUZKXgxFuMYcfNux/uIFRz0+M= X-Received: by 2002:a05:600c:a40c:b0:493:ee4d:5c5d with SMTP id 5b1f17b1804b1-493f882cb8cmr64144385e9.31.1783947963058; Mon, 13 Jul 2026 06:06:03 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.06.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:06:02 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea , stable@vger.kernel.org Subject: [PATCH v5 08/17] i3c: renesas: Fix out-of-bounds access for newdevs mask Date: Mon, 13 Jul 2026 16:05:36 +0300 Message-ID: <20260713130545.568657-9-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea When software initiates DAA (Dynamic Address Assignment), the controller reports the result via the NRSPQP (Normal Response Queue Port Register). The data length field of the response descriptor, which is accessible through the NRSPQP register, indicates the number of devices remaining after DAA. Consequently, when the bus is empty, this field contains the maximum number of devices supported by the controller (8 for the Renesas I3C controller). Adjust the condition that computes the newly discovered devices bitmask to prevent an out-of-bounds when the I3C bus is empty. Fixes: e7218986319b ("i3c: renesas: Add suspend/resume support") Cc: stable@vger.kernel.org Signed-off-by: Claudiu Beznea Reviewed-by: Frank Li Tested-by: Tommaso Merciai --- Changes in v5: - none; this patch is new drivers/i3c/master/renesas-i3c.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index b9784d238f61..c459e40fd5ff 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -703,7 +703,11 @@ static int renesas_i3c_daa(struct i3c_master_controlle= r *m) =20 renesas_i3c_wait_xfer(i3c, xfer); =20 - newdevs =3D GENMASK(i3c->maxdevs - cmd->rx_count - 1, 0); + if (cmd->rx_count >=3D i3c->maxdevs) + newdevs =3D 0; + else + newdevs =3D GENMASK(i3c->maxdevs - cmd->rx_count - 1, 0); + newdevs &=3D ~olddevs; =20 for (pos =3D 0; pos < i3c->maxdevs; pos++) { --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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 6C28941C2F7 for ; Mon, 13 Jul 2026 13:06:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947968; cv=none; b=DvvRKLtSdmPTDm1+odxcRkMIO90XFwBfGRuC0qQWzMx76Lym8/hPPQF25dto+hQmpKoXGLNhHuItbMOzMQAVlcybGXQn6VhjnK8/jC26h/aXWJufCr5y0LQyGkd7MR0PHqnVmMNzAhTCpXblm3MVwrn8feIBxepJq+9RetGib/g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947968; c=relaxed/simple; bh=j0mdqsjf7l/Aiz7CrwnVZ09ouS0ggsNZ4jEVw2RfbME=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=F0rBldCrC5JZfPP+BfJP/9RWh19nebiKE4TnN/15vLBvuzYCh5FwBxTkzQgAkUXDL3TldJHWUsoiEIB5TBIZdOI7hpgmVgNG8JXYxfhoKFijmOo+CGt/d0cQOqsPxdsxYHa5ixhgp5xHji8db7t9F8/O5IPqfktCtpXROOmZFKI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=qQ6Zy14E; arc=none smtp.client-ip=209.85.221.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="qQ6Zy14E" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-4728c12ba97so1316638f8f.0 for ; Mon, 13 Jul 2026 06:06:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947965; x=1784552765; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JGkn37O2dLecAyAReq+7VIvOrR3e9Bs6vVNAB3QPbCQ=; b=qQ6Zy14EgC+euI/FgX+D/SkQgcI5c5KvVht0/KgucRHlgHNkj5HWxMiBPrfJdZ55r0 uEgUAe7g26bEvOs2DWCQgFIVsGNcJzpWjtvURVidvJUAD8Z4AduoSWkHzO7HBohpVDjF Vc69EErpkf3Wki6nR5kQlE7ZIHLY0DOcN4BNQTC7B60kL9fjR6RbhWvf9Er4oKv/BDQ9 SQWq3GGPfv62WC/WXgOgxfmHxG7f/T3ymSIO+ixsg3tmuTatlI1rJN+HbiO5e8ao9nOR WouPfklS7q8F+KNn+AmZpAAQUeKdVXT0XAbE11IqwkULrptLNajgWIxIDyICbV0SPMmo o3SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947965; x=1784552765; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=JGkn37O2dLecAyAReq+7VIvOrR3e9Bs6vVNAB3QPbCQ=; b=eyevIL+NZnRxzOB1/K7EPtjpNAunLZEnNTscvQ5QkV2a3at5X39XGeDN+wzzj15EyG HvoZ/yKmGtJlwqyctUOo62zMYgRognBWz+T1IGSU6dzi+fJKCWL+Aozm2BkT+LwH3LM5 HiCjX6D9KXT/MNNW4NJFQMyhTDLxLzyXAQM3nNAEMfjw0tzxvAPWUItJjmvrAv3e0yPf dnU1N8UGfvLafjvb3WMZjvG2IBZiktY2QTgLxgajhjq/y5B6X9AvFE+EizZNLcra4Mdq 8FVj6VLtHJfB75pUSEvu/LS6nKKCq02G9FG16VYLhYIpI2Xym99aJCSFRaIEJooFgFjE y+Mg== X-Forwarded-Encrypted: i=1; AHgh+Ro1v1WXahotEFfXUHjzEoEOXw6pAtVxvaz6dfe5en2kCL3XV9dgOGZUFPvNOFO0+2u2t/5KbGNQnxbuDXE=@vger.kernel.org X-Gm-Message-State: AOJu0YxRO5Opg9YlNZ6IhN0CBxEpjGNhARtxBejxqivKusppgddxF8/j LzSHRu8HTy3t0Q90u/wklk5Lc3SJGysFlBhMJQq5OMCkckjmfTO7EMhP2kf4aufuDMU= X-Gm-Gg: AfdE7cnkAcexO03tvyLP67fIEAQ0Ex31mkdFXKUORsSFzbIMKCgAz2BnSC/pIQB7G0t Ih6QeNT8UlxiYn+6qmRJPKmZ8X3b5FJ6Wv8YQBR4pLzVVGfHPx6A92MeUB9DyTdCPShlLlFctrn wfFYIeEN9ZHkKGOWyM44daoqv9L0wR2WtQdeYlkzkplOvQDF0Swc6Bbdi6DbvhQOQo7g7jKRXXG Z0ma5ame3LDlx2sjXbArWdtmT74CqsQH+KPgDCA1tbX1S6+XvYlA8mfK2fPkazhaG3OD8pVEEu2 +InDr5hPRP/fUuq1IxRMbuQRJeMz0z3SBlku44Nxv3Yt9uz3kNWbINKuJHg7iDD4M3uhAVRKyYl hG8Wi3sCUKDat8RvKcu5F3WugPz0A/UB1Bw+0vp9hmhT0m7DIYtnNZzBy+BbmoN6YQeZvFVaBMj ujucd3sscVb3R+HluyJF8DGWLjjYuingn5AQCZkVUDFX1fBSRnfGDdNopfPYgYgplGMzllpgU= X-Received: by 2002:a05:6000:460f:b0:475:f0f0:9f04 with SMTP id ffacd0b85a97d-47f2dd0e4c1mr9446685f8f.59.1783947964734; Mon, 13 Jul 2026 06:06:04 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.06.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:06:04 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea Subject: [PATCH v5 09/17] i3c: renesas: Use reset_control_bulk_{assert, deassert}() Date: Mon, 13 Jul 2026 16:05:37 +0300 Message-ID: <20260713130545.568657-10-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea Use reset_control_bulk_assert() and reset_control_bulk_deassert() in the suspend and resume paths to simplify the code. Signed-off-by: Claudiu Beznea Reviewed-by: Frank Li Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - none Changes in v2: - none drivers/i3c/master/renesas-i3c.c | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index c459e40fd5ff..915090d0ad37 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -1437,24 +1437,22 @@ static void renesas_i3c_remove(struct platform_devi= ce *pdev) static int renesas_i3c_suspend(struct device *dev) { struct renesas_i3c *i3c =3D dev_get_drvdata(dev); + struct reset_control_bulk_data resets[] =3D { + { .rstc =3D i3c->presetn }, + { .rstc =3D i3c->tresetn }, + }; int ret; =20 i2c_mark_adapter_suspended(&i3c->base.i2c); =20 - ret =3D reset_control_assert(i3c->presetn); + ret =3D reset_control_bulk_assert(ARRAY_SIZE(resets), resets); if (ret) goto err_mark_resumed; =20 - ret =3D reset_control_assert(i3c->tresetn); - if (ret) - goto err_presetn; - clk_bulk_disable(i3c->num_clks, i3c->clks); =20 return 0; =20 -err_presetn: - reset_control_deassert(i3c->presetn); err_mark_resumed: i2c_mark_adapter_resumed(&i3c->base.i2c); =20 @@ -1464,19 +1462,19 @@ static int renesas_i3c_suspend(struct device *dev) static int renesas_i3c_resume(struct device *dev) { struct renesas_i3c *i3c =3D dev_get_drvdata(dev); + struct reset_control_bulk_data resets[] =3D { + { .rstc =3D i3c->presetn }, + { .rstc =3D i3c->tresetn }, + }; int ret; =20 - ret =3D reset_control_deassert(i3c->tresetn); + ret =3D reset_control_bulk_deassert(ARRAY_SIZE(resets), resets); if (ret) return ret; =20 - ret =3D reset_control_deassert(i3c->presetn); - if (ret) - goto err_tresetn; - ret =3D clk_bulk_enable(i3c->num_clks, i3c->clks); if (ret) - goto err_presetn; + goto err_resets_asserted; =20 ret =3D renesas_i3c_reset(i3c); if (ret) @@ -1507,10 +1505,8 @@ static int renesas_i3c_resume(struct device *dev) =20 err_clks_disable: clk_bulk_disable(i3c->num_clks, i3c->clks); -err_presetn: - reset_control_assert(i3c->presetn); -err_tresetn: - reset_control_assert(i3c->tresetn); +err_resets_asserted: + reset_control_bulk_assert(ARRAY_SIZE(resets), resets); return ret; } =20 --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (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 E943541DEC9 for ; Mon, 13 Jul 2026 13:06:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947969; cv=none; b=JOR3cjbsne+9OmU36kkpUuKAj2v/0HoVTiagQLP4JTTRhL709lQWZOpK2Cln+9ZaVVdZ5kqg961w9QaGqBlhQARxlxZoh9uUGqricWvt7Re9akWl4gxQq4nzDJrMPYzlbQngKBihqo0j6vU1AtuqYUk9F4N91R5c8uqPr8Yv6HM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947969; c=relaxed/simple; bh=n3eJ6/R5BH4Z2+H1pHPid6pm9TWqV82/I5IepPg9sA0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bLibEKq12FMf46pRmf3MlWx3WABx4/Sch0tCEF92HLHcU0x58BdsdDfyGjlpbkjG9PilXMMuh5im9Lu+43DBGL1fUTrnB6m5fW6UEo+aDR3Xnl5jc7LSY1k2PETebo+mLrzH7BRZJ35CR9ufzDWkBQGO57gMeA191Mpa6IZ01Tg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=aSgpNSjA; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="aSgpNSjA" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-47f36a122fdso1138180f8f.2 for ; Mon, 13 Jul 2026 06:06:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947966; x=1784552766; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xxph0gA4T5d+Jhqpx0Ou1LFlebFELoaRVUc+1WxHvCw=; b=aSgpNSjAZqtuyLTSdplBvGKElVQmw2c1YqKGMlh1vi9m5jIrXqEQruQVmsleXBS3un nvspc4mAJqNlBF7jW1zjLz/RJqbsS6ulu31ijVACkQtSHDhJkb+8ZAPP7V8qA42xaGy6 nx0fV/h/5wBVzF1/7iDer3bSz38acbyC2M33bic7YjjIeRDWE+ctdmdTsphhawtD646l jjLGozpkGqkNJLlUJW7TnfxAwPhabxVn9fiv+mWC7PGvFYC+hk2wbzBBdO83KMZ/FSet S63F0m+5dG9G72CcTHONfF7a2i3ZVM7pHzy73640sgHMZbyOHLAJcS1gu7gekwGIVhgR g54w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947966; x=1784552766; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=xxph0gA4T5d+Jhqpx0Ou1LFlebFELoaRVUc+1WxHvCw=; b=ee/nojA55twPKRSiLL6tGiU4rJz2oMNpwgxM9TKaLkVDI1Az0NM4Wal3UFJod5nMQo QNeeULpGeE0XI+vSCX9NdN0JQCHsl4ue2837lPIBDlUivLTj9PwI9KM2fha7DwhtylAq tVTz843KDM2FHSTjKpHoCJUR+FT9fl3GnaQAc4j+XNfSDr4/PPKb16a0Uqh45cW7Opdk 3jlJEca/RrVFzIC/CcgXXHcWpAvU8IgBXQ+AzGvLU4gBCsQHOaT12ucyw7E8JnH5nK88 fkH3B/VbL4ejyTuSIMxtOKlsHRuI/YFxq2QxVICzUZ41fo8BTwxLCZi8o09usNE8woLI C81w== X-Forwarded-Encrypted: i=1; AHgh+Rpr6wt8oky1qlZ8nBqvmT1MdqGVf3eht7Lad8wZg5it71/LY098oe3Jtw4TEJ7BWd69S36/YA2jz+KQtLk=@vger.kernel.org X-Gm-Message-State: AOJu0Yxu/9zrBEWDhJ0Db3ABK+GZ4MGygZE3XpGsflLloMab2lOidwEw +qsQUx6oWLGgj4Q18rqt5pUFRhVXtSYUwEPPS3NLtWGoewtlJ9OBrYObYQRwLvihoy4= X-Gm-Gg: AfdE7cmNsRCM5TntFNGwyDg3nq6jj/hxfRbm6aB6j7lhvwvXlgSI0tnx4iWrUyPYubu SJGf90Jqwv4kgComUKUII6n1rBGZfPEqc3xXdoZr+HMgtINy0zLMIfKnN+iySUV/z9nnpozf5o8 3Niw+5K5foZVInJsPtBmWMC2T1HJ4v0iKKeAk3KjgrRDiCNPii/RzXv807oqHnGEcXVdmSdzEkh aPlIfK5rkC5niS/dLHbIAZUMjDwTMjD2r1G41vptJr2NGt1kT35/99aHXYenoieSUQYXWjyjvid YOjOdCQ/suSGCdITDNA3JGLjIYPDyKq7fVSfOSU7L/8zxUvFL6Lwa68zv3PIejPK50gW2aBN/PF /NjZuiDJUFszLtxLOb7V5IeZzFju4YtVvjp3Dl6KebuROY5y2nXZMFxMqgV3oYg8kw0Mx+TQB8j 9WyacLsXIoUlgx+Ih+AanTzJYV2YuoTplOln/b8vK5UgJMBTCZXWcDzTkyX4P66widfexccPM= X-Received: by 2002:a05:6000:268a:b0:47d:fc45:ab38 with SMTP id ffacd0b85a97d-47f2dd2b622mr10557777f8f.40.1783947966327; Mon, 13 Jul 2026 06:06:06 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.06.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:06:05 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea Subject: [PATCH v5 10/17] i3c: renesas: Return immediately if there is no transfer Date: Mon, 13 Jul 2026 16:05:38 +0300 Message-ID: <20260713130545.568657-11-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea There is no need to allocate a transfer structure when i2c_nxfers is zero. Return immediately instead of unnecessarily allocating memory. Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - none Changes in v2: - updated patch title drivers/i3c/master/renesas-i3c.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index 915090d0ad37..9a3613220034 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -957,13 +957,13 @@ static int renesas_i3c_i2c_xfers(struct i2c_dev_desc = *dev, u8 start_bit =3D CNDCTL_STCND; int i; =20 + if (!i2c_nxfers) + return 0; + struct renesas_i3c_xfer *xfer __free(kfree) =3D renesas_i3c_alloc_xfer(i3= c, 1); if (!xfer) return -ENOMEM; =20 - if (!i2c_nxfers) - return 0; - renesas_i3c_bus_enable(m, false); =20 init_completion(&xfer->comp); --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (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 857354218AA for ; Mon, 13 Jul 2026 13:06:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947972; cv=none; b=UrKgSlkQKo0IYkWHpzaazlF64442Pj93WrDmGmYjkirmMwxLWZeZl+sbi4VcTzToNkcze5vXd1Gj2tBPXlcm6yt3hZ2Lor6KvoP844y14i4JVBvL5zS/QS1tQ9yiWR9pbiRHLWERneGbdNsEnKHSZiQ6J7lBys0z53OSJPAkQKI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947972; c=relaxed/simple; bh=gGFbx5GwX/AjI3SqC89Oqwbz7Sk7o61kxh/XwmRTimU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QZI+/rdCzS9Ynt5QAkRJPYNngIj9dbIT55l9/ehrxCMkUmIQlhbALy8FugO8TV8YWpvwNVyg/X5xblYlOnIAt9zoMIfmYI+e6d2TTsGo8nXhqY37yUq1KQ11tYvhpMV9ZFO9dEvA6QrwdhRbZJ2+3lSK90I0yN8TImLJRRhM61Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=frPDc6Ss; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="frPDc6Ss" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-493e497643fso18737025e9.0 for ; Mon, 13 Jul 2026 06:06:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947969; x=1784552769; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=VNXmTXjRfKoPXDcikOUifOydaqjawsRuj+0wvKXoUpU=; b=frPDc6Ss+u6nA4zl8ewg1/iB/mq4mtVwD5JvFxrH9Ykc5QcOMRDA9auCnhsqDodnb2 wFLI6I83RTFRz1nSgvgRlMJ0VmSrI2wIZj6Zqe4AEzIGOb0+d/w/mjOF7h4JwhZHxqeS SeaOGHc600V8SXoMR/nk0OqpiIcvc24eRdMIozCS8WKg4gGDA4qIVwW7yIYsWACVxpGf bTA9fwgVApW7YqhbRjtP8toUcNBxFnGv3Ez7aSfG71SJ8jf2JA+jjgb636gnTpCY/mvT pPOiQZI9YQttcR/LM3DLq3elYwx4KmI7YjLvFwDRSWkYXb+/bnx7ei75s8cPuBsdzMv/ jQEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947969; x=1784552769; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=VNXmTXjRfKoPXDcikOUifOydaqjawsRuj+0wvKXoUpU=; b=c1OpdtblhjdnKeg2Ler+I/HaPUXGhHO59wd/6HnIF5Q9Hy84xO5LEAjCbLvDK5M8Ny q36au0qT/DBSdrqzPoJXCFdMYJtprtfh8gwzPOiRg8/RxrauLTmFrQLyNPBRfFCDRQi2 TSUzywoSNmOPgUOmshOuziaO9OXpp0mMySsKbiNK8Xt1v/DIigXPPIvrR3nMVJGjkcy+ ZYC03hWBsmsa1dP9F8AzH2k2UI5QlxcIZRQIwMCuwa8m5LcE3z7aIiZsGXT6iVempi3R oMxcHmO5heFHwayC6zycK+SR1GPekfA5aebYeo7sSygxH6oB76iAdvjwPuUHVN+DRDKL avOg== X-Forwarded-Encrypted: i=1; AHgh+RrVInjfngvJYk3XjvKw7JRpSsNPnZ2A0M4Qu4/BePmnacEPIKUVs4omS0LMhk7OXn1jgskuzRdW0QHPmUs=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+Qy9ibOOb9enT35b/mM1HW/fbM53Plo3nNoRI650IH0sJW384 +pTKQid4xG3fR6CRX15Z5KnNoEYzptgBnup43DvcOIoQ7uYUQq9PDIEj7riYxJmoOji97q1MlKi NlyyL X-Gm-Gg: AfdE7cm1Bj+AXHKdIqlBeZ9g/078XrH8NkkkUqHoHicByyxAycE3/ZgNVOAs8QcLzAH 0EYCxhdEFMDrTQfIggrmx3Npyeh+p+KI9nnR3jKk0GrEO1T3oJ8VfPOuqL3PQnLuvpeOtHXIY7A dfVPJTPZd9jsQpsNnKadt2/ppKdK4q+vfAxg186pRVwnyJPlM3NGs3lUhk3Bt5w5hR67SBJtvr0 Vk7RmhplKxmTkNJmlIV2JT8PSHvJTSt7l8zgI+2LWrLkuOG9kcwFizHfQZreXmsoNPCvFLjk6Cw KzoWZm/Boiof/WqeFhpbkr6H3mZdIxQrMIpiQR92hqXWScaex0kgm3okjWXhBxdAmuV0yQsHbXW Bd3lzXaBfVH6rGKwb3DD+Fjv8/dbqp0gDsGWmZDL2AExYxqZTV4hsqPotMrO0IsjqEbyJs2jmob gdhRYKvqNKaCgD/Pmmv3yhVX/uFC4SfzNNRVDvorG+xAHExjgIcUulxAlDP1VwXhtaUGnwlUk= X-Received: by 2002:a05:600c:2e15:b0:493:eb71:5cc6 with SMTP id 5b1f17b1804b1-493f88280bamr55543995e9.27.1783947968931; Mon, 13 Jul 2026 06:06:08 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.06.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:06:08 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea Subject: [PATCH v5 11/17] i3c: renesas: Follow a unified pattern for transfer and command initialization Date: Mon, 13 Jul 2026 16:05:39 +0300 Message-ID: <20260713130545.568657-12-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea Follow a unified pattern for transfer and command initialization across the driver. This keeps the code cleaner and easier to follow. Also, in some cases the I3C device was enabled before the transfer data structure was even allocated. Reviewed-by: Frank Li Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - none Changes in v2: - collected tags drivers/i3c/master/renesas-i3c.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index 9a3613220034..c1396c49f45e 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -663,6 +663,10 @@ static int renesas_i3c_daa(struct i3c_master_controlle= r *m) if (!xfer) return -ENOMEM; =20 + init_completion(&xfer->comp); + cmd =3D xfer->cmds; + cmd->rx_count =3D 0; + /* Enable I3C bus. */ renesas_i3c_bus_enable(m, true); =20 @@ -684,10 +688,6 @@ static int renesas_i3c_daa(struct i3c_master_controlle= r *m) renesas_writel(i3c->regs, DATBAS(pos), datbas_dvdyad_with_parity(ret)); } =20 - init_completion(&xfer->comp); - cmd =3D xfer->cmds; - cmd->rx_count =3D 0; - ret =3D renesas_i3c_get_free_pos(i3c); if (ret < 0) return ret; @@ -779,13 +779,13 @@ static int renesas_i3c_send_ccc_cmd(struct i3c_master= _controller *m, if (!xfer) return -ENOMEM; =20 - renesas_i3c_bus_enable(m, true); - init_completion(&xfer->comp); cmd =3D xfer->cmds; cmd->rnw =3D ccc->rnw; cmd->cmd0 =3D 0; =20 + renesas_i3c_bus_enable(m, true); + /* Calculate the command descriptor. */ switch (ccc->id) { case I3C_CCC_SETDASA: @@ -835,15 +835,15 @@ static int renesas_i3c_i3c_xfers(struct i3c_dev_desc = *dev, struct i3c_xfer *i3c_ struct renesas_i3c_i2c_dev_data *data =3D i3c_dev_get_master_data(dev); int i; =20 - /* Enable I3C bus. */ - renesas_i3c_bus_enable(m, true); - struct renesas_i3c_xfer *xfer __free(kfree) =3D renesas_i3c_alloc_xfer(i3= c, 1); if (!xfer) return -ENOMEM; =20 init_completion(&xfer->comp); =20 + /* Enable I3C bus. */ + renesas_i3c_bus_enable(m, true); + for (i =3D 0; i < i3c_nxfers; i++) { struct renesas_i3c_cmd *cmd =3D xfer->cmds; =20 @@ -964,12 +964,12 @@ static int renesas_i3c_i2c_xfers(struct i2c_dev_desc = *dev, if (!xfer) return -ENOMEM; =20 - renesas_i3c_bus_enable(m, false); - init_completion(&xfer->comp); xfer->is_i2c_xfer =3D true; cmd =3D xfer->cmds; =20 + renesas_i3c_bus_enable(m, false); + if (!(renesas_readl(i3c->regs, BCST) & BCST_BFREF)) { cmd->err =3D -EBUSY; return cmd->err; --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 404554218A4 for ; Mon, 13 Jul 2026 13:06:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947973; cv=none; b=LIquQPhtpsrf7JkypOeFJOhTnfNDCg0kwYbIHKEkPTAGKCisl9sdurTp+0vc28RQb/Dh3ORyl3F1LL4qqDET46K2LvMZnZHfRfKF46a4jU9PFmkJaSbaYsfT89EqrpiYz/i1LSB3wYUWCn20c6yh/U4dpq7qp2P6jsr+SR6wuu0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947973; c=relaxed/simple; bh=CFen8NGwcQPf3BtJ6W07X2sfvkGDZSaIQ+za7kgPk6c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JugNXEUvHL17/suQL5lKsJ2T3BwX6acVNvUSDq30Cnp1RCfxAkOESTzglLVhkeJQ9NKC/w53t4cYE1WOecv2RGIWtH1d7N7uqVXlNGJc+vlbsF3FaSe+u0HTiVeLMzGpN/S7oVBx5pQfWGvXl/P4qZiLlKRX3yQNRxQMiOiMxHc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=UMSc8UMe; arc=none smtp.client-ip=209.85.221.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="UMSc8UMe" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-470174001a0so1874516f8f.0 for ; Mon, 13 Jul 2026 06:06:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947971; x=1784552771; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=HxhopbMjuxZXPMIhhCmmmglOvi7gG+5T75nAj7QCOxA=; b=UMSc8UMesATMkzy6+5FMa8eIGb/eMmHabSQ4reBtWNhtWQUJxPJuky+Eoy/WFMxBkZ THpmXfp+GhvwcuZOPdZ45Rx5SFuXks52dxney8D7f9+uZdQ/GMYoM+3ti0XvHABrb24M CQi2pankEVB8EUk6NdnXxPKAaH7fKkfiPQrHW8/qIXlEXGdIY/H+m62OTnehU0V6OnGG V75VN/Dmu4pWDIMWvAiqU6Z7EYxHRg2ubP7QGXRG4GtacbuLyZf5gai41cg+UqoTexpd eec1Ew7s998oVzePiotvtj81BP+REnGlmg2xVF5k9ZeS6upJDyW99Tnu26IsBOJ8fTFv ADzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947971; x=1784552771; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=HxhopbMjuxZXPMIhhCmmmglOvi7gG+5T75nAj7QCOxA=; b=poSa3ACaqneOte92gYGmbjWTh9E16X+ITXsGmy3nL86b+xWpowOKHOg0W1BKvdVdk8 1wKXvpctZiDJ8MPVcIGvpQBAKxa2UMAKbCkriuKZpEhHFYZyfebqCYhXHxwUwvV1qspW tZdr/SxgwwWzUFqR6uxWPxUI7BpoH8NMoMh+sJZqNVRuQNXEjSbyPlw6wJFKIF9MGaOW BZyyV8L9RmG5UInCBqWn60Um+UeALaU9R1gaM/1PvOlEdnnfY4g/9TB/OQK9qjH70HHz c3KiaE+/wnPa0KMmGdqg/BM4bJFX2ecudYhAguOHCQDceBQ4T7pV03Tbn8uIpwBlbVgJ VGLw== X-Forwarded-Encrypted: i=1; AHgh+RqeDzbgeBVmKGGnQ86oFgkH0aBKZH7CsOqwyUHa391VURWJl74SYJcD85quZPvKRCsOrZk1ZShxy4qfKvg=@vger.kernel.org X-Gm-Message-State: AOJu0YwG2cnqLLtQWxcO7q5vnf5WcK3g0iPwCSu0/Jd1RlWlT3PpDbOW MuhOCQC5LPoxmDV2sfyo3B2pqgKP2zLfJgMEjWaP1ZTMwpkOaH+jJOOaP41VIHCtIZJ/J8sORSH 8/LnF X-Gm-Gg: AfdE7cmWzOnJRn6Tk2qNj93RGzZT9abas783nH86gFGBWPnDr41QIrgpCv7zpdzmi6z E1+tFt4anoFwmqzzk6Uyp4uD+w9d0GV0q1wXEhrD4j8fBEtiE/rU9ZK9u8orG3CE7XHgkh0sSEH U8ThPALmdUlbH6Pu0Y4i0RkL7z0gqXuomE1eNFlXFv6avlQnYFz2RalGPJI1cAgmjjcpZK1Afkn XwsCFL3G0O1+RCXc6t8d1JFKTu4Bc1E7afDcb1hJ1hQf1NYIKf125nL4lsKeZhWJKrrpJJaTlkP oRYvFSB+LrCB17FGn17uUFYOUNdGnkDUqOFykUtej5bCuOMklwdYnSQI6a+ahXFhrXpwU3T9jR8 ti2ZHuIZT7Sf/eDDu4uSs4amZGKYNtLSDV9wrs8avCuwz8iOK2ZZHVC8geZzoTvdVABi4+qCqo4 Y8yNZx7zAi30h061gQ7AWX1RMASbQ3U1cbhBp6wSMluxKE6fnpRgxfN6LKGcAvOx23M0IWbQw= X-Received: by 2002:a05:6000:2207:b0:47f:25e4:5c34 with SMTP id ffacd0b85a97d-47f2dcd79f1mr10206098f8f.29.1783947970617; Mon, 13 Jul 2026 06:06:10 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.06.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:06:10 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea Subject: [PATCH v5 12/17] i3c: renesas: Drop the explicit memset() call Date: Mon, 13 Jul 2026 16:05:40 +0300 Message-ID: <20260713130545.568657-13-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea Drop the explicit memset() call on struct i3c_device_info object, as it is already initialized at declaration through compiler initialization. Reviewed-by: Frank Li Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - none Changes in v2: - collected tags drivers/i3c/master/renesas-i3c.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index c1396c49f45e..52f09d966651 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -639,7 +639,6 @@ static int renesas_i3c_bus_init(struct i3c_master_contr= oller *m) i3c->dyn_addr =3D ret; renesas_writel(i3c->regs, MSDVAD, MSDVAD_MDYAD(ret) | MSDVAD_MDYADV); =20 - memset(&info, 0, sizeof(info)); info.dyn_addr =3D ret; return i3c_master_set_info(&i3c->base, &info); } --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.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 AF866421EE8 for ; Mon, 13 Jul 2026 13:06:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947975; cv=none; b=ISRRBMAxCJ9jYQNOYeTQ9Pfl9hbeITeJ7YQWo3GgkLnyQvVAN+I9xd0ix7JVzNA03DlAjk10iYyCzvmz+am3N9qY2x+pM0zDKE6QzwXaGKCmG4G22azX5HasdmJnOaXWQpzmBp6pOM4wUZEDXEMHixxVhbhH90X4E4V45nM2JVc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947975; c=relaxed/simple; bh=ZGgKB3N9sqiQyUjmf5+04gGQszZyGDZ+W3cavW5NxxM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QukdIGBYVDUAxf9WpE9TxDJ4JgGZmKGay+RKgyG098X5I+xLgFMgM3Ms0lc9s+8MmxHs1BJ8YCzQhEc1gaj/cBRIFujKELdxpOBDy2ydHWN/d1Q/hrTFnaIcNOwOQiRgzueSeSsW1Kns68iH8TaqF1JFkRVC/h0HSm/e60dR1dw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=qUVJVP2U; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="qUVJVP2U" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-493e8d4f4dcso24856125e9.0 for ; Mon, 13 Jul 2026 06:06:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947972; x=1784552772; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=1QIMAhS3NtIYTLeRVHRa3qf70Dj3A156a3x/QO7iYik=; b=qUVJVP2Uo7C4Nisc3YaaOtIg4syWSuCeG8QvQUuTR2pSjB9qKl/D7a67G9lDKNDjkR bP3CUvrSr6/58/lFD+mBzywVwRi3SwHebDI+QAxq3Ecq94bzGyOKpZWXMhZurV1k945A KNR1OBUFkebD9NT21IW+uSXR0BaL54XzNJM+M4YI2IY4S4YkluG3e8NJsOA1OravBfa8 uyIF70p8tRo2mDuDPME3WvF/9cKFvwbsIQUCmBTv/Bf39THR8d8Cn0ILFH1SjKU9KKri miXlIfXmReRVCQu5xHG2Bb4WjIm7TCPdRgP0uN8FwmQd8QZ8fVDS6PYjdfqAmBPT840w QWkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947972; x=1784552772; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=1QIMAhS3NtIYTLeRVHRa3qf70Dj3A156a3x/QO7iYik=; b=URLD+cMi8lZyju0Q/Dg0CP3XktYyDaOADh1trIw1qmITghSJ+8eKQo5zDfh7TpeuoV 9rOm8Ivl2UzLNsV5cRY6BNpUJGU/D0bAjGUPkrY/Eh8IUaWoSoJJqFcUNTvI+OaMrOEB S6PxzM8Nqth5i9wmmnH4y3iF+OLH9anwtDW/rH5VLfmM0uxnfUnZaIJEJEqlIhKDRSz3 FEk3N77KidSXXFXx+yf/ItLoZQqn6LSDr7wqBTCP2ZN6TgWEux9/8aM+8KU0EwecZk7E uj4H0NIPu7ivhFHoIdfyEiCzbAj89Zdz/JABqClD3Si3pCUb3VmnyazP11or3oXDN9IG GkXw== X-Forwarded-Encrypted: i=1; AHgh+RpARufMK8aRDy4sXGcUozhl+NvcXAWFM7LFhVO81RG2KSyROt5z8vH5oC/F/ABvaq2sAeLJV+pD+Gv+2N4=@vger.kernel.org X-Gm-Message-State: AOJu0Yyufs8wLwJgrsdEi5IeNP618yUzYWAV1hn1qGE7DzJXH5+osxEE NZZGlBG34/NCMQrbA+7MhwqehVe+J5cDaLBlNhdd6KlcOp17j5wrXPeBlHjqz1kjzm8= X-Gm-Gg: AfdE7ckp96j5NhWTRZU+JcNBUSXlCXRI78MkeIvk4CI44PXI0xUbU2RYCRBRd9US+lC ckg+E4IUcvLwXpTdA/v72zn0TqtgKURv4MY9axftgUw+Hax6zK8W3DvA2In+Te8oAJwgCwd690J p03YP/3zrW+DZy3F80RjKiongUYhRaU9arthZUadP9NdISkMrahO3kzsMHvL2f653+KNgIrVojL 4SisGlktUgoTljvXprAGUZR7ZTDPb5/Qc3djy94T+516oHxfGyjVR+FP69R+8uLtajo67ucNjUe kXUZw/xxaWrsWO/W4o/VTApKz1uJmVoUGYj9ISq3b2Y5cg071XBXYWFeRZlRQzI1Gr1obC0bagE Z62s93oJ/H9NQhPLrj+piIxOzwikXJ6OXI3Hzpd8ItRyw7jkphbPHrGIX5v+uo/yQ1JzGdWT/fn FmUDktAMfYtUhrNzWmycslLnsBnZItk5Ql+GbmuTSWt7JTyqXhiQVPD6jrlqPO3ntYPQ/KZmI= X-Received: by 2002:a7b:cc88:0:b0:493:bed6:85e6 with SMTP id 5b1f17b1804b1-493f87ebed4mr60792215e9.15.1783947972176; Mon, 13 Jul 2026 06:06:12 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.06.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:06:11 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea Subject: [PATCH v5 13/17] i3c: renesas: Update HW registers after SW computations are done Date: Mon, 13 Jul 2026 16:05:41 +0300 Message-ID: <20260713130545.568657-14-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea renesas_i3c_bus_init() performs a number of computations and software cache updates, interleaving them with hardware register writes. While this works today, it makes it harder to minimize the time the controller must remain powered when runtime PM is introduced. Perform all software computations and cache updates first, then update the hardware registers. This prepares for future runtime PM support. Reviewed-by: Frank Li Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - none Changes in v2: - collected tags drivers/i3c/master/renesas-i3c.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index 52f09d966651..2cff7c6ae369 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -565,10 +565,6 @@ static int renesas_i3c_bus_init(struct i3c_master_cont= roller *m) if (!i3c->rate) return -EINVAL; =20 - ret =3D renesas_i3c_reset(i3c); - if (ret) - return ret; - i2c_total_ticks =3D DIV_ROUND_UP(i3c->rate, bus->scl_rate.i2c); i3c_total_ticks =3D DIV_ROUND_UP(i3c->rate, bus->scl_rate.i3c); =20 @@ -619,27 +615,31 @@ static int renesas_i3c_bus_init(struct i3c_master_con= troller *m) STDBR_SBRHO(double_SBR, od_high_ticks) | STDBR_SBRLP(pp_low_ticks) | STDBR_SBRHP(pp_high_ticks); - renesas_writel(i3c->regs, STDBR, i3c->i3c_STDBR); =20 /* Extended Bit Rate setting */ i3c->extbr =3D EXTBR_EBRLO(od_low_ticks) | EXTBR_EBRHO(od_high_ticks) | EXTBR_EBRLP(pp_low_ticks) | EXTBR_EBRHP(pp_high_ticks); - renesas_writel(i3c->regs, EXTBR, i3c->extbr); - - renesas_writel(i3c->regs, REFCKCTL, REFCKCTL_IREFCKS(cks)); - i3c->refclk_div =3D cks; - - /* I3C hw init*/ - renesas_i3c_hw_init(i3c); =20 ret =3D i3c_master_get_free_addr(m, 0); if (ret < 0) return ret; =20 + info.dyn_addr =3D ret; i3c->dyn_addr =3D ret; - renesas_writel(i3c->regs, MSDVAD, MSDVAD_MDYAD(ret) | MSDVAD_MDYADV); + i3c->refclk_div =3D cks; + + ret =3D renesas_i3c_reset(i3c); + if (ret) + return ret; + + renesas_writel(i3c->regs, STDBR, i3c->i3c_STDBR); + renesas_writel(i3c->regs, EXTBR, i3c->extbr); + renesas_writel(i3c->regs, REFCKCTL, REFCKCTL_IREFCKS(cks)); + renesas_writel(i3c->regs, MSDVAD, MSDVAD_MDYAD(i3c->dyn_addr) | MSDVAD_MD= YADV); + + /* I3C hw init*/ + renesas_i3c_hw_init(i3c); =20 - info.dyn_addr =3D ret; return i3c_master_set_info(&i3c->base, &info); } =20 --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (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 29B544229A9 for ; Mon, 13 Jul 2026 13:06:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947976; cv=none; b=rOZvguaxyZbR34LJrWn0RqNEHaYbMKZXmT0gp3/yFqTXcJadlZyiFt1ayWnJFrz7rEvtBN2UVHQd5W6uwNUHiShgYJH0VuliZQZxPy9kfZUAJq6aA7r9tLJMTEOfVWmLOnKX5EF0zIgWddRnGeHUyigKhUp0g50FW9HhIGTLu/E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947976; c=relaxed/simple; bh=ZlSglwTcsX8rRyvAipc34c0CDSc1nTrQpRYLPO7inoE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kHthMDZpNXNJFefUjE1beQkacSG30va3gHaSCOEkkKuamd6CKfil2jbP0bHZkyxAoti8QdrY6mprGImuApoUNoFM9cQtMMN7fvkD01e9bCfvyS7LpsRFviCa3NnJvVsWHofkMMl2roZAEjuswa0M8hdWcQlE6oPQh/lOve1apVw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=cSXyCrc3; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="cSXyCrc3" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-493c19bad03so28536615e9.2 for ; Mon, 13 Jul 2026 06:06:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947973; x=1784552773; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Ka2WRcxeR+5lBW53fFIg0AOmhGbckfoTmT31bECGwZU=; b=cSXyCrc3pYB4HEvlv3k52rLVq7xYdweBIXXXqNfm5Vjq0dLhfUULlKW+p0xUt+Mju8 1SmHdPdZs8J2D2mTEjC2XVFMJHYgxGg1V067kbUfBRFHnOAtWpA0Y902NwakO79gtTcd XAOcUZPYCPxBkfroQOwf4YXRHC+8VjSH6Y97e93L+9PpCDRO4RSSpfSViyhpztNso/WS 7HnnCvjLOIcA0gREqr1jsQSFra/lcLwNn0IZ7DUQhfED73dd8NPhIz3XZqla5DNf4rw7 xv4L/9vXHk7OiM0BdweoJnmUxoZifY/LTQOAKKZFg4mYaWnX+ErpFFtzytzYfyH1atF8 G+MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947973; x=1784552773; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Ka2WRcxeR+5lBW53fFIg0AOmhGbckfoTmT31bECGwZU=; b=kABrO9PHEY1QL0YngnX50NHiwKMhvU0Bhbia+2+rHcGVy0bCwA0TIPaW5QfOmHQhkC qiPpLu2caLbP7bsUDMYsZlEROVrwRUK0lsXsheDYPsdBp5TjtacgWSxCRkkVb8pIX1pr 5iXUyroAHGCwiQNbH5+HrkiGbPXzIeWI4te1nRgwxRWyZ4PDD46Mroj37KOBj+KXKR3e EI3oiUZtHLrjAcExafQxq2Rzhc5lzn/JwF/qXTLW8LQCxnN03L5TP1q76MEE8zMgZh6n wrQh5l40d/GdoBCBfGib9UPqm5gYP4mxP102yjZTMV4YQOs8JEAQvUnGnWTqlaAYnoz3 e6sA== X-Forwarded-Encrypted: i=1; AHgh+RrtAjEdEiDaZauyunWmfDd1KrwjouW8Y4ASrBE2W1jh+0g95LcF7QYciElIxE8Uk/psh+GxzJi5fgyzdsk=@vger.kernel.org X-Gm-Message-State: AOJu0YzW8RTFYwwj9vv3mMEuLe8CPs4INRdQDaowUfagh/rZdB6qjnFh sUs/de0FCkGm3IvQK+0eZ7MZ2It/LehfJIkrVEhOFVpCGBb//pcHTfYYdOrjACTjiEE= X-Gm-Gg: AfdE7cksmnZJRuD2WTTW7JOGKfVI5gIB0AJLGlAdYjXrfKc7bwYquFj92wj5Y/AqKFF t1/m0GNouo+NYsLpks3+jCRROf+VzaS0ZYE9NfVQx7Zdf/bbQaVwgMbX1QB+L3rzQsIK4R+iFVv Nyxl1UtDI1Z7o7QmE5mQAF725+QgqYb6ngYCwIe4rYz/ahiP6h/W4RiQhnQoiwfwA//4Um8wVJZ uE4MP11wVXTL13iOzOkluLCOtgBWPeDQC0/8oKFFVQOs1+HycH/X7ZRrMUTH16rC5zLng70ZSC+ s8qyNE4pZMc9OE2bT3Y3IQ26PhVu9TaHCOihQ2VQvxlcR/ixa/UmsGxcnLJsO/Wg1evTybZT4WO 4JNlIoYqi04yPAtcY4ktA/WjknJZHpOps4H2q8KboRS1MC3WEshK/R8lVLwzKrJrlug+VThJiOL AILOFwT/WYCH39Qc25VbkAmC3TOFFqJI5lY9Xx5n1EM2VX5q99oVdFwxJjxW+jragPVlz0EWQ= X-Received: by 2002:a05:600c:3143:b0:493:b87c:c87d with SMTP id 5b1f17b1804b1-493f87e9f43mr90709465e9.11.1783947973694; Mon, 13 Jul 2026 06:06:13 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.06.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:06:13 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea Subject: [PATCH v5 14/17] i3c: renesas: Organize structures to avoid unnecessary padding Date: Mon, 13 Jul 2026 16:05:42 +0300 Message-ID: <20260713130545.568657-15-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea Reorder structure members to reduce padding and improve memory layout. Reviewed-by: Frank Li Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - none Changes in v2: - collected tags drivers/i3c/master/renesas-i3c.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index 2cff7c6ae369..a54c20ef5f6e 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -221,19 +221,19 @@ enum renesas_i3c_event { }; =20 struct renesas_i3c_cmd { + const void *tx_buf; + void *rx_buf; + /* i2c xfer */ + u8 *i2c_buf; + const struct i2c_msg *msg; + int i2c_bytes_left; + int i2c_is_last; u32 cmd0; u32 len; - const void *tx_buf; u32 tx_count; - void *rx_buf; u32 rx_count; u32 err; u8 rnw; - /* i2c xfer */ - int i2c_bytes_left; - int i2c_is_last; - u8 *i2c_buf; - const struct i2c_msg *msg; }; =20 struct renesas_i3c_xfer { @@ -253,21 +253,22 @@ struct renesas_i3c_xferqueue { }; =20 struct renesas_i3c { + void __iomem *regs; + struct clk_bulk_data *clks; + struct reset_control *presetn; + struct reset_control *tresetn; + struct renesas_i3c_xferqueue xferqueue; struct i3c_master_controller base; + u8 addrs[RENESAS_I3C_MAX_DEVS]; + unsigned long rate; enum i3c_internal_state internal_state; - u16 maxdevs; + bool resuming; u32 free_pos; u32 dyn_addr; u32 i2c_STDBR; u32 i3c_STDBR; u32 extbr; - unsigned long rate; - u8 addrs[RENESAS_I3C_MAX_DEVS]; - struct renesas_i3c_xferqueue xferqueue; - void __iomem *regs; - struct clk_bulk_data *clks; - struct reset_control *presetn; - struct reset_control *tresetn; + u16 maxdevs; u8 num_clks; u8 refclk_div; }; --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 272ED423A87 for ; Mon, 13 Jul 2026 13:06:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947978; cv=none; b=h1wx0+VviN3ui6vs3Rh+1C1C63hiIZGnRJ0JNzI0Ou93abqHK30Yml2E4gp91VLY5q+FTqpwOaCDT/+xg9wL6tE+0RLXjaeuJEkPC10zjM0HhQBiS2dyb/SJRKHJLalm2YfotxKSYfKG2l+O8ogdEzHQZSnNyfKxPrVvsLVNFIg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947978; c=relaxed/simple; bh=UxiSDwh6jwXqegQul7XG9PxOZZkaNq9y4jb5agwGZ+Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GdFPIv2/yvF3o7BYn95FW7244sS0moQDaDNaZRvhgKzOdvN34MQFmqonDE3vwwms5k0xh+4kL8YoCCwfeYy0l8ewU+vBQEt+eoPkWFT2IS4UsCUP+CJx3bt3wsstKzZJtURVhwIxdssUKhQjoK5tzyJG/lbos5a+k8LzEcHk/PI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=D8Qc/5C6; arc=none smtp.client-ip=209.85.221.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="D8Qc/5C6" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-4703bc0a99aso1731854f8f.3 for ; Mon, 13 Jul 2026 06:06:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947975; x=1784552775; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=CyFiMTqW9DNKe50LmTgk4WYg6g3GKr2XXyXW7yrTRtM=; b=D8Qc/5C6GOL21ZbpW/KbaivZulZOWG8nzE0PA4ptGbUdbVXSJmd6vyHR2n/r6TLzKb mN8qdZiqBLITkBeDo6oqum9/5pOzspg/c+Na8DmKAy3TtcBuQH2c4ypA5+q++KniSsdX PQV5SKw/YIFa7I/C3mFPt1ttIC4V+dvd7Ya6IBvW3dqRRZjiiwYUPe6YJUGXyy2Urv5e 4P4r5Jx5i5ULWev7SWL9fLe/bfQGaDPFSZFxDE7wiJqT1v9/sEXo6Mopvclzl8Hy3GEK tt6qlAGHOowuokvb6IwT63R1Naj+jJgZCBqTLysgC9GL1j58NdyQoY1Cyw0n9wkUXiNC ZnGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947975; x=1784552775; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=CyFiMTqW9DNKe50LmTgk4WYg6g3GKr2XXyXW7yrTRtM=; b=UQdtS5UyAcc6ZZsjbQEKs80RXQkHU4fkat3A+xCP2AEktieyfdjTpY4UwoXC8qoVs+ Ep4jpXUJfdheOkESyf3v60nFYd/o+ali8gSge1c8cW3Hq6mBLwXMv9h62rCAZ699IExD SM+00OSGr9Zn+yfK5/E8HyaMxGQDsBrqBm9s+JjtYV5GS6uIcDVzFAD4ayPcqmvzYX6z VKsAiK4ggwX5kXmaNxNEdAYjTkFPrK6BaCpvSdzn3UCYtqZ89qlMFLkLnMUzCPBWlrew I6zcVp6G88+mXbd8wxh6mDrsKJzyGe974ER0OytillySQQoeMG7EOhzfOuVUaDfXzst8 5jQg== X-Forwarded-Encrypted: i=1; AHgh+Ro2jrEDN0sevdFBoIZn50gHGOb+Uhll/yjNJBav2jBFdrjRnpiB9SWsIYngdculll6PjjPIDm4msEYch9g=@vger.kernel.org X-Gm-Message-State: AOJu0YwD1TmpbiuDzWZAeY+d9sQJ2nURh1f8BQ6p7uAwa/ufN8zTOnKD IgKM7wYmtv7Z8ClSIkWmd3FTUUCkd8CQ0GVwC3PYl+wP0wG0D9stbS/4ZX6eliH/Cos= X-Gm-Gg: AfdE7ckuTMQ+liuGxJjMoTdXlSGvf1cajzMvJr5cy34t78jcKQrbhfmzPMHmMKB5dep Wj7cK/w3W9SmgNOKcH6bWpPWh5TZOfCDsWcTcZ9W7RyjOsXgVM01ih4Vh7XCLAkcWuFrR8WF9rF JklHhVls5k2CMVsX/G1grBsTXFZfAQWSxemdUz7nJZCSEh/mJfelgqcR4CJyNTErdxR8R22/7E1 Ymflm0QV304xIA5HPwVG//1SVffubA+B66BksEkSHGS9ES4jv9k5hYFY4q77HlzCA2ZN5MSY3jP nmm9K2S2nt4t+AXenp5tBwUamRT5slXhfxLg9RZ4Rt25iZ7rI5E0ZmTFnGmBAwDyBvVzwJAM1ME JwREf54BLFNgoZC0xN0nePE+1bmMZ4C11EPzpDuBTyapc7Lr6L0owE7QTFX0Dws9Ggkbn4BWhAR DhEex9pJfu+n9i0R3oAXDo28CxiGH+lfnltFnrZT93nJcMaC6RZxKBsYwY+b8d+tq3BlooYqM= X-Received: by 2002:a05:6000:2008:b0:478:9d9a:d515 with SMTP id ffacd0b85a97d-47f2dcf7f47mr9434967f8f.44.1783947975585; Mon, 13 Jul 2026 06:06:15 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.06.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:06:14 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea Subject: [PATCH v5 15/17] i3c: renesas: Use the "dev_name:irq_name" format for the interrupt name Date: Mon, 13 Jul 2026 16:05:43 +0300 Message-ID: <20260713130545.568657-16-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea Use the "dev_name:irq_name" format for the interrupt names. This makes it easier to identify interrupts in systems where multiple devices may request interrupts with the same name. Reviewed-by: Frank Li Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - none Changes in v2: - collected tags drivers/i3c/master/renesas-i3c.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index a54c20ef5f6e..f28e260dd166 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -1409,12 +1409,19 @@ static int renesas_i3c_probe(struct platform_device= *pdev) return ret; =20 for (i =3D 0; i < ARRAY_SIZE(renesas_i3c_irqs); i++) { + const char *irqname; + ret =3D platform_get_irq_byname(pdev, renesas_i3c_irqs[i].name); if (ret < 0) return ret; =20 + irqname =3D devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s:%s", dev_name(&pd= ev->dev), + renesas_i3c_irqs[i].desc); + if (!irqname) + return -ENOMEM; + ret =3D devm_request_irq(&pdev->dev, ret, renesas_i3c_irqs[i].isr, - 0, renesas_i3c_irqs[i].desc, i3c); + 0, irqname, i3c); if (ret) return ret; } --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.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 E90D84252BE for ; Mon, 13 Jul 2026 13:06:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947980; cv=none; b=cuGRzRGobi1w3Pjvyh4fpv++F95d79k3X3SVKQVxeLZIntqDQ9gD4CGVvFPpe63kUtvaouOqIXcHW+7iI77bJZ4lx/EHKfwfaqDuOVgI9EdjT5wQlykwfxqMFE3bFVkRDIDC9NaXQ7sCSvyxATne702rVNmmKQrRdKKd6cR4eUQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947980; c=relaxed/simple; bh=eA21fLaHFMO1phWAPXeRnUlodTFiwuZz9X7hmYiA+zk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qKm47GnL0SgNYotRZiZLOiseYwp7gzVrwMQEQf5fd88VX1mv19ZJtmr9QLicm8Yzp0fraesRXVpfY6HHtlkhlaY0v2gjLlU8o+lKg/72VwY2uj2v/v6a8Ef7vR7vUa5gV189WjZ9vJ8W7hqHfkDghYrgjJ90yEwWdwAssYSbXZY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=IrZoUDQg; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="IrZoUDQg" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-493e4cccd8dso13832175e9.2 for ; Mon, 13 Jul 2026 06:06:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947977; x=1784552777; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xZ4HI810hrTy7wdk8GAVxIAfJZWowAHqKrnu4cWL3zY=; b=IrZoUDQgIAwd24s6jt5oSUjDQg832lwXVslSjCjabZfMcFas9XkuUw6WEX0gw1Xqog XweBl2qQY6G/R/nXW4I9BBd/iiNB53GhNXBH8eWUMhmRcdCCxVwVksrkLGYbcT0waZn7 meqZzf4m5jA+3Si4mt5zN4p91qAkudorYJREybi5IPqh+L7s+jGikhZ2A/QpY5FF/bTs bbTs8McILdQ/BSNsQsdzcZSXwtnnq3jV85onNf9QsYbwS+9oC2MWSMwp4p+qttJxqFMb f5D4vonRqUx4Fwb5KoocUq/YcoU2Y5nuUV4f/UiLVSc+OjIGUNzXtasZVFwTdHaRkiY/ UrcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947977; x=1784552777; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=xZ4HI810hrTy7wdk8GAVxIAfJZWowAHqKrnu4cWL3zY=; b=Fxhqlw9iX2o8Jja6Fw9bcd1UEOJo7XL0eyDFb+yktWxmRL7wYDQNIPnkqGbUxHfT9p y0r059cvFsnAooeRH1B4dMs7U/dl2ZJTdX3XaeKn+2zSkWQ00LbTgZ2FGlG2OFApX3l0 U1RUtgnVKZpjBicO9IXSA2aAbGItVolxqJ5iepCvuMhmXKZUt8J5J9dNpjYV2+EXtB+9 l+kzWHSDdihDTmKZdFZSV+DCmXXdnwr6wiwybSqd34NXLpgR4GZCGvCO+7WnqvrAPBri R0P3SA+5cAwR4HJCaNC4u/BJVg4CkkkNu98B36A8/bMhMdN3Vwnvx3L6aUiT76h5jlLG nNcw== X-Forwarded-Encrypted: i=1; AHgh+RoJ2O/uedXMMIXxtrCkn0jpd7+fidFNyUHb5AEmBErdux/paxJ/hBApLqkLgoWJuIYNiG8okRw5HsilNn4=@vger.kernel.org X-Gm-Message-State: AOJu0YxRnjCDnvtDtmXX/pFlEnObdgmUoEaLFT763z2SmO8ejLbDaTa6 KKI1EoxMd+FnV4R/h6rU1a5MAtoXgMru4AFVruBDPeFyNLW4UIx2IsQxsIJXWDOtTNY= X-Gm-Gg: AfdE7cmJT0q7sg/QmxQK5Qiqgwzz/0tCSZpvBCJgJX4W3ErNMy7+snihtzhQFqF5ECG Fv8+1m0NDEALjEdWpst2faXD+RfoVweiEtOIceBXBc7oDepneBQOrvyfKFZc2W08CMhdlkY287n hgNW+KNc/BVdmEF1IhJjTPyrp4uLbDIBiQ1Lft0g2AX9Fm7f/2UIsJBqEGF401SzAkZYW86TfXl Z24lB5qw/x/8c0njPGY6lgzjedc1AkcNwlRNeTuBheFdPVWY3lPhTXu32vkpAFLn/kOLEcg4SD8 mHP6yhJ5raMHqygUqczFd4ZoZANi7vWsfHAji7toK/x8thZrYZsIHrVjHHmylzDZ22vbE6jRXnO KKTzKZhZ8VUUkhw5nk631vZp0S+Y+bHj2GeqKskknOTKxoi1H+XweajQnAfzgX8pHknaS9ddd3v 3TBafhVOIymMcj8NzER4hP51X6LG3GTeVcA7DTAmlb4BqlCrRypqT8W07DL3CgJB/mS7CMmK4= X-Received: by 2002:a05:600c:5487:b0:493:f534:3e73 with SMTP id 5b1f17b1804b1-493f87e6c80mr95247815e9.9.1783947977232; Mon, 13 Jul 2026 06:06:17 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.06.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:06:16 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea Subject: [PATCH v5 16/17] i3c: renesas: Drop unnecessary tab Date: Mon, 13 Jul 2026 16:05:44 +0300 Message-ID: <20260713130545.568657-17-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea Remove an unnecessary tab to make the code cleaner. Reviewed-by: Frank Li Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - none Changes in v4: - none Changes in v3: - none Changes in v2: - collected tags drivers/i3c/master/renesas-i3c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index f28e260dd166..378baac71aef 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -109,7 +109,7 @@ #define NCMDQP_DATA_LENGTH(x) FIELD_PREP(GENMASK(31, 16), x) =20 #define NRSPQP 0x154 /* Normal Respone Queue */ -#define NRSPQP_NO_ERROR 0 +#define NRSPQP_NO_ERROR 0 #define NRSPQP_ERROR_CRC 1 #define NRSPQP_ERROR_PARITY 2 #define NRSPQP_ERROR_FRAME 3 --=20 2.43.0 From nobody Sat Jul 25 21:23:12 2026 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (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 A51AA425CD2 for ; Mon, 13 Jul 2026 13:06:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947982; cv=none; b=EqCoHbTY9ZxT6RMixFV0368QrhHH0rbgpFGsQ7PgMrSjBwuuFCrTYAjmHZrQhtY+PIBhqz7j4eA1DoYeGupOSZJxi5Vc6IdSRLk0G18tLmoRR7XqqbX7P/L9IIBsTJRVBfcIkVJMq7+DxdIs1IlQk0/cFYfL0APcyhbs1ZV/src= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783947982; c=relaxed/simple; bh=XSu/gYmP8pxt4kcvM2Lbs8rQpVWb8am6eq2C2RLxobI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lvHESk/vCRS/A7OicKDFt3asB0F/wDbyK28hrMf2QffBFz7FmA2VST+nBhnD9X/83VeNBu7QXQYFlqgBtG/OUOQ2q6qeoXkgjmiSVqHOA8X6R7f+NziIse2h9Xz3Co2UV12xGJZArgWQ5MDyBWKMkiXu4Ec3ySyZDGoJfqIlx1c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=KdoFZe3w; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="KdoFZe3w" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-47f365afc5aso706185f8f.0 for ; Mon, 13 Jul 2026 06:06:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1783947979; x=1784552779; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=13ulA9xiGeZHoehEPfVqSD4E9lgwTJlF+km3jctT3S4=; b=KdoFZe3w8iyHKqnmyecVrGB9ObxAg0MDGqgrEhwAljcFoSddjHnaz9P5lM24cETxcs qm6phtgF4uYXIXMZUE823VuNGBiCfswf/dk0K1d0J4zv2v4+yBYRyniqFIRRSahAKhTc JNylqP4DodrY7YSyp9zFJSV23JdD7PcqqJpY7ubi6m6tZa+bsBwYg6uYvmKT8K6vBsdb Y7zOsY1kkuRrnoA4d8h6aSzWbhR7+viJp7dKpZ+UsUV38PnXT/0qSjT10UXSW2deXWBB LfW5xRWzeCGDJPEbbhXHrQLKtN41eJ2Ml934MwSjAR+SCRiVxEqGQmSZPJmxmwTCuEWx /TTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783947979; x=1784552779; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=13ulA9xiGeZHoehEPfVqSD4E9lgwTJlF+km3jctT3S4=; b=miZfm0gTPazNQbbcsiitYUL//7IVx2kZOW3MoReSMddpw7ZHL/Swh2o6yDybxW3hsC 9sMDUQuxP2TlcVL+NiScqcAEsix7dkwTA4G8eCfBM54GMai0tuBHuQa7pytDy0tV7DI3 sd4vlymLWCm7fQO4TB5CwvqNVEKRWtKrOVmAIAwCRYZ/gk8uJMtrNxxF8vwIAl7SUoj9 4Uv51nMYdrK3ALGb6muOSfdwC0XjnnTXRstiq6kXK/6d3NBfJGrrPdpuWzMWS2ZisXMy YuTRNRm4S/zfR1s1aAqV8qdIwmXa9kZWsvT+3C/JEpQ1ZATxalI2kfQk+OWuW1vjCanL P6/w== X-Forwarded-Encrypted: i=1; AHgh+Rq7nEfa2Y6VP9CKoMo3sIOR26EKI6iEUEnoZgkU/xTR/VfqH7n7FKAOIdnVjgPtoRzvFPzCiovv41lVTaI=@vger.kernel.org X-Gm-Message-State: AOJu0YxYH16DDwA1BeBQdIeihhcI+na0KRFkuAd2DOUKianheSc20cXi Cd8pBbZ5a8Cayy4aHdnSPxtZvVQih753CUNSc60KuqTd5/spurHSJ+Yp0xZUTrjT4yI= X-Gm-Gg: AfdE7ckP0rixSk8LvFto1ui/lyirJH052hdPXQ+rPS2xuHQE7rNV0FlbNTdesnCtExn F5MhmRq03R1kwGmMTJCuWGDfInvC+PcFeJqxPnmxLqA6P6yPE2j/zXJ/94LAtvmnlKoQYj4pgHq 83TlDedXH+aVNC1Lly2D4fUrprTwQxm/oAEJZiU4WtSAOQA8hjow1Y0xtLUjrxZaPwKFlG+VI2y LKbIoKzrMYNSkHWE0W9XrWL4a0E13mvxzeMtC8UuX3JuHyc61iL1ihNXudIeYY2afKpsq724aGr RgkJ5QjiqaiY3N2TVbNpO2Nkr29F6zkGckierd2cnkbuGG/hlKOgMq241bTtNEE52m72oGkoBAB lZA6OyWahZvozSIHYdkjE8+ckvsjC21RNdS8LfFXVit/tbDnuQuXW3+f+w21HHbXiw+6Q9yJq9a Ywnuacl1oVu5emFhn6RlVFNhWWI27JDPRn405RN2ueej2sV4qcivMDAllE4nc8bJU+vyIwK/WY0 /tDm8wk0w== X-Received: by 2002:a5d:5846:0:b0:47d:ef62:cae0 with SMTP id ffacd0b85a97d-47f2dcde19bmr9660430f8f.51.1783947979049; Mon, 13 Jul 2026 06:06:19 -0700 (PDT) Received: from claudiu-TUXEDO-InfinityBook-Pro-AMD-Gen9.. ([2a02:2f04:6402:500:e91e:fe5e:857b:d0c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f273195d9sm25321609f8f.3.2026.07.13.06.06.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 06:06:18 -0700 (PDT) From: Claudiu Beznea X-Google-Original-From: Claudiu Beznea To: wsa+renesas@sang-engineering.com, tommaso.merciai.xr@bp.renesas.com, alexandre.belloni@bootlin.com, Frank.Li@nxp.com, p.zabel@pengutronix.de Cc: claudiu.beznea@tuxon.dev, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Claudiu Beznea Subject: [PATCH v5 17/17] i3c: renesas: Add runtime PM support Date: Mon, 13 Jul 2026 16:05:45 +0300 Message-ID: <20260713130545.568657-18-claudiu.beznea+renesas@tuxon.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> References: <20260713130545.568657-1-claudiu.beznea+renesas@tuxon.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea On the SoCs where the Renesas I3C driver is enabled (RZ/G3S and RZ/G3E), the clocks of the IP are managed through a clock PM domain. To keep the I3C code simpler, the explicit clock handling was dropped along with the addition of runtime PM support, in favor of the runtime PM APIs. Only the code for getting tclk was preserved, as it is necessary to compute the I3C clock rate. All the APIs provided to the I3C subsystem through struct i3c_master_controller_ops are guarded with runtime PM APIs to enable/disable the controller at runtime. As the Renesas I3C driver implements an asynchronous transmit model by preparing a transfer and waiting for its completion through the ISR, renesas_i3c_abort_xfer() was added to disable interrupts and clear any pending IRQ status bits when there is no completion in the defined timeout. Along with this, renesas_i3c_wait_xfer() return type was changed to unsigned long. Add runtime PM support for the Renesas I3C driver. Signed-off-by: Claudiu Beznea Tested-by: Tommaso Merciai --- Changes in v5: - updated renesas_i3c_irqs_mask_and_clear() to use the renesas_i3c_irqs_mask_and_clear_locked() introduced in patch 1 from this series Changes in v4: - renamed renesas_i3c_abort_xfer() from v3 to renesas_i3c_irqs_mask_and_clear(); along with it renamed local varibles abort_xfer to xfer_failed Changes in v3: - dropped the RPM resume/suspend in renesas_i3c_suspend() to read the DATBASn registers as the DATBASn register are not used on suspend/resume path anymore in this version Changes in v2: - dropped the runtime suspend/resume functions as for now, there will be no pinctrl sleep state described in DT - do not synchronize the IRQs in renesas_i3c_abort_xfer() as some handlers may re-enable interrupts; instead just disable the interrupts and clean any status bits that the IRQ handlers are touching; with this the struct renesas_i3c::{irqs, num_irqs} and the associated code was removed - dropped the renesas_i3c_dont_use_autosuspend() along with the devm_add_action_or_reset() call to set it since the same operation is done by the devres cleanup helper of devm_pm_runtime_enable() - adjusted the renesas_i3c_suspend() with RPM calls to save the DATBAS registers - use pm_runtime_resume_and_get() in renesas_i3c_resume() to avoid mixing gotos with cleanup helpers - adjusted the patch description to reflect these changes drivers/i3c/master/renesas-i3c.c | 140 ++++++++++++++++++++++++------- 1 file changed, 112 insertions(+), 28 deletions(-) diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-= i3c.c index 378baac71aef..1975c599ca43 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include "../internals.h" @@ -199,8 +200,6 @@ #define RENESAS_I3C_MAX_DEVS 8 #define I2C_INIT_MSG -1 =20 -#define RENESAS_I3C_TCLK_IDX 1 - enum i3c_internal_state { I3C_INTERNAL_STATE_DISABLED, I3C_INTERNAL_STATE_CONTROLLER_IDLE, @@ -254,9 +253,10 @@ struct renesas_i3c_xferqueue { =20 struct renesas_i3c { void __iomem *regs; - struct clk_bulk_data *clks; + struct clk *tclk; struct reset_control *presetn; struct reset_control *tresetn; + struct device *dev; struct renesas_i3c_xferqueue xferqueue; struct i3c_master_controller base; u8 addrs[RENESAS_I3C_MAX_DEVS]; @@ -269,7 +269,6 @@ struct renesas_i3c { u32 i3c_STDBR; u32 extbr; u16 maxdevs; - u8 num_clks; u8 refclk_div; }; =20 @@ -449,7 +448,14 @@ static void renesas_i3c_irqs_mask_and_clear_locked(str= uct renesas_i3c *i3c) renesas_readl(i3c->regs, BST); } =20 -static void renesas_i3c_wait_xfer(struct renesas_i3c *i3c, struct renesas_= i3c_xfer *xfer) +static void renesas_i3c_irqs_mask_and_clear(struct renesas_i3c *i3c) +{ + guard(spinlock_irqsave)(&i3c->xferqueue.lock); + + renesas_i3c_irqs_mask_and_clear_locked(i3c); +} + +static unsigned long renesas_i3c_wait_xfer(struct renesas_i3c *i3c, struct= renesas_i3c_xfer *xfer) { unsigned long time_left; =20 @@ -458,6 +464,8 @@ static void renesas_i3c_wait_xfer(struct renesas_i3c *i= 3c, struct renesas_i3c_xf time_left =3D wait_for_completion_timeout(&xfer->comp, msecs_to_jiffies(1= 000)); if (!time_left) renesas_i3c_dequeue_xfer(i3c, xfer); + + return time_left; } =20 static void renesas_i3c_set_prts(struct renesas_i3c *i3c, u32 val) @@ -491,6 +499,12 @@ static void renesas_i3c_bus_enable(struct i3c_master_c= ontroller *m, bool i3c_mod static int renesas_i3c_reset(struct renesas_i3c *i3c) { u32 val; + int ret; + + PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(i3c->dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; =20 renesas_writel(i3c->regs, BCTL, 0); renesas_set_bit(i3c->regs, RSTCTL, RSTCTL_RI3CRST); @@ -562,7 +576,7 @@ static int renesas_i3c_bus_init(struct i3c_master_contr= oller *m) int od_high_ticks, od_low_ticks, i2c_total_ticks; int ret; =20 - i3c->rate =3D clk_get_rate(i3c->clks[RENESAS_I3C_TCLK_IDX].clk); + i3c->rate =3D clk_get_rate(i3c->tclk); if (!i3c->rate) return -EINVAL; =20 @@ -633,6 +647,11 @@ static int renesas_i3c_bus_init(struct i3c_master_cont= roller *m) if (ret) return ret; =20 + PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(i3c->dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; + renesas_writel(i3c->regs, STDBR, i3c->i3c_STDBR); renesas_writel(i3c->regs, EXTBR, i3c->extbr); renesas_writel(i3c->regs, REFCKCTL, REFCKCTL_IREFCKS(cks)); @@ -655,6 +674,7 @@ static int renesas_i3c_daa(struct i3c_master_controller= *m) { struct renesas_i3c *i3c =3D to_renesas_i3c(m); struct renesas_i3c_cmd *cmd; + unsigned long time_left; u32 olddevs, newdevs; u8 last_addr =3D 0, pos; int ret; @@ -667,6 +687,11 @@ static int renesas_i3c_daa(struct i3c_master_controlle= r *m) cmd =3D xfer->cmds; cmd->rx_count =3D 0; =20 + PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(i3c->dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; + /* Enable I3C bus. */ renesas_i3c_bus_enable(m, true); =20 @@ -701,7 +726,9 @@ static int renesas_i3c_daa(struct i3c_master_controller= *m) NCMDQP_CMD(I3C_CCC_ENTDAA) | NCMDQP_DEV_INDEX(ret) | NCMDQP_DEV_COUNT(i3c->maxdevs - ret) | NCMDQP_TOC; =20 - renesas_i3c_wait_xfer(i3c, xfer); + time_left =3D renesas_i3c_wait_xfer(i3c, xfer); + if (!time_left) + renesas_i3c_irqs_mask_and_clear(i3c); =20 if (cmd->rx_count >=3D i3c->maxdevs) newdevs =3D 0; @@ -767,6 +794,7 @@ static int renesas_i3c_send_ccc_cmd(struct i3c_master_c= ontroller *m, { struct renesas_i3c *i3c =3D to_renesas_i3c(m); struct renesas_i3c_cmd *cmd; + unsigned long time_left; int ret, pos =3D 0; =20 if (ccc->id & I3C_CCC_DIRECT) { @@ -784,6 +812,11 @@ static int renesas_i3c_send_ccc_cmd(struct i3c_master_= controller *m, cmd->rnw =3D ccc->rnw; cmd->cmd0 =3D 0; =20 + PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(i3c->dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; + renesas_i3c_bus_enable(m, true); =20 /* Calculate the command descriptor. */ @@ -818,7 +851,9 @@ static int renesas_i3c_send_ccc_cmd(struct i3c_master_c= ontroller *m, } } =20 - renesas_i3c_wait_xfer(i3c, xfer); + time_left =3D renesas_i3c_wait_xfer(i3c, xfer); + if (!time_left) + renesas_i3c_irqs_mask_and_clear(i3c); =20 ret =3D xfer->ret; if (ret) @@ -833,7 +868,9 @@ static int renesas_i3c_i3c_xfers(struct i3c_dev_desc *d= ev, struct i3c_xfer *i3c_ struct i3c_master_controller *m =3D i3c_dev_get_master(dev); struct renesas_i3c *i3c =3D to_renesas_i3c(m); struct renesas_i3c_i2c_dev_data *data =3D i3c_dev_get_master_data(dev); - int i; + unsigned long time_left; + bool xfer_failed =3D false; + int i, ret; =20 struct renesas_i3c_xfer *xfer __free(kfree) =3D renesas_i3c_alloc_xfer(i3= c, 1); if (!xfer) @@ -841,6 +878,11 @@ static int renesas_i3c_i3c_xfers(struct i3c_dev_desc *= dev, struct i3c_xfer *i3c_ =20 init_completion(&xfer->comp); =20 + PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(i3c->dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; + /* Enable I3C bus. */ renesas_i3c_bus_enable(m, true); =20 @@ -872,9 +914,14 @@ static int renesas_i3c_i3c_xfers(struct i3c_dev_desc *= dev, struct i3c_xfer *i3c_ renesas_set_bit(i3c->regs, NTIE, NTIE_TDBEIE0); } =20 - renesas_i3c_wait_xfer(i3c, xfer); + time_left =3D renesas_i3c_wait_xfer(i3c, xfer); + if (!time_left) + xfer_failed =3D true; } =20 + if (xfer_failed) + renesas_i3c_irqs_mask_and_clear(i3c); + return 0; } =20 @@ -883,12 +930,17 @@ static int renesas_i3c_attach_i3c_dev(struct i3c_dev_= desc *dev) struct i3c_master_controller *m =3D i3c_dev_get_master(dev); struct renesas_i3c *i3c =3D to_renesas_i3c(m); struct renesas_i3c_i2c_dev_data *data; - int pos; + int pos, ret; =20 pos =3D renesas_i3c_get_free_pos(i3c); if (pos < 0) return pos; =20 + PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(i3c->dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; + data =3D kzalloc_obj(*data); if (!data) return -ENOMEM; @@ -910,7 +962,12 @@ static int renesas_i3c_reattach_i3c_dev(struct i3c_dev= _desc *dev, struct i3c_master_controller *m =3D i3c_dev_get_master(dev); struct renesas_i3c *i3c =3D to_renesas_i3c(m); struct renesas_i3c_i2c_dev_data *data =3D i3c_dev_get_master_data(dev); - int pos; + int pos, ret; + + PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(i3c->dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; =20 pos =3D renesas_i3c_get_free_pos(i3c); =20 @@ -938,8 +995,12 @@ static void renesas_i3c_detach_i3c_dev(struct i3c_dev_= desc *dev) struct renesas_i3c_i2c_dev_data *data =3D i3c_dev_get_master_data(dev); struct i3c_master_controller *m =3D i3c_dev_get_master(dev); struct renesas_i3c *i3c =3D to_renesas_i3c(m); + int ret; =20 - renesas_writel(i3c->regs, DATBAS(data->index), 0); + PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(i3c->dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (!ret) + renesas_writel(i3c->regs, DATBAS(data->index), 0); =20 i3c_dev_set_master_data(dev, NULL); i3c->addrs[data->index] =3D 0; @@ -955,7 +1016,9 @@ static int renesas_i3c_i2c_xfers(struct i2c_dev_desc *= dev, struct renesas_i3c *i3c =3D to_renesas_i3c(m); struct renesas_i3c_cmd *cmd; u8 start_bit =3D CNDCTL_STCND; - int i; + unsigned long time_left; + bool xfer_failed =3D false; + int i, ret; =20 if (!i2c_nxfers) return 0; @@ -968,6 +1031,11 @@ static int renesas_i3c_i2c_xfers(struct i2c_dev_desc = *dev, xfer->is_i2c_xfer =3D true; cmd =3D xfer->cmds; =20 + PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(i3c->dev, pm); + ret =3D PM_RUNTIME_ACQUIRE_ERR(&pm); + if (ret) + return ret; + renesas_i3c_bus_enable(m, false); =20 if (!(renesas_readl(i3c->regs, BCST) & BCST_BFREF)) { @@ -994,7 +1062,9 @@ static int renesas_i3c_i2c_xfers(struct i2c_dev_desc *= dev, =20 renesas_set_bit(i3c->regs, NTSTE, NTSTE_TDBEE0); =20 - wait_for_completion_timeout(&xfer->comp, m->i2c.timeout); + time_left =3D wait_for_completion_timeout(&xfer->comp, m->i2c.timeout); + if (!time_left) + xfer_failed =3D true; =20 if (cmd->err) break; @@ -1003,6 +1073,10 @@ static int renesas_i3c_i2c_xfers(struct i2c_dev_desc= *dev, } =20 renesas_i3c_dequeue_xfer(i3c, xfer); + + if (xfer_failed) + renesas_i3c_irqs_mask_and_clear(i3c); + return cmd->err; } =20 @@ -1384,12 +1458,16 @@ static int renesas_i3c_probe(struct platform_device= *pdev) if (IS_ERR(i3c->regs)) return PTR_ERR(i3c->regs); =20 - ret =3D devm_clk_bulk_get_all_enabled(&pdev->dev, &i3c->clks); - if (ret <=3D RENESAS_I3C_TCLK_IDX) - return dev_err_probe(&pdev->dev, ret < 0 ? ret : -EINVAL, - "Failed to get clocks (need > %d, got %d)\n", - RENESAS_I3C_TCLK_IDX, ret); - i3c->num_clks =3D ret; + i3c->tclk =3D devm_clk_get(&pdev->dev, "tclk"); + if (IS_ERR(i3c->tclk)) + return dev_err_probe(&pdev->dev, PTR_ERR(i3c->tclk), "Failed to get tclk= "); + + i3c->dev =3D &pdev->dev; + pm_runtime_set_autosuspend_delay(&pdev->dev, 300); + pm_runtime_use_autosuspend(&pdev->dev); + ret =3D devm_pm_runtime_enable(&pdev->dev); + if (ret) + return ret; =20 i3c->tresetn =3D devm_reset_control_get_optional_exclusive_deasserted(&pd= ev->dev, "tresetn"); if (IS_ERR(i3c->tresetn)) @@ -1456,8 +1534,6 @@ static int renesas_i3c_suspend(struct device *dev) if (ret) goto err_mark_resumed; =20 - clk_bulk_disable(i3c->num_clks, i3c->clks); - return 0; =20 err_mark_resumed: @@ -1479,13 +1555,13 @@ static int renesas_i3c_resume(struct device *dev) if (ret) return ret; =20 - ret =3D clk_bulk_enable(i3c->num_clks, i3c->clks); + ret =3D renesas_i3c_reset(i3c); if (ret) goto err_resets_asserted; =20 - ret =3D renesas_i3c_reset(i3c); + ret =3D pm_runtime_resume_and_get(dev); if (ret) - goto err_clks_disable; + goto err_resets_asserted; =20 /* Re-store I3C registers value. */ renesas_writel(i3c->regs, STDBR, i3c->i3c_STDBR); @@ -1504,15 +1580,23 @@ static int renesas_i3c_resume(struct device *dev) =20 i2c_mark_adapter_resumed(&i3c->base.i2c); =20 + pm_runtime_put_autosuspend(dev); + /* * I3C devices may have retained their dynamic address anyway. Do not * fail the resume because of DAA error. */ return 0; =20 -err_clks_disable: - clk_bulk_disable(i3c->num_clks, i3c->clks); err_resets_asserted: + /* + * If this happens, there is no way to recover from this state without + * reloading the driver. We want to avoid keeping the reset line + * deasserted unnecessarily. The runtime paths will still work correctly + * even if the IP registers are accessed while reset is asserted (e.g. + * if a runtime path is triggered after a failed resume). Checked on + * RZ/G3S. + */ reset_control_bulk_assert(ARRAY_SIZE(resets), resets); return ret; } --=20 2.43.0