Hi Piotr,

    I applied this patch: https://github.com/warpme/minimyth2/blob/master/script/kernel/linux-6.18/files/0312-drm-meson-add-vpu-clk-setting-for-S4.patch, and ran it on the board.

    I encountered the same issue—the system froze.

    I found that the patch has a few minor problems. After fixing them, the system runs normally. Could you try the following patch?


在 2025/12/3 13:56, Ao Xu 写道:
Hi Piotr,

    I will need about two more days to look into it. I will follow up with you ASAP.


在 2025/12/2 16:29, Piotr Oniszczuk 写道:
[You don't often get email from [email protected]. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]

[ EXTERNAL EMAIL ]

Ao,
Any chance for updated s4 hdmi series for 6.18?


Wiadomość napisana przez Ao Xu <[email protected]> w dniu 21 lis 2025, o godz. 03:55:

Hi Piotr,

     I will check this issue

在 2025/11/19 18:27, Piotr Oniszczuk 写道:
[You don't often get email from [email protected]. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]

[ EXTERNAL EMAIL ]

Pls see inline

Wiadomość napisana przez Chuan Liu <[email protected]> w dniu 19 lis 2025, o godz. 03:57:

Hi Piotr,


On 11/18/2025 10:50 PM, Piotr Oniszczuk wrote:
[You don't often get email from [email protected]. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
[ EXTERNAL EMAIL ]
Ao,
Is there any chance to get this s4 drm hdmi series for current 6.18?
(i tried backport this series to 6.18 but have some issues with reparent vpu_0_sel to sysclk_b_sel)
Why do we need to reparent vpu_0_sel to sysclk_b_sel? is there any
background here?
Well - it looks it is because bug....
Martin Blumenstingl had perfect eye and catch typo in patch https://lore.kernel.org/all/[email protected]/:

By replacing:
assigned-clock-parents = <&clkc_periphs CLKID_FCLK_DIV3>,
<0>, /* Do Nothing */
<&clkc_periphs CLKID_VPU_0>,
<&clkc_periphs CLKID_FCLK_DIV4>,
<0>, /* Do Nothing */
<&clkc_periphs CLKID_VAPB_0>;

with:
assigned-clock-parents = <&clkc_pll CLKID_FCLK_DIV3>,
<0>, /* Do Nothing */
<&clkc_periphs CLKID_VPU_0>,
<&clkc_pll CLKID_FCLK_DIV4>,
<0>, /* Do Nothing */
<&clkc_periphs CLKID_VAPB_0>;

dmesg is like this https://termbin.com/6020

So i'm getting hdmi working - but only when device boots _without_ connected hdmi at boot (and connected later)
If hdmi is connected at boot - boot hangs at:

     0.341676] meson-dw-hdmi fe300000.hdmi-tx: Detected HDMI TX controller v2.01a with HDCP (meson_dw_hdmi_phy) [    0.342750] meson-dw-hdmi fe300000.hdmi-tx: registered DesignWare HDMI I2C bus driver [    0.343660] meson-drm ff000000.vpu: bound fe300000.hdmi-tx (ops meson_dw_hdmi_ops) [    0.344832] [drm] Initialized meson 1.0.0 for ff000000.vpu on minor 0

FYI: It is after applying https://patchwork.kernel.org/project/linux-amlogic/cover/[email protected]/ on mainline 6.18 (with some my adjustments on this series required by changes in 6.18). For VPU clk changes see https://github.com/warpme/minimyth2/blob/master/script/kernel/linux-6.18/files/0312-drm-meson-add-vpu-clk-setting-for-S4.patch It is 6.18 adaptation of https://patchwork.kernel.org/project/linux-amlogic/patch/[email protected]/

As kernel hangs - i have limited caps to drill where root cause is.

Maybe above hang is reason of my backports or missing any pre-req required to get s4 drm working? Anyway - it will be good to test with updated to 6.18 series of Add DRM support for Amlogic S4 (plus info about any pre-req required to get s4 drm working)


The vpu_clk on S4 doesn't support sysclk_b_sel as one of its
selectable clock sources, so this reparent operation will definitely
fail. This has nothing to do with the kernel version.

Wiadomość napisana przez Ao Xu via B4 Relay <[email protected]> w dniu 10 sty 2025, o godz. 06:39:

From: Ao Xu <[email protected]>

Add devicetree document for S4 HDMI controller

Signed-off-by: Ao Xu <[email protected]>
---
Documentation/devicetree/bindings/display/amlogic,meson-dw-hdmi.yaml | 1 +
1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/display/amlogic,meson-dw-hdmi.yaml b/Documentation/devicetree/bindings/display/amlogic,meson-dw-hdmi.yaml index 84d68b8cfccc86fd87a6a0fd2b70af12e51eb8a4..6e0a8369eee915fab55af24d450a6c40e08def38 100644 --- a/Documentation/devicetree/bindings/display/amlogic,meson-dw-hdmi.yaml +++ b/Documentation/devicetree/bindings/display/amlogic,meson-dw-hdmi.yaml
@@ -55,6 +55,7 @@ properties:
           - const: amlogic,meson-gx-dw-hdmi
       - enum:
           - amlogic,meson-g12a-dw-hdmi # G12A (S905X2, S905Y2, S905D2)
+          - amlogic,meson-s4-dw-hdmi # S4 (S905Y4)

   reg:
     maxItems: 1

--
2.43.0



_______________________________________________
linux-amlogic mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-amlogic
_______________________________________________
linux-amlogic mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-amlogic
Index: linux-next/meson_vclk.c
===================================================================
--- linux-next.orig/meson_vclk.c        2025-12-05 14:58:29.031454174 +0800
+++ linux-next/meson_vclk.c     2025-12-05 15:00:34.935204219 +0800
@@ -597,11 +597,11 @@
                .vclk_div = 1,
        },
        [MESON_VCLK_HDMI_27000] = {
-               .pll_freq = 4320000,
-               .phy_freq = 270000,
-               .vclk_freq = 54000,
-               .venc_freq = 27000,
-               .pixel_freq = 27000,
+               .pll_freq = 4320000000,
+               .phy_freq = 270000000,
+               .vclk_freq = 54000000,
+               .venc_freq = 27000000,
+               .pixel_freq = 27000000,
                .pll_od1 = 4,
                .pll_od2 = 4,
                .pll_od3 = 1,
@@ -1148,15 +1148,15 @@
                meson_hdmi_pll_set_params(priv, m, frac, od1, od2, od3);
        } else if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_S4)) {
                switch (pll_base_freq) {
-               case 2970000:
+               case 2970000000:
                        m = 0x7b;
                        frac = vic_alternate_clock ? 0x140b4 : 0x18000;
                        break;
-               case 4320000:
+               case 4320000000:
                        m = vic_alternate_clock ? 0xb3 : 0xb4;
                        frac = vic_alternate_clock ? 0x1a3ee : 0;
                        break;
-               case 5940000:
+               case 5940000000:
                        m = 0xf7;
                        frac = vic_alternate_clock ? 0x8148 : 0x10000;
                        break;

Reply via email to