From nobody Thu Sep 24 17:54:54 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 23F8D445AFC; Mon, 21 Sep 2026 20:33:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022796; cv=none; b=aP5ZnHqTJWUdW/mu5mn5UIoGky03/Am1Q1nIEh1fpE+MDf87pT2G2x1NxPaHMIk0axdrYhyJq35Jf1XMa/a77obKxZkVUurbwZCDwcysuVtTr1OfAb2yfLtwWFNn0k9MmmP00fhVwarZ46zzWBBtGZSZ17NlzRcOvYbWVRsRPOc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022796; c=relaxed/simple; bh=UNAUWNTqDPEuEuXC9mWoAT2pgMMEmi++BoO2+4ivAP0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Vtti0a3JxslTe63Pb0wgu98lzlqIULWGjgv84zpPY+kmNZAd4rEUouLLzo7eDodUM5rrizodIk0S4pl/2GPNqOdayY3djclerxiiNSi7u/v6HZrnkwplKmlxvu0KyAVwdjnrri4FKRLaYCIcljVMFv1Un4mSR8L+RxBW0hgxd5A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=KgrWLCTi; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="KgrWLCTi" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1790022792; bh=UNAUWNTqDPEuEuXC9mWoAT2pgMMEmi++BoO2+4ivAP0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KgrWLCTixCpueeWZJYJatDYFFKABzGxUFyJNgtN9jHGp8svFbo0bLIMtI/O7zr0Z/ kugHDhO/4uNs0AS9Feniq/xJ/Msau78QnezHUm/5kC6SPtgcS4S+75C+c/9jFIvQV4 7bpEtZ5SgDn0TZx9c+ymOq3t5aZ+TCkCs5O39RzIFuIPgw92kaKtT0lrrZMKYjzwmH T3o+WxCzQevb7usgSmGlZUxZzgipzZ9rWotkQ02CUGUrZGVCsQ9TFNukwfL+rzuIbk by6fnl3/o7fB34Ovs/bZrKRieqdKZ5Idy9nzKTNIyixhtPzOxYPJEcDaM0hmjHDpln fsQ340jnhUjgA== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 3C47317E0034; Mon, 21 Sep 2026 22:33:12 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id EA5ED480029; Mon, 21 Sep 2026 22:33:11 +0200 (CEST) From: Sebastian Reichel Date: Mon, 21 Sep 2026 22:32:44 +0200 Subject: [PATCH v2 1/8] dt-bindings: clock: rk3588: add PCLK_DDR_MON_CH clocks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-rockchip-dfi-cleanup-v2-1-43ff34ac8599@collabora.com> References: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> In-Reply-To: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> To: Stephen Boyd , Brian Masney , Jerome Brunet , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Chanwoo Choi , MyungJoo Ham , Kyungmin Park , Sascha Hauer Cc: Nicolas Frattaroli , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, kernel@collabora.com, Sebastian Reichel X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=973; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=C8FVn7J52GHndEtJHzBBi/WU5EQNwPsmo9I3eNfLHLk=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqxlIetecYtb3J20hC8atWcsqbglmT+CkhLC Jk8dABUQO2ml4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqsZSHAAoJENju1/PI O/qatlUP/iKZB4Gl3yFDu8Y/+0Iq43KSyrYLCXR9ldal0npuRdHgFT73/9h1tWPPk3qlD+A4Oco o9EVEMS7JaW4K/V/1oO5mvKc/QfVXLyesmKBEtGSlAWQqj/x887J9MfiN69aWNEAuAC2dVPj1Xj gxgZADlRRN8kfCZc8joF3A+LW9ZOHCdhYQPrF6XiUSH6/8pi3AUQX8fEjfNOfIHC9qbS6M8aQYP uYjr6EivK+rzzT4Pq+HJJh0ECw5jP4p4v+b73loUOcirk/xEURicbYHGyw38SOPdcSqeS3Er9wt PGNydlrTP5xhHOwdtBhENHmxsR4f5GwXKeQrejnXDKjd1kemfZAxZJnB4bKONKDjPgYW85LyP48 +nPyY259UheJ1vYpanOLlwpUn9gqq+K6eKMgLXZztsJaIbVTX5oLPpFWKiDW5ClsnXu2qFOf1z+ ZW1v5M8Uro3HVQiZIdixBlN19MdYtKgSheYvTs0BhyS1Z1bpYEkHDXZAc8F0TqVbKYyZOZxmsrh bCWAxagd9zb8xMIlfEXKX+EfZfMkrnpYZiLb4xLjClW9oMRCiIdDbjFYGzpdZc0hF9lRCiu9gvp qKEg/0gtoA6/g2SwmTWaFnksntSrIRcXT4XPNkPblgq/aNHaEc07llQUBV5nQ30GbuDwnkj8Rhe or5n3Xx0mwJds6nTEZSAt5w== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Nicolas Frattaroli On RK3588, each memory channel has its own DDR bandwidth monitor silicon, and each instance of that has its own clock gate that drives the monitor logic. Signed-off-by: Nicolas Frattaroli Signed-off-by: Sebastian Reichel --- include/dt-bindings/clock/rockchip,rk3588-cru.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/dt-bindings/clock/rockchip,rk3588-cru.h b/include/dt-b= indings/clock/rockchip,rk3588-cru.h index 7528034cff56..6ea25019ebb4 100644 --- a/include/dt-bindings/clock/rockchip,rk3588-cru.h +++ b/include/dt-bindings/clock/rockchip,rk3588-cru.h @@ -738,6 +738,10 @@ #define I2S1_8CH_MCLKOUT_TO_IO 723 #define I2S2_2CH_MCLKOUT_TO_IO 724 #define I2S3_2CH_MCLKOUT_TO_IO 725 +#define PCLK_DDR_MON_CH0 726 +#define PCLK_DDR_MON_CH1 727 +#define PCLK_DDR_MON_CH2 728 +#define PCLK_DDR_MON_CH3 729 =20 /* scmi-clocks indices */ =20 --=20 2.53.0 From nobody Thu Sep 24 17:54:54 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 411C044684C; Mon, 21 Sep 2026 20:33:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022796; cv=none; b=os0HX+fXucrjz2+C0/KXqmPtvTpdYRZeLNUcrRm4mbr4THHDqnUWyfTSA2be/MhkjlulbOPU1zIm7hqVlkunlGQVhLIXncH4GBLfM4kttdpf6TAq88UopIvPohXYSeIL5p2tjuz6QqdPWlYmva4GlHMpMghQrSn8VrVQLPkAyZ4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022796; c=relaxed/simple; bh=xkdZXgZBeMQfg9bw8euImJNfedaGSSuo8RfHpYMY53o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KsLzrp3Vy0Uxn7V7Q9JBU1PlSuQdUPy+S7TqSalcU/clXkg4xxyKfDmYC9635DSKX8EfF8exkIx8DS46Sho5U3U7SzVFGFZNSCQcql/JdHAYbhiOECYTV8j9Op/RXK/NgKCY9uYzGp86YDo4X+5gVzWlh4TrpRVN/eMz7nOQ1ps= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=bvazzeHt; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="bvazzeHt" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1790022792; bh=xkdZXgZBeMQfg9bw8euImJNfedaGSSuo8RfHpYMY53o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bvazzeHtjktHVice5e4Szz/xLKrfIEdG7DFTSqgo5lMe4pw8zPrNncav5XZoW5dIn ZrcK678BYydbNYAxF5iUHm+vdXGv210mL8sMqeppgfLamdXxDg9w/4hOdDmIhCWBHS Yq4R4ZBDDF/JkGMCVZY1XP9OvHaEf2MLj2XLFBdD8j1G1To2H0HRdja8CZiG8f4cNL 6HSlm1ol6uB6KZ342iZpsO0/uhfZsJlhXk2ogqNzxMz3YF2x75KehVlh8gLHvnZH0/ uGBjWhIHVqqfExvl79NKKl09SVpf3dVqPj/htiZg4XZGOdvr3L8qFKGF9syjr+YJIk +tCy7tlKg4pNg== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 3ED6017E047B; Mon, 21 Sep 2026 22:33:12 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id EB4D548002F; Mon, 21 Sep 2026 22:33:11 +0200 (CEST) From: Sebastian Reichel Date: Mon, 21 Sep 2026 22:32:45 +0200 Subject: [PATCH v2 2/8] dt-bindings: devfreq: event: rockchip,dfi: add clocks to rk3588 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-rockchip-dfi-cleanup-v2-2-43ff34ac8599@collabora.com> References: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> In-Reply-To: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> To: Stephen Boyd , Brian Masney , Jerome Brunet , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Chanwoo Choi , MyungJoo Ham , Kyungmin Park , Sascha Hauer Cc: Nicolas Frattaroli , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, kernel@collabora.com, Sebastian Reichel X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3146; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=tZQHxgmi8rv9SrnmtJ/AL6km1DCw9SsRcOafmoSEYv4=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqxlIdjhzE4P0rt8c+tngsmBiBiAsbq+myhl 1CdQ6h6HK6seokCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqsZSHAAoJENju1/PI O/qa5bQP/2W9ylsqOSSGj9HO7KNPdI07M1IapJPg1kCDl8xt8RKELt80pj1CMcu5hQ0II1mhTwy NOxIokvWJBCw392cH6qXPHzEhbGeqIOnROXeEFadidO1uEMW8iNvpSvu4EorUuh67Cgr++o+ndX LqA7HxmGaeRO2Nz/0GbC5IOjk/eUwvjeeWg54rSpj1PA1TvReNZgFKj3nu7+dFwHFrkA3S5uwob 7NXvs0+nuyOdH5s7sVyngVxnf8TJV4eVqETGMKgCp57NgTRWJCD1z23zNfYvxaONO/mOtIifgHE 98HYvtymnxLJfUBjfII4pNJX8wzG+NyW9/aksUvyv2Of4yLgYLTBTfJKwjSKJFlhwehyMBBKfPM 49HvdoaygmV42N6V5JJijuyX18DnIg6LTrkpgehuL1+smdDRixFxLImTcXtCJms7fXWd1rbid+X biFxugE42yVKzRDZHnNPuWgcQ4G0D3H9Uw2M7GDXelD92b+AfHT8gR0Tgk8wU1TSccCdTDe3Qst Aa/3HNBbh4LCB5yagiqZC2EZrkEO7Bi6yP58HOFqeOkFaKaABcUkGrxDcHb8AN4OH0MdhLQ9Pqi Nyp2ZpxqrzwnQTD/kS4cQgI/Taa/VvfawaI9iGaWRb0NFsL+UugTbuI/Qfin1uRx5/hIfdDFUWG Z2I9ubn5RURJNleJnX0Ev+A== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Nicolas Frattaroli RK3588's DFI has pclks for each channel. They just weren't noticed as missing until now because nothing ever gates them, and they're ungated by default on power-on. The RK3399 clock situation needs no changes, as there the hardware really just has one monitoring unit for both channels. Add these clocks to the binding, so that drivers for this device can properly know about their existence. Signed-off-by: Nicolas Frattaroli Signed-off-by: Sebastian Reichel --- .../bindings/devfreq/event/rockchip,dfi.yaml | 70 ++++++++++++++++++= ---- 1 file changed, 58 insertions(+), 12 deletions(-) diff --git a/Documentation/devicetree/bindings/devfreq/event/rockchip,dfi.y= aml b/Documentation/devicetree/bindings/devfreq/event/rockchip,dfi.yaml index 50d3fabe958d..3450e28b4020 100644 --- a/Documentation/devicetree/bindings/devfreq/event/rockchip,dfi.yaml +++ b/Documentation/devicetree/bindings/devfreq/event/rockchip,dfi.yaml @@ -17,11 +17,18 @@ properties: - rockchip,rk3588-dfi =20 clocks: - maxItems: 1 + minItems: 1 + maxItems: 4 =20 clock-names: + minItems: 1 items: - - const: pclk_ddr_mon + - enum: + - pclk_ddr_mon + - pclk_ddr_mon_ch0 + - const: pclk_ddr_mon_ch1 + - const: pclk_ddr_mon_ch2 + - const: pclk_ddr_mon_ch3 =20 interrupts: minItems: 1 @@ -40,17 +47,37 @@ required: - interrupts - reg =20 -if: - properties: - compatible: - contains: - enum: - - rockchip,rk3399-dfi +allOf: + - if: + properties: + compatible: + contains: + enum: + - rockchip,rk3399-dfi + then: + properties: + clocks: + maxItems: 1 + clock-names: + maxItems: 1 + required: + - clocks + - clock-names =20 -then: - required: - - clocks - - clock-names + - if: + properties: + compatible: + contains: + enum: + - rockchip,rk3588-dfi + then: + properties: + clocks: + minItems: 4 + maxItems: 4 + clock-names: + minItems: 4 + maxItems: 4 =20 additionalProperties: false =20 @@ -72,3 +99,22 @@ examples: clock-names =3D "pclk_ddr_mon"; }; }; + + - | + bus { + #address-cells =3D <2>; + #size-cells =3D <2>; + + dfi_rk3588: dfi@fe060000 { + compatible =3D "rockchip,rk3588-dfi"; + reg =3D <0x00 0xfe060000 0x00 0x10000>; + clocks =3D <&cru 0x53>, <&cru 0x48>, <&cru 0x49>, <&cru 0x54>; + clock-names =3D "pclk_ddr_mon_ch0", "pclk_ddr_mon_ch1", + "pclk_ddr_mon_ch2", "pclk_ddr_mon_ch3"; + interrupts =3D , + , + , + ; + rockchip,pmu =3D <&pmugrf>; + }; + }; --=20 2.53.0 From nobody Thu Sep 24 17:54:54 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 23EA14457DB; Mon, 21 Sep 2026 20:33:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022796; cv=none; b=Vx3+Qer8F1BASxSF+H3Z75AfKCO+5XqPuxS6yZZpMutsE8j07q/byeKI/n2DD/EY5QTKuKQuNweIOAphw1qSCuE2agn0wnry6+6902MTxHBD9AhAeGy9EwFL1/JLsabgayO37n8r6/LG9MV5aeM2RM0UMG5xfAf1XFLZGybQ5n8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022796; c=relaxed/simple; bh=aT58dFKDyhiJqaN2cKniCqERGQtyp3W/fZdagjPbqYo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eA4INaZ6hNvdxbz+HjjuPr4Ssd91BeLURQjMJFA1aywnNNFIoBI8lCGNCSw5MvKQaxUntlqFouSfhp2RQTfyDa206LwKogRmORQNkN1lyVdmrkrRn9LAyykZMLhdjZY+X8rAPp/w0+dFqfcAsHUsWGg47Tn3A0gyKstL/skT1hA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=FZKM7PyV; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="FZKM7PyV" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1790022792; bh=aT58dFKDyhiJqaN2cKniCqERGQtyp3W/fZdagjPbqYo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FZKM7PyV2pAJ6BqsVszY/d8Z7XfsXU314HnOfsWPdyYd9D8G8RYvsIR23Y02wTY9J eLGLETT0Rpc6HTE3lZR0B1p/sD+4sm5OiKk0uVyS3vwwDGd2XI+5PsO3si1b/WfN61 wu2O4i1QU4o49T0A7T8qiPHh0b4Rf2F04A0SR7KcQ0DzPTn8cEK2RGgScdUY2HgkjO +L2cYimvTYTDIXoZnaGAv/PGr4skRSC4kApk6fE5erT6Szb7zwbvVcmrGXxCMKeqJI JQXzf6iRphHU2Tnte+9bYWpHd1e2DOPpHRI63wyaoo0I+y3rdsdp/eTTGi7OcL14pQ wBkGSTpjrNFsw== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 400B017E09ED; Mon, 21 Sep 2026 22:33:12 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id ED147480030; Mon, 21 Sep 2026 22:33:11 +0200 (CEST) From: Sebastian Reichel Date: Mon, 21 Sep 2026 22:32:46 +0200 Subject: [PATCH v2 3/8] PM / devfreq: rockchip-dfi: move to per-variant const structs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-rockchip-dfi-cleanup-v2-3-43ff34ac8599@collabora.com> References: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> In-Reply-To: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> To: Stephen Boyd , Brian Masney , Jerome Brunet , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Chanwoo Choi , MyungJoo Ham , Kyungmin Park , Sascha Hauer Cc: Nicolas Frattaroli , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, kernel@collabora.com, Sebastian Reichel X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=9544; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=y65RBL8I0JRF1EhPVMN7EiGUEBnlIwsg0XksNw4AoAc=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqxlIeRCTLZrT1pbC4fp8PqJpJaHRZsdKEki Wi3fc0LPCl6x4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqsZSHAAoJENju1/PI O/qaQFUP/iTBGdKoxHQARE+4fu/3p/DjovVXKrVIup01dvpNykQ7x2o0SxOFI4SsHV7UgM4xG7G C5ZTcSicGNiBBoHnsUDBsTc/HzsTZZtUb7xw9UtjS0Ko7VFShvmn/YJk0TYoLIFP4KFyRgVRP7k blrhrD3zjRazyv/oWAXfT3NbhjakEPkBMB8WU5PpZLerhDapxrZsnsjD8Cjtx85WhF0pA6oSc1i J2I5HQ/6NTRK+ubGt93FR5bvyCJKYo465hTa31ifsFk3gpBPZAIls9yjzKj6C6iN3IH7V/UEEWq tZexsexbm3XG8XMXtRUeYDQs+/8ACb4is38pCuKk0qT5KK9REQodKQk7VU4uEtU48oP4OzUFMDb +LaaoMfhb5gn5jW8izyMEgc48yf7L8zDX123xudVcslxC/gWsnSKUVdQlHZu5nbPGn00iDFRgjH ssp8ma9oUuumS77pxUv0SEEsdFDolByfx364TfcPb9NJgMRaLOD5gDk0UxDim13djnvVLtf4mpY QrqKA5adqx46FcYVWVYXSpAhUlgvrzS1HvIVcHBAoLl2MHnTIS6Sf5HcMmlVa+Hp9lO8kuAEIi2 qZln6edlcC87jUcIndElEiwE9Q+CKO8n+a6H3BPVMrARebJXdmmSXBjvPstjTb2rZBpklPyAm5z tS/Xw66jMvgIcNV769PwscQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Nicolas Frattaroli The rockchip-dfi driver supports several variants of the DDR monitoring hardware. The differences in these variants are handled with one init function for each variant. However, some of the members that these init functions set are actually constants, specific to that variant, with no runtime involvement from reading registers or anything. Refactor the code to move those values (and the soc_init function pointer) into a new struct. Declare some const instances of this variant struct, and use it wherever needed. Signed-off-by: Nicolas Frattaroli --- drivers/devfreq/event/rockchip-dfi.c | 94 +++++++++++++++++++++-----------= ---- 1 file changed, 54 insertions(+), 40 deletions(-) diff --git a/drivers/devfreq/event/rockchip-dfi.c b/drivers/devfreq/event/r= ockchip-dfi.c index 255aee1bdd91..5339616f7ca6 100644 --- a/drivers/devfreq/event/rockchip-dfi.c +++ b/drivers/devfreq/event/rockchip-dfi.c @@ -103,7 +103,6 @@ struct rockchip_dfi { struct mutex mutex; u32 ddr_type; unsigned int channel_mask; - unsigned int max_channels; enum cpuhp_state cpuhp_state; struct hlist_node node; struct pmu pmu; @@ -112,11 +111,17 @@ struct rockchip_dfi { int active_events; int burst_len; int buswidth[DMC_MAX_CHANNELS]; - int ddrmon_stride; - bool ddrmon_ctrl_single; u32 lp5_bank_mode; bool lp5_ckr; /* true if in 4:1 command-to-data clock ratio mode */ unsigned int count_multiplier; /* number of data clocks per count */ + const struct rockchip_dfi_variant *variant; +}; + +struct rockchip_dfi_variant { + int (*init)(struct rockchip_dfi *dfi); + int stride; + bool ctrl_single; + unsigned int max_channels; }; =20 static int rockchip_dfi_ddrtype_to_ctrl(struct rockchip_dfi *dfi, u32 *ctr= l) @@ -188,7 +193,7 @@ static int rockchip_dfi_enable(struct rockchip_dfi *dfi) if (ret) goto out; =20 - for (i =3D 0; i < dfi->max_channels; i++) { + for (i =3D 0; i < dfi->variant->max_channels; i++) { =20 if (!(dfi->channel_mask & BIT(i))) continue; @@ -197,16 +202,16 @@ static int rockchip_dfi_enable(struct rockchip_dfi *d= fi) writel_relaxed(FIELD_PREP_WM16(DDRMON_CTRL_TIMER_CNT_EN, 0) | FIELD_PREP_WM16(DDRMON_CTRL_SOFTWARE_EN, 0) | FIELD_PREP_WM16(DDRMON_CTRL_HARDWARE_EN, 0), - dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL); + dfi_regs + i * dfi->variant->stride + DDRMON_CTRL); =20 - writel_relaxed(ctrl, dfi_regs + i * dfi->ddrmon_stride + + writel_relaxed(ctrl, dfi_regs + i * dfi->variant->stride + DDRMON_CTRL); =20 /* enable count, use software mode */ writel_relaxed(FIELD_PREP_WM16(DDRMON_CTRL_SOFTWARE_EN, 1), - dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL); + dfi_regs + i * dfi->variant->stride + DDRMON_CTRL); =20 - if (dfi->ddrmon_ctrl_single) + if (dfi->variant->ctrl_single) break; } out: @@ -229,14 +234,14 @@ static void rockchip_dfi_disable(struct rockchip_dfi = *dfi) if (dfi->usecount > 0) goto out; =20 - for (i =3D 0; i < dfi->max_channels; i++) { + for (i =3D 0; i < dfi->variant->max_channels; i++) { if (!(dfi->channel_mask & BIT(i))) continue; =20 writel_relaxed(FIELD_PREP_WM16(DDRMON_CTRL_SOFTWARE_EN, 0), - dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL); + dfi_regs + i * dfi->variant->stride + DDRMON_CTRL); =20 - if (dfi->ddrmon_ctrl_single) + if (dfi->variant->ctrl_single) break; } =20 @@ -250,17 +255,17 @@ static void rockchip_dfi_read_counters(struct rockchi= p_dfi *dfi, struct dmc_coun u32 i; void __iomem *dfi_regs =3D dfi->regs; =20 - for (i =3D 0; i < dfi->max_channels; i++) { + for (i =3D 0; i < dfi->variant->max_channels; i++) { if (!(dfi->channel_mask & BIT(i))) continue; res->c[i].read_access =3D readl_relaxed(dfi_regs + - DDRMON_CH0_RD_NUM + i * dfi->ddrmon_stride); + DDRMON_CH0_RD_NUM + i * dfi->variant->stride); res->c[i].write_access =3D readl_relaxed(dfi_regs + - DDRMON_CH0_WR_NUM + i * dfi->ddrmon_stride); + DDRMON_CH0_WR_NUM + i * dfi->variant->stride); res->c[i].access =3D readl_relaxed(dfi_regs + - DDRMON_CH0_DFI_ACCESS_NUM + i * dfi->ddrmon_stride); + DDRMON_CH0_DFI_ACCESS_NUM + i * dfi->variant->stride); res->c[i].clock_cycles =3D readl_relaxed(dfi_regs + - DDRMON_CH0_COUNT_NUM + i * dfi->ddrmon_stride); + DDRMON_CH0_COUNT_NUM + i * dfi->variant->stride); } } =20 @@ -297,7 +302,7 @@ static int rockchip_dfi_get_event(struct devfreq_event_= dev *edev, rockchip_dfi_read_counters(dfi, &count); =20 /* We can only report one channel, so find the busiest one */ - for (i =3D 0; i < dfi->max_channels; i++) { + for (i =3D 0; i < dfi->variant->max_channels; i++) { u32 a, c; =20 if (!(dfi->channel_mask & BIT(i))) @@ -336,7 +341,7 @@ static void rockchip_ddr_perf_counters_add(struct rockc= hip_dfi *dfi, const struct dmc_count *last =3D &dfi->last_perf_count; int i; =20 - for (i =3D 0; i < dfi->max_channels; i++) { + for (i =3D 0; i < dfi->variant->max_channels; i++) { res->c[i].read_access =3D dfi->total_count.c[i].read_access + (u32)(now->c[i].read_access - last->c[i].read_access); res->c[i].write_access =3D dfi->total_count.c[i].write_access + @@ -477,11 +482,11 @@ static u64 rockchip_ddr_perf_event_get_count(struct p= erf_event *event) count =3D total.c[0].clock_cycles * dfi->count_multiplier; break; case PERF_EVENT_READ_BYTES: - for (i =3D 0; i < dfi->max_channels; i++) + for (i =3D 0; i < dfi->variant->max_channels; i++) count +=3D total.c[i].read_access * blen * dfi->buswidth[i]; break; case PERF_EVENT_WRITE_BYTES: - for (i =3D 0; i < dfi->max_channels; i++) + for (i =3D 0; i < dfi->variant->max_channels; i++) count +=3D total.c[i].write_access * blen * dfi->buswidth[i]; break; case PERF_EVENT_READ_BYTES0: @@ -509,7 +514,7 @@ static u64 rockchip_ddr_perf_event_get_count(struct per= f_event *event) count =3D total.c[3].write_access * blen * dfi->buswidth[3]; break; case PERF_EVENT_BYTES: - for (i =3D 0; i < dfi->max_channels; i++) + for (i =3D 0; i < dfi->variant->max_channels; i++) count +=3D total.c[i].access * blen * dfi->buswidth[i]; break; } @@ -726,14 +731,10 @@ static int rk3399_dfi_init(struct rockchip_dfi *dfi) dfi->ddr_type =3D FIELD_GET(RK3399_PMUGRF_OS_REG2_DDRTYPE, val); =20 dfi->channel_mask =3D GENMASK(1, 0); - dfi->max_channels =3D 2; =20 dfi->buswidth[0] =3D FIELD_GET(RK3399_PMUGRF_OS_REG2_BW_CH0, val) =3D=3D = 0 ? 4 : 2; dfi->buswidth[1] =3D FIELD_GET(RK3399_PMUGRF_OS_REG2_BW_CH1, val) =3D=3D = 0 ? 4 : 2; =20 - dfi->ddrmon_stride =3D 0x14; - dfi->ddrmon_ctrl_single =3D true; - return 0; }; =20 @@ -756,13 +757,9 @@ static int rk3568_dfi_init(struct rockchip_dfi *dfi) dfi->ddr_type |=3D FIELD_GET(RK3568_PMUGRF_OS_REG3_DRAMTYPE_INFO_V3, reg= 3) << 3; =20 dfi->channel_mask =3D BIT(0); - dfi->max_channels =3D 1; =20 dfi->buswidth[0] =3D FIELD_GET(RK3568_PMUGRF_OS_REG2_BW_CH0, reg2) =3D=3D= 0 ? 4 : 2; =20 - dfi->ddrmon_stride =3D 0x0; /* not relevant, we only have a single channe= l on this SoC */ - dfi->ddrmon_ctrl_single =3D true; - return 0; }; =20 @@ -791,9 +788,7 @@ static int rk3588_dfi_init(struct rockchip_dfi *dfi) dfi->buswidth[3] =3D FIELD_GET(RK3588_PMUGRF_OS_REG2_BW_CH1, reg4) =3D=3D= 0 ? 4 : 2; dfi->channel_mask =3D FIELD_GET(RK3588_PMUGRF_OS_REG2_CH_INFO, reg2) | FIELD_GET(RK3588_PMUGRF_OS_REG2_CH_INFO, reg4) << 2; - dfi->max_channels =3D 4; =20 - dfi->ddrmon_stride =3D 0x4000; dfi->count_multiplier =3D 2; =20 if (dfi->ddr_type =3D=3D ROCKCHIP_DDRTYPE_LPDDR5) { @@ -807,10 +802,30 @@ static int rk3588_dfi_init(struct rockchip_dfi *dfi) return 0; }; =20 +static const struct rockchip_dfi_variant rk3399_variant =3D { + .init =3D rk3399_dfi_init, + .stride =3D 0x14, + .ctrl_single =3D true, + .max_channels =3D 2, +}; + +static const struct rockchip_dfi_variant rk3568_variant =3D { + .init =3D rk3568_dfi_init, + .stride =3D 0x0, + .ctrl_single =3D true, + .max_channels =3D 1, +}; + +static const struct rockchip_dfi_variant rk3588_variant =3D { + .init =3D rk3588_dfi_init, + .stride =3D 0x4000, + .max_channels =3D 4, +}; + static const struct of_device_id rockchip_dfi_id_match[] =3D { - { .compatible =3D "rockchip,rk3399-dfi", .data =3D rk3399_dfi_init }, - { .compatible =3D "rockchip,rk3568-dfi", .data =3D rk3568_dfi_init }, - { .compatible =3D "rockchip,rk3588-dfi", .data =3D rk3588_dfi_init }, + { .compatible =3D "rockchip,rk3399-dfi", .data =3D &rk3399_variant }, + { .compatible =3D "rockchip,rk3568-dfi", .data =3D &rk3568_variant }, + { .compatible =3D "rockchip,rk3588-dfi", .data =3D &rk3588_variant }, { }, }; =20 @@ -822,17 +837,16 @@ static int rockchip_dfi_probe(struct platform_device = *pdev) struct rockchip_dfi *dfi; struct devfreq_event_desc *desc; struct device_node *np =3D pdev->dev.of_node, *node; - int (*soc_init)(struct rockchip_dfi *dfi); int ret; =20 - soc_init =3D of_device_get_match_data(&pdev->dev); - if (!soc_init) - return -EINVAL; - dfi =3D devm_kzalloc(dev, sizeof(*dfi), GFP_KERNEL); if (!dfi) return -ENOMEM; =20 + dfi->variant =3D of_device_get_match_data(dev); + if (!dfi->variant) + return -EINVAL; + dfi->regs =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(dfi->regs)) return PTR_ERR(dfi->regs); @@ -854,7 +868,7 @@ static int rockchip_dfi_probe(struct platform_device *p= dev) desc->driver_data =3D dfi; desc->name =3D np->name; =20 - ret =3D soc_init(dfi); + ret =3D dfi->variant->init(dfi); if (ret) return ret; =20 --=20 2.53.0 From nobody Thu Sep 24 17:54:54 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 2D0F3446074; Mon, 21 Sep 2026 20:33:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022796; cv=none; b=YjyKqtC4WG2Ppwc+miiFOI6zQcwZKNPjPyVVY8MMbGgo8I4HFdf+aM6Fw9zF9xuGdIzLTe6ddt7241pDTa3vUgXK1e6ygpZvyG1F+Jbn9Uavezt7CL/LbuxFje3tM7JftfkA1BWIUikgIJdF8JS+QtSZW3hjpw4kwAGiC8jewt8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022796; c=relaxed/simple; bh=R+0ORjkMahdOCQPNUtjC94W9dr82Rbx5na9hVn3u/Ng=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bytHYbhGFoiEOnfrFsBnSvGUDnCexeG+9LJQkclKixBd6HPWpalk2i0ga9gsQ2kox6H5jpZ1/PpN85AwKjsegPpQ1BNAKaZh8jvMBVZUV20Q32uNAYd/JiipoVMcOmJO/5kyiWxhqUruwdLKxzxYnizai7tIQ++/77i7TRqTx70= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=DmHh7oB8; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="DmHh7oB8" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1790022792; bh=R+0ORjkMahdOCQPNUtjC94W9dr82Rbx5na9hVn3u/Ng=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=DmHh7oB8N0I6iFYsM/yLTvS9u6vZiXDQVNkQ6JQWkISX7/8YkLi32jUnYQuC0APAA xHJgvcBNTlwEUKDGvY8SCdEAraQUNkB87ulF5+jvGZHshOcB3wS4QhzprTGlEpogZM x8FgB9ZAH/qGpGlOeamxANNLL9xmDVTcrLSvNZjZmN2Xyd66/ktepJBOJGCKEQ9Uua mKK7E6cIFmNblXdJeJAWAJzdcH7+RUqIko8+u8aMqka1pbQa03/cvpS2O5dF5rHm/V USMCNR1SJGyH5KWUCrPuC49UMaWNQrGs9ZPFbYJlrlsxs20loCUEWaNPvO+30UA7hT ytidfkGKyeAJg== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 413BB17E0C41; Mon, 21 Sep 2026 22:33:12 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id EEB73480031; Mon, 21 Sep 2026 22:33:11 +0200 (CEST) From: Sebastian Reichel Date: Mon, 21 Sep 2026 22:32:47 +0200 Subject: [PATCH v2 4/8] PM / devfreq: rockchip-dfi: add NO_INTERRUPT perf capability Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-rockchip-dfi-cleanup-v2-4-43ff34ac8599@collabora.com> References: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> In-Reply-To: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> To: Stephen Boyd , Brian Masney , Jerome Brunet , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Chanwoo Choi , MyungJoo Ham , Kyungmin Park , Sascha Hauer Cc: Nicolas Frattaroli , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, kernel@collabora.com, Sebastian Reichel X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1817; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=tS8n9fy0LBJivuuQhw0+orcBEclVJquJmZ0El2PFwMU=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqxlIfN8AICiJVidNsvdIb21QpyjLFYOPgg6 9qMij7pt/NHAIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqsZSHAAoJENju1/PI O/qaH1AP/RFHTpW/TW6nZa9Wux+qImLvlT7+QAO0/A9qepx4hqt1BRaHVmF/9+GTpNRc2XMW04R i4BsfDf/ryZHWHFsXa1ppMd/Zq0wHvGWciOX4e1euF64KXEAg9aTN56W9dIdTb/2v1+io2XaGd6 yfP4/TNGtZKIEW/1+lCVTMOTs8YtgqnY8OpVhZ1leDm9mWC9k/ZwDPRIE4lTFEjGtDkdYntw6UO 3D2IkmEWLK6d5u1HesCtA7Fbr4jLn5Xd3tTKHa1mQIT56+R3FypRR8/PrpT7O41oaZ4QgCLtmcC PQCc+FcN8OZNuLGsdNwf0GFV3TNuQV6RJyuo5gn80tqh529JO6h3G2UKCkmTL4gWFI+inTWifL7 BUtkoVVj8UTK/1iqFpO7pBGnRmyqO7PZVQr8WTDASar77JyS9C01NwS5KQFpYaAI96uDhFxGCPa gcarMHPMWw+kUAoVTtXn2jxqJv5Xdx2SN24FjA57ppV3afDeVr3Lix5BqUTkSc3s8aKb/mXO+dj cL4NhbEkHvlRCEUJq7khtr+2rMe0RCYBuMlFyDGD735TFxvPHnOXmGy9ak9XbHsfB+WtLgeaPbR XkhHHz+7j3JY45Oyi1kqg85f3j2Zsl42GpMqnPR3qJvqvs/uOjd3dWGDfx4vqL9q5tm1Ibm0ZL0 LtNPY7WeoFW5URyn+ZD0tTw== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Nicolas Frattaroli The perf subsystem's PERF_PMU_CAP_NO_INTERRUPT is a bit of a misnomer.[1] Instead of meaning that the PMU has no interrupt, it actually means that the PMU does support sampling. On CPU PMUs, this is equivalent to not having an interrupt, but for uncore PMUs like the rockchip-dfi PMU is, no meaningful sample data could ever be generated regardless of whether or not there is an interrupt, as it is not a CPU. Since rockchip-dfi doesn't seem to make use of the interrupt the DT provides it with anyway, this was probably never a confusion that existed in this case; the capability flag was likely just forgotten. Add PERF_PMU_CAP_NO_INTERRUPT to the set flags for the pmu struct's capabilities member, so that the perf core knows about this limitation. Fixes: 4d586b5724d3 ("PM / devfreq: rockchip-dfi: Add perf support") Link: https://lore.kernel.org/all/20250619140442.GH1613376@noisy.programmin= g.kicks-ass.net/ [1] Signed-off-by: Nicolas Frattaroli Signed-off-by: Sebastian Reichel --- drivers/devfreq/event/rockchip-dfi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/devfreq/event/rockchip-dfi.c b/drivers/devfreq/event/r= ockchip-dfi.c index 5339616f7ca6..dd9edfd6a674 100644 --- a/drivers/devfreq/event/rockchip-dfi.c +++ b/drivers/devfreq/event/rockchip-dfi.c @@ -646,7 +646,7 @@ static int rockchip_ddr_perf_init(struct rockchip_dfi *= dfi) seqlock_init(&dfi->count_seqlock); =20 pmu->module =3D THIS_MODULE; - pmu->capabilities =3D PERF_PMU_CAP_NO_EXCLUDE; + pmu->capabilities =3D PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT; pmu->task_ctx_nr =3D perf_invalid_context; pmu->attr_groups =3D attr_groups; pmu->event_init =3D rockchip_ddr_perf_event_init; --=20 2.53.0 From nobody Thu Sep 24 17:54:54 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 EC9F546F4BB; Mon, 21 Sep 2026 20:33:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022801; cv=none; b=Cu8dgjiMJcQqa5/xE5gMZCyFYdwL5nAVVohJVUebI7TKh/JO+ImXqh0JhjeNJZSuUbqjApeGkZzalv4teCBN/yArel94mA7nVy0CklD8mmTuZoXj4My/aF48Wpe8pRkx9146W9+w9vda2nxBvYYfGPljBKVj/O0DTZidr1Nw4+8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022801; c=relaxed/simple; bh=Vwa4GrOJLj5QOmHKF3cPLVhahqIlD9N15DaKOL6XZow=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ILwuzAK6jFjZJTXiIh5oiDG3kpMTN89gx8XKz/tPuJ/D8yXTcMCXNDhyxFXGJXp+2wQ7pngNFyQiwNJrbWdwFS6s43CocDdHQ9NvMo4OblJFEI3bjXyZmSYBg7+Mm4b922kGs7Q3ClHWMxxBa/VC1eiX+tWyIisS0Nl+yGc2ths= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=m1pYZAKD; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="m1pYZAKD" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1790022792; bh=Vwa4GrOJLj5QOmHKF3cPLVhahqIlD9N15DaKOL6XZow=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=m1pYZAKDQWI31IoFrJiol9B/OSGfe/CYu3iCEYXQoN9L6Ml6qPsbdGJ1Td+p0iG73 TJMDGpWAQlVkH7xUVGFfym+VOs9ndpVHC69TQtd2NRDUocGt2/RwrYqtPhsQ1MDWG7 2hHRR8p+7kfWESPaRataHzfonMXaoScixz9X47ZwCpWuTWPz/n1YiRAjH/JpWNkn/m HW5UkewmJcVw+8ZdrHrgcUlldNJR5QVNFPThc9ahOLdrDOsLF7pwHcmEdgCC7BnFUD PlS56Ace0Y7s20ApZrMoHJ8EHg/+D5uAHNxakMilzh+ZIKj66A3cXzvqVOMvO20PV+ e4Gol3wPzoTYg== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 8F7B717E0C7E; Mon, 21 Sep 2026 22:33:12 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id F09C0480035; Mon, 21 Sep 2026 22:33:11 +0200 (CEST) From: Sebastian Reichel Date: Mon, 21 Sep 2026 22:32:48 +0200 Subject: [PATCH v2 5/8] PM / devfreq: rockchip-dfi: use bulk clock APIs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-rockchip-dfi-cleanup-v2-5-43ff34ac8599@collabora.com> References: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> In-Reply-To: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> To: Stephen Boyd , Brian Masney , Jerome Brunet , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Chanwoo Choi , MyungJoo Ham , Kyungmin Park , Sascha Hauer Cc: Nicolas Frattaroli , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, kernel@collabora.com, Sebastian Reichel X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4096; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=lvpRuYQwgyj92YlzDFeJ2yAKSqPbRarTndix/sTx4H4=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqxlIe3hvcTWmYlgv3zGSXBVY7NPWy0iLXgl Yd/f3TsoW82C4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqsZSHAAoJENju1/PI O/qaOeIP/1OW/FkVxQcsCFIdag5fXftJFsc88N6dEwloUAscmgmL5ZpsLXOa3rCp4JyF+zRS5Jf dLIyC0EVk5D1scLOM/42QlGTOuDilSZ5irQcqrcgfmn3YWg1O1A9P1dbuLHSHYiyX27rsEjEMuu xqhw55qFrn06QWtfdEsTC0drRv7dkkQxZM/gno57DU7hVohLcxKZgG/ZO5SUUfyILqYOuIV96oy wI5zpfvlK4BPUxea5BOaJ9oI6pv262DzF0dp/5fW9nDOOjJdscfbP9vGQzs8bSMT0YSe6fEj3xq h5R31r5AhTjI5cLBGNQ2E5W3PPaJLq49c4sYZrDDBwD3rDMtMSZbQbKP6cL7EXy+EB3mJj8/1Xn 6ARoAmVuiteFKZWyB7SjlwkGWXB7tldqIfnk8TU1BoExlrFY3zJrPwea0LG0W4mQfds19A7/nYh b8wBHmc4zLQeNZ5yqi+Mu7zTti9KVfwOI7Rclske86pSDZJfeTedDO8XM1Sz67dl4YrSMLDlxTA GnM3SQ/1TmmpmTznOk8L5eKpZcXfGy5Mm2TSq2aciFmnX2fiuPAaXYXT3yDwj6ebmpMRVxilGT7 dOTQCeUTlZ7BGNIe1GOJLVEw9mqsBqw02IuN1mDdxw+sw9bzLerdp4yeV4jWxHJSLQZ5iQ4Md4e 2CtvINCQ8H1MAXGC2S9Aw1A== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Nicolas Frattaroli Currently, the only clock rockchip-dfi will ever use is on the rk3399, namely pclk_ddr_mon. However, this is mainly because every other SoC's mainline clock tree and bindings are probably lying and not telling us about some clock gate branches that do exist in hardware, but nothing happens ever gate. Get preparations out of the way to fix this by moving to the bulk clock APIs, which will make handling the one-clock-per-channel cases easier to deal with. Signed-off-by: Nicolas Frattaroli Signed-off-by: Sebastian Reichel --- drivers/devfreq/event/rockchip-dfi.c | 39 +++++++++++++++++++++++++++-----= ---- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/drivers/devfreq/event/rockchip-dfi.c b/drivers/devfreq/event/r= ockchip-dfi.c index dd9edfd6a674..b61ec500eaed 100644 --- a/drivers/devfreq/event/rockchip-dfi.c +++ b/drivers/devfreq/event/rockchip-dfi.c @@ -98,7 +98,7 @@ struct rockchip_dfi { struct device *dev; void __iomem *regs; struct regmap *regmap_pmu; - struct clk *clk; + struct clk_bulk_data *clocks; int usecount; struct mutex mutex; u32 ddr_type; @@ -122,6 +122,8 @@ struct rockchip_dfi_variant { int stride; bool ctrl_single; unsigned int max_channels; + const char * const *clk_names; + unsigned int num_clks; }; =20 static int rockchip_dfi_ddrtype_to_ctrl(struct rockchip_dfi *dfi, u32 *ctr= l) @@ -183,9 +185,10 @@ static int rockchip_dfi_enable(struct rockchip_dfi *df= i) if (dfi->usecount > 1) goto out; =20 - ret =3D clk_prepare_enable(dfi->clk); + ret =3D clk_bulk_prepare_enable(dfi->variant->num_clks, dfi->clocks); if (ret) { - dev_err(&dfi->edev->dev, "failed to enable dfi clk: %d\n", ret); + dev_err(&dfi->edev->dev, "failed to enable dfi clocks: %pe\n", + ERR_PTR(ret)); goto out; } =20 @@ -245,7 +248,7 @@ static void rockchip_dfi_disable(struct rockchip_dfi *d= fi) break; } =20 - clk_disable_unprepare(dfi->clk); + clk_bulk_disable_unprepare(dfi->variant->num_clks, dfi->clocks); out: mutex_unlock(&dfi->mutex); } @@ -721,11 +724,6 @@ static int rk3399_dfi_init(struct rockchip_dfi *dfi) struct regmap *regmap_pmu =3D dfi->regmap_pmu; u32 val; =20 - dfi->clk =3D devm_clk_get(dfi->dev, "pclk_ddr_mon"); - if (IS_ERR(dfi->clk)) - return dev_err_probe(dfi->dev, PTR_ERR(dfi->clk), - "Cannot get the clk pclk_ddr_mon\n"); - /* get ddr type */ regmap_read(regmap_pmu, RK3399_PMUGRF_OS_REG2, &val); dfi->ddr_type =3D FIELD_GET(RK3399_PMUGRF_OS_REG2_DDRTYPE, val); @@ -802,11 +800,17 @@ static int rk3588_dfi_init(struct rockchip_dfi *dfi) return 0; }; =20 +static const char * const rk3399_clk_names[] =3D { + "pclk_ddr_mon", +}; + static const struct rockchip_dfi_variant rk3399_variant =3D { .init =3D rk3399_dfi_init, .stride =3D 0x14, .ctrl_single =3D true, .max_channels =3D 2, + .clk_names =3D rk3399_clk_names, + .num_clks =3D ARRAY_SIZE(rk3399_clk_names), }; =20 static const struct rockchip_dfi_variant rk3568_variant =3D { @@ -837,6 +841,7 @@ static int rockchip_dfi_probe(struct platform_device *p= dev) struct rockchip_dfi *dfi; struct devfreq_event_desc *desc; struct device_node *np =3D pdev->dev.of_node, *node; + unsigned int i; int ret; =20 dfi =3D devm_kzalloc(dev, sizeof(*dfi), GFP_KERNEL); @@ -868,6 +873,22 @@ static int rockchip_dfi_probe(struct platform_device *= pdev) desc->driver_data =3D dfi; desc->name =3D np->name; =20 + if (dfi->variant->num_clks) { + /* NB: CCF is fine with us leaving this NULL if num_clks =3D 0 */ + dfi->clocks =3D devm_kcalloc(dev, dfi->variant->num_clks, + sizeof(*dfi->clocks), GFP_KERNEL); + if (!dfi->clocks) + return -ENOMEM; + + for (i =3D 0; i < dfi->variant->num_clks; i++) + dfi->clocks[i].id =3D dfi->variant->clk_names[i]; + + ret =3D devm_clk_bulk_get(dev, dfi->variant->num_clks, + dfi->clocks); + if (ret) + return dev_err_probe(dev, ret, "failed to get clocks\n"); + } + ret =3D dfi->variant->init(dfi); if (ret) return ret; --=20 2.53.0 From nobody Thu Sep 24 17:54:54 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 ECF4847728F; Mon, 21 Sep 2026 20:33:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022800; cv=none; b=X66+mQfFc4C9uRw1M1qiNAs18rsbnzwYDAhGCM26nxvNsQWkrC+hL6uHVVdRdyGBLZ9WnFY0PXZudxgl5WFaXgiocUgF7nsn01OluX5i/cAUe7d83VEuniU9H4FUlzfKZaQlKJ1A57uPBWOxqAOTCJoPw3egU/Qe0q/sVW8Uyt0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022800; c=relaxed/simple; bh=VXjQmgPNcP6TxrE9fEJyZi07Hi5P0Q3culnMpUj9c98=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cp/DAOEwve48E7ClXIAnATvvsiNv8dJQRiqA0MnSNfpeBgGMUQJBev6W3voWZXzZH0zIT1sz/5Ey7hAyvKyZ9dbuP7C6PLEYytx6TZYEeSR3pr3DgPzmn1vOeoSHjV6xLpjKn7QHc1Met6GlL9Of7PF0VFf9l57Lr2Q1525NQ60= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=SePGBiBi; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="SePGBiBi" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1790022792; bh=VXjQmgPNcP6TxrE9fEJyZi07Hi5P0Q3culnMpUj9c98=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=SePGBiBib+WxIdXITIUybZ02U8azVh8lr8Noklr3a4VS3CpQtBYiDrC+kgj5YMJpo fNPQCSr3PDZcYw9rwhNnnE8j7XL58droQwy6gcajVzaa26M/ohrZuFZCyZayumPIse rEu4O1RW8g8lBdHZD5sdrGneEe5nz/InwZ+nQY9nJ2tj17N9iLCj2ziPM+DPNxFCaz dDhzMTW2zP6fOKUtWStq/qd0wz++xxEnFTQ51Y/mkf5Jrr1Dm77jI+vml/xW0lmd31 84+RrUY04sCyFQrFaFKA3P6YYommGMeFtM82zfwCBLo6YfQqX2DceXrW9eh/+XiR9M itVe2GOJYRFJA== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 903AF17E0D49; Mon, 21 Sep 2026 22:33:12 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id F232A480038; Mon, 21 Sep 2026 22:33:11 +0200 (CEST) From: Sebastian Reichel Date: Mon, 21 Sep 2026 22:32:49 +0200 Subject: [PATCH v2 6/8] clk: rockchip: rk3588: add PCLK_DDR_MON_CH gate branches Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-rockchip-dfi-cleanup-v2-6-43ff34ac8599@collabora.com> References: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> In-Reply-To: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> To: Stephen Boyd , Brian Masney , Jerome Brunet , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Chanwoo Choi , MyungJoo Ham , Kyungmin Park , Sascha Hauer Cc: Nicolas Frattaroli , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, kernel@collabora.com, Sebastian Reichel X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1856; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=WfqRSjYFz7+ljRQE5uaOc11qdMoKK31EtGs4gkDrNM4=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqxlIe0QrS0CLpebNH1Rg5WGyot/dW96mfTj Ie0nY2O+6nKXYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqsZSHAAoJENju1/PI O/qaia4QAJRJ/+eB1ujJdyhurQIJsEnNpnu5ZagFiNILWYw9G4sPIA2vq6Tvj6gAtPHPdQYJv4n iv63KRvxxqLt0xuyKQk16AyLhQQA8D0TfoqWGyJbxOSe+JtooXbZ79c0uJKyXDWCp7GPEF0+IeQ d6IPGKZ8TYhKQ0XrR012CwVXmXCv9iYZ1lDjp5IlMsWYxlSzGfE7EjBOYH4efalDH7VaEJdSgQD mFRbVg+mlTndcRS5Gr52zsEosKwfC1HA2LGlv0JK87tgU0VSGpeVtFEDawqNI/X1rlCk82Z3+ZJ uUnXKC4MY2yx7bTUFf80OCFUfBsgKtWV4wu8ZS0NWpQHVKGHU/g8TkQLQ3/ZgFwtLrJTaTsJb4g KjPi1Qpqv59Bhgtcu+o2bqyShoV5fri5MJzJo36l9LlzRSXJqq/uLq+FhcsGrF5K+m+agQxu+tp uPQBIklQVBFthHEWXkLNpkIBHuteNT1QbK4A/DEZS3onmZEA+8l4LR8eslNnQxvdWah1YyzBDLg 5mv9ZQGyNLmLlR1B4+KdGf1pY5RVuWctgdfgUES3LseJ/Dx4+pu4PEm+6Ix0LiQ6v9h3a4OunYU F8kRBWne3J4vEx04VVtHwz8PAUUU9GM/h5QGhLYOZwKfLqDuXdsIkx/l1U3qNz/jSQTrd4d6SOZ maYVMMZIqKefCNYxdUlknGg== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Nicolas Frattaroli On the Rockchip RK3588, each memory channel has some bandwidth monitoring silicon (hence the "DDR_MON"), which is driven by a clock gated by PCLK_DDR_MON_CH0/1/2/3. These clock branches were left out of the mainline clock tree until now. Add them, with the proper CRU reg bits, and the proper parent. They are given the "CLK_IGNORE_UNUSED" flag, so that older device trees with newer kernels don't turn off the clocks because they're seen as not in use. Signed-off-by: Nicolas Frattaroli Signed-off-by: Sebastian Reichel --- drivers/clk/rockchip/clk-rk3588.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/clk/rockchip/clk-rk3588.c b/drivers/clk/rockchip/clk-r= k3588.c index 24baa0ef9bf3..0485faf27163 100644 --- a/drivers/clk/rockchip/clk-rk3588.c +++ b/drivers/clk/rockchip/clk-rk3588.c @@ -1349,6 +1349,14 @@ static struct rockchip_clk_branch rk3588_early_clk_b= ranches[] __initdata =3D { COMPOSITE(CLK_DDR_CM0_RTC, "clk_ddr_cm0_rtc", mux_24m_32k_p, CLK_IS_CRITI= CAL, RK3588_CLKSEL_CON(166), 5, 1, MFLAGS, 0, 5, DFLAGS, RK3588_CLKGATE_CON(70), 4, GFLAGS), + GATE(PCLK_DDR_MON_CH0, "pclk_ddr_mon_ch0", "pclk_center_root", CLK_IGNORE= _UNUSED, + RK3588_CLKGATE_CON(20), 1, GFLAGS), + GATE(PCLK_DDR_MON_CH1, "pclk_ddr_mon_ch1", "pclk_center_root", CLK_IGNORE= _UNUSED, + RK3588_CLKGATE_CON(20), 14, GFLAGS), + GATE(PCLK_DDR_MON_CH2, "pclk_ddr_mon_ch2", "pclk_center_root", CLK_IGNORE= _UNUSED, + RK3588_CLKGATE_CON(23), 1, GFLAGS), + GATE(PCLK_DDR_MON_CH3, "pclk_ddr_mon_ch3", "pclk_center_root", CLK_IGNORE= _UNUSED, + RK3588_CLKGATE_CON(23), 14, GFLAGS), GATE(PCLK_WDT, "pclk_wdt", "pclk_center_root", 0, RK3588_CLKGATE_CON(70), 7, GFLAGS), GATE(PCLK_TIMER, "pclk_timer", "pclk_center_root", 0, --=20 2.53.0 From nobody Thu Sep 24 17:54:54 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 ED137479867; Mon, 21 Sep 2026 20:33:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022801; cv=none; b=CCkRVuuIOvCUofZ/W6iOwYbTDVNgUVTA4OZJIyXr62JsvuJ4RacWzG2lmHWI7saREOGnOEm4r65R7oCfg4PFWXvzbdmr3fITNOBh7yPDrvgbhZ0GfauVvPEtxGKJRo/h/Nd8TOyyUzH4jrVvMUfeKSSyZ5AGkU0XoIOatYdTPDA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022801; c=relaxed/simple; bh=tiAXtxGxkrnKvU2eq5NeqSXpRtY5IBhw2szF9OLHTKs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=atgMRzHZNdrdknAyBJDx09dmAruOhKyHIfMDuXqgyad2r31kwEXcOcfcYaBXfINOy350WRG7+CQYuiZIiDVNiVp0rfKMLa37MGwQGdLJNfCH/Mvm6I45QpY/CNs+yefg3FZgk8jXkVkhgd4hF007i7gktkDW17lEW/Z9EB/Bt6o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=PrteYN7M; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="PrteYN7M" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1790022792; bh=tiAXtxGxkrnKvU2eq5NeqSXpRtY5IBhw2szF9OLHTKs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=PrteYN7M3bX4I2j26CG+OeV1cQhyOJImo22FSqS9oDKRLNb9FS09y5XTXrdC7F0Wq /0YC/LcuusP1rGxT2rvaOmsh2JMjbTL9zCmluyWR4uaHPjkP2rtdNjXOxjoRcEkii0 fwxi1Fg/4mmu43PwHPMKXMf6OZ2xAdg2J/1VmClMtMTFSmimGTE9VLtRmQtiTwErjv jFBd2lsQcFDhTCZHHeD7VPR52aYprJDcbamFxxD8qWa6C9cpfyYgp7/oAbCYVp+1X3 qKKjWkuzzFOoWZ7tDkdP8fD0WZR/fJ/nOo6bXkxU923nrtFtv/IURtKj/mD8SPzGFh xxAZc70gdaZFw== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 9806D17E0DF0; Mon, 21 Sep 2026 22:33:12 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id F3D3B48003A; Mon, 21 Sep 2026 22:33:11 +0200 (CEST) From: Sebastian Reichel Date: Mon, 21 Sep 2026 22:32:50 +0200 Subject: [PATCH v2 7/8] PM / devfreq: rockchip-dfi: make RK3588 use its clocks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-rockchip-dfi-cleanup-v2-7-43ff34ac8599@collabora.com> References: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> In-Reply-To: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> To: Stephen Boyd , Brian Masney , Jerome Brunet , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Chanwoo Choi , MyungJoo Ham , Kyungmin Park , Sascha Hauer Cc: Nicolas Frattaroli , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, kernel@collabora.com, Sebastian Reichel X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3489; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=qvocAYEOUWCK+4Q9yI0ZwLs4Fy1aQdG/tLvtq/e+Jqc=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqxlIf3CNUAFPMYVqFNp4MFUI2A8pkyMRxRs vDRfPJNPvLdL4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqsZSHAAoJENju1/PI O/qaN9QQAKiUaLYg3S8VlvBCe9XB6jUao/EllJMQHzYAOeMb3mtOwshB4meRmSKtxzdqt5AEv1I CIZubGuKNNG6rzy+WRZGX7fR6Ii2Z8UVtiNvlT67HICA2wy8D9mTSuOmi9DV8P6zZYNEdjoULtK R2EdJlykZCpawXNpfTC9hEtkUnn7lnQzRmHQMas8sHeHQHUgyN4798GmrNwYdbcEXYOPsmkMZJT dX+zt4WhWJdx70RLgfpk4oYC5WS0A3X6ckP1gRNKGP/H8CIUSU2ljiDjqWu2bczNqqEj/3QlZnq cnTT/ooa6U98Mh3q0TK6oSjtUYeoL+GM3EPuGPNcixl7wh55TiKYwXdMCwWT91o/doG9CUg1fJM 0GUB0nj6guKaBLTBbdnC8cjW1w09/1kNltEY5nk2NO1Py+1vyGSLkb7s8Maar+a2yr6IkRgogz1 KCD02uZxAbDCQk4khrfE6TL4OWaYlV8eZU8xXi0d+gvD6hPuRUS2EahR/KZzxkH7Bkn8oFeB3+s Q42eXzI6meD+ITq3qwM3TM7KNcKsUrF/FRiUgNTKCwCcojftpLcuwFTlEeSlepwyaxuhjt/EIzM btUxd6h0P1AheUFlR2k2YDalKya/8dmSPFybMl0scBxAEPhhV96wu4sAOrUP/1HCwTPBfywv9Dg 5KyyU0WWoW54KcKVv6cwiIg== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Nicolas Frattaroli So far, RK3588 doesn't have the pclks for DDRMON used in the driver, as they weren't modelled before. However, they are now correctly modelled, so the driver should use them when possible. Instead of unconditionally getting them for this SoC, add a new variant member that specifies whether the driver should let missing clocks slide. This is needed because we want old device trees to keep functioning, as otherwise we'd be introducing a breaking change for literally no functional difference here. Fill out a clock name list for this variant as well, and hand it to it. Signed-off-by: Nicolas Frattaroli Signed-off-by: Sebastian Reichel --- drivers/devfreq/event/rockchip-dfi.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/drivers/devfreq/event/rockchip-dfi.c b/drivers/devfreq/event/r= ockchip-dfi.c index b61ec500eaed..380361a231a2 100644 --- a/drivers/devfreq/event/rockchip-dfi.c +++ b/drivers/devfreq/event/rockchip-dfi.c @@ -117,6 +117,18 @@ struct rockchip_dfi { const struct rockchip_dfi_variant *variant; }; =20 +/** + * struct rockchip_dfi_variant + * @init: pointer to the variant-specific initialisation function + * @stride: address offset between the DDRMON per-channel instances + * @ctrl_single: whether only one DDRMON instance monitors multiple channe= ls + * @max_channels: maximum number of memory channels for this SoC + * @clk_names: pointer to a constant array of constant clock name strings + * @num_clk: the number of elements in the @clk_names array + * @clocks_optional: whether not finding the clocks is non-fatal. Set if t= he + * DT binding for this variant didn't require clocks in = the + * past, so that the driver remains compatible with old = DTs. + */ struct rockchip_dfi_variant { int (*init)(struct rockchip_dfi *dfi); int stride; @@ -124,6 +136,7 @@ struct rockchip_dfi_variant { unsigned int max_channels; const char * const *clk_names; unsigned int num_clks; + bool clocks_optional; }; =20 static int rockchip_dfi_ddrtype_to_ctrl(struct rockchip_dfi *dfi, u32 *ctr= l) @@ -804,6 +817,11 @@ static const char * const rk3399_clk_names[] =3D { "pclk_ddr_mon", }; =20 +static const char * const rk3588_clk_names[] =3D { + "pclk_ddr_mon_ch0", "pclk_ddr_mon_ch1", "pclk_ddr_mon_ch2", + "pclk_ddr_mon_ch3", +}; + static const struct rockchip_dfi_variant rk3399_variant =3D { .init =3D rk3399_dfi_init, .stride =3D 0x14, @@ -824,6 +842,9 @@ static const struct rockchip_dfi_variant rk3588_variant= =3D { .init =3D rk3588_dfi_init, .stride =3D 0x4000, .max_channels =3D 4, + .clk_names =3D rk3588_clk_names, + .num_clks =3D ARRAY_SIZE(rk3588_clk_names), + .clocks_optional =3D true, }; =20 static const struct of_device_id rockchip_dfi_id_match[] =3D { @@ -883,8 +904,12 @@ static int rockchip_dfi_probe(struct platform_device *= pdev) for (i =3D 0; i < dfi->variant->num_clks; i++) dfi->clocks[i].id =3D dfi->variant->clk_names[i]; =20 - ret =3D devm_clk_bulk_get(dev, dfi->variant->num_clks, - dfi->clocks); + if (dfi->variant->clocks_optional) + ret =3D devm_clk_bulk_get_optional(dev, dfi->variant->num_clks, + dfi->clocks); + else + ret =3D devm_clk_bulk_get(dev, dfi->variant->num_clks, + dfi->clocks); if (ret) return dev_err_probe(dev, ret, "failed to get clocks\n"); } --=20 2.53.0 From nobody Thu Sep 24 17:54:54 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 14EEC47F794; Mon, 21 Sep 2026 20:33:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022800; cv=none; b=Cpby7DidnyBxjtzTQposb4n+/Y0J965gGl/DF2uVFfGuHP78a9VYFtMq5Zg2nMfBsMNfjNaAqkdgZQOcnSzXEq6oTD7/p7OaPcVoOQZT+Qw+0eymnz/RVWxI8ntHHrx10QhXlCx7M7iy9kcNtPn+HuviBF3UK8geach2W5oFkUg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790022800; c=relaxed/simple; bh=kl8wn/r9EG1O9VsRBp0nZH0IjzQxh/DjmWyxpmzatK8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SKz/duwSenc6kClfRSRoMkqNbtuLuMmmESX2vSoZVFXXeeLKwpQTmHvfJ/tWdfpWPeVEZplhr8+wvmKHzm5syy6Z0t5jvveHqJ8ik0Ts+wcHURqqH1+tyEHCvAosOy++ZJ5ij9hmCebfwy4DPR7zjAEcloWvh7FmF2QXJjxhBnA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=Rji7PbvH; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="Rji7PbvH" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1790022792; bh=kl8wn/r9EG1O9VsRBp0nZH0IjzQxh/DjmWyxpmzatK8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Rji7PbvHbdPfvL7M7W5xwKaK9dfM75OVFXx+/rumstL0S0jyqVBpfZU7Pz1a/Ng5j 5y7kRZHUvd0/B65aU4bGUTSWIS8bUHUn7iH8EuGskzxNuSA0uITsEORpjLNeng+eU1 tUlA+pFzx+6EUMyy+/4vvqX+Al+/VGdI/0kLjBtGfMSOxZYGe1ILgcD02uSeZx4kIo f1T7LPyyKtRlKOqU7ttPhoTl39H2WCB0WA55q32GCqTGQ2NMaNpLtxRGDAUf/ZHYFy kSkvA6wRr3qefsUplmonqiZ7hyVGlYyeIgr7LwrK18QcF0A1elj53+PhJd3wvXxvax ZNKHuO6cxRVSQ== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 97E7917E0D69; Mon, 21 Sep 2026 22:33:12 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 0169D48003D; Mon, 21 Sep 2026 22:33:12 +0200 (CEST) From: Sebastian Reichel Date: Mon, 21 Sep 2026 22:32:51 +0200 Subject: [PATCH v2 8/8] arm64: dts: rockchip: add dfi clocks on RK3588 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-rockchip-dfi-cleanup-v2-8-43ff34ac8599@collabora.com> References: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> In-Reply-To: <20260921-rockchip-dfi-cleanup-v2-0-43ff34ac8599@collabora.com> To: Stephen Boyd , Brian Masney , Jerome Brunet , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Chanwoo Choi , MyungJoo Ham , Kyungmin Park , Sascha Hauer Cc: Nicolas Frattaroli , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, kernel@collabora.com, Sebastian Reichel X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1261; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=yJgBEAE3Q/LF6F94kFrvAOvvsqkDjVIE3joxTI9swgE=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqxlIdT7oBl7xnlQ8+qAoOVONj4+II2ywgJW yCDcKSJVEMM0okCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqsZSHAAoJENju1/PI O/qaKuoQAI141LAMUadx9gzf314SwZtTFWdETwiH4mdeam4VMwWKefPaQsfo/0eZLlTRoR3Rago r9xiQED2IliIVyGOy7irShUoOsEYjQL7OzT1SZqTvOw3paWsYVZzfgePk7nfGtkm+Gqsf4JlfpR 2MvSm6XMJH4HZeAebkY6VIZUiVl/biFU9gVVL45Yl6a97GguuHdr69bGCmRvywtSRPT9Zn2fRCI AP0D3ZTTL9hRuRc1Wyz++t0fBHE4v1nJxcwTYLEuVbbB+JqwrW0P8abUb8w3XsDbpSYrr861dME TZ5xedtmnR/Qnkj0xBm32HFQEp/y1U7zdkgnMy7hZD6aS7ToTkS7dl7zvir0n42WwP2Pol7STPl 3LxI+Pu2/jpb3WDJZhIv9zgiG9fnyBMuJ774rOh+VKGQ4qDZgKxAiiKhTuwIy9STEi8raZ43AjK lgvyMdsApVI+7uMcscZ0vqDhYRd97UwbTiqCCXWTpEbuDTBBlsB+bLGCQTojPDay7a2/kMt2iy9 Mck1SSC0sz+IAf6OYpuaJaTP/1hQbxElRfjrDPM9mzdO/Rbp7qMUQDehWU47Vt/SVWHRpMpImtK AyExaoAHVhD96oAzEbBJNR77Pr2PhfAk4cfTFFri69eePxLhh0te8XJECDFOyDxhOZEcWp3W2SD yWdUTvFNBHT3Pgkk6aXsuVA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Nicolas Frattaroli The DFI clocks weren't modelled before and the binding didn't know about them either. That has changed though, and now we actually need to specify these clocks. Add all four clocks for all four channels of monitoring. Signed-off-by: Nicolas Frattaroli Signed-off-by: Sebastian Reichel --- arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boo= t/dts/rockchip/rk3588-base.dtsi index 376ad04e0786..ac9299e1197b 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi @@ -2178,6 +2178,10 @@ qos_vop_m1: qos@fdf82200 { dfi: dfi@fe060000 { reg =3D <0x00 0xfe060000 0x00 0x10000>; compatible =3D "rockchip,rk3588-dfi"; + clocks =3D <&cru PCLK_DDR_MON_CH0>, <&cru PCLK_DDR_MON_CH1>, + <&cru PCLK_DDR_MON_CH2>, <&cru PCLK_DDR_MON_CH3>; + clock-names =3D "pclk_ddr_mon_ch0", "pclk_ddr_mon_ch1", + "pclk_ddr_mon_ch2", "pclk_ddr_mon_ch3"; interrupts =3D , , , --=20 2.53.0