Re: [PATCH v1] arm64: dts: qcom: msm8998: add HDMI GPIOs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 30/05/2024 18:50, Dmitry Baryshkov wrote:

> Ok, you have dropped several clocks, which I think might be required
> for the device to function. For example, msm8996 doesn't have
> MNOC_AHB_CLK, while msm8998 has it. It might be that we should be
> enabling the clock via the interconnect driver instead (or maybe it is
> handled by RPM?).
> 
> Let's hope that we can sort the clocks. I have no other issues remaining.

For quick reference:

msm8996-sde.dtsi (VENDOR)

	sde_hdmi_tx: qcom,hdmi_tx_8996@9a0000 {
		compatible = "qcom,hdmi-tx-8996";

		reg =	<0x009a0000 0x50c>,
			<0x00070000 0x6158>,
			<0x009e0000 0xfff>;
		reg-names = "core_physical",
			"qfprom_physical",
			"hdcp_physical";
		clocks = <&clock_mmss clk_mdss_mdp_vote_clk>,
			 <&clock_mmss clk_mdss_ahb_clk>,
			 <&clock_mmss clk_mdss_hdmi_clk>,
			 <&clock_mmss clk_mdss_hdmi_ahb_clk>,
			 <&clock_mmss clk_mdss_extpclk_clk>;
		clock-names =
			"mdp_core_clk",
			"iface_clk",
			"core_clk",
			"alt_iface_clk",
			"extp_clk";
		interrupt-parent = <&sde_kms>;
		interrupts = <8 0>;
		hpd-gdsc-supply = <&gdsc_mdss>;
		qcom,hdmi-tx-hpd-gpio = <&pm8994_mpps 4 0>;
		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&mdss_hdmi_hpd_active
			     &mdss_hdmi_ddc_active
			     &mdss_hdmi_cec_active>;
		pinctrl-1 = <&mdss_hdmi_hpd_suspend
			     &mdss_hdmi_ddc_suspend
			     &mdss_hdmi_cec_suspend>;

		sde_hdmi_audio: qcom,sde-hdmi-audio-rx {
			compatible = "qcom,msm-hdmi-audio-codec-rx";
		};
	};



msm8996.dtsi (MAINLINE)

			mdss_hdmi: hdmi-tx@9a0000 {
				compatible = "qcom,hdmi-tx-8996";
				reg = <0x009a0000 0x50c>,
				      <0x00070000 0x6158>,
				      <0x009e0000 0xfff>;
				reg-names = "core_physical",
					    "qfprom_physical",
					    "hdcp_physical";

				interrupt-parent = <&mdss>;
				interrupts = <8>;

				clocks = <&mmcc MDSS_MDP_CLK>,
					 <&mmcc MDSS_AHB_CLK>,
					 <&mmcc MDSS_HDMI_CLK>,
					 <&mmcc MDSS_HDMI_AHB_CLK>,
					 <&mmcc MDSS_EXTPCLK_CLK>;
				clock-names =
					"mdp_core",
					"iface",
					"core",
					"alt_iface",
					"extp";

				phys = <&mdss_hdmi_phy>;
				#sound-dai-cells = <1>;

				status = "disabled";

				ports {
					#address-cells = <1>;
					#size-cells = <0>;

					port@0 {
						reg = <0>;
						mdss_hdmi_in: endpoint {
							remote-endpoint = <&mdp5_intf3_out>;
						};
					};
				};
			};



msm8998-sde.dtsi (VENDOR)

	sde_hdmi_tx: qcom,hdmi_tx_8998@c9a0000 {
		cell-index = <0>;
		compatible = "qcom,hdmi-tx-8998";
		reg =	<0xc9a0000 0x50c>,
			<0x780000 0x621c>,
			<0xc9e0000 0x28>;
		reg-names = "core_physical", "qfprom_physical", "hdcp_physical";
		interrupt-parent = <&sde_kms>;
		interrupts = <8 0>;
		interrupt-controller;
		#interrupt-cells = <1>;
		qcom,hdmi-tx-ddc-clk-gpio = <&tlmm 32 0>;
		qcom,hdmi-tx-ddc-data-gpio = <&tlmm 33 0>;
		qcom,hdmi-tx-hpd-gpio = <&tlmm 34 0>;
		qcom,hdmi-tx-hpd5v-gpio = <&tlmm 133 0>;
		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&mdss_hdmi_hpd_active
			&mdss_hdmi_ddc_active
			&mdss_hdmi_5v_active>;
		pinctrl-1 = <&mdss_hdmi_hpd_suspend
			&mdss_hdmi_ddc_suspend
			&mdss_hdmi_5v_suspend>;
		hpd-gdsc-supply = <&gdsc_mdss>;
		qcom,supply-names = "hpd-gdsc";
		qcom,min-voltage-level = <0>;
		qcom,max-voltage-level = <0>;
		qcom,enable-load = <0>;
		qcom,disable-load = <0>;

		clocks = <&clock_mmss clk_mmss_mnoc_ahb_clk>,
			 <&clock_mmss clk_mmss_mdss_ahb_clk>,
			 <&clock_mmss clk_mmss_mdss_hdmi_clk>,
			 <&clock_mmss clk_mmss_mdss_mdp_clk>,
			 <&clock_mmss clk_mmss_mdss_hdmi_dp_ahb_clk>,
			 <&clock_mmss clk_mmss_mdss_extpclk_clk>,
			 <&clock_mmss clk_mmss_mnoc_ahb_clk>,
			 <&clock_mmss clk_mmss_misc_ahb_clk>,
			 <&clock_mmss clk_mmss_mdss_axi_clk>;
		clock-names = "hpd_mnoc_clk", "hpd_iface_clk",
				"hpd_core_clk", "hpd_mdp_core_clk",
				"hpd_alt_iface_clk", "core_extp_clk",
				"mnoc_clk","hpd_misc_ahb_clk",
				"hpd_bus_clk";

		/*qcom,mdss-fb-map = <&mdss_fb2>;*/
		qcom,pluggable;
	};



IIUC the discussion on IRC, the additional clocks are required,
so the binding should be more like this:

+++ b/Documentation/devicetree/bindings/display/msm/hdmi.yaml
@@ -19,14 +19,15 @@ properties:
       - qcom,hdmi-tx-8974
       - qcom,hdmi-tx-8994
       - qcom,hdmi-tx-8996
+      - qcom,hdmi-tx-8998
 
   clocks:
     minItems: 1
-    maxItems: 5
+    maxItems: 8
 
   clock-names:
     minItems: 1
-    maxItems: 5
+    maxItems: 8
 
   reg:
     minItems: 1
@@ -151,6 +152,27 @@ allOf:
             - const: extp
         hdmi-mux-supplies: false
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,hdmi-tx-8998
+    then:
+      properties:
+        clocks:
+          minItems: 8
+        clock-names:
+          items:
+            - const: mdp_core
+            - const: mnoc
+            - const: iface
+            - const: bus
+            - const: iface_mmss
+            - const: core
+            - const: alt_iface
+            - const: extp



So this is good?

                                clocks = <&mmcc MDSS_MDP_CLK>,
                                         <&mmcc MNOC_AHB_CLK>,
                                         <&mmcc MDSS_AHB_CLK>,
                                         <&mmcc MDSS_AXI_CLK>,
                                         <&mmcc MISC_AHB_CLK>,
                                         <&mmcc MDSS_HDMI_CLK>,
                                         <&mmcc MDSS_HDMI_DP_AHB_CLK>,
                                         <&mmcc MDSS_EXTPCLK_CLK>;
                                clock-names =
                                        "mdp_core",
                                        "mnoc",
                                        "iface",
                                        "bus",
                                        "iface_mmss",
                                        "core",
                                        "alt_iface",
                                        "extp";





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux