Device tree DSI display init commands

As far I see JetPack’s U-boot does not have a graphic driver for DSI panels.
So, it is not possible to show a picture during startup without writing a special code for it.

But you have a chance to choose which display becomes a system console.

Just look at the /boot/extlinux/extlinux.conf
fbcon and console options point kernel to use appropriate display devices:

APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 ...

Hi Alex,

when I enable the DSI panel,the log is as followed.

[ 2.131268] regulator_get() failed for (tegradc.1,avdd_dsi_csi), -19
[ 2.137531] tegradc tegradc.1: dsi: avdd_dsi_csi reg get failed
[ 2.143572] tegradc tegradc.1: Error: out->type:2 out_ops->init() failed
[ 2.150111] tegradc tegradc.1: failed to initialize DC out ops

then I try to fix this issue, but it’s not work.

my patch:
tegra210-jetson-tx1-p2597-2180-a01-devkit.dts

dc@54240000 {
nvidia,dc-or-node = “/host1x/sor1”;

  • avdd_dsi_csi-supply = <en_avdd_disp_3v3>,
    };

Can you share me some suggestion, thanks

Pan Andy

Hi PanAndy,

Sorry for the delay.

Looking at your code I assume that you are trying to modify HDMI, thinking that you are working with DSI…

DSI is depended on dc@54200000, but not dc@54240000 dc port

To enable DSI you probably need some code in DT like this:

/ {
                
        host1x {
                dc@54200000 {
                        status = "okay";
                };
                dsi {
                        status = "okay";
                        nvidia,dsi-controller-vs = <DSI_VS_1>;
                        panel-a-wuxga-8-0 {
                                status = "okay";
                                compatible = "a,wuxga-8-0";
...

Thank you,
Alex

Hi Alex,

I have few questions about the DSI init sequence in device tree after I read your early discussion.
Please give me a hand to clarify them.
Thank you!!

  1. The panel manufacturer provide the Spec. mentioned a MIPI control registers table.
    Which cmd_type and cmd_id should I use for writing the reg_addr and reg_value to panel side through MIPI interface??
    Can you help to correct below example for reg_addr=0x10 and reg_value=0x01?

<TEGRA_DSI_PACKET_DSI_GENERIC_SHORT_WRITE_1_PARAMS 0x10 0x01 0x00>

  1. Do you know what’s the different between DSI_DCS_WRITE_1_PARAM and DSI_GENERIC_SHORT_WRITE_1_PARAMS??
    Below shows the cmd_type and cmd_id in kernel source.

enum {
TEGRA_DSI_PACKET_CMD,
TEGRA_DSI_DELAY_MS,
TEGRA_DSI_GPIO_SET,
TEGRA_DSI_SEND_FRAME,
TEGRA_DSI_PACKET_VIDEO_VBLANK_CMD,
};

#define DSI_GENERIC_LONG_WRITE 0x29
#define DSI_DCS_LONG_WRITE 0x39
#define DSI_GENERIC_SHORT_WRITE_1_PARAMS 0x13
#define DSI_GENERIC_SHORT_WRITE_2_PARAMS 0x23
#define DSI_DCS_WRITE_0_PARAM 0x05
#define DSI_DCS_WRITE_1_PARAM 0x15

  1. Below show the example you provided in early discussion.
    Does it mean you want to write reg_addr=0x03, reg_val=0x40 for command <0x0 0x15 0x03 0x40 0x0>??
    Which Spec. mentioned the definition of DSI_DCS_EXIT_SLEEP_MODE and DSI_DCS_SET_DISPLAY_ON?
    Or it is just a definition of NVidia?

nvidia,dsi-init-cmd = <1 250>,
<0x0 0x15 0xfe 0x08 0x0>,
<0x0 0x15 0x03 0x40 0x0>,
<0x0 0x15 0x07 0x1a 0x0>,
<0x0 0x15 0xfe 0x00 0x0>,
<0x0 0x15 0x51 0xff 0x0>,
<TEGRA_DSI_DELAY_MS 20>,
<TEGRA_DSI_PACKET_CMD DSI_DCS_WRITE_0_PARAM DSI_DCS_EXIT_SLEEP_MODE 0x0 0x0>,
<TEGRA_DSI_DELAY_MS 200>,
<TEGRA_DSI_SEND_FRAME 1>,
<TEGRA_DSI_DELAY_MS 20>,
<TEGRA_DSI_PACKET_CMD DSI_DCS_WRITE_0_PARAM DSI_DCS_SET_DISPLAY_ON 0x0 0x0>,
<TEGRA_DSI_DELAY_MS 120>;

  1. How do I configure packet sequence in device tree?
    Does the sequence should mention in panel Spec.?
    nvidia,dsi-pkt-seq =
    <CMD_VS LEN_SHORT PKT_LP LINE_STOP>,
    <CMD_HS LEN_SHORT PKT_LP LINE_STOP>,
    <CMD_HS LEN_SHORT PKT_LP LINE_STOP>,
    <CMD_HS LEN_SHORT CMD_RGB_24BPP LEN_HACTIVE3 CMD_BLNK LEN_HFP LINE_STOP>,
    <CMD_HS LEN_SHORT PKT_LP LINE_STOP>,
    <CMD_HS LEN_SHORT CMD_RGB_24BPP LEN_HACTIVE3 CMD_BLNK LEN_HFP LINE_STOP>;

Thanks,
Luke