こんにちは、皆さん。
私たちのシステムでは 3 つの Pcie インスタンスを使用しています。システムのニーズに応じて DMA を使用する必要があります。DMA を有効にする方法を知る必要があります。
有効にするにはどうすればいいですか?デバイス ツリーに追加する必要があるかどうか、またはどのように追加する必要があるか?
私たちはls1043ardbボードを使用しており、yocto-real-time-edge BSPを使用しています。
デバイス ツリーを確認しましたが、どの Pcie ノードにも DMA 範囲が記載されていません。
以下はfsl-ls1043a.dtsiの下のデバイスツリーです。
"pcie1: pcie@3400000 {
互換性 = "fsl、ls1043a-pcie";
reg = <0x00 0x03400000 0x0 0x00100000>, /* コントローラレジスタ */
<0x40 0x00000000 0x0 0x00002000>; /* 設定空間 */
reg-names = "regs", "config";
割り込み =
割り込み名 = "pme", "aer";
#アドレスセル = <3>;
#size-cells = <2>;
デバイスタイプ = "pci";
iommu-map = <0 &smmu 0 1>; /* ブートローダーによる更新 */
ビューポート数 = <6>;
バス範囲 = <0x0 0xff>;
範囲 = <0x81000000 0x0 0x00000000 0x40 0x00010000 0x0 0x00010000 /* ダウンストリームI/O */
0x82000000 0x0 0x40000000 0x40 0x40000000 0x0 0x40000000>; /* プリフェッチ不可能なメモリ */
msi-parent = <&msi1>、<&msi2>、<&msi3>;
#割り込みセル = <1>;
割り込みマップマスク = <0 0 0 7>;
割り込みマップ = <0000 0 0 1 &gic 0 110 0x4>,
<0000 0 0 2 &gic 0 111 0x4>,
<0000 0 0 3 &gic 0 112 0x4>,
<0000 0 0 4 &gic 0 113 0x4>;
fsl、pcie-scfg = <&scfg 0>;
ビッグエンディアン;
ステータス = "正常";
};
pcie2: pcie@3500000 {
互換性 = "fsl、ls1043a-pcie";
reg = <0x00 0x03500000 0x0 0x00100000>, /* コントローラレジスタ */
<0x48 0x00000000 0x0 0x00002000>; /* 設定空間 */
reg-names = "regs", "config";
割り込み =
割り込み名 = "pme", "aer";
#アドレスセル = <3>;
#size-cells = <2>;
デバイスタイプ = "pci";
iommu-map = <0 &smmu 0 1>; /* ブートローダーによる更新 */
ビューポート数 = <6>;
バス範囲 = <0x0 0xff>;
範囲 = <0x81000000 0x0 0x00000000 0x48 0x00010000 0x0 0x00010000 /* ダウンストリームI/O */
0x82000000 0x0 0x40000000 0x48 0x40000000 0x0 0x40000000>; /* プリフェッチ不可能なメモリ */
msi-parent = <&msi1>、<&msi2>、<&msi3>;
#割り込みセル = <1>;
割り込みマップマスク = <0 0 0 7>;
割り込みマップ = <0000 0 0 1 &gic 0 120 0x4>,
<0000 0 0 2 &gic 0 121 0x4>,
<0000 0 0 3 &gic 0 122 0x4>,
<0000 0 0 4 &gic 0 123 0x4>;
fsl、pcie-scfg = <&scfg 1>;
ビッグエンディアン;
ステータス = "正常";
};
pcie3: pcie@3600000 {
互換性 = "fsl、ls1043a-pcie";
reg = <0x00 0x03600000 0x0 0x00100000>, /* コントローラレジスタ */
<0x50 0x00000000 0x0 0x00002000>; /* 設定空間 */
reg-names = "regs", "config";
割り込み =
割り込み名 = "pme", "aer";
#アドレスセル = <3>;
#size-cells = <2>;
デバイスタイプ = "pci";
iommu-map = <0 &smmu 0 1>; /* ブートローダーによる更新 */
ビューポート数 = <6>;
バス範囲 = <0x0 0xff>;
範囲 = <0x81000000 0x0 0x00000000 0x50 0x00010000 0x0 0x00010000 /* ダウンストリームI/O */
0x82000000 0x0 0x40000000 0x50 0x40000000 0x0 0x40000000>; /* プリフェッチ不可能なメモリ */
msi-parent = <&msi1>、<&msi2>、<&msi3>;
#割り込みセル = <1>;
割り込みマップマスク = <0 0 0 7>;
割り込みマップ = <0000 0 0 1 &gic 0 154 0x4>,
<0000 0 0 2 &gic 0 155 0x4>,
<0000 0 0 3 &gic 0 156 0x4>,
<0000 0 0 4 &gic 0 157 0x4>;
fsl、pcie-scfg = <&scfg 2>;
ビッグエンディアン;
ステータス = "正常";
}; "
SO、やり方を教えてください。
#ls1043a