[RESEND,v2 1/2] dt-bindings: memory-controllers: mtk-smi: Add support for mt8189

Zhengnan Chen (陈征南) Zhengnan.Chen at mediatek.com
Thu Apr 30 00:22:57 PDT 2026


On Tue, 2026-04-28 at 08:26 +0200, Krzysztof Kozlowski wrote:
> On Mon, Apr 27, 2026 at 03:04:28PM +0800, mtk20898 wrote:
> >  properties:
> >    compatible:
> >      oneOf:
> > @@ -40,6 +55,8 @@ properties:
> >            - mediatek,mt8186-smi-common
> >            - mediatek,mt8188-smi-common-vdo
> >            - mediatek,mt8188-smi-common-vpp
> > +          - mediatek,mt8189-smi-common
> > +          - mediatek,mt8189-smi-sub-common
> >            - mediatek,mt8192-smi-common
> >            - mediatek,mt8195-smi-common-vdo
> >            - mediatek,mt8195-smi-common-vpp
> > @@ -108,19 +125,23 @@ allOf:
> >          compatible:
> >            contains:
> >              enum:
> > +              - mediatek,mt8189-smi-sub-common
> >                - mediatek,mt8195-smi-sub-common
> >      then:
> >        required:
> >          - mediatek,smi
> >        properties:
> >          clocks:
> > -          minItems: 3
> > +          minItems: 2
> 
> Same problem as v2 before resend.
> 
> Please explain me how mt8195 requires three clocks. You can prove it
> by
> trying a malformed DTS (past here the snippet/diff) and pasting here
> the
> validation error.
> 
> 
> Best regards,
> Krzysztof
> 
The mt8195 smi-sub-comm has a three-clock configuration, for example:
smi_sub_common_cam_7x1: smi at 16005000 {
	 compatible = "mediatek,mt8195-smi-sub-common";
	 reg = <0 0x16005000 0 0x1000>;
	 clocks = <&camsys CLK_CAM_LARB14>,
			  <&camsys CLK_CAM_CAM2MM1_GALS>,
			  <&vppsys0 CLK_VPP0_GALS_IMGSYS_CAMSYS>;
	 clock-names = "apb", "smi", "gals0";
	 mediatek,smi = <&smi_common_vpp>;
	 power-domains = <&spm MT8195_POWER_DOMAIN_CAM>;
};

but mt8189 smi-sub-comm only requires 2 clock cycles,
there is no case where three clock cycles are needed, for example:
smi_cam_3x1_sub_comm: smi at 1a00c000 {
	compatible = "mediatek,mt8189-smi-sub-common";
	reg = <0 0x1a00c000 0 0x1000>;
	clocks = <&camsys_main_clk CLK_CAM_M_CAM2MM_GALS>,
		 <&camsys_main_clk CLK_CAM_M_CAM2MM_GALS>;
	clock-names = "apb", "smi";
	power-domains = <&spm MT8189_POWER_DOMAIN_CAM_MAIN>;
	mediatek,smi = <&smi_disp_common>;
};

Our current approach is rather lenient. 

If stricter restrictions are needed, it should be revised. 
We want to change it to a format similar to the following:

allOf:
  # Generic rule: only sub-common nodes can have mediatek,smi
  - if:
      properties:
        compatible:
          contains:
            pattern: "^mediatek,mt[0-9]+-smi-sub-common$"
    then:
      required:
        - mediatek,smi
    else:
      properties:
        mediatek,smi: false

  # Group A: sub-common SoCs with exactly 2 clocks
  - if:
      properties:
        compatible:
          contains:
            enum:
              - mediatek,mt8189-smi-sub-common
    then:
      properties:
        clocks:
          minItems: 2
          maxItems: 2
        clock-names:
          minItems: 2
          maxItems: 2
          items:
            - const: apb
            - const: smi

  # Group B: sub-common SoCs with exactly 3 clocks
  - if:
      properties:
        compatible:
          contains:
            enum:
              - mediatek,mt8195-smi-sub-common
    then:
      properties:
        clocks:
          minItems: 3
          maxItems: 3
        clock-names:
          minItems: 3
          maxItems: 3
          items:
            - const: apb
            - const: smi
            - const: gals0
			
Is this writing okay?


More information about the Linux-mediatek mailing list