]> git.itanic.dy.fi Git - linux-stable/commitdiff
arm64: dts: mediatek: mt8195: Fix PM suspend/resume with venc clocks
authorAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Thu, 6 Jul 2023 09:58:41 +0000 (11:58 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Dec 2023 17:39:21 +0000 (18:39 +0100)
commit 61b94d54421a1f3670ddd5396ec70afe833e9405 upstream.

Before suspending the LARBs we're making sure that any operation is
done: this never happens because we are unexpectedly unclocking the
LARB20 before executing the suspend handler for the MediaTek Smart
Multimedia Interface (SMI) and the cause of this is incorrect clocks
on this LARB.

Fix this issue by changing the Local Arbiter 20 (used by the video
encoder secondary core) apb clock to CLK_VENC_CORE1_VENC;
furthermore, in order to make sure that both the PM resume and video
encoder operation is stable, add the CLK_VENC(_CORE1)_LARB clock to
the VENC (main core) and VENC_CORE1 power domains, as this IP cannot
communicate with the rest of the system (the AP) without local
arbiter clocks being operational.

Cc: stable@vger.kernel.org
Fixes: 3b5838d1d82e ("arm64: dts: mt8195: Add iommu and smi nodes")
Fixes: 2b515194bf0c ("arm64: dts: mt8195: Add power domains controller")
Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com>
Link: https://lore.kernel.org/r/20230706095841.109315-1-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm64/boot/dts/mediatek/mt8195.dtsi

index ef2764a595eda17b13f3d6d8bdcb9b0993f4e495..414cbe3451270c605c4687d4212b69274d2475b1 100644 (file)
@@ -471,6 +471,8 @@ power-domain@MT8195_POWER_DOMAIN_VDEC1 {
 
                                        power-domain@MT8195_POWER_DOMAIN_VENC_CORE1 {
                                                reg = <MT8195_POWER_DOMAIN_VENC_CORE1>;
+                                               clocks = <&vencsys_core1 CLK_VENC_CORE1_LARB>;
+                                               clock-names = "venc1-larb";
                                                mediatek,infracfg = <&infracfg_ao>;
                                                #power-domain-cells = <0>;
                                        };
@@ -533,6 +535,8 @@ power-domain@MT8195_POWER_DOMAIN_VDEC2 {
 
                                                power-domain@MT8195_POWER_DOMAIN_VENC {
                                                        reg = <MT8195_POWER_DOMAIN_VENC>;
+                                                       clocks = <&vencsys CLK_VENC_LARB>;
+                                                       clock-names = "venc0-larb";
                                                        mediatek,infracfg = <&infracfg_ao>;
                                                        #power-domain-cells = <0>;
                                                };
@@ -1985,7 +1989,7 @@ larb20: larb@1b010000 {
                        reg = <0 0x1b010000 0 0x1000>;
                        mediatek,larb-id = <20>;
                        mediatek,smi = <&smi_common_vpp>;
-                       clocks = <&vencsys_core1 CLK_VENC_CORE1_LARB>,
+                       clocks = <&vencsys_core1 CLK_VENC_CORE1_VENC>,
                                 <&vencsys_core1 CLK_VENC_CORE1_GALS>,
                                 <&vppsys0 CLK_VPP0_GALS_VDO0_VDO1_VENCSYS_CORE1>;
                        clock-names = "apb", "smi", "gals";