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.

SN65DSI86: SN65DSI86: "[drm:ti_sn_bridge_probe] *ERROR* could not find any panel node"

Part Number: SN65DSI86
Other Parts Discussed in Thread: TEST2

Hello.

On the custom board I am trying to connect MIPI DSI to TI SN65DSI86 and view it on an HDMI monitor using DP->HDMI conversion from mDP connector.
(using NXP imx8mm as an application processor.)
* DP->HDMI conversion: www.ainex.jp/.../

I used the following URL for the SN65DSI86 driver.
github.com/.../ti-sn65dsi86.c

We also made changes based on the patch below.
patchwork.kernel.org/.../

However, the error "[drm:ti_sn_bridge_probe] *ERROR* could not find any panel node" still occurred,
I can't display on the Displayport.

Question 1)

Do you know why the SN65DSI86 does not work?

The driver was not called, so I manually changed the register via I2C.
The sequence refers to the following. (9.2.1.2.3 Example Script)
www.tij.co.jp/.../application_and_implementation

After that, the data read by i2cdump becomes the following.
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 36 38 49 53 44 20 20 20 02 00 86 00 00 01 00 00    68ISD   ?.?..?..
10: 26 00 59 00 00 00 00 00 00 00 00 00 00 00 00 00    &.Y.............
20: 80 07 00 00 38 04 00 00 40 03 00 00 2c 00 00 00    ??..8?..@?..,...
30: 05 80 00 00 94 00 24 00 58 00 04 00 00 27 00 00    ??..?.$.X.?..'..
40: 10 6d 00 00 80 00 98 08 65 04 c0 00 29 00 2c 00    ?m..?.??e??.).,.
50: 05 80 80 07 38 04 20 00 40 e4 0d 00 00 00 30 00    ????8? .@??...0.
60: a0 60 a4 00 01 00 00 00 00 00 00 00 00 00 00 00    ?`?.?...........
70: 00 00 09 00 00 01 0a 01 80 00 00 00 00 00 00 00    ..?..????.......
80: 00 00 00 00 00 00 00 00 00 1f 02 f0 a2 ee 01 e8    .........???????
90: 0a c1 06 20 80 00 00 ff 00 00 00 00 00 00 00 00    ??? ?...........
a0: 01 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00    ?...............
b0: 04 12 17 17 17 17 11 08 09 06 07 17 17 17 17 17    ????????????????
c0: 17 17 0b 17 00 00 00 00 00 00 00 00 00 00 00 00    ????............
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 2b 00 00 41 20 00 00 02 00 00 00 00 00 00 00    .+..A ..?.......


Question 2) 

 Is the device tree notation correct?

----------------------------------------------------------------------

&i2c2 {
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2>;
	status = "okay";

	sn65dsi86@2c {
		compatible = "ti,sn65dsi86";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x2c>;

		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_mipi_dsi_en>;
		enable-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;

		interrupts-extended = <&gpio1 9 IRQ_TYPE_EDGE_FALLING>;

		vccio-supply = <&ldo6_reg>;
		vcca-supply = <&buck1_reg>;
		vpll-supply = <&ldo6_reg>;
		vcc-supply = <&buck1_reg>;

		clock-names = "refclk";
		clocks = <&clk IMX8MM_CLK_DSI_CORE>, <&clk IMX8MM_CLK_DSI_PHY_REF>;

		status = "okay";

		sn65dsi86,addresses = <0x0A 0x10 0x12 0x5A 
                                       0x93 0x94 0x0D 0x95 
                                       0x64 0x74 0x75 0x76 
                                       0x77 0x78 0x96 0x20 
                                       0x21 0x24 0x25 0x2C 
				       0x2D 0x30 0x31 0x34 
                                       0x36 0x38 0x3A 0x5B 
                                       0x3C 0x5A>;

 		sn65dsi86,values = <0x06 0x26 0x59 0x05	
                                    0x20 0x80 0x01 0x00
                                    0x01 0x00 0x01 0x0A
                                    0x01 0x81 0x0A 0x80
                                    0x07 0x38 0x04 0x2C
                                    0x00 0x05 0x80 0x94
                                    0x24 0x58 0x04 0x00
                                    0x00 0x0D>;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			
			port@0 {
				reg = <0>;
				sn65_from_dsim: endpoint {
					remote-endpoint = <&dsim_to_sn65>;
				};
			};
			port@1 {
				reg = <1>;
				sn65_to_panel: endpoint {
					data-lanes = <2 1 3 0>;
					lane-polarities = <0 1 0 1>;
					remote-endpoint = <&panel_from_sn65>;
				};
			};
		};
	};
};

----------------------------------------------------------------------

  • Hi,

    Looking at the register dump, errors are being reported at address 0xF1, 0xF4, and 0xF8. Errors at address 0xF1 and 0xF4 are errors associated with the DSI interface. Error at 0xF8 indicates DP link training failure. 

    Can you disable ASSR? To disable ASSR, please pull TEST2 pin high and 

    ======ASSR RW control ======
    <i2c_write addr=0x2D count=1 radix=16> FF 7 </i2c_write>/>
    <i2c_write addr=0x2D count=1 radix=16> 16 1 </i2c_write>/>
    <i2c_write addr=0x2D count=1 radix=16> FF 0 </i2c_write>/>

    Can you enable the color mode inside the DSI86? Enabling the color bar will separate the issue between the DSI and the DP interface. 

    ===== Color Bar Enable ======
    <i2c_write addr=0x2D count=1 radix=16> 3C 10 </i2c_write>/>

    Thanks

    David