ARM64 Ubuntu 上的设备树错误

ARM64 Ubuntu 上的设备树错误

我正在尝试在基于 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,然后就会开始显示更多有用的错误。

相关内容