Rock 3A Official LCD 5" panel [ troubleshooting ]

Hi Radxa Team,

I just received the Official panel, just in time with your patches, and I am trying to make it work but having some issues.

The wiring seems to be in accordance with the wiki image but the panel does not light. Seems not powered, at least the backlight.

Maybe I missed something.

Here is the relevant info:

Board v1.2

CONFIG_ROCKPI_MCU=y
CONFIG_TOUCHSCREEN_ROCKPI_FT5406=y
CONFIG_DRM_PANEL_TOSHIBA_TC358762=y

[    0.442952] rockchip-drm display-subsystem: Linked as a consumer to fe070000.dsi
[    0.447590] dw-mipi-dsi fe070000.dsi: [drm:dw_mipi_dsi_bind] *ERROR* Failed to find panel or bridge: -517
[    0.453789] find panel: rockpi,tc358762
[    0.453839] bridge-tc358762-dsi fe070000.dsi.0: Looking up power-supply from device tree
[    0.453860] bridge-tc358762-dsi fe070000.dsi.0: Looking up power-supply property in node /dsi@fe070000/dsi-panel@0 failed
[    0.453886] bridge-tc358762-dsi fe070000.dsi.0: fe070000.dsi.0 supply power not found, using dummy regulator
[    0.453995] bridge-tc358762-dsi fe070000.dsi.0: Linked as a consumer to regulator.0
[    0.863143] rockpi-mcu: rockpi_mcu_probe: address = 0x45
[    0.863176] rockpi-mcu: send_cmds: 80
[    1.868388] rockpi-mcu: rockpi_mcu_probe: init_cmd_check failed, -110
[    1.868427] rockpi_mcu: probe of 3-0045 failed with error -110
[    1.868759] rockpi-ft5406: rockpi_ft5406_probe: address = 0x38
[    2.434988] rockpi-ft5406: rockpi_ft5406_probe: wait connected timeout
[    2.771814] rockchip-drm display-subsystem: bound fe070000.dsi (ops 0xffffff8008fdd060)
[    3.035001] dw-mipi-dsi fe070000.dsi: [drm:dw_mipi_dsi_encoder_enable] final DSI-Link bandwidth: 708 x 1 Mbps
[    3.057573] panel enable
[    3.057610] rockpi_mcu_screen_power_up

i2c3 alone works, but mcu seems to be the problem and the i2c3 timeout.

[ 2310.475926] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[ 2311.489162] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[ 2312.502464] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[ 2313.515769] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[ 2314.529076] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[ 2315.542378] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[ 2316.555691] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[ 2317.568989] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[ 2318.582293] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[ 2319.595616] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[ 2320.608918] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2

Here is my dts to 5inch panel:

/ {
 compatible = "radxa,rock-3-a", "rockchip,rk3568";

 vcc_mipi: vcc-mipi {
  status = "okay";
  compatible = "regulator-fixed";
  regulator-name = "vcc_mipi";
  regulator-boot-on;
  regulator-min-microvolt = <3300000>;
  regulator-max-microvolt = <3300000>;
  enable-active-high;
  regulator-always-on;
  gpio = <&gpio3 16 0>;
  vin-supply = <&vcc3v3_sys>;

  regulator-state-mem {
   regulator-off-in-suspend;
  };
 };
};

&video_phy1 {
    status = "okay";
};

&dsi1 {
 status = "okay";
 power-supply = <&vcc_mipi>;

 dsi1_panel: dsi-panel@0 {
  compatible = "rockpi,tc358762";
  reg = <0x0>;
  status = "okay";

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

   port@0 {
    reg = <0>;

    panel_in_dsi1: endpoint {
     remote-endpoint = <&dsi1_out_panel>;
    };
   };
  };
 };

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

  port@1 {
   reg = <1>;
   #address-cells = <1>;
   #size-cells = <0>;

   dsi1_out_panel: endpoint@0 {
    reg = <0>;
    remote-endpoint = <&panel_in_dsi1>;
   };
  };
 };
};

&dsi1_in_vp0 {
 status = "okay";
};

&dsi1_in_vp1 {
 status = "okay";
};

&route_dsi1 {
 status = "okay";
 connect = <&vp1_out_dsi1>;
};

&i2c3 {
 status = "okay";
 pinctrl-0 = <&i2c3m1_xfer>;

 rockpi_mcu: rockpi-mcu@45 {
  compatible = "rockpi_mcu";
  reg = <0x45>;
  status = "okay";
 };

 rockpi_ft5406: rockpi_ft5406@38 {
  compatible = "rockpi_ft5406";
  reg = <0x38>;
  status = "okay";
 };
};

Can you spot what is wrong, or what is missing?

@Stephen,

Here is the wiring and i2c3 working with i2c3m0_xfer, but does not work with i2c3m1_xfer.
Can you tell me if the pins are correct? Board v1.2

i2c3 {
  /omit-if-no-ref/
  i2c3m0_xfer: i2c3m0-xfer {
   rockchip,pins =

    <1 1 1 &pcfg_pull_none_smt>,

    <1 0 1 &pcfg_pull_none_smt>;
  };

  /omit-if-no-ref/
  i2c3m1_xfer: i2c3m1-xfer {
   rockchip,pins =

    <3 13 4 &pcfg_pull_none_smt>,

    <3 14 4 &pcfg_pull_none_smt>;
  };
 };

The guys who had success used v1.3.

Edit: fixed the dts but still not working.

&dsi1_in_vp0 {
 status = "disabled";
};

You have to change code in FT5406 about i2c handshake.

Thank you for your reply.

But i still have a blank screen on LCD and my HDMI seems to be limited to 800x480 (weird thing).

cards:
card0-DSI-1
card0-HDMI-A-1

Panel:
/sys/class/drm/card0-DSI-1/
On
enabled
800x480
connected

HDMI:
On
enabled
1920x1080
1920x1080
1920x1080
1920x1080i
1920x1080i
1920x1080i
1920x1080
1920x1080i
1680x1050
1400x1050
1600x900
1280x1024
1440x900
1280x800
1152x864
1280x720
1280x720
1280x720
1280x720
1024x768
800x600
720x576
720x480
720x480
720x480
720x480
640x480
640x480
640x480
connected

Any idea?

Update: Starting without HDMI plugged in and then plug in the HDMI confirms it is on 800x480.

[    0.443903] rockchip-drm display-subsystem: Linked as a consumer to fe070000.dsi
[    0.448751] dw-mipi-dsi fe070000.dsi: [drm:dw_mipi_dsi_bind] *ERROR* Failed to find panel or bridge: -517
[    0.455483] find panel: rockpi,tc358762
[    0.455533] bridge-tc358762-dsi fe070000.dsi.0: Looking up power-supply from device tree
[    0.455555] bridge-tc358762-dsi fe070000.dsi.0: Looking up power-supply property in node /dsi@fe070000/dsi-panel@0 failed
[    0.455581] bridge-tc358762-dsi fe070000.dsi.0: fe070000.dsi.0 supply power not found, using dummy regulator
[    0.455713] bridge-tc358762-dsi fe070000.dsi.0: Linked as a consumer to regulator.0
[    0.806947] i2c /dev entries driver
[    0.859826] input: rk805 pwrkey as /devices/platform/fdd40000.i2c/i2c-0/0-0020/rk805-pwrkey/input/input0
[    0.870396] rockpi-mcu: rockpi_mcu_probe: address = 0x45
[    0.870430] rockpi-mcu: send_cmds: 80
[    1.894563] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[    1.894604] send command failed, ret = -110
[    1.894618] rockpi-mcu: rockpi_mcu_probe: init_cmd_check failed, -110
[    1.894654] rockpi_mcu: probe of 3-0045 failed with error -110
[    1.895009] rockpi-ft5406: rockpi_ft5406_probe: address = 0x38
[    2.461214] rockpi-ft5406: rockpi_ft5406_probe: wait connected timeout
[    2.794029] rockchip-drm display-subsystem: bound fe070000.dsi (ops 0xffffff8008fdd060)
[    2.796211] dw-mipi-dsi fe070000.dsi: [drm:dw_mipi_dsi_encoder_enable] final DSI-Link bandwidth: 708 x 1 Mbps
[    2.819454] panel enable
[    2.819465] rockpi_mcu_screen_power_up
[    7.076572] [dhd] rtt_do_get_ioctl: failed to send getbuf proxd iovar (CMD ID : 1), status=-23
[   45.947034] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[   46.960322] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2

i2c3 (DSI) behaves like there is no pull-up resistor.
Can’t find any device with I2C3_SCL_M1 and I2C3_SDA_M1 and it is very slow (timeout).

gpio-112 ( |vcc_mipi ) out hi

Is any way i can turn the back-light on manually?

if you turn off the touch(i2c),Backlight will work…
You can try it.
The problem is i2c communicate.

I tried that, no backlight.
i2c state seems to be an error reading from the device.

[    0.864138] rockpi-mcu: rockpi_mcu_probe: address = 0x45
[    0.864173] rockpi-mcu: send_cmds: 80
[    1.870358] rk3x-i2c fe5c0000.i2c: timeout, ipd: 0x00, state: 2
[    1.870397] send command failed, ret = -110
[    1.870411] rockpi-mcu: rockpi_mcu_probe: init_cmd_check failed, -110
[    1.870450] rockpi_mcu: probe of 3-0045 failed with error -110

and

[    3.061610] rockchip-vop2 fe040000.vop: [drm:vop2_crtc_atomic_enable] Update mode to 1920x1080p60, type: 11 for vp0
[    3.061982] rockchip-vop2 fe040000.vop: [drm:vop2_crtc_atomic_enable] Update mode to 800x480p60, type: 16 for vp1
[    3.082542] dw-mipi-dsi fe070000.dsi: [drm:dw_mipi_dsi_encoder_enable] final DSI-Link bandwidth: 708 x 1 Mbps
[    3.105140] panel enable
[    3.105167] rockpi_mcu_screen_power_up

Would you mind sharing your dtb and complete boot log?

Hey, Have you ever solved the problem? I have the same trouble now.:cry:

No. The guy who solved this told me it is a handshake problem. I have no info about the hardware to try something else.
It is interesting Radxa does not want to help fix this, go figure.
Which version is your rock 3a?

My rock 3a is v1.31. And the touchscreen is a raspberrypi compatible 4.3 inch LCD. As @gacktex said, the backlight would work if the touch ic was disabled. But I have no idea to make touch ic work.

Your panel is different from mine. Seems your LCD is working and the touch is not.
In my case, LCD and touch are not working.
Can you post a complete boot log?

boot.log

老哥,可以详细指点下嘛?我现在也遇到了同样的问题:pray:

修改FT5406.c的I2C代码,去掉最开始的4次握手offset,直接连接后监听事件,因为你的touch主控芯片并不是FT5406,山寨的是用一个STM32模拟的FT指令,由于某种原因,他们把FT的握手指令给改了一下,如果你用FT的指令去和IC交互,最终STM32模拟芯片会钳住整个I2C总线,导致你的LCD背光也卡死了,所以屏幕不亮。。。所以只想点亮屏幕背光,屏蔽掉FT触控就可以了,因为FT的代码不会发送I2C指令,I2C总线就不会被钳住,故LCD背光的I2C指令就可以正常收发。

1 Like

Finally. The mystery is solved. Board hw version 1.2 can’t work with any LCD.
Today i received a new board with hw version 1.31 and an RPI 5" panel with FT5426 to make sure the official one was not DOA.

The official and RPI panels worked just fine including the touch.

  1. RPI 5"

  2. Radxa 5"

Board hw version 1.2 can’t work with any LCD.

This is strange. I believe we did not change anything on MIPI from 1.2 to 1.31, maybe just 1.2 board is defective?

The only difference is that v1.2 has a wifi M2 card, could be that?

PS: i will try with the wifi in the new board and check if it still works.

Update:
Tested with Wifi + RTC + HDMI + Panel on the new board, works.
As i mentioned, i2c3 m1 behaved like there was no pull-up res. Could not receive anything from the LCD.
Anyway, sending it back for analysis would cost me almost as a new board, unfortunately.

1 Like