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.

[参考译文] AM62A7:热启用 AM62A7 上的 DPI 显示

Guru**** 2561720 points
Other Parts Discussed in Thread: SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1571434/am62a7-hot-enable-dpi-display-on-am62a7

器件型号:AM62A7
主题:SysConfig 中讨论的其他器件

工具/软件:

尊敬的 TI 专家:

此后、我修改了器件树并为开发板编译了应用。

我登录系统并运行 kmsprint、

但没有输出任何内容。

以下是我 DTS 文件中关于按照建议的测试代码显示、的代码

	panel {
			compatible = "newhaven,nhd-4.3-480272ef-atxl";

			port {
					panel_in: endpoint {
							remote-endpoint = <&dpi1_out>;
					};
			};
	};
	
	
&dss_ports {
	/* VP2: DPI Output */
	hdmi0_dss: port@1 {
		reg = <1>;

		dpi1_out: endpoint {

			remote-endpoint = <&panel_in>;
		};
	};
};

我注意到了一些错误。

[ 0.440458] /bus@f0000/dss@30200000: Fixed dependency cycle(s) with /panel
[ 0.447554] /panel: Fixed dependency cycle(s) with /bus@f0000/dss@30200000

[ 0.821931] panel-simple panel: supply power not found, using dummy regulator

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、
    请分享您的完整 DTS、并尝试运行 kmstest 以检查您是否在面板上看到任何内容。
    此外、“热启用 DPI“是什么意思?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../8308.k3_2D00_am62a7_2D00_sk.txte2e.ti.com/.../2022.panel_2D00_simple.c

    这是我使用  kmstest 时的日志。 无法显示视频

    Root@am62axx-EVM:/opt/edgeai-gst-apps kmstest
    抛出一个'[71.840276] kauditd_printk_skb: 12 个回调被抑制后调用终止
    标准::runtime_error'
    What():找不到 DRM 卡
    [71.840288]审计:type=1701 审计 (1728497286.985:49):auid=4294967295 uid=0 gid=0 ses=4294967295 pid=1501 comm=“kmstest" exe="/usr/bin/kmstest.kms“ exe="/usr/bin/kmstest.kms ++"“ ++"<xmt-block0>“ sig =6 res=1
    [71.869003]审计:type=1334 审计 (1728497287.017:50):prog-id=32 op=load
    [71.875855]审计:type=1334 审计 (1728497287.021:51):prog-id=33 op=load
    [71.882681] audit: type=1334 audit(1728497287.029:52): prog-id=34 op=load
    已中止(核心已转储)
    root@am62axx-evm:/opt/edgeai-gst-apps #[ 72.165069] audit:type=1334 audit (1728497287.313:53):prog-id=34 op=unload
    [72.172071]审计:type=1334 审计 (1728497287.313:54):prog-id=33 op=unload
    [72.179041]审计:type=1334 审计 (1728497287.313:55):prog-id=32 op=unload



  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    下面是 soc dpi 输出的硬件:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、
    请分享您的 git diff 和完整的 dmesg 日志。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Root@am62axx-EVM:/opt/edgeai-gst-apps kmstest
    连接器 0/@40:DPI-1
    CRTC 0/@38:1280x720@79.24 76.782 1280/26/8/8/? 720/8/2/3/? 79 (79.24) 0x0 0x48
    平面 0/@31:0、0-1280x720
    FB 49 1280x720-XR24
    按 ENTER 键退出

    diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
    old mode 100644
    new mode 100755
    index 7f13934f98c2..ac6297b56f52
    --- a/drivers/gpu/drm/panel/panel-simple.c
    +++ b/drivers/gpu/drm/panel/panel-simple.c
    @@ -589,7 +589,6 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc)
    if (!panel->ddc)
    return -EPROBE_DEFER;
    }
    -
    if (desc == &panel_dpi) {
    /* Handle the generic panel-dpi binding */
    err = panel_dpi_probe(dev, panel);
    @@ -600,8 +599,9 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc)
    if (!of_get_display_timing(dev->of_node, "panel-timing", &dt))
    panel_simple_parse_panel_timing_node(dev, panel, &dt);
    }
    -
    +
    connector_type = desc->connector_type;
    +
    /* Catch common mistakes for panels. */
    switch (connector_type) {
    case 0:
    @@ -3083,33 +3083,47 @@ static const struct panel_desc netron_dy_e231732 = {
    .bus_format = MEDIA_BUS_FMT_RGB666_1X18,
    };
    
    -static const struct drm_display_mode newhaven_nhd_43_480272ef_atxl_mode = {
    - .clock = 9000,
    - .hdisplay = 480,
    - .hsync_start = 480 + 2,
    - .hsync_end = 480 + 2 + 41,
    - .htotal = 480 + 2 + 41 + 2,
    - .vdisplay = 272,
    - .vsync_start = 272 + 2,
    - .vsync_end = 272 + 2 + 10,
    - .vtotal = 272 + 2 + 10 + 2,
    - .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
    +// static const struct drm_display_mode boe_av069hdt_a80_2dp0_mode = {
    +// .clock = 9000,
    +// .hdisplay = 480,
    +// .hsync_start = 480 + 2,
    +// .hsync_end = 480 + 2 + 41,
    +// .htotal = 480 + 2 + 41 + 2,
    +// .vdisplay = 272,
    +// .vsync_start = 272 + 2,
    +// .vsync_end = 272 + 2 + 10,
    +// .vtotal = 272 + 2 + 10 + 2,
    +// .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
    +// };
    +
    +static const struct drm_display_mode boe_av069hdt_a80_2dp0_mode = {
    + .clock = 76782,
    + .hdisplay = 1280,
    + .hsync_start = 1280 + 26,
    + .hsync_end = 1280 + 26 + 8,
    + .htotal = 1322,
    + .vdisplay = 720,
    + .vsync_start = 720 + 8,
    + .vsync_end = 720 + 8 + 2,
    + .vtotal = 733,
    + .flags = 0,
    };
    
    -static const struct panel_desc newhaven_nhd_43_480272ef_atxl = {
    - .modes = &newhaven_nhd_43_480272ef_atxl_mode,
    +static const struct panel_desc boe_av069hdt_a80_2dp0 = {
    + .modes = &boe_av069hdt_a80_2dp0_mode,
    .num_modes = 1,
    .bpc = 8,
    .size = {
    - .width = 95,
    - .height = 54,
    + .width = 154,
    + .height = 85,
    },
    - .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
    - .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE |
    - DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE,
    + .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
    + .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE | DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE,
    .connector_type = DRM_MODE_CONNECTOR_DPI,
    };
    
    +
    +
    static const struct display_timing nlt_nl192108ac18_02d_timing = {
    .pixelclock = { 130000000, 148350000, 163000000 },
    .hactive = { 1920, 1920, 1920 },
    @@ -4504,8 +4518,8 @@ static const struct of_device_id platform_of_match[] = {
    .compatible = "netron-dy,e231732",
    .data = &netron_dy_e231732,
    }, {
    - .compatible = "newhaven,nhd-4.3-480272ef-atxl",
    - .data = &newhaven_nhd_43_480272ef_atxl,
    + .compatible = "boe,AV069HDT-A80-2DP0",
    + .data = &boe_av069hdt_a80_2dp0,
    }, {
    .compatible = "nlt,nl192108ac18-02d",
    .data = &nlt_nl192108ac18_02d,
    
    
    
    
    
    
    
    diff --git a/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts b/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
    old mode 100644
    new mode 100755
    index 1da8aa7f2e29..e47ad8320ef0
    --- a/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
    +++ b/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
    @@ -19,7 +19,7 @@ / {
    aliases {
    serial0 = &wkup_uart0;
    serial2 = &main_uart0;
    - serial3 = &main_uart1;
    + serial5 = &main_uart5;
    mmc0 = &sdhci0;
    mmc1 = &sdhci1;
    ethernet0 = &cpsw_port1;
    @@ -30,6 +30,7 @@ aliases {
    
    chosen {
    stdout-path = "serial2:115200n8";
    + bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 loglevel=4 root=/dev/mmcblk1p2 rw rootfstype=ext4 rootwait";
    };
    
    memory@80000000 {
    @@ -214,52 +215,17 @@ led-0 {
    };
    };
    
    - tlv320_mclk: clk-0 {
    - #clock-cells = <0>;
    - compatible = "fixed-clock";
    - clock-frequency = <12288000>;
    - };
    
    - hdmi0: connector-hdmi {
    - compatible = "hdmi-connector";
    - label = "hdmi";
    - type = "a";
    + panel {
    + compatible = "boe,AV069HDT-A80-2DP0";
    
    - port {
    - hdmi_connector_in: endpoint {
    - remote-endpoint = <&sii9022_out>;
    + port {
    + panel_in: endpoint {
    + remote-endpoint = <&dpi1_out>;
    + };
    };
    - };
    - };
    -
    - codec_audio: sound {
    - compatible = "simple-audio-card";
    - simple-audio-card,name = "AM62Ax-SKEVM";
    - simple-audio-card,widgets =
    - "Headphone", "Headphone Jack",
    - "Line", "Line In",
    - "Microphone", "Microphone Jack";
    - simple-audio-card,routing =
    - "Headphone Jack", "HPLOUT",
    - "Headphone Jack", "HPROUT",
    - "LINE1L", "Line In",
    - "LINE1R", "Line In",
    - "MIC3R", "Microphone Jack",
    - "Microphone Jack", "Mic Bias";
    - simple-audio-card,format = "dsp_b";
    - simple-audio-card,bitclock-master = <&sound_master>;
    - simple-audio-card,frame-master = <&sound_master>;
    - simple-audio-card,bitclock-inversion;
    -
    - simple-audio-card,cpu {
    - sound-dai = <&mcasp1>;
    - };
    -
    - sound_master: simple-audio-card,codec {
    - sound-dai = <&tlv320aic3106>;
    - clocks = <&tlv320_mclk>;
    - };
    };
    +
    };
    
    &mcu_pmx0 {
    @@ -330,6 +296,13 @@ AM62AX_IOPAD(0x0198, PIN_OUTPUT, 2) /* (B19) MCASP0_AXR2.UART1_RTSn */
    >;
    };
    
    + main_uart5_pins_default: main-uart5-default-pins {
    + pinctrl-single,pins = <
    + AM62AX_IOPAD(0x01d8, PIN_INPUT, 1) /* (B17) MCAN0_TX.UART5_RXD */
    + AM62AX_IOPAD(0x01dc, PIN_OUTPUT, 1) /* (C18) MCAN0_RX.UART5_TXD */
    + >;
    + };
    +
    main_i2c0_pins_default: main-i2c0-default-pins {
    pinctrl-single,pins = <
    AM62AX_IOPAD(0x1e0, PIN_INPUT_PULLUP, 0) /* (B16) I2C0_SCL */
    @@ -605,68 +578,6 @@ exp1: gpio@22 {
    "PD_I2C_IRQ", "IO_EXP_TEST_LED";
    };
    
    - tlv320aic3106: audio-codec@1b {
    - #sound-dai-cells = <0>;
    - compatible = "ti,tlv320aic3106";
    - reg = <0x1b>;
    - ai3x-micbias-vg = <1>; /* 2.0V */
    -
    - /* Regulators */
    - AVDD-supply = <&vcc_3v3_sys>;
    - IOVDD-supply = <&vcc_3v3_sys>;
    - DRVDD-supply = <&vcc_3v3_sys>;
    - DVDD-supply = <&buck5>;
    - };
    -
    - exp2: gpio@23 {
    - compatible = "ti,tca6424";
    - reg = <0x23>;
    - gpio-controller;
    - #gpio-cells = <2>;
    -
    - gpio-line-names = "", "",
    - "", "",
    - "", "",
    - "", "",
    - "WL_LT_EN", "CSI_RSTz",
    - "", "",
    - "", "",
    - "", "",
    - "SPI0_FET_SEL", "SPI0_FET_OE",
    - "RGMII2_BRD_CONN_DET", "CSI_SEL2",
    - "CSI_EN", "AUTO_100M_1000M_CONFIG",
    - "CSI_VLDO_SEL", "SoC_WLAN_SDIO_RST";
    - };
    -
    - sii9022: bridge-hdmi@3b {
    - compatible = "sil,sii9022";
    - reg = <0x3b>;
    - interrupt-parent = <&exp1>;
    - interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
    - #sound-dai-cells = <0>;
    - sil,i2s-data-lanes = < 0 >;
    -
    - ports {
    - #address-cells = <1>;
    - #size-cells = <0>;
    -
    - port@0 {
    - reg = <0>;
    -
    - sii9022_in: endpoint {
    - remote-endpoint = <&dpi1_out>;
    - };
    - };
    -
    - port@1 {
    - reg = <1>;
    -
    - sii9022_out: endpoint {
    - remote-endpoint = <&hdmi_connector_in>;
    - };
    - };
    - };
    - };
    };
    
    &main_i2c2 {
    @@ -723,6 +634,14 @@ &main_uart1 {
    status = "reserved";
    };
    
    +&main_uart5 {
    + pinctrl-names = "default";
    + pinctrl-0 = <&main_uart5_pins_default>;
    + status = "okay";
    +};
    +
    +
    +
    /* Main Timer2 is used by C7x DSP */
    &main_timer2 {
    status = "reserved";
    @@ -819,7 +738,8 @@ hdmi0_dss: port@1 {
    reg = <1>;
    
    dpi1_out: endpoint {
    - remote-endpoint = <&sii9022_in>;
    +
    + remote-endpoint = <&panel_in>;
    };
    };
    };
    @@ -948,3 +868,66 @@ partition@7fc0000 {
    };
    };
    };
    +
    +
    +
    +
    +&{/} {
    + clk_imx219_fixed: imx219-xclk {
    + compatible = "fixed-clock";
    + #clock-cells = <0>;
    + clock-frequency = <25000000>;
    + };
    +};
    +
    +
    +&main_i2c2 {
    + #address-cells = <1>;
    + #size-cells = <0>;
    + status = "okay";
    +
    + camera@36 {
    + compatible = "sony,imx219";
    + reg = <0x36>;
    +
    + clocks = <&clk_imx219_fixed>;
    + clock-names = "xclk";
    + reset-gpios = <&exp1 13 GPIO_ACTIVE_HIGH>;
    + port {
    + csi2_cam0: endpoint {
    + remote-endpoint = <&csi2rx0_in_sensor>;
    + link-frequencies = /bits/ 64 <800000000>;
    + clock-lanes = <0>;
    + data-lanes = <1 2 3 4>;
    + };
    + };
    + };
    +};
    +
    +&cdns_csi2rx0 {
    + ports {
    + #address-cells = <1>;
    + #size-cells = <0>;
    +
    + csi0_port0: port@0 {
    + reg = <0>;
    + status = "okay";
    +
    + csi2rx0_in_sensor: endpoint {
    + remote-endpoint = <&csi2_cam0>;
    + clock-lanes = <0>;
    + data-lanes = <1 2 3 4>;
    + link-frequencies = /bits/ 64 <800000000>;
    + };
    + };
    + };
    +};
    +
    +&ti_csi2rx0 {
    + status = "okay";
    +};
    +
    +
    +&dphy0 {
    + status = "okay";
    +};

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    看起来您的 kmstest 现在正常工作了吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它正在工作。 但屏幕中没有视频输出。
    我不知道问题是什么以及如何检查问题


    如何检查 屏幕是否与 DPI 输出匹配或其他问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以进行探测以检查 DPI 线路上是否有信号。 情况应该是这样。
    完成上述操作后、您可能需要交叉检查面板时序参数以及 bus_format 和 bus_flags(如果它们与您的面板兼容)。 最可能的问题是您的面板与您的驱动程序/DTS 中的配置不兼容。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。



    我与硬件确认 在启动期间未设置引脚 GPMC0_BE1n/M18。  



    已检查 SysConfig。 我认为没有生成下面的寄存器值。 您能不能告诉我在哪里 可以获得 pinctrl-single 引脚值? 非常感谢
    usr_led_pins_default:usr-led-default-pins {
    pinctrl-single、pins =<
    AM62AX_IOPAD (0x244、PIN_OUTPUT、7)/*(D18) MMC1_SDWP.GPIO1_49 */
    >;
    };


    您能帮我解决这个问题吗? 非常感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不确定具体含义、但 k3-am62a7-sk.dts 中已经定义了 AM62A 上 DPI 的 pinmux:

    &main_pmx0 {
    	main_dss0_pins_default: main-dss0-default-pins {
    		pinctrl-single,pins = <
    			AM62AX_IOPAD(0x100, PIN_OUTPUT, 0) /* (V17) VOUT0_VSYNC */
    			AM62AX_IOPAD(0x0f8, PIN_OUTPUT, 0) /* (T18) VOUT0_HSYNC */
    			AM62AX_IOPAD(0x104, PIN_OUTPUT, 0) /* (AA22) VOUT0_PCLK */
    			AM62AX_IOPAD(0x0fc, PIN_OUTPUT, 0) /* (U17) VOUT0_DE */
    			AM62AX_IOPAD(0x0b8, PIN_OUTPUT, 0) /* (U22) VOUT0_DATA0 */
    			AM62AX_IOPAD(0x0bc, PIN_OUTPUT, 0) /* (U21) VOUT0_DATA1 */
    			AM62AX_IOPAD(0x0c0, PIN_OUTPUT, 0) /* (U20) VOUT0_DATA2 */
    			AM62AX_IOPAD(0x0c4, PIN_OUTPUT, 0) /* (U19) VOUT0_DATA3 */
    			AM62AX_IOPAD(0x0c8, PIN_OUTPUT, 0) /* (T19) VOUT0_DATA4 */
    			AM62AX_IOPAD(0x0cc, PIN_OUTPUT, 0) /* (U18) VOUT0_DATA5 */
    			AM62AX_IOPAD(0x0d0, PIN_OUTPUT, 0) /* (V22) VOUT0_DATA6 */
    			AM62AX_IOPAD(0x0d4, PIN_OUTPUT, 0) /* (V21) VOUT0_DATA7 */
    			AM62AX_IOPAD(0x0d8, PIN_OUTPUT, 0) /* (V19) VOUT0_DATA8 */
    			AM62AX_IOPAD(0x0dc, PIN_OUTPUT, 0) /* (V18) VOUT0_DATA9 */
    			AM62AX_IOPAD(0x0e0, PIN_OUTPUT, 0) /* (W22) VOUT0_DATA10 */
    			AM62AX_IOPAD(0x0e4, PIN_OUTPUT, 0) /* (W21) VOUT0_DATA11 */
    			AM62AX_IOPAD(0x0e8, PIN_OUTPUT, 0) /* (W20) VOUT0_DATA12 */
    			AM62AX_IOPAD(0x0ec, PIN_OUTPUT, 0) /* (W19) VOUT0_DATA13 */
    			AM62AX_IOPAD(0x0f0, PIN_OUTPUT, 0) /* (Y21) VOUT0_DATA14 */
    			AM62AX_IOPAD(0x0f4, PIN_OUTPUT, 0) /* (Y22) VOUT0_DATA15 */
    			AM62AX_IOPAD(0x05c, PIN_OUTPUT, 1) /* (P22) GPMC0_AD8.VOUT0_DATA16 */
    			AM62AX_IOPAD(0x060, PIN_OUTPUT, 1) /* (R19) GPMC0_AD9.VOUT0_DATA17 */
    			AM62AX_IOPAD(0x064, PIN_OUTPUT, 1) /* (R20) GPMC0_AD10.VOUT0_DATA18 */
    			AM62AX_IOPAD(0x068, PIN_OUTPUT, 1) /* (R22) GPMC0_AD11.VOUT0_DATA19 */
    			AM62AX_IOPAD(0x06c, PIN_OUTPUT, 1) /* (T22) GPMC0_AD12.VOUT0_DATA20 */
    			AM62AX_IOPAD(0x070, PIN_OUTPUT, 1) /* (R21) GPMC0_AD13.VOUT0_DATA21 */
    			AM62AX_IOPAD(0x074, PIN_OUTPUT, 1) /* (T20) GPMC0_AD14.VOUT0_DATA22 */
    			AM62AX_IOPAD(0x078, PIN_OUTPUT, 1) /* (T21) GPMC0_AD15.VOUT0_DATA23 */
    		>;
    	};
    	:
    	:
    	: