Other Parts Discussed in Thread: SN65DSI86
您好!
ICH 为 Raspberry PI CM4创建了一个载板、其中 SN65DSI86用作 DSI (4通道)到 EDP (2通道)的桥接器、用于驱动1920x1080显示屏。
背光照明工作正常、I2C 通信看起来正常、即使是链路训练也正常。 但显示屏 仅保持黑色。
显示 模型是从在 HDMI 适配器板上运行的显示屏中获取的(来自 EDID 和 xrandr --verbose)。
为了精确地找出问题、我 在 Linux 内核的 SN65DSI86驱动程序中添加了大量的调试线路。
我已经发现、在没有外部 REFCLK 的情况下、CM4无法在运行 DSI86所需的 DSI 上生成所需的时钟(CM4只有一个整数分频器、用于生成 DSI 时钟频率)。
因此、我轻轻地上拉参考时钟引脚并连接了一个外部时钟振荡器芯片以进行测试。
我在 Linux 驱动程序覆盖区中添加了 REFCLK、驱动程序日志指示设置了参考时钟寄存器并 检测到参考时钟信号。 现在还可以链接培训工作。
之后、我尝试 通过设置寄存器0x3C 来显示颜色测试模式、但结果很不幸。 显示屏仍然保持不动:-(
有什么想法、问题可能出在哪?
生成 REFCLK 信号以进行测试的芯 片是 Microchip 的 DSC1001DE2-027.0000。 这是否有效?
(遗憾的是、DSN86数据表对 refclock 信号应如何显示的细节有点害羞)
我知道该参考设计在 CDCEL913PW 芯片周围使用了相对复杂的设置。 遗憾的是、设置起来太复杂、无法在没有 PCB 的情况下进行测试(至少对我而言)。
所以我希望 DSC1001DE2-027.0000也能正常工作...
可以帮帮我吗? 未显示测试模式的原因可能是什么?
此致、
Thomas
PS1:我还尝试禁用 ASSR (TEST2为高电平并设置适当的寄存器)
PS2:作为参考、下面是我在引导时的当前内核日志:
[4.998385] vc4_DSI fe700000。DSI:vc4_DSI_bind...
[4.998605] vc4_DSI fe700000。DSI:vc4_DSI_BIND => PLL_phy_clock:速率:11718751
[4.998876] vc4_DSI fe700000.dSI:vc4_DSI_init_phy_clocks,parent_name:plld_dsi1...
[4.999719] vc4_DSI fe700000。DSI:vc4_DSI_bind:连接桥接器...
[4.999738] ti_sn65dsi86 10-002c:TI_SN_Bridge_Attach:开始...
[4.999775] vc4_DSI fe700000。DSI:MIPI_DSI_DEVICE_REGISTER_FULL:通道0
[4.999790] mipi-DSI (空):MIPI_DSI_DEVICE_ALLOC...
[4.999950] vc4_DSI fe700000。DSI:MIPI_DSI_DEVICE_REGISTER_FULL、DSI 通道0、名称:TI_SN_BRIDGE
[4.999965] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_Attach:将 DSI->通道设置为4
[4.999985 ] ti_sn65dsi86 10-002c:TI_SN_Bridge_RESUME:开始...
[5.009550] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_RESUME:使用1调用 gpioD_SET_VALUE (EN)
[5.021785] ti_sn65dsi86 10-002c:TI_SN_Bridge_RESUME:完成!
[5.022313] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_Attach:CLK_src 为:0 (0:= REFCLK、1:DSI-PHY)
[5.022333] vc4_DSI fe700000。DSI:vc4_DSI_HOST_Attach,通道:0,通道:4……
[5.022346] ti_sn65dsi86 10-002c:TI_SN_Bridge_Attach:完成! 已附加 DSI!
[5.022422] vc4-DRM GPU:Bound fe700000。DSI (ops vc4_DSI_ops [vc4])
[5.022781] vc4-DRM GPU:Bound fe004000.TxP (ops vc4_TxP_ops [vc4])
[5.023320] vc4-DRM GPU:Bound fe206000.PIXELVALVE (ops vc4_CRTC_ops [vc4])
[5.023605] vc4-DRM GPU:Bound fe207000.PIXELVALVE (ops vc4_CRTC_ops [vc4])
[5.023856] vc4-DRM GPU:Bound fe20a000.PIXELVALVE (ops vc4_CRTC_ops [vc4])
[5.024055] vc4-DRM GPU:Bound fe216000.pixelpulve (ops vc4_CRTC_ops [vc4])
[5.024305] vc4-DRM GPU:bound fec12000.pixelpulve (ops vc4_CRTC_ops [vc4])
[5.025319] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_SUSPEND:以0开始并调用 gpioD_set_value (EN)
[5.025353] ti_sn65dsi86 10-002c:TI_SN_Bridge_SUSPEND:完成!
[5.047533] [DRM]为次要0上的 GPU 初始化了 vc4 0.0.0.0 20140616
[5.053470] vc4_DSI fe700000。DSI:vc4_DSI_ENCODER_MODE_FIXUP、输入:parent_rate:3000000091、DSI->分频器:6、mode->时钟:148500
[5.053489] vc4_DSI fe700000。DSI:vc4_DSI_ENCODER_MODE_FIXUP => PIXEL_CLOCK _Hz:148500000、PLL_CLOCK:891000000 =>分频器:3.
[5.053503] vc4_DSI fe700000.dSI:vc4_DSI_ENCODER_MODE_FIXUP => PIXEL_CLOCK_Hz:16666771,MODE->htotal:2200,aditioned_mode->htotal:2469 => adensed_mode->clock:166666
[5.053753] vc4_DSI fe700000。DSI:vc4_DSI_ENCODER_ENABLE……
[5.053785] vc4_DSI fe700000。DSI:vc4_DSI_ENCODER_ENABLE:PHY_CLOCK:1000002000 (PIXEL_CLOCK _Hz:1666000、分频器:6)
[5.054894] vc4_DSI fe700000。DSI:vc4_DSI_ENCODER_ENABLE:HS_CLOCK: 1000000031 (PLL_phy_clock 的)
[5.054984] ti_sn65dsi86 10-002c:TI_SN_Bridge_pre_enable:开始...
[5.055000] ti_sn65dsi86 10-002c:TI_SN_Bridge_RESUME:开始...
[5.055106] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_RESUME:使用1调用 gpioD_SET_VALUE (EN)
[5.067317] ti_sn65dsi86 10-002c:TI_SN_Bridge_RESUME:完成!
[5.067347] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_REFCLK_freq =>使用 REFCLK LUT
[5.067370] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_REFCLK_freq:REFCLK_RATE:27000000、REFCLK_LUT[i]、I:3、找到:1.
[5.067382] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_REFCLK_freq:设置 REFCLK_RATE 将寄存器0x0a 设置为0x06 (带位掩码14)
[5.092015] ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:reg 95的状态(GPIO 配置):0
[5.092493] ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:reg 94的状态(当前 GPIO 值):176
[5.125374] ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:pddata->DP_Lanes:2 (最大值:2)
[5.125395] ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:设置 DSI 通道: 将寄存器0x10设置为0x00 (使用位掩码24)
[5.126217] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:通道分配(默认为0xe4):将寄存器0x59设置为0xe4
[5.126578] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:增强型组帧和 ASSR: 将寄存器0x5a 设置为0x05
[5.127387] ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:ASSR 开/关状态(bit01):1 (0:标准、1:ASSR)
[5.127403] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:设置通道多项式: 将寄存器0x5a 设置为0x00 (使用位掩码0xf0)
[5.127869] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_DSI_RATE:bit_RATE:3984、clk_freq_MHz:498
[5.128219] ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:启用 ASSR (驱动程序方式)
[5.131832] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:设置 DP 数据格式:将寄存器0x5b 设置为0x00 (0:24bpp、1:18bpp)
[5.132308] ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:设置 DP 通道数: 将寄存器0x93设置为0x20 (val:32)(2个通道)
[5.141899] ti_sn65dsi86 10-002c:TI_SN_Bridge_Read_VALIDE_RATEs:接收到的 EDP 版本字节:0x2
[5.150891] ti_sn65dsi86 10-002c:TI_SN_Bridge_calc_min_DP_RAM_idx:时钟:16666666kHz、bit_RAM_kHz:3999984kHz、DP_RAM_MHz:2500MHz => I:4 (DP_DATA_RATE:2700)
[5.150910] ti_sn65dsi86 10-002c:TI_SN_LINK_training:DP 速率: 将寄存器0x94设置为0x80 (DP_RATE _idx:4)
[5.151707] ti_sn65dsi86 10-002c:TI_SN_LINK_training:启用 PPL: 将寄存器0x0d 设置为0x01
[5.152493] ti_sn65dsi86 10-002c:TI_SN_LINK_training:Cursor2 0dB: 将寄存器0x95设置为0x00
[5.152838] ti_sn65dsi86 10-002c:TI_SN_LINK_training:开始尝试:0...
[5.153613] ti_sn65dsi86 10-002c:TI_SN_LINK_training 成功
[5.153624] ti_sn65dsi86 10-002c:状态寄存器:
[5.154081] ti_sn65dsi86 10-002c:状态寄存器[0xf0]= 0x00000000
[5.154536] ti_sn65dsi86 10-002c:状态寄存器[0xF1]= 0x00000002
[5.15498] ti_sn65dsi86 10-002c:状态寄存器[0xF2]= 0x00000000
[5.155453] ti_sn65dsi86 10-002c:状态寄存器[0xF3]= 0x00000000
[5.155903] ti_sn65dsi86 10-002c:状态寄存器[0xf4]= 0x00000001
[5.156353] ti_sn65dsi86 10-002c:状态寄存器[0xf5]= 0x00000000
[5.156812] ti_sn65dsi86 10-002c:状态寄存器[0xf6]= 0x00000000
[5.157264] ti_sn65dsi86 10-002c:状态寄存器[0xf7]= 0x00000000
[5.157715] ti_sn65dsi86 10-002c:状态寄存器[0xf8]= 0x00000000
[5.157731] ti_sn65dsi86 10-002c:TI_SN_Bridge_SET_VIDEO 时序:时钟:166666、hdisplay:1920、vdisplay:1080、HSYNC_START:2277、HSYNC_END:2321、 VSYNC_START:1082、VSYNC_END:1087
[5.159739] ti_sn65dsi86 10-002c:TI_SN_Bridge_SET_VIDEO_TIming: HSYNC_PULSE_WIDTH =>(val: 44) reg 2c => 2c 0
[5.160443] ti_sn65dsi86 10-002c:TI_SN_Bridge_SET_VIDEO_时序:vSYNC_PULSE_WIDTH =>(val: 5) reg 30 => 5 0
[5.160807] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_VIDEO_TIVESS_TIMing: Horizontale_BACT_STACH= >(val:148) reg 34 => 0x94
[5.161170] ti_sn65dsi86 10-002c:TI_SN_Bridge_SET_VIDEO_时序:竖直_后_沿 =>(val: 38) reg 36 => 0x26
[5.161524] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_VIDEO_TIVESS_TIRING_RACY-PORTing=>(val:101) reg 38 => 0x65
[5.161877] ti_sn65dsi86 10-002c:TI_SN_Bridge_Set_VIDEO_Timing: Vertical _front_Porch =>(val: 2) reg 3a => 0x2
[5.172427] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_TEST_pattern_ENABLE:启用测试模式:0、En 位:16
[5.173225] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:在启用前检查 REFCLK:寄存器0x0a 具有值134 (REFCLK 位:3、rfclk src:0)
[5.173237] ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:现在启用视频流、使用0x0d (15位掩码)更新寄存器0x5a
[5.174005] ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:现在启用面板...
[5.174017] ti_sn65dsi86 10-002c:状态寄存器:
[5.174470] ti_sn65dsi86 10-002c:状态寄存器[0xf0]= 0x00000000
[5.174928] ti_sn65dsi86 10-002c:状态寄存器[0xF1]= 0x00000002
[5.175379] ti_sn65dsi86 10-002c:状态寄存器[0xF2]= 0x00000000
[5.175824] ti_sn65dsi86 10-002c:状态寄存器[0xF3]= 0x00000000
[5.176271] ti_sn65dsi86 10-002c:状态寄存器[0xf4]= 0x00000001
[5.176720] ti_sn65dsi86 10-002c:状态寄存器[0xf5]= 0x00000000
[5.177165] ti_sn65dsi86 10-002c:状态寄存器[0xf6]= 0x00000000
[5.177610] ti_sn65dsi86 10-002c:状态寄存器[0xf7]= 0x00000000
[5.178057] ti_sn65dsi86 10-002c:状态寄存器[0xf8]= 0x00000000
[5.178507] ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:测试模式检查:reg 0x3c 的值为16
[5.178517] ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:全部完成!