This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-AM62P: Add sn65dsi86 chip, but no output to eDP

Part Number: PROCESSOR-SDK-AM62P
Other Parts Discussed in Thread: SN65DSI86, AM62P

Tool/software:

Hi Expert,

We enable sn65dsi86 in our custom AM62P board by this patch, and get nothing output to eDP.

patch file:

diff --git a/linux-10.01.10.04/board-support/ti-linux-kernel-6.6.58+git-ti/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/linux-10.01.10.04/board-support/ti-linux-kernel-6.6.58+git-ti/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
index 5cbd8dc0d4d0fea9cf150371fe231886b0f8509f..6fa86580d49c385382120328c20c7d70919c1504 100644
--- a/linux-10.01.10.04/board-support/ti-linux-kernel-6.6.58+git-ti/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
+++ b/linux-10.01.10.04/board-support/ti-linux-kernel-6.6.58+git-ti/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
@@ -433,7 +433,7 @@
 		compatible = "ti,sn65dsi86";
 		reg = <0x2c>;
 
-		enable-gpios = <&main_gpio0 84 GPIO_ACTIVE_LOW>;
+		enable-gpios = <&main_gpio0 84 GPIO_ACTIVE_HIGH>;
 		//suspend-gpios = <&msmgpio 34 GPIO_ACTIVE_LOW>;
 
 		interrupts-extended = <&main_gpio0 83 IRQ_TYPE_EDGE_FALLING>;
@@ -462,8 +462,8 @@
 		    reg = <1>;
 
 		    edp_bridge_out: endpoint {
-		      data-lanes = <2 1 3 0>;
-		      lane-polarities = <0 1 0 1>;
+		      data-lanes = <0 1 2 3>;
+		      lane-polarities = <0 0 0 0>;
 		      remote-endpoint = <&dp0_connector_in>;
 		    };
 		  };
@@ -835,8 +835,10 @@
 	status = "okay";
 };
 
-&dphy0 {
+&dphy_tx0 {
+        compatible = "ti,j721e-dphy";
 	status = "okay";
 };
 
 
+
diff --git a/linux-10.01.10.04/board-support/ti-linux-kernel-6.6.58+git-ti/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/linux-10.01.10.04/board-support/ti-linux-kernel-6.6.58+git-ti/drivers/gpu/drm/bridge/ti-sn65dsi86.c
index 9fc663497dcee4517c5f632347d958defa40e6ee..b4da324060dab6bea513946e9ebf7057fbed172e 100644
--- a/linux-10.01.10.04/board-support/ti-linux-kernel-6.6.58+git-ti/drivers/gpu/drm/bridge/ti-sn65dsi86.c
+++ b/linux-10.01.10.04/board-support/ti-linux-kernel-6.6.58+git-ti/drivers/gpu/drm/bridge/ti-sn65dsi86.c
@@ -715,8 +715,8 @@ static int ti_sn_attach_host(struct auxiliary_device *adev, struct ti_sn65dsi86
 	if (IS_ERR(dsi))
 		return PTR_ERR(dsi);
 
-	/* TODO: setting to 2 MIPI lanes always for now */
-	dsi->lanes = 2;
+	/* TODO: setting to 4 MIPI lanes always for now */
+	dsi->lanes = 4;
 	dsi->format = MIPI_DSI_FMT_RGB888;
 	dsi->mode_flags = MIPI_DSI_MODE_VIDEO |
 		MIPI_DSI_MODE_NO_EOT_PACKET | MIPI_DSI_MODE_VIDEO_SYNC_PULSE;

log file:20250813_1508_v1.0_am62p_dsi_to_sn65dsi86_to_edp.txt

After "i2cset -f -y 2 0x2c 0x3c 0x12", we can see color bar output from eDP.

After "i2cdump -f -y 2 0x2c", we can see some errors in register 0xf1 ~ 0xf8. Can you give us some suggestions to find the root cause? Thanks.

BR,

Jeff

  • Hi,
    Which SDK version are you working with?
    You should not be needing to do the following change:

    -&dphy0 {
    +&dphy_tx0 {
    +        compatible = "ti,j721e-dphy";
     	status = "okay";


    Can you please share your complete patch file? Seems what you have shared already includes 'compatible = "ti,sn65dsi86";' while it is not there in default k3-am62p5-sk.dts. I understand you are using a custom board, but please share all sn65dsi86 related additions.

    You may need to apply the following patch series: https://lore.kernel.org/all/20250723-cdns-dsi-impro-v5-0-e61cc06074c2@ideasonboard.com/ [it has been reported that sometimes there is a mismatch between edid provided timing parameters and actual data lane rate achieved by DPHY. This patch series re-adjusts pixel clock per achieved data lane rate, this should help lockup between the DSI and the peripheral/bridge.]

  • Before playing around with the given patch series, please ensure your dts changes are similar to sn65dsi86 related nodes in k3-j722s-evm.dts

  • Hi,Divyansh Mittal

    SDK: ti-processor-sdk-linux-am62xx-evm-10.01.10.04

     My dts related sn65dsi86 as shown below

         dp0: dp0-connector {
                     //compatible = "ti,panel-dp";
    		compatible = "dp-connector";
    		label = "DP0";
    		type = "full-size";
    		dp-pwr-supply = <&dp0_pwr_3v3>;
    		port {
    			dp0_connector_in: endpoint {
    				remote-endpoint = <&edp_bridge_out>;
    			};
    		};
         };
         
         &main_i2c2 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c2_pins_default>;
    	clock-frequency = <400000>;
    	
            bridge_dsi86: bridge@2c {
    		compatible = "ti,sn65dsi86";
    		reg = <0x2c>;
    
    		enable-gpios = <&main_gpio0 84 GPIO_ACTIVE_HIGH>;
    		//suspend-gpios = <&msmgpio 34 GPIO_ACTIVE_LOW>;
    
    		interrupts-extended = <&main_gpio0 83 IRQ_TYPE_EDGE_FALLING>;
    
    		vccio-supply = <&buck3>;
    		vcca-supply = <&vdd_sn65_1v2>;
    		vpll-supply = <&buck3>;
    		vcc-supply = <&vdd_sn65_1v2>;
    
    		clock-names = "refclk";
    		clocks = <&edp_refclk>;
    
    		ports {
    		  #address-cells = <1>;
    		  #size-cells = <0>;
    
    		  port@0 {
    		    reg = <0>;
    
    		    edp_bridge_in: endpoint {
    		      remote-endpoint = <&dsi0_out>;
    		    };
    		  };
    
    		  port@1 {
    		    reg = <1>;
    
    		    edp_bridge_out: endpoint {
    		      data-lanes = <0 1 2 3>;
    		      //lane-polarities = <0 0 0 0>;
    		      remote-endpoint = <&dp0_connector_in>;
    		    };
    		  };
    		};
    	      };	
    };
    
    &dss1 {
            bootph-all;
    	status = "okay";
    };
    
    &dss1_ports {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	/* DSS1-VP1: DSI Output */
    	port@1 {
    		reg = <1>;
    
    		dss1_dpi1_out: endpoint {
    			remote-endpoint = <&dsi0_in>;
    		};
    	};
    };
    
    &dsi0 {
    	status = "okay";
    	//#address-cells = <1>;
    	//#size-cells = <0>;
    
    	ports {
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		port@0 {
    			reg = <0>;
    
    			dsi0_out: endpoint {
    				remote-endpoint = <&edp_bridge_in>;
    			};
    		};
    
    		port@1 {
    			reg = <1>;
    
    			dsi0_in: endpoint {
    				remote-endpoint = <&dss1_dpi1_out>;
    			};
    		};
    	};	
    };
    
    &dphy_tx0 {
            //compatible = "ti,j721e-dphy";
    	status = "okay";
    };
    
    

    It seems that the drivers have all been attached.but it nothing out to DP when I run kmstest.

    Br,

    Chifa

  • Can you please try with 11.1 SDK? There have been multiple patches on DSI for the same.

  • Hi,Divyansh Mittal

    We have already tested that SDK 11.1 is working normally.

    We see the image output to the DP monitor.

     

  • So, is your issue resolved?

  • Yes,issue is resolved.

    Thanks!