I’m trying to enable the MIPI-DSI (display) interface on my Rockchip RK3399 (ARM64 arch) based board and I keep encountering the same error even after trying several things with the device tree. The OS is a fork of Ubuntu Bionic. Here is the kernel. Here is the error:
[ 1.195557] dw-mipi-dsi ff968000.dsi: can't request region for resource [mem 0xff968000-0xff96ffff] [ 1.196387] dw-mipi-dsi: probe of ff968000.dsi failed with error -16
The error is 16 EBUSY
, but I’m not sure what that means. Here are the edits I made to the device tree:
&dsi { status = "okay"; }; &dsi1 { status = "okay"; }; &route_dsi { status="okay"; }; &dsi_in_vopl { status = "okay"; };
And here is the original DSI definition:
dsi: dsi@ff960000 { compatible = "rockchip,rk3399-mipi-dsi"; reg = <0x0 0xff960000 0x0 0x8000>; interrupts = <GIC_SPI 45 IRQ_TYPE_LEreg = <0x0 0xff960000 0x0 0x8000>;VEL_HIGH 0>; clocks = <&cru SCLK_DPHY_PLL>, <&cru PCLK_MIPI_DSI0>, <&cru SCLK_DPHY_TX0_CFG>; clock-names = "ref", "pclk", "phy_cfg"; power-domains = <&power RK3399_PD_VIO>; resets = <&cru SRST_P_MIPI_DSI0>; reset-names = "apb"; rockchip,grf = <&grf>; status = "disabled"; #address-cells = <1>; #size-cells = <0>; ports { port { #address-cells = <1>; #size-cells = <0>; dsi_in_vopb: endpoint@0 { reg = <0>; remote-endpoint = <&vopb_out_dsi>; }; dsi_in_vopl: endpoint@1 { reg = <1>; remote-endpoint = <&vopl_out_dsi>; }; }; }; };
I think it has something to do with the fact that it’s requesting the memory 0xff968000-0xff96ffff is being probed, but the interface is only 0x8000 wide. In other words, 0xff968000 + 0x8000 < 0xff96ffff, so it’s probing memory it doesn’t have access to. But the definition includes the interface size (reg = <0x0 0xff960000 0x0 0x8000>;
), so I don’t know how to debug this. These are the only changes I made to the tree, and these are the only relevant messages that show up in DSI.