デバイスツリーのポートをどのように参照しますか?

デバイスツリーのポートをどのように参照しますか?

編集する:これはphandleを使用してポートを参照することに関する一般的な質問です。私が投稿した例は、同時に他のノードで同じ動作を観察したため、私の特定のケースには関係ありません。

デバイスツリーを含む(dtsi)で既存のポートノードを参照し、ここにエンドポイントを追加したいと思います。この既存のノードはmipi_inと呼ばれ、他のノード(mipi_dsi)内のポートとして定義されます。

mipi_dsi: mipi@ff960000 {
compatible = "rockchip,rk3399-mipi-dsi", "snps,dw-mipi-dsi";
reg = <0x0 0xff960000 0x0 0x8000>;
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH 0>;
clocks = <&cru SCLK_DPHY_PLL>, <&cru PCLK_MIPI_DSI0>,
   <&cru SCLK_DPHY_TX0_CFG>, <&cru PCLK_VIO_GRF>;
clock-names = "ref", "pclk", "phy_cfg", "grf";
power-domains = <&power RK3399_PD_VIO>;
resets = <&cru SRST_P_MIPI_DSI0>;
reset-names = "apb";
rockchip,grf = <&grf>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";

ports {
  #address-cells = <1>;
  #size-cells = <0>;

  mipi_in: port@0 {
    reg = <0>;
    #address-cells = <1>;
    #size-cells = <0>;
    ...

ポートノードに何かを追加するだけで、デバイスツリーで次のように参照します。

&mipi_in {
  mipi_in_ep: endpoint {
    data-lanes = <1 2>;
    link-frequencies = /bits/ 64 <720000000>;
    remote-endpoint = <&device_ep>;
  };
};

しかし、コンパイラは、エンドポイントをポートノードに含める必要があると文句を言います。しかし、mipi_inの定義によると、すでにポートです!ポートノードを再定義すると、コンパイラは次のように文句を言いません。

&mipi_in {
  port {
    mipi_in_ep: endpoint {
      data-lanes = <1 2>;
      link-frequencies = /bits/ 64 <720000000>;
      remote-endpoint = <&device_ep>;
    };
  };
};

しかし、このハッキングはハードウェアが正常に動作しないため、警告がコンパイラのバグなのか、それともポートを参照するよりきれいな方法があるのか​​疑問に思います。

ありがとうございます。

答え1

dtcがエラーを報告しませんが、次のことが機能しないのはなぜですか?

&mipi_in {
  port {
    mipi_in_ep: endpoint {
      data-lanes = <1 2>;
      link-frequencies = /bits/ 64 <720000000>;
      remote-endpoint = <&device_ep>;
    };
  };
};

これで、エンドポイントパスは次のようになります。

<>/mipi@ff960000/ports/port@0/port/endpoint

でも元の木を参考にすると、

<>/mipi@ff960000/ports/port@0/endpoint

したがって、ドライバーはこれを正しく理解していなかったでしょう。

ポートを参照するときにデバイスツリーコンパイラがエラーを報告する理由は不明ですが(dtcバージョンはそれをサポートしていない可能性が高い)、次のことを試してみることができます。

&mipi_dsi {
    status = "okay";
    ports {
        mipi_in: port@0 {
            mipi_in_ep: endpoint {
                :
            };
        };
    };
};

関連情報