From nobody Wed Jun 17 01:32:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6DCAE34CDD; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; cv=none; b=JiaYEIhqgziwVxsWgz5Cu+hY2lzUgrMeO0jjaGnAl/BMJZasUTtGb6NJbkQQq1lPGBthwIivUFOGuCjZnQWbSsyItu5FWRkO4Ck1dGiXE4Nrzj4DCKAdYiXslFGRGRF5SP3tz9AYUcMNDyBbt1uC/2TkePoJ8uuMXtkONTGmX1Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; c=relaxed/simple; bh=3U1QY5N85lS4mCVnz/TZvVbzIVXjgbkWXAMpxK9sciY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D3nNUK87qOHOdDLPCgevRJG6ku8xJlSJdLZveDRUAGyHnc3SHfXpQaIY2SjxLj8eTEfJKlbidqQjvDltm5EFePgUll4DAzafaTbCt3eH48xrYMtchitp1JKMXPLhWFEwp6AV6r7gfNKqPEdC6u/wcO7CGDEPdEJ1EJvvLnFqkwo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eIwGrDFJ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="eIwGrDFJ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21259C2BCB0; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776776046; bh=3U1QY5N85lS4mCVnz/TZvVbzIVXjgbkWXAMpxK9sciY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eIwGrDFJkOwNSkOjZnv6O6KpnbjQaaUt5ZiU8C51+ngYJ3rwwkACbszQQc7MooAdR QzUI0MG7KOR93L5/Z3qXxSY62W34CSeJl/pMp48KCewjOQBdM8ldnE+w4e+dvmpqix QlH6OE/geixGu22/XcUlugbs/VHXV67BPP4XQfZEBsmDQE/b/S5DhjX8mPy7qw1T8g 7ddMnfmqo6TXZIpcjt9xjJ42ATxpeGbuAXg3/p2Fu9BLyNGdhK0uHrmlvbRIChjc7e OhTczlpsFLmXVP+xuDHLY4D8Tetw304hiP1vJ1/5iABHgQ7FxpBGBiWpMFuJFn/+rt 3vEibbtvKFUMQ== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wFAc7-00000006RIO-3qs3; Tue, 21 Apr 2026 14:54:03 +0200 From: Johan Hovold To: Mark Brown Cc: Miquel Raynal , Anurag Dutta , Apurva Nandan , Dhruva Gole , linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org Subject: [PATCH 1/6] spi: cadence-quadspi: fix runtime pm disable imbalance on probe failure Date: Tue, 21 Apr 2026 14:53:49 +0200 Message-ID: <20260421125354.1534871-2-johan@kernel.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260421125354.1534871-1-johan@kernel.org> References: <20260421125354.1534871-1-johan@kernel.org> 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" A recent attempt to fix the probe error handling introduced a runtime PM disable depth imbalance by incorrectly disabling runtime PM on early failures (e.g. probe deferral). Fixes: f18c8cfa4f1a ("spi: cadence-qspi: Fix probe error path and remove") Cc: stable@vger.kernel.org # 7.0 Cc: Miquel Raynal (Schneider Electric) Signed-off-by: Johan Hovold Reviewed-by: Miquel Raynal --- drivers/spi/spi-cadence-quadspi.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-qu= adspi.c index 50ef65fc5ded..5040e4e1cce0 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -1871,7 +1871,7 @@ static int cqspi_probe(struct platform_device *pdev) ret =3D clk_bulk_prepare_enable(CLK_QSPI_NUM, cqspi->clks); if (ret) { dev_err(dev, "Cannot enable QSPI clocks.\n"); - goto disable_rpm; + return ret; } =20 /* Obtain QSPI reset control */ @@ -1981,7 +1981,7 @@ static int cqspi_probe(struct platform_device *pdev) ret =3D cqspi_request_mmap_dma(cqspi); if (ret =3D=3D -EPROBE_DEFER) { dev_err_probe(&pdev->dev, ret, "Failed to request mmap DMA\n"); - goto disable_controller; + goto disable_rpm; } } =20 @@ -1999,14 +1999,13 @@ static int cqspi_probe(struct platform_device *pdev) release_dma_chan: if (cqspi->rx_chan) dma_release_channel(cqspi->rx_chan); -disable_controller: +disable_rpm: + if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) + pm_runtime_disable(dev); cqspi_controller_enable(cqspi, 0); disable_clks: if (pm_runtime_get_sync(&pdev->dev) >=3D 0) clk_bulk_disable_unprepare(CLK_QSPI_NUM, cqspi->clks); -disable_rpm: - if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) - pm_runtime_disable(dev); =20 return ret; } --=20 2.52.0 From nobody Wed Jun 17 01:32:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6DD523BADA0; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; cv=none; b=D/7vbvSzEAKkrwOI7Cn18B87q6qjtmAjyHs6u+029f3uixpzYuNnGkYb8LQdKOzHmTQssCQGFBurRnyVFofwURsqTA3xFxVV74hDW9ACOYdHckagdwSQuG8UbWjYjRN9TZOUQG4JghlK05FKfEZbjZEEsR0IOZqRU+o4CQjaS40= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; c=relaxed/simple; bh=wgArIPcZArnMQimQRP1QPvvKx7Z52l1PRVNiX2fzlhc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tHUPKz6njJAciw9f2VyZOIkdM2Ob2hcjyoC0oNkWGsOcKjNdjEF+0TPP4xcqMlHMEymwz55kpNliTlT89voT5eJ84CQsbNTFNE5Vacn9/ie5qWnyDAod9nrYLMlA8PIKflI7iUiZJUNyX0GiSBMpF9tZi9BGO55OLwRHlK5FIpg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ql6vJJha; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ql6vJJha" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 25CADC2BCB7; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776776046; bh=wgArIPcZArnMQimQRP1QPvvKx7Z52l1PRVNiX2fzlhc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ql6vJJhaLViTa4mDkgoRrfndl4ohHzwpiBJMaw5MAeBjGoTivQpWjT1G/F78G4mrQ ih7YofOFFrW+B5eDrj//cCce15VfSxMAnkyFAvZQ89cESLMxY4nDwV0GbYgnNiiI8U 3CnTDkdR52pBWGE2N7Anpx+/qvj2PtwafmYiW3JbkNZI0Ix4T5k71dO3vR/ZbLs/8H Cc8cuNMNdd/r+ae3hUoVH7EvIPfFslxCuAAyI2TGe1MA0dZp5vhnlrYPhpF/ZRzkVA ATikb2fZ0Wt7OGsHFIMebY7uQrN77xVdFXk2UXMSEnzcogshD7/8TnJ7lRfIBks0c5 sWOvvFhGeFzNw== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wFAc7-00000006RIQ-3tkR; Tue, 21 Apr 2026 14:54:03 +0200 From: Johan Hovold To: Mark Brown Cc: Miquel Raynal , Anurag Dutta , Apurva Nandan , Dhruva Gole , linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org Subject: [PATCH 2/6] spi: cadence-quadspi: fix clock imbalance on probe failure Date: Tue, 21 Apr 2026 14:53:50 +0200 Message-ID: <20260421125354.1534871-3-johan@kernel.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260421125354.1534871-1-johan@kernel.org> References: <20260421125354.1534871-1-johan@kernel.org> 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" Drop the bogus runtime PM get on probe failures that was never needed and that leaks a usage count reference while preventing the clocks from being disabled (as runtime PM has not yet been enabled). Fixes: 1889dd208197 ("spi: cadence-quadspi: Fix clock disable on probe fail= ure path") Cc: stable@vger.kernel.org # 6.19 Cc: Anurag Dutta Signed-off-by: Johan Hovold --- drivers/spi/spi-cadence-quadspi.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-qu= adspi.c index 5040e4e1cce0..b79f48f2420c 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -2004,8 +2004,7 @@ static int cqspi_probe(struct platform_device *pdev) pm_runtime_disable(dev); cqspi_controller_enable(cqspi, 0); disable_clks: - if (pm_runtime_get_sync(&pdev->dev) >=3D 0) - clk_bulk_disable_unprepare(CLK_QSPI_NUM, cqspi->clks); + clk_bulk_disable_unprepare(CLK_QSPI_NUM, cqspi->clks); =20 return ret; } --=20 2.52.0 From nobody Wed Jun 17 01:32:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6DF2D3C9437; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; cv=none; b=eRoF6CNutszNvmPI0zsPJyKpmS4L4mNOIlnht0En5ZANg7jxvOF8GraU0oLMt8ic+MloCKbppzRFwYpvSfHmFFrkCREyFMwXzRi/v9ob1BrSMZV6pMqAfFauleAOYZxHxgH+o89rA6EIHANgkqjf1gBqWbwzasb56xPtvzFfQ9k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; c=relaxed/simple; bh=GbVUyYwVI6NJo7Uo7ArYE4f8GvPxrWAa5auzbEce44s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lYzK3Ml2OoPB5vmtCP2lE4qztarv3DlF9wZIpKCI24Il246zBJpV9/SypfSF8DKdHJkB8nhI9mZAmAGb36B/DfKT6+4G5HQmoCAADdqtnekslsXlj6ElUgGZ1FtiisdemXVz4/XoSttQjsxypRlF79EHespt2/ySZeI4X26ZaYo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rnRASV1e; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rnRASV1e" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2383CC2BCB3; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776776046; bh=GbVUyYwVI6NJo7Uo7ArYE4f8GvPxrWAa5auzbEce44s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rnRASV1ee/919RMT40nNzpMsCFMDXKhKWF5ejLpNgPietiL5rXH7zoUjEWLY7TYKH 66PV5VtpsG14cxoda9i0/729ZAcmecWofkUBIy8U+v44dAvC7qoaoSNpodZyrEgxWu 7vmShrwRu5TE5ayNWTVpKIYubQpGtTasBzASGCmN6odq718qDhuuUSAxZNiNGGnkCl u6AGC4bBK6VXwFBZy8xDLhkFGcU6X0uTKihHBYmCtRfk0FHxb98AhyBao23wHf+6DO lCKdCGL0U0hERHS1mdhcIyxHyCeuETo4tHK04GfjTJY+O8d0Gum4LSx2WLemFIMc83 olAdvZioKOOhw== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wFAc7-00000006RIS-3w11; Tue, 21 Apr 2026 14:54:03 +0200 From: Johan Hovold To: Mark Brown Cc: Miquel Raynal , Anurag Dutta , Apurva Nandan , Dhruva Gole , linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org Subject: [PATCH 3/6] spi: cadence-quadspi: fix unclocked access on unbind Date: Tue, 21 Apr 2026 14:53:51 +0200 Message-ID: <20260421125354.1534871-4-johan@kernel.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260421125354.1534871-1-johan@kernel.org> References: <20260421125354.1534871-1-johan@kernel.org> 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" Make sure that the controller is runtime resumed before disabling it during driver unbind to avoid an unclocked register access. This issue was flagged by Sashiko when reviewing a controller deregistration fix. Fixes: 0578a6dbfe75 ("spi: spi-cadence-quadspi: add runtime pm support") Cc: stable@vger.kernel.org # 6.7 Cc: Dhruva Gole Link: https://sashiko.dev/#/patchset/20260414134319.978196-1-johan%40kernel= .org?part=3D2 Signed-off-by: Johan Hovold --- drivers/spi/spi-cadence-quadspi.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-qu= adspi.c index b79f48f2420c..87dc14c53675 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -2028,14 +2028,13 @@ static void cqspi_remove(struct platform_device *pd= ev) if (cqspi->rx_chan) dma_release_channel(cqspi->rx_chan); =20 - cqspi_controller_enable(cqspi, 0); - - if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) ret =3D pm_runtime_get_sync(&pdev->dev); =20 - if (ret >=3D 0) + if (ret >=3D 0) { + cqspi_controller_enable(cqspi, 0); clk_bulk_disable_unprepare(CLK_QSPI_NUM, cqspi->clks); + } =20 if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) { pm_runtime_put_sync(&pdev->dev); --=20 2.52.0 From nobody Wed Jun 17 01:32:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6DE0E3BE15C; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; cv=none; b=j7UDRJBKK7mZlWgm3RVe1UkLY9aby1472SVuJgr/lE+99bXUO0g7DmOPnq7QXDAn4cu5Jm03k8W7ZlAR4tlc1wa6wEFekw5szs+UKPEknlTLSuSRWRvRAgt2CPfoOAWPfYru/k6G3lqbsUydvPlT2ms58SvGUjHqKv0rqhKrgPI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; c=relaxed/simple; bh=Ha8RR8lpJXW8GK4gqieYvi4qMX09sxiINeoYhxSkR9I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pG2YUy0VSrJOrAvTReUaEBg+9L/lRflaa3F5KPN4YhX0j24tVvE8wAKKkPizwQ6ZSUYcDtnxHowXPS7Tm4BFqdZboLTmU798AE70rkZNJcp/nAwz2cR+zGFrDxeKj+CbzhL002hPtnzc9Ev2dBW95UabnbnNobulwaEe9ULE7KY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SeRrIVG1; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SeRrIVG1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A942C2BCB6; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776776046; bh=Ha8RR8lpJXW8GK4gqieYvi4qMX09sxiINeoYhxSkR9I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SeRrIVG1Ii8sGN7WEpxZ/NMHwEJt1PI/CxO5SoY+hqOr0ReRlVhnqqY1odpYQV+cM Aq3Tp/wRfetP0/BoAxAn+7skYp+RxXqwu3lOjLngl5hb1NKwpJzqI0N/ZBUW298MDQ MoV6dXNOaXhtk/g6eBl0s9686oqZYyd6ZXU+d6Gqz9MSKW22YBFUkcGLhJuXGvpN+H 0L4taNzNXRiBP6/9hz9gM2FgpGNQ9kjFF8AMGmQUpl/JAP7tdmo02LZlueCMy2D+DD MbNGB5L/spv8U+BFNBJdBmGuAGklWV+jIA2Z/UDy4rccSB6Y2rufpiKZGo5CjrvYjA xydxay3jgUqZQ== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wFAc7-00000006RIU-3yN5; Tue, 21 Apr 2026 14:54:03 +0200 From: Johan Hovold To: Mark Brown Cc: Miquel Raynal , Anurag Dutta , Apurva Nandan , Dhruva Gole , linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org Subject: [PATCH 4/6] spi: cadence-quadspi: fix runtime pm and clock imbalance on unbind Date: Tue, 21 Apr 2026 14:53:52 +0200 Message-ID: <20260421125354.1534871-5-johan@kernel.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260421125354.1534871-1-johan@kernel.org> References: <20260421125354.1534871-1-johan@kernel.org> 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" Make sure to balance the runtime PM usage count before returning on probe failure (to allow the controller to suspend after a probe deferral) and to only drop the usage count on driver unbind to avoid a clock disable imbalance. Also restore the autosuspend setting. Fixes: 0578a6dbfe75 ("spi: spi-cadence-quadspi: add runtime pm support") Cc: stable@vger.kernel.org # 6.7 Cc: Dhruva Gole Signed-off-by: Johan Hovold --- drivers/spi/spi-cadence-quadspi.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-qu= adspi.c index 87dc14c53675..1b0d6186c7ef 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -1864,10 +1864,6 @@ static int cqspi_probe(struct platform_device *pdev) if (irq < 0) return -ENXIO; =20 - ret =3D pm_runtime_set_active(dev); - if (ret) - return ret; - ret =3D clk_bulk_prepare_enable(CLK_QSPI_NUM, cqspi->clks); if (ret) { dev_err(dev, "Cannot enable QSPI clocks.\n"); @@ -1966,10 +1962,11 @@ static int cqspi_probe(struct platform_device *pdev) cqspi->sclk =3D 0; =20 if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) { - pm_runtime_enable(dev); pm_runtime_set_autosuspend_delay(dev, CQSPI_AUTOSUSPEND_TIMEOUT); pm_runtime_use_autosuspend(dev); pm_runtime_get_noresume(dev); + pm_runtime_set_active(dev); + pm_runtime_enable(dev); } =20 host->num_chipselect =3D cqspi->num_chipselect; @@ -2000,8 +1997,12 @@ static int cqspi_probe(struct platform_device *pdev) if (cqspi->rx_chan) dma_release_channel(cqspi->rx_chan); disable_rpm: - if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) + if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) { pm_runtime_disable(dev); + pm_runtime_set_suspended(dev); + pm_runtime_put_noidle(dev); + pm_runtime_dont_use_autosuspend(dev); + } cqspi_controller_enable(cqspi, 0); disable_clks: clk_bulk_disable_unprepare(CLK_QSPI_NUM, cqspi->clks); @@ -2037,8 +2038,10 @@ static void cqspi_remove(struct platform_device *pde= v) } =20 if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) { - pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); + pm_runtime_set_suspended(&pdev->dev); + pm_runtime_put_noidle(&pdev->dev); + pm_runtime_dont_use_autosuspend(&pdev->dev); } } =20 --=20 2.52.0 From nobody Wed Jun 17 01:32:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 965183D566E; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; cv=none; b=NINHRN0Cc5/I/9FFY17aMCHfNpxxnwD6r0DjmMqVKQibWGsajossyO4BXN7AFO8drS5hNEb9PjYZUqND/cIoKXbbRD4w8o3LK6z2ofVcu7Qex1OP7aZMJj4aJCZk2oTgd4rjTYeJ0/95L/QFYL51NSZhvdKFhLN++eW3Tzl1o0I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; c=relaxed/simple; bh=5zAv3goxx5vPErOb84fnj3fbuhYFhTR9v/u8V+5xbAg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pRkNk3AWgwSknb8oBG8KHdeGfK3MDQ2gkHuMe91yXZYsKot7WH9LZoUF+vBe1N+x+oY7nrTHeMarFJJ4/ZOwXEsgCbZ9l4synaeicp0ndc2yzQey6hljWa/RnpK4w69oMsHOYYAoTi7M+1HXCnvltQ6SSVMPt352uwcki0YbML0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aM/YQ3MC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="aM/YQ3MC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 388BDC2BCC7; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776776046; bh=5zAv3goxx5vPErOb84fnj3fbuhYFhTR9v/u8V+5xbAg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aM/YQ3MCjhuJWMoLFZ+14gmyV3VYp0JYHj46rEbgcpJlkapDA+kFti4qeNwVHWdJx SPUSt3sX0J7XYWUyP0Q1Xd5qFhnDuGdzD/Ev10eUtENdvUXqSBEtbfR8wuvbE/80j8 rB4FKoHfPfNbdKjebHdyKcKx4KWxtAev2X02xfepAp2muNW6uoxj1C/9LTPga8HIss CqsNZx2s3vEZtFxwFjZP1Oqq06sUGsOW48kkhsauszZ0vpeoaeuSCzEQ/4I/53QDxe owPL/T7+acUU+Zm11uW5JZzQvUqK5PWAT+8K3QoUbfOhQlM+I/0cr0IO0UmoecViGd ks3M5RpeFhI7g== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wFAc7-00000006RIW-40fT; Tue, 21 Apr 2026 14:54:03 +0200 From: Johan Hovold To: Mark Brown Cc: Miquel Raynal , Anurag Dutta , Apurva Nandan , Dhruva Gole , linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , Khairul Anuar Romli , Adrian Ng Ho Yin , Niravkumar L Rabara , Matthew Gerlach Subject: [PATCH 5/6] spi: cadence-quadspi: clean up disable runtime pm quirk Date: Tue, 21 Apr 2026 14:53:53 +0200 Message-ID: <20260421125354.1534871-6-johan@kernel.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260421125354.1534871-1-johan@kernel.org> References: <20260421125354.1534871-1-johan@kernel.org> 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" Commit 30dbc1c8d50f ("spi: cadence-qspi: defer runtime support on socfpga if reset bit is enabled") fixed a warm reset issue on SoCFPGA by disabling runtime PM on that platform. Clean up the quirk implementation by never dropping the runtime PM usage count on probe instead of sprinkling conditionals throughout the driver which makes the code unnecessarily hard to read and maintain. Cc: Khairul Anuar Romli Cc: Adrian Ng Ho Yin Cc: Niravkumar L Rabara Cc: Matthew Gerlach Signed-off-by: Johan Hovold --- drivers/spi/spi-cadence-quadspi.c | 47 +++++++++++++------------------ 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-qu= adspi.c index 1b0d6186c7ef..f9f2313413cb 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -1478,7 +1478,6 @@ static int cqspi_exec_mem_op(struct spi_mem *mem, con= st struct spi_mem_op *op) int ret; struct cqspi_st *cqspi =3D spi_controller_get_devdata(mem->spi->controlle= r); struct device *dev =3D &cqspi->pdev->dev; - const struct cqspi_driver_platdata *ddata =3D of_device_get_match_data(de= v); =20 if (refcount_read(&cqspi->inflight_ops) =3D=3D 0) return -ENODEV; @@ -1494,18 +1493,15 @@ static int cqspi_exec_mem_op(struct spi_mem *mem, c= onst struct spi_mem_op *op) return -EBUSY; } =20 - if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) { - ret =3D pm_runtime_resume_and_get(dev); - if (ret) { - dev_err(&mem->spi->dev, "resume failed with %d\n", ret); - goto dec_inflight_refcount; - } + ret =3D pm_runtime_resume_and_get(dev); + if (ret) { + dev_err(&mem->spi->dev, "resume failed with %d\n", ret); + goto dec_inflight_refcount; } =20 ret =3D cqspi_mem_process(mem, op); =20 - if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) - pm_runtime_put_autosuspend(dev); + pm_runtime_put_autosuspend(dev); =20 if (ret) dev_err(&mem->spi->dev, "operation failed with %d\n", ret); @@ -1961,13 +1957,11 @@ static int cqspi_probe(struct platform_device *pdev) cqspi->current_cs =3D -1; cqspi->sclk =3D 0; =20 - if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) { - pm_runtime_set_autosuspend_delay(dev, CQSPI_AUTOSUSPEND_TIMEOUT); - pm_runtime_use_autosuspend(dev); - pm_runtime_get_noresume(dev); - pm_runtime_set_active(dev); - pm_runtime_enable(dev); - } + pm_runtime_set_autosuspend_delay(dev, CQSPI_AUTOSUSPEND_TIMEOUT); + pm_runtime_use_autosuspend(dev); + pm_runtime_get_noresume(dev); + pm_runtime_set_active(dev); + pm_runtime_enable(dev); =20 host->num_chipselect =3D cqspi->num_chipselect; =20 @@ -1997,12 +1991,11 @@ static int cqspi_probe(struct platform_device *pdev) if (cqspi->rx_chan) dma_release_channel(cqspi->rx_chan); disable_rpm: - if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) { - pm_runtime_disable(dev); - pm_runtime_set_suspended(dev); - pm_runtime_put_noidle(dev); - pm_runtime_dont_use_autosuspend(dev); - } + pm_runtime_disable(dev); + pm_runtime_set_suspended(dev); + pm_runtime_put_noidle(dev); + pm_runtime_dont_use_autosuspend(dev); + cqspi_controller_enable(cqspi, 0); disable_clks: clk_bulk_disable_unprepare(CLK_QSPI_NUM, cqspi->clks); @@ -2037,12 +2030,10 @@ static void cqspi_remove(struct platform_device *pd= ev) clk_bulk_disable_unprepare(CLK_QSPI_NUM, cqspi->clks); } =20 - if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) { - pm_runtime_disable(&pdev->dev); - pm_runtime_set_suspended(&pdev->dev); - pm_runtime_put_noidle(&pdev->dev); - pm_runtime_dont_use_autosuspend(&pdev->dev); - } + pm_runtime_disable(&pdev->dev); + pm_runtime_set_suspended(&pdev->dev); + pm_runtime_put_noidle(&pdev->dev); + pm_runtime_dont_use_autosuspend(&pdev->dev); } =20 static int cqspi_runtime_suspend(struct device *dev) --=20 2.52.0 From nobody Wed Jun 17 01:32:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9698F3D567E; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; cv=none; b=B2SIW4b/A9VmVRR9mQhKQRx5F+9LTjZ7njAjKbS1n5NrnFuFQNltER12MS0D9SvdZBCj37VDihcMut1dmkZh/Wzxh2201nIGhnXNtc+5Z6oyDno/G3zasH/HNmXVrnvTLqyUG7iUkE1mGcVWvCxPRVHF+uITRqEsnET8mxYEdh8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776776046; c=relaxed/simple; bh=F1iHgRyYYUbS5G1p57lmuDMTMSEfEjvu3nZIostYLD8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=m+IvbjmcECpWR7Y3fVK4c+e18kiLBDZvxjpo52Jrh+LdbVYgCmZ6xZ9sv9MUlahp7/3gvrx734mVfDHXx4ihoE2PhDL7NYMrNSAH885cdaGOE1/6unzZFJGvfEaMr4pokjvI7+xxunllkysBOvaY4xxesSEWc+swzI+o0aw2oug= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KuIOJXIu; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KuIOJXIu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2E2D7C2BCB9; Tue, 21 Apr 2026 12:54:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776776046; bh=F1iHgRyYYUbS5G1p57lmuDMTMSEfEjvu3nZIostYLD8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KuIOJXIupnmPtY+yYOo1ehCvUyws90PZ/j+rksbdefEccMsnjTHX3u9c4rI/bU+HT /jqbbpQO5SNzw5U1G8rXuovYU161Abl2aRf908Tyl8t6PAEznNsrkC8L8HIY2ThspW U6W2M5wjh9Z9Og52vS7cy3yddNq182S2oeifGdhEDy7U4Ok3ykGSw0AO4RvVDlQOSl jBvZEP3z9Oz+dO8ipEKRL0TbrYjRWu5OQC297mnxFCzuh4ewgRI+1i2SQekHYIIi3V af0fTgHIaNnAc81SsS7wt3nAJ0K5PtdQ6TTj1cJn4r9vAe3AKWM0AbETHzPuSbpSNK 5LSdhWO8WtwjA== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wFAc7-00000006RIY-431M; Tue, 21 Apr 2026 14:54:03 +0200 From: Johan Hovold To: Mark Brown Cc: Miquel Raynal , Anurag Dutta , Apurva Nandan , Dhruva Gole , linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold Subject: [PATCH 6/6] spi: cadence-quadspi: drop redundant match data lookup Date: Tue, 21 Apr 2026 14:53:54 +0200 Message-ID: <20260421125354.1534871-7-johan@kernel.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260421125354.1534871-1-johan@kernel.org> References: <20260421125354.1534871-1-johan@kernel.org> 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" Use the OF match data stored at probe instead of looking it up again on driver unbind. Signed-off-by: Johan Hovold --- drivers/spi/spi-cadence-quadspi.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-qu= adspi.c index f9f2313413cb..8ffc6c5f9888 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -2005,13 +2005,10 @@ static int cqspi_probe(struct platform_device *pdev) =20 static void cqspi_remove(struct platform_device *pdev) { - const struct cqspi_driver_platdata *ddata; struct cqspi_st *cqspi =3D platform_get_drvdata(pdev); - struct device *dev =3D &pdev->dev; + const struct cqspi_driver_platdata *ddata =3D cqspi->ddata; int ret =3D 0; =20 - ddata =3D of_device_get_match_data(dev); - spi_unregister_controller(cqspi->host); =20 refcount_set(&cqspi->refcount, 0); --=20 2.52.0