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.

PROCESSOR-SDK-AM62X: sk-am62-lp LVDS Tianma display interfacing

Part Number: PROCESSOR-SDK-AM62X

Tool/software: Linux

Hello experts, 

i am newly started to work with texas board am62x-lp. i just bring-up the am62x-lp custom board. now i want to interface the tianma display that is connected to my board with 40 pin connector of LVDS. also one thing i notice that when i connect lcd with board or disconnect the board dmesg does not detect any changes. is there is a way to detect it like in hdmi hotplugin detection? 
how to start interface it please guide me.


refer below attachment of tianma display 
part number : YX-TFTRFQ-ZX-20230313001
display : 7’TFT with CTP TFT-LCD Module
YX-TFTRFQ-ZX-20230313001 pre-Spec V1.0 (1).pdf

  • Hi,
    LVDS and DPI by nature do not wait for any handshaking with display panel, if you start video streaming, they will start streaming signal even if display is not connected (hence you can probe these signals if you want to). But in case of HDMI, there is a bridge driver that first reads EDID from the display via I2C, configures the timing parameters and then enables video streaming.

  • thank you for your response. how to start with LVDS display should i need to chnage the device tree? which is in the following logs to change in pmux0  

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1128751/am625-oldi-driver-or-dts-example/4198123#4198123

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1463465/am625-single-channel-lvds-oldi-panel-display-change-in-sdk-10-1

    my bootup logs
    5140.boot_log.txt

    my printenv

    U-Boot 2024.04-dirty (Jul 01 2025 - 16:55:30 +0000)                           
                                                                                  
    SoC:   AM62X SR1.0 HS-FS                                                      
    Model: Texas Instruments AM62x LP SK                                          
    EEPROM not available at 0x50, trying to read at 0x51                          
    Reading on-board EEPROM at 0x51 failed -121                                   
    DRAM:  2 GiB                                                                  
    Core:  83 devices, 32 uclasses, devicetree: separate                          
    NAND:  0 MiB                                                                  
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1                                         
    Loading Environment from nowhere... OK                                        
    In:    serial                                                                 
    Out:   serial                                                                 
    Err:   serial                                                                 
    EEPROM not available at 0x50, trying to read at 0x51                          
    Reading on-board EEPROM at 0x51 failed -121                                   
    Net:   eth0: ethernet@8000000port@1                                           
    Hit any key to stop autoboot:  0                                              
    =>                                                                            
    => printenv                                                                   
    addr_fit=0x90000000                                                           
    arch=arm                                                                      
    args_all=setenv optargs ${optargs} earlycon=ns16550a,mmio32,0x02800000 ${mtdp}
    args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PART}
    args_ospi_nand=setenv bootargs console=${console} ${optargs} ubi.mtd=${ospi_ns
    baudrate=115200                                                               
    board=am62x                                                                   
    board_name=am62x_skevm                                                        
    board_rev=unknown                                                             
    board_serial=unknown                                                          
    board_software_revision=unknown                                               
    boot=mmc                                                                      
    boot_fdt=try                                                                  
    boot_fit=0                                                                    
    boot_rprocs=if test ${dorprocboot} -eq 1 && test ${boot} = mmc; then rproc in;
    boot_rprocs_mmc=env set rproc_id; env set rproc_fw; env set secure_suffix; ife
    boot_targets=mmc0 mmc1 usb pxe dhcp                                           
    bootcmd=run envboot; run bootcmd_ti_mmc; bootflow scan -lb                    
    bootcmd_ti_mmc=run init_${boot}; run update_do_main_cpsw0_qsgmii_phyinit; if ;
    bootdelay=2                                                                   
    bootdir=/boot                                                                 
    bootenvfile=uEnv.txt                                                          
    bootm_size=0x10000000                                                         
    bootpart=0:1                                                                  
    bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}  
    console=ttyS2,115200n8                                                        
    cpu=armv8                                                                     
    dfu_alt_info_emmc=rawemmc raw 0 0x800000 mmcpart 1; rootfs part 0 1; tiboot3.1
    dfu_alt_info_mmc=boot part 1 1; rootfs part 1 2; tiboot3.bin fat 1 1; tispl.b1
    dfu_alt_info_nand=NAND.tiboot3 part 0 1; NAND.tispl part 0 2; NAND.tiboot3.ba7
    dfu_alt_info_ospi=tiboot3.bin raw 0x0 0x080000; tispl.bin raw 0x080000 0x20000
    dfu_alt_info_ospi_nand=ospi_nand.tiboot3 part 1; ospi_nand.tispl part 2; ospi7
    dfu_alt_info_ram=tispl.bin ram 0x80080000 0x200000; u-boot.img ram 0x810000000
    dorprocboot=0                                                                 
    dtboaddr=0x89000000                                                           
    envboot=if mmc dev ${mmcdev}; then if mmc rescan; then echo SD/MMC found on d;
    ethaddr=04:25:e8:be:9d:26                                                     
    fdt_addr_r=0x88000000                                                         
    fdtaddr=0x88000000                                                            
    fdtcontroladdr=fde8afa0                                                       
    fdtfile=ti/k3-am62-lp-sk.dtb                                                  
    fdtoverlay_addr_r=0x89000000                                                  
    findfdt=echo WARN: fdtfile already set. Stop using findfdt in script          
    finduuid=part uuid ${boot} ${bootpart} uuid                                   
    get_fdt_mmc=load mmc ${bootpart} ${fdtaddr} ${bootdir}/dtb/${fdtfile}         
    get_fdt_ospi_nand=ubifsload ${fdtaddr} ${bootdir}/dtb/${fdtfile};             
    get_fit_config=setexpr name_fit_config gsub / _ conf-${fdtfile}               
    get_fit_mmc=load mmc ${bootpart} ${addr_fit} ${bootdir}/${name_fit}           
    get_fit_ospi_nand=ubifsload ${addr_fit} ${bootdir}/${name_fit}                
    get_fit_overlaystring=for overlay in $name_overlays; do; setexpr name_fit_ove;
    get_kern_mmc=load mmc ${bootpart} ${loadaddr} ${bootdir}/${name_kern}         
    get_kern_ospi_nand=ubifsload ${loadaddr} ${bootdir}/${name_kern}              
    get_overlay_mmc=fdt address ${fdtaddr}; fdt resize 0x100000; for overlay in $;
    get_overlay_ospi_nand=fdt address ${fdtaddr} fdt resize 0x100000; for overlay;
    importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t}
    init_mmc=run args_all args_mmc                                                
    init_ospi_nand=run args_all args_ospi_nand ospi_nand_ubi_init                 
    kernel_addr_r=0x82000000                                                      
    loadaddr=0x82000000                                                           
    loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}                  
    loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/dtb/${fdtfile}      
    loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}      
    mmcboot=if mmc dev ${mmcdev}; then devnum=${mmcdev}; devtype=mmc; if mmc resc;
    mmcdev=1                                                                      
    mmcloados=if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run ge;
    mmcrootfstype=ext4 rootwait                                                   
    mtdids=spi-nand0=spi-nand0                                                    
    mtdparts=mtdparts=spi-nand0:512k(ospi_nand.tiboot3),2m(ospi_nand.tispl),4m(os)
    name_fit=fitImage                                                             
    name_kern=Image                                                               
    ospi_nand_bootpart=ospi_nand.rootfs                                           
    ospi_nand_bootvolume=ubi0:rootfs                                              
    ospi_nand_ubi_init=ubi part ${ospi_nand_bootpart}; ubifsmount ${ospi_nand_boo;
    partitions=name=rootfs,start=0,size=-,uuid=${uuid_gpt_rootfs}                 
    pxefile_addr_r=0x80100000                                                     
    ramdisk_addr_r=0x88080000                                                     
    rd_spec=-                                                                     
    rdaddr=0x88080000                                                             
    rproc_fw_binaries= 0 /lib/firmware/am62-mcu-m4f0_0-fw                         
    rproc_load_and_boot_one=if load mmc ${bootpart} $loadaddr ${rproc_fw}; then ii
    run_fit=run get_fit_config; bootm ${addr_fit}#${name_fit_config}${overlaystri}
    run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr}                              
    scriptaddr=0x80000000                                                         
    secure_rprocs=0                                                               
    serial#=0000000000000000                                                      
    soc=k3                                                                        
    splashfile=ti_logo_414x97_32bpp.bmp.gz                                        
    splashimage=0x80200000                                                        
    splashpos=m,m                                                                 
    splashsource=mmc                                                              
    update_do_main_cpsw0_qsgmii_phyinit=setenv do_main_cpsw0_qsgmii_phyinit 0;    
    update_to_fit=setenv loadaddr ${addr_fit}; setenv bootfile ${name_fit}        
    vendor=ti                                                                     
                                                                                  
    Environment size: 6581/131068 bytes   
    



    and kmsprint
    root@am62xx-lp-evm:~# kmsprint                                                
    terminate called after throwing an instance of '[  127.273202] kauditd_printkd
    std::runtime_error'                                                           
      what():  No modesetting DRM card found                                      
    [  127.273232] audit: type=1701 audit(1736373723.040:20): auid=4294967295 uid1
    [  127.312843] audit: type=1334 audit(1736373723.080:21): prog-id=20 op=LOAD  
    [  127.319741] audit: type=1334 audit(1736373723.088:22): prog-id=21 op=LOAD  
    [  127.326611] audit: type=1334 audit(1736373723.092:23): prog-id=22 op=LOAD  
    Aborted (core dumped)                                                         
    root@am62xx-lp-evm:~# [  127.647457] audit: type=1334 audit(1736373723.416:24D
    [  127.654498] audit: type=1334 audit(1736373723.416:25): prog-id=21 op=UNLOAD
    [  127.661482] audit: type=1334 audit(1736373723.416:26): prog-id=20 op=UNLOAD
    
    
    


    please guide me

    one more thing i see some people do the dtso and bringup display but how to generate it with my tianma display
    software-dl.ti.com/.../How_to_enable_Microtips_LVDS_Panel.html

  • Hi,
    Please use the this dtso: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am625-sk-microtips-mf101hie-panel.dtso?h=ti-linux-6.12.y as a reference. This is also included in the processor SDK.

    Please try defining timing parameters with panel-simple as shown in https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/gpu/drm/panel/panel-simple.c?h=ti-linux-6.1.y#n2722 

    Seems like you are using a single link panel? In that case omit the following lines from the above dtso

    dual-lvds-odd-pixels;
    dual-lvds-even-pixels;
    ti,companion-oldi = <&oldi1>;
    ti,secondary-oldi;


    You may refer to https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1534759/am623-lvds-panel-configuration-on-6-12-kernel for similar query.