March 3, 20251 yr 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 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 dw_mipi_dsi.c rk_vop.c dw_mipi_dsi_rockchip.c clk_rk3399.c .config rk3399-orangepi.dts Edited March 3, 20251 yr by Murat Demirtas
March 19, 20251 yr Author i modified the dts file. There was a boot error when use both vopl and vopb and when not use both in linux kernel. the example boot sequence mipi video i will upload who interest. There is a flicker when load kernel from uboot that i am on the solve. rk3399-orangepi.dts Edited March 19, 20251 yr by Murat Demirtas
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.