From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 2CA142773EC; Thu, 19 Mar 2026 02:04:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885869; cv=none; b=aIHNjSjEuU+7MF5+yWJjlOTuInQSMrLt7NCL8S2YvJ2ORvL3sz+kIWCXKhBiEZnqlwqV9yz/B5OR/oI0BHQXTksjqAvJNWKdkR85vO/3AGxn3yXZLIUE3TSibV7SLNhnnbFIxAd9ZS+GC/cppbrXSXNe4qSU1tXCcU/rTBb5F6Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885869; c=relaxed/simple; bh=UGr/UfDp7PAXPnFKP89p5YXVHfZge/nu6LmGJiscxxc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MCuvHzTiGku4IV/NkDdj1pl1EDYZe8rY41n3KztBxEOBXGz3cM/UNJkixwMKuWmM7wblH3Cm25nH0uOKHhWr7dskqQAZ+Ijf3Q/MD/YU/7LPNvAoYil9evzUauWTY2FVERloFWqx2GthAEMW6LrvR+baGtwaimK6wr15hKTu+Po= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f099bdba233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:4fff16d3-b475-434c-9921-59ad19d480ae,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:9603014fec71fbf5de70695698f811d6,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f099bdba233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 1832127847; Thu, 19 Mar 2026 10:04:19 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 01/17] spi: axiado: Simplify clock management with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:03:57 +0800 Message-Id: <52f7e0ebd2f0ece71929384444e1ae87506e5e2d.1773885292.git.xiaopei01@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for both the "pclk" and "ref" clocks. This reduces boilerplate code and error handling, as the managed API automatically disables the clocks when the device is removed or if probe fails. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error paths and the remove callback. Rename the error label from 'clk_dis_all' to 'err_disable_pm_runtime' to reflect that only PM runtime cleanup remains. Signed-off-by: Pei Xiao --- drivers/spi/spi-axiado.c | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/drivers/spi/spi-axiado.c b/drivers/spi/spi-axiado.c index dc55c55ae63c..d7918ea7c586 100644 --- a/drivers/spi/spi-axiado.c +++ b/drivers/spi/spi-axiado.c @@ -768,25 +768,15 @@ static int ax_spi_probe(struct platform_device *pdev) if (IS_ERR(xspi->regs)) return PTR_ERR(xspi->regs); =20 - xspi->pclk =3D devm_clk_get(&pdev->dev, "pclk"); + xspi->pclk =3D devm_clk_get_enabled(&pdev->dev, "pclk"); if (IS_ERR(xspi->pclk)) return dev_err_probe(&pdev->dev, PTR_ERR(xspi->pclk), - "pclk clock not found.\n"); + "Unable to enable APB clock.\n"); =20 - xspi->ref_clk =3D devm_clk_get(&pdev->dev, "ref"); + xspi->ref_clk =3D devm_clk_get_enabled(&pdev->dev, "ref"); if (IS_ERR(xspi->ref_clk)) return dev_err_probe(&pdev->dev, PTR_ERR(xspi->ref_clk), - "ref clock not found.\n"); - - ret =3D clk_prepare_enable(xspi->pclk); - if (ret) - return dev_err_probe(&pdev->dev, ret, "Unable to enable APB clock.\n"); - - ret =3D clk_prepare_enable(xspi->ref_clk); - if (ret) { - dev_err(&pdev->dev, "Unable to enable device clock.\n"); - goto clk_dis_apb; - } + "Unable to enable device clock.\n"); =20 pm_runtime_use_autosuspend(&pdev->dev); pm_runtime_set_autosuspend_delay(&pdev->dev, SPI_AUTOSUSPEND_TIMEOUT); @@ -815,7 +805,7 @@ static int ax_spi_probe(struct platform_device *pdev) irq =3D platform_get_irq(pdev, 0); if (irq <=3D 0) { ret =3D -ENXIO; - goto clk_dis_all; + goto err_disable_pm_runtime; } =20 ret =3D devm_request_irq(&pdev->dev, irq, ax_spi_irq, @@ -823,7 +813,7 @@ static int ax_spi_probe(struct platform_device *pdev) if (ret !=3D 0) { ret =3D -ENXIO; dev_err(&pdev->dev, "request_irq failed\n"); - goto clk_dis_all; + goto err_disable_pm_runtime; } =20 ctlr->use_gpio_descriptors =3D true; @@ -849,17 +839,14 @@ static int ax_spi_probe(struct platform_device *pdev) ret =3D spi_register_controller(ctlr); if (ret) { dev_err(&pdev->dev, "spi_register_controller failed\n"); - goto clk_dis_all; + goto err_disable_pm_runtime; } =20 return ret; =20 -clk_dis_all: +err_disable_pm_runtime: pm_runtime_set_suspended(&pdev->dev); pm_runtime_disable(&pdev->dev); - clk_disable_unprepare(xspi->ref_clk); -clk_dis_apb: - clk_disable_unprepare(xspi->pclk); =20 return ret; } @@ -875,15 +862,12 @@ static int ax_spi_probe(struct platform_device *pdev) static void ax_spi_remove(struct platform_device *pdev) { struct spi_controller *ctlr =3D platform_get_drvdata(pdev); - struct ax_spi *xspi =3D spi_controller_get_devdata(ctlr); =20 spi_unregister_controller(ctlr); =20 pm_runtime_set_suspended(&pdev->dev); pm_runtime_disable(&pdev->dev); =20 - clk_disable_unprepare(xspi->ref_clk); - clk_disable_unprepare(xspi->pclk); } =20 /** --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 062A337AA71; Thu, 19 Mar 2026 02:04:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885871; cv=none; b=ZaoHDYs5g4MGGqOW07jW5wUq5ASPpkUI0XcL5AdlA/vtclx4jvrhT09OFHfbF2Z1r2ykZUjnsfP109+DpqsAVftYcmHBKUMEgK1DOYj7tyv2HqQEvOEZoPrOzXotTd5k1vM/xdELTshDA9nDpqy+68ahBKhUeMKBvColUpsHo48= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885871; c=relaxed/simple; bh=A1MJ9wWkpixAWy8C9s6wEsfvFD7RNOB5Y5hCdpz7UU8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BS+YL8Ldg6J5pAGmuZQvJmgQFdbHLbQn6Xez8FwQ4sGMCrjALpWrgIoB2pSKs4PCO9GcTRXKSODtcHV2CtySctIlcpaNrLVPlC4oGiphC7dqDsJAfU7DflLMswKf74xJ7Ei7GWoJHVTnyzlGo4AoDOxEKSU+MnG32xHu6XvEVQE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f0deb24e233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:dc0175ac-efd9-45cd-bf14-97e23b870606,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:8b66728a3a703e8b4d3d1ca128d9a661,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f0deb24e233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 1545860745; Thu, 19 Mar 2026 10:04:19 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 02/17] spi: bcm63xx-hsspi: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:03:58 +0800 Message-Id: <3a187be6d9963645f01caebc1169e06f8804b7a6.1773885292.git.xiaopei01@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for both the "hsspi" and "pll" clocks. This reduces boilerplate code and error handling, as the managed API automatically disables the clocks when the device is removed or if probe fails. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error paths and the remove callback. Accordingly, adjust the error handling labels to direct returns where possible. Signed-off-by: Pei Xiao --- drivers/spi/spi-bcm63xx-hsspi.c | 46 +++++++++------------------------ 1 file changed, 12 insertions(+), 34 deletions(-) diff --git a/drivers/spi/spi-bcm63xx-hsspi.c b/drivers/spi/spi-bcm63xx-hssp= i.c index 612f8802e690..266eabd3715b 100644 --- a/drivers/spi/spi-bcm63xx-hsspi.c +++ b/drivers/spi/spi-bcm63xx-hsspi.c @@ -758,8 +758,7 @@ static int bcm63xx_hsspi_probe(struct platform_device *= pdev) if (IS_ERR(regs)) return PTR_ERR(regs); =20 - clk =3D devm_clk_get(dev, "hsspi"); - + clk =3D devm_clk_get_enabled(dev, "hsspi"); if (IS_ERR(clk)) return PTR_ERR(clk); =20 @@ -767,41 +766,26 @@ static int bcm63xx_hsspi_probe(struct platform_device= *pdev) if (IS_ERR(reset)) return PTR_ERR(reset); =20 - ret =3D clk_prepare_enable(clk); - if (ret) - return ret; - ret =3D reset_control_reset(reset); - if (ret) { - dev_err(dev, "unable to reset device: %d\n", ret); - goto out_disable_clk; - } + if (ret) + return dev_err_probe(dev, ret, "unable to reset device: %d\n", ret); =20 rate =3D clk_get_rate(clk); if (!rate) { - pll_clk =3D devm_clk_get(dev, "pll"); - - if (IS_ERR(pll_clk)) { - ret =3D PTR_ERR(pll_clk); - goto out_disable_clk; - } - - ret =3D clk_prepare_enable(pll_clk); - if (ret) - goto out_disable_clk; + pll_clk =3D devm_clk_get_enabled(dev, "pll"); + if (IS_ERR(pll_clk)) + return dev_err_probe(dev, PTR_ERR(pll_clk), + "failed enable pll clk\n"); =20 rate =3D clk_get_rate(pll_clk); - if (!rate) { - ret =3D -EINVAL; - goto out_disable_pll_clk; - } + if (!rate) + return dev_err_probe(dev, -EINVAL, + "failed get pll clk rate\n"); } =20 host =3D spi_alloc_host(&pdev->dev, sizeof(*bs)); - if (!host) { - ret =3D -ENOMEM; - goto out_disable_pll_clk; - } + if (!host) + return dev_err_probe(dev, -ENOMEM, "alloc host no mem\n"); =20 bs =3D spi_controller_get_devdata(host); bs->pdev =3D pdev; @@ -887,10 +871,6 @@ static int bcm63xx_hsspi_probe(struct platform_device = *pdev) pm_runtime_disable(&pdev->dev); out_put_host: spi_controller_put(host); -out_disable_pll_clk: - clk_disable_unprepare(pll_clk); -out_disable_clk: - clk_disable_unprepare(clk); return ret; } =20 @@ -902,8 +882,6 @@ static void bcm63xx_hsspi_remove(struct platform_device= *pdev) =20 /* reset the hardware and block queue progress */ __raw_writel(0, bs->regs + HSSPI_INT_MASK_REG); - clk_disable_unprepare(bs->pll_clk); - clk_disable_unprepare(bs->clk); sysfs_remove_group(&pdev->dev.kobj, &bcm63xx_hsspi_group); } =20 --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 DC0CE38BF6A; Thu, 19 Mar 2026 02:04:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885878; cv=none; b=jrvN8BTs0gQvb7T5Iwx4TKL2fheKWrUZZifDxw4auxkEn0p9+yx6HXfJcsON3ZsKk4AoqOZcCmEzD4DKTitSB4t68CRlXurVb5RmCHmiGWiWd+qwbv5JdwVQTFG8GHmCCZe4w8EhAwX1zqJ7FuxP7ftkominahEuC5Ru5miGm9w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885878; c=relaxed/simple; bh=3l0QCkc9erOyfe7834Hqf9wtBT4G0O2Nx4u50SsO1z0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mp/1xMJJoRadJxP7V1Dbh/dlyPBt6EhWKXUZp9brddbRL3uUturLUDLZnq3Qf009UgYFujAut6q6X8NKoClsAVz8KwoGtFNwryrVEPodUPyOwIqFET7GkGH3q3YI8LFoaxtzaHc8ahS39kBHMetIgdtCWdA9GjHVe2MUA3gNKT8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f1244d36233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:e5ca363b-e0c5-4d6f-80e4-f6f49bb11e45,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:18f254301f3ca4f993d6689c6ba00c6e,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f1244d36233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 1102121891; Thu, 19 Mar 2026 10:04:20 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 03/17] spi: bcmbca-hsspi: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:03:59 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for both the "hsspi" and "pll" clocks. This reduces boilerplate code and error handling, as the managed API automatically disables the clocks when the device is removed or if probe fails. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error paths and the remove callback. Simplify the error handling by converting to direct returns with dev_err_probe() where appropriate. Signed-off-by: Pei Xiao --- drivers/spi/spi-bcmbca-hsspi.c | 49 +++++++++++----------------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/drivers/spi/spi-bcmbca-hsspi.c b/drivers/spi/spi-bcmbca-hsspi.c index ece22260f570..2e22345115fd 100644 --- a/drivers/spi/spi-bcmbca-hsspi.c +++ b/drivers/spi/spi-bcmbca-hsspi.c @@ -452,39 +452,30 @@ static int bcmbca_hsspi_probe(struct platform_device = *pdev) if (IS_ERR(spim_ctrl)) return PTR_ERR(spim_ctrl); =20 - clk =3D devm_clk_get(dev, "hsspi"); + clk =3D devm_clk_get_enabled(dev, "hsspi"); if (IS_ERR(clk)) - return PTR_ERR(clk); - - ret =3D clk_prepare_enable(clk); - if (ret) - return ret; + return dev_err_probe(dev, PTR_ERR(clk), + "Failed to get hsspi clock\n"); =20 rate =3D clk_get_rate(clk); if (!rate) { - pll_clk =3D devm_clk_get(dev, "pll"); + pll_clk =3D devm_clk_get_enabled(dev, "pll"); =20 if (IS_ERR(pll_clk)) { - ret =3D PTR_ERR(pll_clk); - goto out_disable_clk; + return dev_err_probe(dev, PTR_ERR(pll_clk), + "Failed to get pll clock\n"); } =20 - ret =3D clk_prepare_enable(pll_clk); - if (ret) - goto out_disable_clk; - rate =3D clk_get_rate(pll_clk); - if (!rate) { - ret =3D -EINVAL; - goto out_disable_pll_clk; - } + if (!rate) + return dev_err_probe(dev, -EINVAL, + "Failed to get pll clock rate\n"); } =20 host =3D devm_spi_alloc_host(&pdev->dev, sizeof(*bs)); - if (!host) { - ret =3D -ENOMEM; - goto out_disable_pll_clk; - } + if (!host) + return dev_err_probe(dev, -ENOMEM, + "Failed alloc spi host\n"); =20 bs =3D spi_controller_get_devdata(host); bs->pdev =3D pdev; @@ -535,18 +526,16 @@ static int bcmbca_hsspi_probe(struct platform_device = *pdev) ret =3D devm_request_irq(dev, irq, bcmbca_hsspi_interrupt, IRQF_SHARED, pdev->name, bs); if (ret) - goto out_disable_pll_clk; + return dev_err_probe(dev, ret, "Failed request irq\n"); } =20 ret =3D devm_pm_runtime_enable(&pdev->dev); if (ret) - goto out_disable_pll_clk; + return dev_err_probe(dev, ret, "Failed pm runtime enable\n"); =20 ret =3D sysfs_create_group(&pdev->dev.kobj, &bcmbca_hsspi_group); - if (ret) { - dev_err(&pdev->dev, "couldn't register sysfs group\n"); - goto out_disable_pll_clk; - } + if (ret) + return dev_err_probe(dev, ret, "couldn't register sysfs group\n"); =20 /* register and we are done */ ret =3D devm_spi_register_controller(dev, host); @@ -559,10 +548,6 @@ static int bcmbca_hsspi_probe(struct platform_device *= pdev) =20 out_sysgroup_disable: sysfs_remove_group(&pdev->dev.kobj, &bcmbca_hsspi_group); -out_disable_pll_clk: - clk_disable_unprepare(pll_clk); -out_disable_clk: - clk_disable_unprepare(clk); return ret; } =20 @@ -573,8 +558,6 @@ static void bcmbca_hsspi_remove(struct platform_device = *pdev) =20 /* reset the hardware and block queue progress */ __raw_writel(0, bs->regs + HSSPI_INT_MASK_REG); - clk_disable_unprepare(bs->pll_clk); - clk_disable_unprepare(bs->clk); sysfs_remove_group(&pdev->dev.kobj, &bcmbca_hsspi_group); } =20 --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 7CB093368BD; Thu, 19 Mar 2026 02:04:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885870; cv=none; b=NZABRKGIdXbSC8UYqd4ZLTcaDNp9BebzI9Vm6uklI5eGKN7sqtB00/uBDyOnzwEJUoMqM0lakA12IaFXRKXmhmoteDA2KNejfnEs3kZQNJijwqbTQLfWHbRLDhIxElG/IDXHFjipna/YCqbS3Sby7NmQfXBs8pip7+i+pz7jjwQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885870; c=relaxed/simple; bh=pGu+1DuozLUiGGtwjFE9obpDtozK5Zb42Z6iFLq9STc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rVYckZaRuz9idikeVlq//VktgE1nES1PQGrXbnkeJVF6RT8+VODZUidNifEs+QFHMmSvkxYFAqSGQYEaULjl0NcirwKWPxpuY1/9VW7lPwmMURDv8cUREm180iwo4G1FFOywsqGahFa/UqRxBkvnK0cEu2jam7APq987v1rxooI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f16a0902233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:549c0a1e-d6d2-4e63-83e2-124c8fa34352,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:4d090c0f72e6a50140f94454816572bd,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f16a0902233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 1365518847; Thu, 19 Mar 2026 10:04:20 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 04/17] spi: img-spfi: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:00 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for both "sys" and "spfi" clocks. This reduces boilerplate code and error handling, as the managed API automatically disables the clocks when the device is removed or if probe fails. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error paths and the remove callback. Signed-off-by: Pei Xiao --- drivers/spi/spi-img-spfi.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/drivers/spi/spi-img-spfi.c b/drivers/spi/spi-img-spfi.c index 902fb64815c9..b45c6ceaffe2 100644 --- a/drivers/spi/spi-img-spfi.c +++ b/drivers/spi/spi-img-spfi.c @@ -557,24 +557,17 @@ static int img_spfi_probe(struct platform_device *pde= v) if (ret) goto put_spi; =20 - spfi->sys_clk =3D devm_clk_get(spfi->dev, "sys"); + spfi->sys_clk =3D devm_clk_get_enabled(spfi->dev, "sys"); if (IS_ERR(spfi->sys_clk)) { ret =3D PTR_ERR(spfi->sys_clk); goto put_spi; } - spfi->spfi_clk =3D devm_clk_get(spfi->dev, "spfi"); + spfi->spfi_clk =3D devm_clk_get_enabled(spfi->dev, "spfi"); if (IS_ERR(spfi->spfi_clk)) { ret =3D PTR_ERR(spfi->spfi_clk); goto put_spi; } =20 - ret =3D clk_prepare_enable(spfi->sys_clk); - if (ret) - goto put_spi; - ret =3D clk_prepare_enable(spfi->spfi_clk); - if (ret) - goto disable_pclk; - spfi_reset(spfi); /* * Only enable the error (IACCESS) interrupt. In PIO mode we'll @@ -655,9 +648,6 @@ static int img_spfi_probe(struct platform_device *pdev) dma_release_channel(spfi->rx_ch); if (spfi->tx_ch) dma_release_channel(spfi->tx_ch); - clk_disable_unprepare(spfi->spfi_clk); -disable_pclk: - clk_disable_unprepare(spfi->sys_clk); put_spi: spi_controller_put(host); =20 @@ -675,10 +665,6 @@ static void img_spfi_remove(struct platform_device *pd= ev) dma_release_channel(spfi->rx_ch); =20 pm_runtime_disable(spfi->dev); - if (!pm_runtime_status_suspended(spfi->dev)) { - clk_disable_unprepare(spfi->spfi_clk); - clk_disable_unprepare(spfi->sys_clk); - } } =20 #ifdef CONFIG_PM --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 ED7382356BE; Thu, 19 Mar 2026 02:04:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885868; cv=none; b=CF0Y7iqyTeIgRYQi+qDWU8rtzPbOcvCHojOtHtpSOOzl09z6+SIBSzfwAlIqADUOBG/eU89U1E5PfhKh15unVc/pjSjIFtZe9yumtoUOLqsk0GUe27+ftSuObGA5wo5A3N3NWg5Sculhv5O+ztso0pWXzlL9XHYFtah/qvw/nEk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885868; c=relaxed/simple; bh=I7D+qCFH1WwtAAhdCWnttNN6uB0w0Pl9MqHSBAG5xsc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RVG8m5nKhzmF/wl3eGM7RHwxCcDNXvHhBJY+UqBghAcFgnycfgkENJannBMYX+MUSdA4gff6SCfHXfWAi7mXoFd4imSwm5AtI12cUzhERI1cLUz5nX/9aD6l7ttStS1lQMk1PztOgFTVXvoIGwY5Z36X0b5zVyuUjPX6vU63AvU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f1b0655a233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:3b34af2f-8b93-4594-8300-3486e45159ef,IP:0,U RL:0,TC:0,Content:-5,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTIO N:release,TS:20 X-CID-META: VersionHash:89c9d04,CLOUDID:77f21dc2004b096352df5679e0b4a4c7,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f1b0655a233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 1767568548; Thu, 19 Mar 2026 10:04:21 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 05/17] spi: imx: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:01 +0800 Message-Id: <9d0fa929a4158e7f4e9adec21dd351e6cdd2984d.1773885292.git.xiaopei01@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for both "ipg" and "per" clocks. This reduces boilerplate code and error handling, as the managed API automatically disables the clocks when the device is removed or if probe fails. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error paths. Signed-off-by: Pei Xiao --- drivers/spi/spi-imx.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c index 64c6c09e1e7b..a01c466818de 100644 --- a/drivers/spi/spi-imx.c +++ b/drivers/spi/spi-imx.c @@ -2323,26 +2323,18 @@ static int spi_imx_probe(struct platform_device *pd= ev) goto out_controller_put; } =20 - spi_imx->clk_ipg =3D devm_clk_get(&pdev->dev, "ipg"); + spi_imx->clk_ipg =3D devm_clk_get_enabled(&pdev->dev, "ipg"); if (IS_ERR(spi_imx->clk_ipg)) { ret =3D PTR_ERR(spi_imx->clk_ipg); goto out_controller_put; } =20 - spi_imx->clk_per =3D devm_clk_get(&pdev->dev, "per"); + spi_imx->clk_per =3D devm_clk_get_enabled(&pdev->dev, "per"); if (IS_ERR(spi_imx->clk_per)) { ret =3D PTR_ERR(spi_imx->clk_per); goto out_controller_put; } =20 - ret =3D clk_prepare_enable(spi_imx->clk_per); - if (ret) - goto out_controller_put; - - ret =3D clk_prepare_enable(spi_imx->clk_ipg); - if (ret) - goto out_put_per; - pm_runtime_set_autosuspend_delay(spi_imx->dev, MXC_RPM_TIMEOUT); pm_runtime_use_autosuspend(spi_imx->dev); pm_runtime_get_noresume(spi_imx->dev); @@ -2386,9 +2378,6 @@ static int spi_imx_probe(struct platform_device *pdev) pm_runtime_disable(spi_imx->dev); pm_runtime_set_suspended(&pdev->dev); =20 - clk_disable_unprepare(spi_imx->clk_ipg); -out_put_per: - clk_disable_unprepare(spi_imx->clk_per); out_controller_put: spi_controller_put(controller); =20 --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 E86A7283FE3; Thu, 19 Mar 2026 02:04:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885869; cv=none; b=bHT5sDZlt5u47DKLc3JtltU8GFs3FvaHNY7UGjBBAlLeQcIi/1Rnx/gDZaQCiuXZm91lqBBbF85I+HkkeXUZ2KXg6IeJUOSO+EetJs/Vbp2lCKyZk7pwTtuSzZU+PBhjsrvgslGqPjEJw5V97hMTAf4qNd9b5X2TBNcmsi5VgmE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885869; c=relaxed/simple; bh=lg7C9qW2QnqB/VfcMdst6CcxTTTc8G8tOzjqOik5gPM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=cW/PDrW/vodMbscyQDqalQt1CZ6EtRn2D+sHL0bGLerW16XNw688u+sXX+/g0s8keaOfpZVVhUrHQWWJ/dfxzwRHK/cGfcaxTa2DL1eCpCZeuyxa1aQ0+qZLk6Vo+JyzXgxJ6ls96Mt2NRisOm23FVzURAHliDFiXimjJQYVSHc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f1f59a80233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:eaaaae9a-a5c7-4de2-aedf-1e0a176cf0cd,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:c402c4563c8dcd41f9f9f590a804b60b,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f1f59a80233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 1584200364; Thu, 19 Mar 2026 10:04:21 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 06/17] spi: npcm-pspi: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:02 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for the clock. This reduces boilerplate code and error handling, as the managed API automatically disables the clock when the device is removed or if probe fails. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error path and the remove callback. Adjust error handling labels accordingly. Signed-off-by: Pei Xiao --- drivers/spi/spi-npcm-pspi.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/drivers/spi/spi-npcm-pspi.c b/drivers/spi/spi-npcm-pspi.c index e60b3cc398ec..ae7f9a70fbcf 100644 --- a/drivers/spi/spi-npcm-pspi.c +++ b/drivers/spi/spi-npcm-pspi.c @@ -361,27 +361,23 @@ static int npcm_pspi_probe(struct platform_device *pd= ev) goto out_host_put; } =20 - priv->clk =3D devm_clk_get(&pdev->dev, NULL); + priv->clk =3D devm_clk_get_enabled(&pdev->dev, NULL); if (IS_ERR(priv->clk)) { - dev_err(&pdev->dev, "failed to get clock\n"); + dev_err(&pdev->dev, "failed to enable clock\n"); ret =3D PTR_ERR(priv->clk); goto out_host_put; } =20 - ret =3D clk_prepare_enable(priv->clk); - if (ret) - goto out_host_put; - irq =3D platform_get_irq(pdev, 0); if (irq < 0) { ret =3D irq; - goto out_disable_clk; + goto out_host_put; } =20 priv->reset =3D devm_reset_control_get(&pdev->dev, NULL); if (IS_ERR(priv->reset)) { ret =3D PTR_ERR(priv->reset); - goto out_disable_clk; + goto out_host_put; } =20 /* reset SPI-HW block */ @@ -391,7 +387,7 @@ static int npcm_pspi_probe(struct platform_device *pdev) "npcm-pspi", priv); if (ret) { dev_err(&pdev->dev, "failed to request IRQ\n"); - goto out_disable_clk; + goto out_host_put; } =20 init_completion(&priv->xfer_done); @@ -415,15 +411,12 @@ static int npcm_pspi_probe(struct platform_device *pd= ev) =20 ret =3D devm_spi_register_controller(&pdev->dev, host); if (ret) - goto out_disable_clk; + goto out_host_put; =20 pr_info("NPCM Peripheral SPI %d probed\n", host->bus_num); =20 return 0; =20 -out_disable_clk: - clk_disable_unprepare(priv->clk); - out_host_put: spi_controller_put(host); return ret; @@ -435,7 +428,6 @@ static void npcm_pspi_remove(struct platform_device *pd= ev) struct npcm_pspi *priv =3D spi_controller_get_devdata(host); =20 npcm_pspi_reset_hw(priv); - clk_disable_unprepare(priv->clk); } =20 static const struct of_device_id npcm_pspi_match[] =3D { --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 89C18384245; Thu, 19 Mar 2026 02:04:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885872; cv=none; b=K8Kar4AsV4+YIzLJyGkKvRiY9vimddw2J5Tqrbd5FcQacEghcJLC1A0I2R+QjSChCYTyLT37AaqBts8ILrDHyJaJkCJk1DLpG6cfbm6c6IN4in1vOXxRj+OCmv+zQHT2jBUTkOOS/oy/bspHOKpLdmJuCN/cO4RE8eJtzlHujqk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885872; c=relaxed/simple; bh=ylLgnFAHNr+C6sueQ675YRZWIAhgLynjxGpNw/eADVY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=IWWdxq0GXTJgF/y3tYsimRqSMjZubeMnZWOgxjLdC7q8H2M3arvR3aFQY9Db2nz8tKEIdwirbI3Z25LesVu2m2jBSzJ1F7MCrB3RFmcGfBUCqqFzSXiTTo2OhGXDj9vyBbbfbf/Jt7yijUxiQqHHWiWxXEQNr8xgysEoZEuMhEM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f23b122c233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:d1078b2a-9657-4c59-b481-163762ab0170,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:b7e6ae2e2bf0bb57789677155632f165,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f23b122c233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 702188644; Thu, 19 Mar 2026 10:04:21 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 07/17] spi: orion: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:03 +0800 Message-Id: <387f2fa1b3e1a356c524bb36eab07e1b431b6382.1773885292.git.xiaopei01@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for the "axi" clock. This reduces boilerplate code and error handling, as the managed API automatically disables the clock when the device is removed or if probe fails. Remove the now-unnecessary clk_disable_unprepare() call from the probe error path and the remove callback. Adjust error handling labels accordingly. Signed-off-by: Pei Xiao --- drivers/spi/spi-orion.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/spi/spi-orion.c b/drivers/spi/spi-orion.c index 7a2186b51b4c..a1b489b51115 100644 --- a/drivers/spi/spi-orion.c +++ b/drivers/spi/spi-orion.c @@ -695,13 +695,11 @@ static int orion_spi_probe(struct platform_device *pd= ev) } =20 /* The following clock is only used by some SoCs */ - spi->axi_clk =3D devm_clk_get(&pdev->dev, "axi"); + spi->axi_clk =3D devm_clk_get_enabled(&pdev->dev, "axi"); if (PTR_ERR(spi->axi_clk) =3D=3D -EPROBE_DEFER) { status =3D -EPROBE_DEFER; goto out; } - if (!IS_ERR(spi->axi_clk)) - clk_prepare_enable(spi->axi_clk); =20 tclk_hz =3D clk_get_rate(spi->clk); =20 @@ -726,7 +724,7 @@ static int orion_spi_probe(struct platform_device *pdev) spi->base =3D devm_platform_get_and_ioremap_resource(pdev, 0, &r); if (IS_ERR(spi->base)) { status =3D PTR_ERR(spi->base); - goto out_rel_axi_clk; + goto out; } =20 for_each_available_child_of_node(pdev->dev.of_node, np) { @@ -764,7 +762,7 @@ static int orion_spi_probe(struct platform_device *pdev) if (!dir_acc->vaddr) { status =3D -ENOMEM; of_node_put(np); - goto out_rel_axi_clk; + goto out; } dir_acc->size =3D PAGE_SIZE; =20 @@ -788,8 +786,6 @@ static int orion_spi_probe(struct platform_device *pdev) =20 out_rel_pm: pm_runtime_disable(&pdev->dev); -out_rel_axi_clk: - clk_disable_unprepare(spi->axi_clk); out: spi_controller_put(host); return status; @@ -799,10 +795,8 @@ static int orion_spi_probe(struct platform_device *pde= v) static void orion_spi_remove(struct platform_device *pdev) { struct spi_controller *host =3D platform_get_drvdata(pdev); - struct orion_spi *spi =3D spi_controller_get_devdata(host); =20 pm_runtime_get_sync(&pdev->dev); - clk_disable_unprepare(spi->axi_clk); =20 spi_unregister_controller(host); pm_runtime_disable(&pdev->dev); --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 14391387562; Thu, 19 Mar 2026 02:04:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885873; cv=none; b=VisCMw5J9wHBeLgjTU2177kh1ls/oeuJHangLf3yaUpXTv2PJ9vdwxcLl4uNoYnuDjr7/vxva1A3yZvDZQDKMXRqxjA45D9uALBiKYRExRa5rTyhn76jgXwJ5V4uBQkL+dp4uosiiBHuzbYOsjvjNsiVsFYJD6LZhm6y1GrgrEA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885873; c=relaxed/simple; bh=ny9onmUEXl99P24ZZ2Ce75o7Vng9fH41KywX7ddFhok=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MdyDlFvLjFuvbEctLYxY8ZBcQah5Z9KoDDPgHKxpfTc/3FcAYlSGX4xjRRMhdXzPASY8vEX/Zj4VeOBEVmyGDSfIvSvudlTpG2bSw7Qzs5/y+JQ9XjCAfGR2FEw48hP3o+eZdQmEYxdjW+5V/as0ck1ZSJ9kvL08ObR3GLUELGQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f2eb22a2233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:f112277f-fc1f-4f34-9138-d4d22d580cc8,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:d0c6f5da407226d4688d1d01a9ebe28e,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f2eb22a2233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 693530950; Thu, 19 Mar 2026 10:04:23 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 08/17] spi: rockchip-sfc: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:04 +0800 Message-Id: <863ab1ddc4f3b9a25c0bf79e1581b65359cef6c3.1773885292.git.xiaopei01@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for both the interface clock "clk_sfc" and the AHB clock "hclk_sfc". This reduces boilerplate code and error handling, as the managed API automatically disables the clocks when the device is removed or if probe fails. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error paths and the remove callback. Adjust error handling labels accordingly. Signed-off-by: Pei Xiao --- drivers/spi/spi-rockchip-sfc.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/drivers/spi/spi-rockchip-sfc.c b/drivers/spi/spi-rockchip-sfc.c index 174995042f53..b32b7c015edb 100644 --- a/drivers/spi/spi-rockchip-sfc.c +++ b/drivers/spi/spi-rockchip-sfc.c @@ -635,13 +635,13 @@ static int rockchip_sfc_probe(struct platform_device = *pdev) return PTR_ERR(sfc->regbase); =20 if (!has_acpi_companion(&pdev->dev)) - sfc->clk =3D devm_clk_get(&pdev->dev, "clk_sfc"); + sfc->clk =3D devm_clk_get_enabled(&pdev->dev, "clk_sfc"); if (IS_ERR(sfc->clk)) return dev_err_probe(&pdev->dev, PTR_ERR(sfc->clk), "Failed to get sfc interface clk\n"); =20 if (!has_acpi_companion(&pdev->dev)) - sfc->hclk =3D devm_clk_get(&pdev->dev, "hclk_sfc"); + sfc->hclk =3D devm_clk_get_enabled(&pdev->dev, "hclk_sfc"); if (IS_ERR(sfc->hclk)) return dev_err_probe(&pdev->dev, PTR_ERR(sfc->hclk), "Failed to get sfc ahb clk\n"); @@ -657,18 +657,6 @@ static int rockchip_sfc_probe(struct platform_device *= pdev) =20 sfc->use_dma =3D !of_property_read_bool(sfc->dev->of_node, "rockchip,sfc-= no-dma"); =20 - ret =3D clk_prepare_enable(sfc->hclk); - if (ret) { - dev_err(&pdev->dev, "Failed to enable ahb clk\n"); - goto err_hclk; - } - - ret =3D clk_prepare_enable(sfc->clk); - if (ret) { - dev_err(&pdev->dev, "Failed to enable interface clk\n"); - goto err_clk; - } - /* Find the irq */ ret =3D platform_get_irq(pdev, 0); if (ret < 0) @@ -730,10 +718,6 @@ static int rockchip_sfc_probe(struct platform_device *= pdev) pm_runtime_set_suspended(dev); pm_runtime_dont_use_autosuspend(dev); err_irq: - clk_disable_unprepare(sfc->clk); -err_clk: - clk_disable_unprepare(sfc->hclk); -err_hclk: return ret; } =20 @@ -747,8 +731,6 @@ static void rockchip_sfc_remove(struct platform_device = *pdev) DMA_BIDIRECTIONAL); free_pages((unsigned long)sfc->buffer, get_order(sfc->max_iosize)); =20 - clk_disable_unprepare(sfc->clk); - clk_disable_unprepare(sfc->hclk); } =20 #ifdef CONFIG_PM --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 13838387376; Thu, 19 Mar 2026 02:04:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885873; cv=none; b=Ajeg9bqXa6aPC11g3YmFn69fPLs6gHV6ewI7UWJk5rpZ5J9pMZxyXMHXpRB+bc5vlNuNFSH382+VYqFNkT/HNT7Dx4qSaHNqgsFQvv1iScyCcKIpNW6HFFhV8gUZrQcMREcBWBsK3mlW5VGlrjXyne3oQtlYQJv5i1Ag/KHYWjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885873; c=relaxed/simple; bh=3RzpcZKna8QyIK7dQXL9CAtXxwYGpDAnHiPfG/k4g2M=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WCrkMsRr5OwQN3dcZ9FZGg8JxSsTWsAqz/JA+1BskX29uXUIrm/POWnZ8Wb2sA4PuwEEbdQ2PzJtAzkKiUdO5zJvilbaCIy49/DMGjEW5/sYy+nndKnd9fm8pBoAMsnc2BQDmvrM/gLIzTkwZdfLvEEpB/7e0Ox6bcv6sJ4+Pwc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f3535ac0233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:a44ca008-d1ba-4472-b7ff-443f1045baa9,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:01771772bd513303bc6f8e60329af1db,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f3535ac0233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 518993943; Thu, 19 Mar 2026 10:04:23 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 09/17] spi: sifive: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:05 +0800 Message-Id: <73d0d8ecb4e1af5a558d6a7866c0f886d94fe3d1.1773885292.git.xiaopei01@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for the bus clock. This reduces boilerplate code and error handling, as the managed API automatically disables the clock when the device is removed or if probe fails. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error path and the remove callback. Adjust the error handling to use the existing put_host label. Signed-off-by: Pei Xiao --- drivers/spi/spi-sifive.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/drivers/spi/spi-sifive.c b/drivers/spi/spi-sifive.c index 6c7aba8befa0..54adbc057af6 100644 --- a/drivers/spi/spi-sifive.c +++ b/drivers/spi/spi-sifive.c @@ -312,7 +312,8 @@ static int sifive_spi_probe(struct platform_device *pde= v) goto put_host; } =20 - spi->clk =3D devm_clk_get(&pdev->dev, NULL); + /* Spin up the bus clock before hitting registers */ + spi->clk =3D devm_clk_get_enabled(&pdev->dev, NULL); if (IS_ERR(spi->clk)) { dev_err(&pdev->dev, "Unable to find bus clock\n"); ret =3D PTR_ERR(spi->clk); @@ -342,13 +343,6 @@ static int sifive_spi_probe(struct platform_device *pd= ev) goto put_host; } =20 - /* Spin up the bus clock before hitting registers */ - ret =3D clk_prepare_enable(spi->clk); - if (ret) { - dev_err(&pdev->dev, "Unable to enable bus clock\n"); - goto put_host; - } - /* probe the number of CS lines */ spi->cs_inactive =3D sifive_spi_read(spi, SIFIVE_SPI_REG_CSDEF); sifive_spi_write(spi, SIFIVE_SPI_REG_CSDEF, 0xffffffffU); @@ -357,14 +351,14 @@ static int sifive_spi_probe(struct platform_device *p= dev) if (!cs_bits) { dev_err(&pdev->dev, "Could not auto probe CS lines\n"); ret =3D -EINVAL; - goto disable_clk; + goto put_host; } =20 num_cs =3D ilog2(cs_bits) + 1; if (num_cs > SIFIVE_SPI_MAX_CS) { dev_err(&pdev->dev, "Invalid number of spi targets\n"); ret =3D -EINVAL; - goto disable_clk; + goto put_host; } =20 /* Define our host */ @@ -392,7 +386,7 @@ static int sifive_spi_probe(struct platform_device *pde= v) dev_name(&pdev->dev), spi); if (ret) { dev_err(&pdev->dev, "Unable to bind to interrupt\n"); - goto disable_clk; + goto put_host; } =20 dev_info(&pdev->dev, "mapped; irq=3D%d, cs=3D%d\n", @@ -401,13 +395,11 @@ static int sifive_spi_probe(struct platform_device *p= dev) ret =3D devm_spi_register_controller(&pdev->dev, host); if (ret < 0) { dev_err(&pdev->dev, "spi_register_host failed\n"); - goto disable_clk; + goto put_host; } =20 return 0; =20 -disable_clk: - clk_disable_unprepare(spi->clk); put_host: spi_controller_put(host); =20 @@ -421,7 +413,6 @@ static void sifive_spi_remove(struct platform_device *p= dev) =20 /* Disable all the interrupts just in case */ sifive_spi_write(spi, SIFIVE_SPI_REG_IE, 0); - clk_disable_unprepare(spi->clk); } =20 static int sifive_spi_suspend(struct device *dev) --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 33DC1386551; Thu, 19 Mar 2026 02:04:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885872; cv=none; b=czXayloUFEzhOVhDoIDbwU9Y/H4iUJSFpJhEbGQF8C+nSb9gYzV0FgOaPMlCpvubTrl8h0BFWuVvYYr2czST54WkHcDAY7g35lNTo0gs01/WiWrKLE+WNbrS2C2yO+ZSamgGickxBWOMegf6eMyL7578jLuaExmwYxmY9eq8XRY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885872; c=relaxed/simple; bh=CGbeoWHvJo3PD9AZfWg0XgRkZTASOZnyVW3ysUXlSI8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZPciMY0X6BjK0gcSREsIOlsfIkSAcjC9LxloPr1UAnccLHh4eO+WWAuTv9ukwfQvJgdpF/urjhf+4wr5QtMGlEObJaxAebwMTBt2ooyLf7Ysyr/M+WjYBPAIgB1zaYGfNmYK7Gg3jRswbNOWByDxHWUPhxtuSsby3gtLbn4mO08= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f3998950233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:4db77752-6cd2-4a9a-96e8-d90ac2999b88,IP:0,U RL:0,TC:0,Content:-5,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTIO N:release,TS:20 X-CID-META: VersionHash:89c9d04,CLOUDID:490e5e9014953257e4a2106985587bb0,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f3998950233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 1704355496; Thu, 19 Mar 2026 10:04:24 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 10/17] spi: slave-mt27xx: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:06 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for the "spi" clock. This reduces boilerplate code and error handling, as the managed API automatically disables the clock when the device is removed or if probe fails. Signed-off-by: Pei Xiao --- drivers/spi/spi-slave-mt27xx.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/spi/spi-slave-mt27xx.c b/drivers/spi/spi-slave-mt27xx.c index ce889cb33228..8ec886918165 100644 --- a/drivers/spi/spi-slave-mt27xx.c +++ b/drivers/spi/spi-slave-mt27xx.c @@ -438,19 +438,13 @@ static int mtk_spi_slave_probe(struct platform_device= *pdev) goto err_put_ctlr; } =20 - mdata->spi_clk =3D devm_clk_get(&pdev->dev, "spi"); + mdata->spi_clk =3D devm_clk_get_enabled(&pdev->dev, "spi"); if (IS_ERR(mdata->spi_clk)) { ret =3D PTR_ERR(mdata->spi_clk); dev_err(&pdev->dev, "failed to get spi-clk: %d\n", ret); goto err_put_ctlr; } =20 - ret =3D clk_prepare_enable(mdata->spi_clk); - if (ret < 0) { - dev_err(&pdev->dev, "failed to enable spi_clk (%d)\n", ret); - goto err_put_ctlr; - } - pm_runtime_enable(&pdev->dev); =20 ret =3D devm_spi_register_controller(&pdev->dev, ctlr); --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 22339389DEA; Thu, 19 Mar 2026 02:04:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885876; cv=none; b=GVoFknwVw6C/GsJOFV0txfefjO3MwPzCgMYiwncf4Hvw33keBtwcNw4AG3d8wyItg5zSWpIFjIig3GQcZmUe///5HGzI5D5ukd4v6uI4MFt9N+cSmFhYtQ/QuN3pyPCbQvRg+Shfok/di21/ZrAySAPst5IVDZRxECntSAZXzYs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885876; c=relaxed/simple; bh=jXsq/KxvAiUCk/gtZLvEXHI3HJN2Pi5g/h/N/dcDRPQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dq47isQojMwgnpsjp3sQbHqfR2sOJ8DxcUNQxecO//nE7A7pE2u+Oukcuz53+TyWFVA+hwhih/opmfRvRYCGXiJP7kW2Q/YXMnTJ8VB+pmQ1nmo37yrAVXCu0q0Wd32fxIKzgG+8lJ4ZcXT2YY2ESIyRCZoRo51BW8ZbR0X811Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f3dfb48e233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:894a37cd-df95-4e48-8c82-7a1a88eac4bb,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:95ecb3f7b199b64be66d2642ee368a1d,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f3dfb48e233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 952281194; Thu, 19 Mar 2026 10:04:24 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 11/17] spi: st: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:07 +0800 Message-Id: <383814750ad46181fd4199b3c6cec4767d480075.1773885292.git.xiaopei01@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for the clock. This removes the need for explicit clock enable and disable calls, as the managed API automatically handles clock disabling on device removal or probe failure. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error path and the remove callback. Adjust error labels accordingly. Signed-off-by: Pei Xiao --- drivers/spi/spi-st-ssc4.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/drivers/spi/spi-st-ssc4.c b/drivers/spi/spi-st-ssc4.c index b173ef70d77e..a0ae0c885669 100644 --- a/drivers/spi/spi-st-ssc4.c +++ b/drivers/spi/spi-st-ssc4.c @@ -293,24 +293,20 @@ static int spi_st_probe(struct platform_device *pdev) host->use_gpio_descriptors =3D true; spi_st =3D spi_controller_get_devdata(host); =20 - spi_st->clk =3D devm_clk_get(&pdev->dev, "ssc"); + spi_st->clk =3D devm_clk_get_enabled(&pdev->dev, "ssc"); if (IS_ERR(spi_st->clk)) { dev_err(&pdev->dev, "Unable to request clock\n"); ret =3D PTR_ERR(spi_st->clk); goto put_host; } =20 - ret =3D clk_prepare_enable(spi_st->clk); - if (ret) - goto put_host; - init_completion(&spi_st->done); =20 /* Get resources */ spi_st->base =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(spi_st->base)) { ret =3D PTR_ERR(spi_st->base); - goto clk_disable; + goto put_host; } =20 /* Disable I2C and Reset SSC */ @@ -333,14 +329,14 @@ static int spi_st_probe(struct platform_device *pdev) if (!irq) { dev_err(&pdev->dev, "IRQ missing or invalid\n"); ret =3D -EINVAL; - goto clk_disable; + goto put_host; } =20 ret =3D devm_request_irq(&pdev->dev, irq, spi_st_irq, 0, pdev->name, spi_st); if (ret) { dev_err(&pdev->dev, "Failed to request irq %d\n", irq); - goto clk_disable; + goto put_host; } =20 /* by default the device is on */ @@ -359,8 +355,6 @@ static int spi_st_probe(struct platform_device *pdev) =20 rpm_disable: pm_runtime_disable(&pdev->dev); -clk_disable: - clk_disable_unprepare(spi_st->clk); put_host: spi_controller_put(host); return ret; @@ -369,12 +363,9 @@ static int spi_st_probe(struct platform_device *pdev) static void spi_st_remove(struct platform_device *pdev) { struct spi_controller *host =3D platform_get_drvdata(pdev); - struct spi_st *spi_st =3D spi_controller_get_devdata(host); =20 pm_runtime_disable(&pdev->dev); =20 - clk_disable_unprepare(spi_st->clk); - pinctrl_pm_select_sleep_state(&pdev->dev); } =20 --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 E0B593876A7; Thu, 19 Mar 2026 02:04:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885874; cv=none; b=nXNN5mden1GczPXMD5jtzFfLXJp+mI8P1BtaIXJWaMMATIx7ZD2sLnbYNCCtcyqi3MbX6TF1RgutRMA5DqHHq1gUNK1rktqcEYUZWq38QnHCRIHAXcyRV/dBqllzu1njI7N1c3QmoQcO+Tts6LmUt/L5iLYscj16wb4hA8EPDd4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885874; c=relaxed/simple; bh=hJp0Hwkv/zUMQIXKtnF4FC4VYjxIHIdOdrp5NibXHbc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZMk8GaWeSOVPYd5uEc5Dfdz+/o+pU7/GgN8t5Z24EGyb49K4GsYPOfMG6+/7cAb4SIBefBqPjHbSYKUxxyL+FS+9FBS9Nz2EKi4Yxg3NHWHXlqMDczl0cq7UvTLTsEiEwprkEVq67IAW6W7qHjXBS350pUvYyhbXshMCor1G9Mo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f42535fe233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:14196cfd-c5a2-463a-8f04-4d526262ece3,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:d364503d679d4c701aec4d20cdee8480,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f42535fe233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 502944780; Thu, 19 Mar 2026 10:04:25 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 12/17] spi: stm32-qspi: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:08 +0800 Message-Id: <333b09950ee5c2fc0e560536281afb33f92288d1.1773885292.git.xiaopei01@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for the clock. This removes the need for explicit clock enable and disable calls, as the managed API automatically handles clock disabling on device removal or probe failure. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error path and the remove callback. Adjust error labels accordingly. Signed-off-by: Pei Xiao --- drivers/spi/spi-stm32-qspi.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/drivers/spi/spi-stm32-qspi.c b/drivers/spi/spi-stm32-qspi.c index df1bbacec90a..a8436f70fdfd 100644 --- a/drivers/spi/spi-stm32-qspi.c +++ b/drivers/spi/spi-stm32-qspi.c @@ -819,25 +819,19 @@ static int stm32_qspi_probe(struct platform_device *p= dev) =20 init_completion(&qspi->match_completion); =20 - qspi->clk =3D devm_clk_get(dev, NULL); + qspi->clk =3D devm_clk_get_enabled(dev, NULL); if (IS_ERR(qspi->clk)) - return PTR_ERR(qspi->clk); - + return dev_err_probe(dev, PTR_ERR(qspi->clk), + "can not enable the clock\n"); qspi->clk_rate =3D clk_get_rate(qspi->clk); if (!qspi->clk_rate) return -EINVAL; =20 - ret =3D clk_prepare_enable(qspi->clk); - if (ret) { - dev_err(dev, "can not enable the clock\n"); - return ret; - } - rstc =3D devm_reset_control_get_exclusive(dev, NULL); if (IS_ERR(rstc)) { ret =3D PTR_ERR(rstc); if (ret =3D=3D -EPROBE_DEFER) - goto err_clk_disable; + goto err_defer; } else { reset_control_assert(rstc); udelay(2); @@ -886,8 +880,7 @@ static int stm32_qspi_probe(struct platform_device *pde= v) pm_runtime_dont_use_autosuspend(qspi->dev); err_dma_free: stm32_qspi_dma_free(qspi); -err_clk_disable: - clk_disable_unprepare(qspi->clk); +err_defer: =20 return ret; } @@ -906,7 +899,6 @@ static void stm32_qspi_remove(struct platform_device *p= dev) pm_runtime_disable(qspi->dev); pm_runtime_set_suspended(qspi->dev); pm_runtime_dont_use_autosuspend(qspi->dev); - clk_disable_unprepare(qspi->clk); } =20 static int stm32_qspi_runtime_suspend(struct device *dev) --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 EF15538946C; Thu, 19 Mar 2026 02:04:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885877; cv=none; b=AVVtMCzgnpC4xZFkcenBbpIU4b1yn4eV0KJIBzOZV/TJSn3AdClOxpxbXLcl/s+noKso4YnAy/BgECjQjx/M/h8YR9HAaC9ds7fj5QN0It9g3svtpJCbd+0nJkdYfYxvDtWlED26H+opusra8C52+poJqPmgam/cBfUr/hnO0Iw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885877; c=relaxed/simple; bh=LUChkZ8nWTBjLs9qLkfZhvv4sbDxYBEdmlSRhjfMSVg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Sa1jgN+INBsf4FhXG0wuqjW3Eql3hhzMRA9aQsFY5J7AJ5+xzSANFgf3ROAiN1wVHNr5MAGpCRm20eUdrfVIMd/sw8aNzPwhF40QnptFF3ZmEkG+fA7ym2k79EHZ/awNVAp7Zvl+rZdKkA9uqqJVXrZVZpXHoJ3xvoTIRhXDs/k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f46be9c2233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:9d48c5ab-b3aa-46fa-bd7d-65aa28a8d0a5,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:979b3530c0da1b419a4b489ea9edf3da,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f46be9c2233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 682703516; Thu, 19 Mar 2026 10:04:25 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 13/17] spi: stm32: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:09 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for the clock. This removes the need for explicit clock enable and disable calls, as the managed API automatically handles clock disabling on device removal or probe failure. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error paths and the remove callback. Also simplify error handling by using dev_err_probe(). Signed-off-by: Pei Xiao Acked-by: Alain Volmat Reviewed-by: Amelie Delaunay --- drivers/spi/spi-stm32.c | 62 +++++++++++------------------------------ 1 file changed, 17 insertions(+), 45 deletions(-) diff --git a/drivers/spi/spi-stm32.c b/drivers/spi/spi-stm32.c index 8a7f5a10d4af..be88e62075af 100644 --- a/drivers/spi/spi-stm32.c +++ b/drivers/spi/spi-stm32.c @@ -2360,25 +2360,20 @@ static int stm32_spi_probe(struct platform_device *= pdev) int ret; =20 cfg =3D of_device_get_match_data(&pdev->dev); - if (!cfg) { - dev_err(&pdev->dev, "Failed to get match data for platform\n"); - return -ENODEV; - } + if (!cfg) + return dev_err_probe(&pdev->dev, -ENODEV, + "Failed to get match data for platform\n"); =20 device_mode =3D of_property_read_bool(np, "spi-slave"); - if (!cfg->has_device_mode && device_mode) { - dev_err(&pdev->dev, "spi-slave not supported\n"); - return -EPERM; - } + if (!cfg->has_device_mode && device_mode) + return dev_err_probe(&pdev->dev, -EPERM, "spi-slave not supported\n"); =20 if (device_mode) ctrl =3D devm_spi_alloc_target(&pdev->dev, sizeof(struct stm32_spi)); else ctrl =3D devm_spi_alloc_host(&pdev->dev, sizeof(struct stm32_spi)); - if (!ctrl) { - dev_err(&pdev->dev, "spi controller allocation failed\n"); - return -ENOMEM; - } + if (!ctrl) + return dev_err_probe(&pdev->dev, -ENOMEM, "spi controller allocation fai= led\n"); platform_set_drvdata(pdev, ctrl); =20 spi =3D spi_controller_get_devdata(ctrl); @@ -2409,32 +2404,18 @@ static int stm32_spi_probe(struct platform_device *= pdev) return ret; } =20 - spi->clk =3D devm_clk_get(&pdev->dev, NULL); - if (IS_ERR(spi->clk)) { - ret =3D PTR_ERR(spi->clk); - dev_err(&pdev->dev, "clk get failed: %d\n", ret); - return ret; - } + spi->clk =3D devm_clk_get_enabled(&pdev->dev, NULL); + if (IS_ERR(spi->clk)) + return dev_err_probe(&pdev->dev, PTR_ERR(spi->clk), "clk enabled failed\= n"); =20 - ret =3D clk_prepare_enable(spi->clk); - if (ret) { - dev_err(&pdev->dev, "clk enable failed: %d\n", ret); - return ret; - } spi->clk_rate =3D clk_get_rate(spi->clk); - if (!spi->clk_rate) { - dev_err(&pdev->dev, "clk rate =3D 0\n"); - ret =3D -EINVAL; - goto err_clk_disable; - } + if (!spi->clk_rate) + return dev_err_probe(&pdev->dev, -EINVAL, "clk rate =3D 0\n"); =20 rst =3D devm_reset_control_get_optional_exclusive(&pdev->dev, NULL); if (rst) { - if (IS_ERR(rst)) { - ret =3D dev_err_probe(&pdev->dev, PTR_ERR(rst), - "failed to get reset\n"); - goto err_clk_disable; - } + if (IS_ERR(rst)) + return dev_err_probe(&pdev->dev, PTR_ERR(rst), "failed to get reset\n"); =20 reset_control_assert(rst); udelay(2); @@ -2461,11 +2442,8 @@ static int stm32_spi_probe(struct platform_device *p= dev) dev_dbg(spi->dev, "one message max size %d\n", spi->t_size_max); =20 ret =3D spi->cfg->config(spi); - if (ret) { - dev_err(&pdev->dev, "controller configuration failed: %d\n", - ret); - goto err_clk_disable; - } + if (ret) + return dev_err_probe(&pdev->dev, ret, "controller configuration failed: = %d\n", ret); =20 ctrl->auto_runtime_pm =3D true; ctrl->bus_num =3D pdev->id; @@ -2490,8 +2468,7 @@ static int stm32_spi_probe(struct platform_device *pd= ev) dev_info(&pdev->dev, "tx dma disabled\n"); spi->dma_tx =3D NULL; } else { - dev_err_probe(&pdev->dev, ret, "failed to request tx dma channel\n"); - goto err_clk_disable; + return dev_err_probe(&pdev->dev, ret, "failed to request tx dma channel= \n"); } } else { ctrl->dma_tx =3D spi->dma_tx; @@ -2579,8 +2556,6 @@ static int stm32_spi_probe(struct platform_device *pd= ev) err_dma_tx_release: if (spi->dma_tx) dma_release_channel(spi->dma_tx); -err_clk_disable: - clk_disable_unprepare(spi->clk); =20 return ret; } @@ -2610,9 +2585,6 @@ static void stm32_spi_remove(struct platform_device *= pdev) gen_pool_free(spi->sram_pool, (unsigned long)spi->sram_rx_buf, spi->sram_rx_buf_size); =20 - clk_disable_unprepare(spi->clk); - - pinctrl_pm_select_sleep_state(&pdev->dev); } =20 --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 6225838A701; Thu, 19 Mar 2026 02:04:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885877; cv=none; b=QsEnPIZy3Fhp6pVuW3fvDGw0LTzU2sRor+/eCt43zeycg4aM0mbw6E5ENj5guZjf37lcC18d8+oiH0fcswWKAAkKljHBfiJEVqXNlIYsQEABrx4QWLR7iSm6alSfdkxAAB1+HBQQHD+iNp3yz7nyJiiiVUu/OnrsTAEpmIGdc/Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885877; c=relaxed/simple; bh=JxNBfQq344N/2CAB5JlxZ4NdP0US6YmZ4h9xGaciSOQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=IEcgwE092S0cfgoP16NOwllxNWH6E2WT28bH/XyTiAYSdZjTPOzScomMblDSA+ilCMaAHBphbobzuf0C+uZ7IeWK/5a/mWbaEDgySy2EfrK/s5q2amdtJWA/zbtOcqk90SSicpTNaz0o5WYpFGIbQNN7oMoCeFhaiApau8sXLck= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f4b189dc233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:10f7c1f4-f24a-426e-b4b5-df917d8a9cb6,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:173e02fd34b2c516b8e16ceee670e4ab,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f4b189dc233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 1715651615; Thu, 19 Mar 2026 10:04:26 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 14/17] spi: sunplus-sp7021: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:10 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for the clock. This removes the need for explicit clock enable/disable calls and the custom cleanup function, as the managed API automatically handles clock disabling on device removal or probe failure. Remove the now-unnecessary sp7021_spi_disable_unprepare() function and the devm_add_action_or_reset() call. Signed-off-by: Pei Xiao --- drivers/spi/spi-sunplus-sp7021.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/drivers/spi/spi-sunplus-sp7021.c b/drivers/spi/spi-sunplus-sp7= 021.c index 789b092fe8c0..35601212fb78 100644 --- a/drivers/spi/spi-sunplus-sp7021.c +++ b/drivers/spi/spi-sunplus-sp7021.c @@ -389,11 +389,6 @@ static int sp7021_spi_target_transfer_one(struct spi_c= ontroller *ctlr, struct sp return ret; } =20 -static void sp7021_spi_disable_unprepare(void *data) -{ - clk_disable_unprepare(data); -} - static void sp7021_spi_reset_control_assert(void *data) { reset_control_assert(data); @@ -460,7 +455,7 @@ static int sp7021_spi_controller_probe(struct platform_= device *pdev) if (pspim->s_irq < 0) return pspim->s_irq; =20 - pspim->spi_clk =3D devm_clk_get(dev, NULL); + pspim->spi_clk =3D devm_clk_get_enabled(dev, NULL); if (IS_ERR(pspim->spi_clk)) return dev_err_probe(dev, PTR_ERR(pspim->spi_clk), "clk get fail\n"); =20 @@ -468,14 +463,6 @@ static int sp7021_spi_controller_probe(struct platform= _device *pdev) if (IS_ERR(pspim->rstc)) return dev_err_probe(dev, PTR_ERR(pspim->rstc), "rst get fail\n"); =20 - ret =3D clk_prepare_enable(pspim->spi_clk); - if (ret) - return dev_err_probe(dev, ret, "failed to enable clk\n"); - - ret =3D devm_add_action_or_reset(dev, sp7021_spi_disable_unprepare, pspim= ->spi_clk); - if (ret) - return ret; - ret =3D reset_control_deassert(pspim->rstc); if (ret) return dev_err_probe(dev, ret, "failed to deassert reset\n"); --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 2242B389DEC; Thu, 19 Mar 2026 02:04:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885876; cv=none; b=Lfl7sMU0L5RuDAogmxvTczrL/OQgcJjtJF14MVCDIyTTR6/aNifos+Qz85k1RYbUJIy67jzWBGGypws6bJig4rrcpyQmliAf2k5ObX2C9Z8RclBJtct1fdoGzeJESpWCx6iG3+Z2hxBcULywbJM8j2ra8w6ErSqBd7vkCl9MOzk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885876; c=relaxed/simple; bh=bRBk6nHeIS2ppv7tRkWdyLqUMqBc40YlORcsIXhW/B0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mNMULulRJZAH0Wscpjb0616i+tv9eZGZj/B8HclS0ebHSO5Supa8eE3+3Ynz58g9TFG/RRohSGV3oYZ7hKlnLP9IgBqsSBhTc6nDE/jZQZFJpYX7wfObpTkJj2Pg2OQLBsTYysMme545DPlg0ebGVezy28h5zlK/PvQY7okrZdk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f4f7580e233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:fa208452-0fbb-4e8a-a824-7a259c765e2f,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:184e3bb82ba256fea7d1704c7bc76f43,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f4f7580e233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 450144948; Thu, 19 Mar 2026 10:04:26 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 15/17] spi: uniphier: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:11 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for the clock. This removes the need for explicit clock enable and disable calls, as the managed API automatically handles clock disabling on device removal or probe failure. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error path and the remove callback. Adjust error labels accordingly. Signed-off-by: Pei Xiao --- drivers/spi/spi-uniphier.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/drivers/spi/spi-uniphier.c b/drivers/spi/spi-uniphier.c index 9e1d364a6198..f975d0431e6f 100644 --- a/drivers/spi/spi-uniphier.c +++ b/drivers/spi/spi-uniphier.c @@ -666,28 +666,24 @@ static int uniphier_spi_probe(struct platform_device = *pdev) } priv->base_dma_addr =3D res->start; =20 - priv->clk =3D devm_clk_get(&pdev->dev, NULL); + priv->clk =3D devm_clk_get_enabled(&pdev->dev, NULL); if (IS_ERR(priv->clk)) { dev_err(&pdev->dev, "failed to get clock\n"); ret =3D PTR_ERR(priv->clk); goto out_host_put; } =20 - ret =3D clk_prepare_enable(priv->clk); - if (ret) - goto out_host_put; - irq =3D platform_get_irq(pdev, 0); if (irq < 0) { ret =3D irq; - goto out_disable_clk; + goto out_host_put; } =20 ret =3D devm_request_irq(&pdev->dev, irq, uniphier_spi_handler, 0, "uniphier-spi", priv); if (ret) { dev_err(&pdev->dev, "failed to request IRQ\n"); - goto out_disable_clk; + goto out_host_put; } =20 init_completion(&priv->xfer_done); @@ -716,7 +712,7 @@ static int uniphier_spi_probe(struct platform_device *p= dev) if (IS_ERR_OR_NULL(host->dma_tx)) { if (PTR_ERR(host->dma_tx) =3D=3D -EPROBE_DEFER) { ret =3D -EPROBE_DEFER; - goto out_disable_clk; + goto out_host_put; } host->dma_tx =3D NULL; dma_tx_burst =3D INT_MAX; @@ -766,9 +762,6 @@ static int uniphier_spi_probe(struct platform_device *p= dev) host->dma_tx =3D NULL; } =20 -out_disable_clk: - clk_disable_unprepare(priv->clk); - out_host_put: spi_controller_put(host); return ret; @@ -783,8 +776,6 @@ static void uniphier_spi_remove(struct platform_device = *pdev) dma_release_channel(host->dma_tx); if (host->dma_rx) dma_release_channel(host->dma_rx); - - clk_disable_unprepare(priv->clk); } =20 static const struct of_device_id uniphier_spi_match[] =3D { --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 177D938AC83; Thu, 19 Mar 2026 02:04:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885877; cv=none; b=MGxoiV+SGFby9rNpNv0XPGz9al8caCSO2C/WLRS2lu5yShAMgchWw98T71tkzVNxV5t+caE2o4suxIBFMMCQSdxIyxL8CTl9dm6NwisdF4dtyg0HIYRdzAg4YQZmgFTvDBlAvGq1xh132Wz2nP468nIj8E/gwRUymIeZd3zkzQc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885877; c=relaxed/simple; bh=AA5x6JwA2opi1vXKCakUkc9F3VeKLsoO5cl71XDGl9U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RgfsD+v9+8KWzDxbDt17Gu62hFPUxpPDa1/a6A/xmbrOqJWShfPKu10yMKse8jkpb7Mg2hzMMoYfbcNpI2fc50RFhGjm1tWOWPyG3PvbntwNj8v0zROxsF/+yLLDi18KPA9ATNWVKPcwabD/C0OhxgBtcONm4C9+xd/kVhNRFwM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f53d6042233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:323db549-b3c6-4d11-b239-5a1ba307fd89,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:eca3d75a252039a9697e1dd9214aca52,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f53d6042233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 785175677; Thu, 19 Mar 2026 10:04:26 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 16/17] spi: zynq-qspi: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:12 +0800 Message-Id: <880f8c2a66ab027cfe4ed57092036d9819b9285b.1773885292.git.xiaopei01@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for both "pclk" and "ref_clk". This removes the need for explicit clock enable and disable calls, as the managed API automatically disables the clocks on device removal or probe failure. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error paths and the remove callback. Simplify error handling by jumping directly to the remove_ctlr label. Signed-off-by: Pei Xiao --- drivers/spi/spi-zynq-qspi.c | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/drivers/spi/spi-zynq-qspi.c b/drivers/spi/spi-zynq-qspi.c index 5232483c4a3a..8c3975030d0a 100644 --- a/drivers/spi/spi-zynq-qspi.c +++ b/drivers/spi/spi-zynq-qspi.c @@ -661,7 +661,7 @@ static int zynq_qspi_probe(struct platform_device *pdev) goto remove_ctlr; } =20 - xqspi->pclk =3D devm_clk_get(&pdev->dev, "pclk"); + xqspi->pclk =3D devm_clk_get_enabled(&pdev->dev, "pclk"); if (IS_ERR(xqspi->pclk)) { dev_err(&pdev->dev, "pclk clock not found.\n"); ret =3D PTR_ERR(xqspi->pclk); @@ -670,36 +670,24 @@ static int zynq_qspi_probe(struct platform_device *pd= ev) =20 init_completion(&xqspi->data_completion); =20 - xqspi->refclk =3D devm_clk_get(&pdev->dev, "ref_clk"); + xqspi->refclk =3D devm_clk_get_enabled(&pdev->dev, "ref_clk"); if (IS_ERR(xqspi->refclk)) { dev_err(&pdev->dev, "ref_clk clock not found.\n"); ret =3D PTR_ERR(xqspi->refclk); goto remove_ctlr; } =20 - ret =3D clk_prepare_enable(xqspi->pclk); - if (ret) { - dev_err(&pdev->dev, "Unable to enable APB clock.\n"); - goto remove_ctlr; - } - - ret =3D clk_prepare_enable(xqspi->refclk); - if (ret) { - dev_err(&pdev->dev, "Unable to enable device clock.\n"); - goto clk_dis_pclk; - } - xqspi->irq =3D platform_get_irq(pdev, 0); if (xqspi->irq < 0) { ret =3D xqspi->irq; - goto clk_dis_all; + goto remove_ctlr; } ret =3D devm_request_irq(&pdev->dev, xqspi->irq, zynq_qspi_irq, 0, pdev->name, xqspi); if (ret !=3D 0) { ret =3D -ENXIO; dev_err(&pdev->dev, "request_irq failed\n"); - goto clk_dis_all; + goto remove_ctlr; } =20 ret =3D of_property_read_u32(np, "num-cs", @@ -709,7 +697,7 @@ static int zynq_qspi_probe(struct platform_device *pdev) } else if (num_cs > ZYNQ_QSPI_MAX_NUM_CS) { ret =3D -EINVAL; dev_err(&pdev->dev, "only 2 chip selects are available\n"); - goto clk_dis_all; + goto remove_ctlr; } else { ctlr->num_chipselect =3D num_cs; } @@ -728,15 +716,11 @@ static int zynq_qspi_probe(struct platform_device *pd= ev) ret =3D devm_spi_register_controller(&pdev->dev, ctlr); if (ret) { dev_err(&pdev->dev, "devm_spi_register_controller failed\n"); - goto clk_dis_all; + goto remove_ctlr; } =20 return ret; =20 -clk_dis_all: - clk_disable_unprepare(xqspi->refclk); -clk_dis_pclk: - clk_disable_unprepare(xqspi->pclk); remove_ctlr: spi_controller_put(ctlr); =20 @@ -758,9 +742,6 @@ static void zynq_qspi_remove(struct platform_device *pd= ev) struct zynq_qspi *xqspi =3D platform_get_drvdata(pdev); =20 zynq_qspi_write(xqspi, ZYNQ_QSPI_ENABLE_OFFSET, 0); - - clk_disable_unprepare(xqspi->refclk); - clk_disable_unprepare(xqspi->pclk); } =20 static const struct of_device_id zynq_qspi_of_match[] =3D { --=20 2.25.1 From nobody Mon Apr 6 15:50:41 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 944A73859DF; Thu, 19 Mar 2026 02:04:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885877; cv=none; b=s28h9gMeITO08eYk8L+tRF2paeZlkekn/QlD+wxlx0DNlhQcAeVEg/CJNWiDP5gpn7YmW3ZqsAXkNzE+Ts5U3SZcToThk+UEcilS1C9+wvptdoTp5SKn1rJOlX8Bh8wghI3nOWBqq3Ovo8DInIEqxKGAy5xjXqZpOn1i73fd0G8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773885877; c=relaxed/simple; bh=ZKgId+XuKb7dmeAODL3HqlCFsqUj9KiAZsqmGeZ/icc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=I/S20LUCI6wZyHJiE42aAz5edmFVBNLaWJ2Z6c2dFG9MhtIbfFdMIMhQQXhUxaMxEkN7nPpF7jaWF5UW1ukhCcrmD/p6YOjAohSp8H4rFiNTyPBaITtVLLRmL/GfuWyxD76JqKFy1m20GfrWw8anjA8/tZn5ANAg31YtqykxRuk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: f582e0ea233711f1a21c59e7364eecb8-20260319 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:e918a92d-3266-4741-8843-5ab7bb1fa260,IP:0,U RL:0,TC:0,Content:-25,EDM:25,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:9730383e14a457566eca870e6a4b8b8f,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:81|82|102|850|898,TC:nil,Content:0|15|50 ,EDM:5,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: f582e0ea233711f1a21c59e7364eecb8-20260319 X-User: xiaopei01@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 91165205; Thu, 19 Mar 2026 10:04:27 +0800 From: Pei Xiao To: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, openbmc@lists.ozlabs.org, linux-rockchip@lists.infradead.org, linux-riscv@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, broonie@kernel.org, Frank.Li@nxp.com, amelie.delaunay@foss.st.com Cc: Pei Xiao Subject: [PATCH v5 17/17] spi: zynqmp-gqspi: Simplify clock handling with devm_clk_get_enabled() Date: Thu, 19 Mar 2026 10:04:13 +0800 Message-Id: <611b4c4b67aaa8d86a7aeba9707ada47e6fd5dc3.1773885292.git.xiaopei01@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: 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" Replace devm_clk_get() followed by clk_prepare_enable() with devm_clk_get_enabled() for both "pclk" and "ref_clk". This removes the need for explicit clock enable and disable calls, as the managed API automatically disables the clocks on device removal or probe failure. Remove the now-unnecessary clk_disable_unprepare() calls from the probe error paths and the remove callback. Signed-off-by: Pei Xiao --- drivers/spi/spi-zynqmp-gqspi.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/drivers/spi/spi-zynqmp-gqspi.c b/drivers/spi/spi-zynqmp-gqspi.c index 502fd5eccc83..a7e135607e2a 100644 --- a/drivers/spi/spi-zynqmp-gqspi.c +++ b/drivers/spi/spi-zynqmp-gqspi.c @@ -1244,26 +1244,16 @@ static int zynqmp_qspi_probe(struct platform_device= *pdev) if (IS_ERR(xqspi->regs)) return PTR_ERR(xqspi->regs); =20 - xqspi->pclk =3D devm_clk_get(&pdev->dev, "pclk"); + xqspi->pclk =3D devm_clk_get_enabled(&pdev->dev, "pclk"); if (IS_ERR(xqspi->pclk)) return dev_err_probe(dev, PTR_ERR(xqspi->pclk), "pclk clock not found.\n"); =20 - xqspi->refclk =3D devm_clk_get(&pdev->dev, "ref_clk"); + xqspi->refclk =3D devm_clk_get_enabled(&pdev->dev, "ref_clk"); if (IS_ERR(xqspi->refclk)) return dev_err_probe(dev, PTR_ERR(xqspi->refclk), "ref_clk clock not found.\n"); =20 - ret =3D clk_prepare_enable(xqspi->pclk); - if (ret) - return dev_err_probe(dev, ret, "Unable to enable APB clock.\n"); - - ret =3D clk_prepare_enable(xqspi->refclk); - if (ret) { - dev_err(dev, "Unable to enable device clock.\n"); - goto clk_dis_pclk; - } - init_completion(&xqspi->data_completion); =20 mutex_init(&xqspi->op_lock); @@ -1339,9 +1329,6 @@ static int zynqmp_qspi_probe(struct platform_device *= pdev) pm_runtime_dont_use_autosuspend(&pdev->dev); pm_runtime_put_noidle(&pdev->dev); pm_runtime_set_suspended(&pdev->dev); - clk_disable_unprepare(xqspi->refclk); -clk_dis_pclk: - clk_disable_unprepare(xqspi->pclk); =20 return ret; } @@ -1368,8 +1355,6 @@ static void zynqmp_qspi_remove(struct platform_device= *pdev) pm_runtime_dont_use_autosuspend(&pdev->dev); pm_runtime_put_noidle(&pdev->dev); pm_runtime_set_suspended(&pdev->dev); - clk_disable_unprepare(xqspi->refclk); - clk_disable_unprepare(xqspi->pclk); } =20 MODULE_DEVICE_TABLE(of, zynqmp_qspi_of_match); --=20 2.25.1