我正在尝试在基于 Rockchip RK3399(ARM64 arch)的主板上启用 MIPI-DSI(显示)接口,即使在尝试了设备树的几种方法后,我仍然遇到相同的错误。该操作系统是 Ubuntu Bionic 的一个分支。以下是核心。错误如下:
[ 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
错误是16 EBUSY
,但我不确定这意味着什么。以下是我对设备树所做的编辑:
&dsi {
status = "okay";
};
&dsi1 {
status = "okay";
};
&route_dsi {
status="okay";
};
&dsi_in_vopl {
status = "okay";
};
以下是原始的 DSI 定义:
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>;
};
};
};
};
我认为这与以下事实有关:它请求探测内存 0xff968000-0xff96ffff,但接口只有 0x8000 宽。换句话说,0xff968000 + 0x8000 < 0xff96ffff,因此它探测的是它无权访问的内存。但定义包括接口大小(reg = <0x0 0xff960000 0x0 0x8000>;
),所以我不知道如何调试它。这些是我对树所做的唯一更改,也是 DSI 中显示的唯一相关信息。
答案1
我搞清楚了,原来是因为 DSI1(第二个 DSI 接口)与其他接口(我认为是 CSI0)重叠,因为它配置不正确。如果要同时启用这两个接口,则必须禁用其中一个摄像头接口。在这种情况下,您只需禁用 DSI1,然后就会开始显示更多有用的错误。