Jump to content

Recommended Posts

Posted (edited)

Hello, friends...

 

             The current MIPI DSI driver provided by Rockchip Inc. in older U-Boot versions (v2023 and earlier) is not compatible with U-Boot’s uclass subsystems.(a waste of time if you want to develop). I have done extensive research and made modifications to several files to make it work with the latest U-Boot versions. I have tested it with U-Boot 2023.10, 2024.10 and v2025.rc3 on orange pi 4 lts, and it works perfectly. I'm attaching the necessary files for those who need them.

 

This u-boot driver is nearly identical to Rockchip's Linux kernel driver, uses same driver file but there some limitations because of u-boot system, but it correctly displays the splash image when vidconsole0 probed by u-boot..

 

Additionally, i want to say that, in linux kernel side, the same dw-rockchip-dsi driver in latest armbian distribitions works with from kernels 5.18 to latest kernel v6.6 and v.6.12. I tested it.

 

Tested with custom 400x1200 60hz 4 lane standart mipi dsi panel from chinese panel manufacturer. I attached all modified files as attachment. Good lucks.

 

dm tree command output from u-boot is

 

 reset         1  [ + ]   rockchip_reset        |   `-- reset                                                               
 syscon       27  [ + ]   rk3399_syscon         |-- syscon@ff770000                                                         
 nop           3  [ + ]   rockchip_iodomain     |   `-- io-domains                                                          
 video         0  [ + ]   rk3399_vop            |-- vop@ff8f0000                                                            
 vidconsole    0  [ + ]   vidconsole0           |   `-- vop@ff8f0000.vidconsole0                                            
 video         1  [ + ]   rk3399_vop            |-- vop@ff900000                                                            
 vidconsole    1  [ + ]   vidconsole0           |   `-- vop@ff900000.vidconsole0                                            
 video_brid    0  [ + ]   dw-mipi-dsi-rockchip  |-- dsi@ff960000                                                            
 dsi_host      0  [ + ]   dw_mipi_dsi           |   |-- dsihost                                                             
 panel         0  [ + ]   rm68200_panel         |   `-- panel@0                                                             
 pinctrl       0  [ + ]   rockchip_rk3399_pinc  |-- pinctrl     

 

 

 

 

CEEA2DF1-FAC3-4358-9540-641B00F88071.thumb.JPG.10bfde2b13d3df2e2690318a605d3131.JPG

 

 

34CA6D19-B542-4522-AC41-83A07AD0E464.thumb.JPG.b75f7ddadb4bd647e0410a37a47de912.JPG

 

 

U-Boot 2024.10-armbian-2024.10-Sf919-Pbfb2-H3d34-Vade7-Bb703-R448a-dirty (Mar 03 2025 - 06:16:04 +0300)                     
                                                                                                                            
SoC: Rockchip rk3399                                                                                                        
Reset cause: RST                                                                                                            
Model: Orange Pi 4 LTS Board                                                                                                
DRAM:  4 GiB (effective 3.9 GiB)                                                                                            
PMIC:  RK808                                                                                                                
Core:  285 devices, 32 uclasses, devicetree: separate                                                                       
MMC:   mmc@fe320000: 1, mmc@fe330000: 0                                                                                     
Loading Environment from MMC... Reading from MMC(0)... *** Warning - bad CRC, using default environment                     
                                                                                                                            
rm68200_panel_of_to_plat() rm68200_panel panel@0: reset pin set done                                                        
 rm68200_panel_probe() rm68200_panel panel@0: Initializing MIPI DSI Panel Driver                                            
 rm68200_panel_probe() rm68200_panel panel@0: Reset sequence done                                                           
 rm68200_panel_probe() rm68200_panel panel@0: dsi set 4 lane, video-burst, RGB 24-bit mode                                  
rm68200_panel_enable_backlight() rm68200_panel panel@0: Panel set backlight func(), initializing panel                      
rm68200_panel_enable_backlight() rm68200_panel panel@0: attaching mipi dsi panel                                            
rm68200_panel_enable_backlight() rm68200_panel panel@0: perform panel initialization sequence                               
rm68200_panel_enable_backlight() rm68200_panel panel@0: panel initialization sequence done, panel probed!                   
rm68200_panel_enable_backlight() rm68200_panel panel@0: Panel set backlight func(), initializing panel                      
rm68200_panel_enable_backlight() rm68200_panel panel@0: attaching mipi dsi panel                                            
rm68200_panel_enable_backlight() rm68200_panel panel@0: perform panel initialization sequence                               
rm68200_panel_enable_backlight() rm68200_panel panel@0: panel initialization sequence done, panel probed!                   
In:    serial@ff1a0000                                                                                                      
Out:   serial@ff1a0000                                                                                                      
Err:   serial@ff1a0000                                                                                                      
Model: Orange Pi 4 LTS Board                                                                                                
Net:   Could not get PHY for ethernet@fe300000: addr 1                                                                      
      eth_initialize() No ethernet found.                                                                                   
                                                                                                                            
                                                                                                                            
Hit any key to stop autoboot:  0                                                                                            
=> dcdcddcdcdcdc<INTERRUPT>                                                                                                 
=> setenv splashimage 0x82000000                                                                                            
=> setenv splashfile /boot/splash.bmp                                                                                       
=> load mmc 0:1 ${splashimage} ${splashfile}                                                                                
1920138 bytes read in 61 ms (30 MiB/s)                                                                                      
=> bmp display ${splashimage}                                                                                               
=> <INTERRUPT>                                                                                                              
=> 

 

uclass_get_device_by_ofnode() Looking for clock-controller@ff760000                                                         
uclass_find_device_by_ofnode() Looking for clock-controller@ff760000                                                        
uclass_find_device_by_ofnode()       - checking reset                                                                       
uclass_find_device_by_ofnode()       - checking reset                                                                       
uclass_find_device_by_ofnode()    - result for clock-controller@ff760000: reset (ret=0)                                     
uclass_get_device_by_ofnode()    - result for clock-controller@ff760000: reset (ret=0)                                      
rm68200_panel_enable_backlight() rm68200_panel panel@0: Panel set backlight func(), initializing panel                      
rm68200_panel_enable_backlight() rm68200_panel panel@0: attaching mipi dsi panel                                            
rm68200_panel_enable_backlight() rm68200_panel panel@0: perform panel initialization sequence                               
rm68200_panel_enable_backlight() rm68200_panel panel@0: panel initialization sequence done, panel probed!                   
dsi_phy_post_set_mode() dw-mipi-dsi-rockchip dsi@ff960000: Set mode 00000000f4f3b4a0 enable 1                               
  device_bind_common() Bound device vop@ff900000.vidconsole0 to vop@ff900000                                                
      notify_dynamic() Sending event 5/(unknown) to spy 'efi_disk add'                                                      
      notify_dynamic() Sending event 5/(unknown) to spy 'efi_disk add'                                                      
In:    serial@ff1a0000                                                                                                      
Out:   serial@ff1a0000                                                                                                      
Err:   serial@ff1a0000                                                                                                      
Model: Orange Pi 4 LTS Board  

 

raydium-rm68200.c rk3399-orangepi.dts dw_mipi_dsi.c rk_vop.c dw_mipi_dsi_rockchip.c clk_rk3399.c

.config

Edited by Murat Demirtas
  • Murat Demirtas changed the title to Orange Pi 4 LTS U-Boot 2024.10+, RK3399 MIPI DSI Panel Successfully

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines