डीटीओ सिंटेक्स

डिवाइस ट्री सोर्स (DTS) प्रारूप एक डिवाइस ट्री का एक पाठीय प्रतिनिधित्व है। डिवाइस ट्री कंपाइलर (डीटीसी) इस प्रारूप को एक बाइनरी डिवाइस ट्री में संसाधित करता है, जो कि लिनक्स कर्नेल द्वारा अपेक्षित रूप है।

संदर्भों का उपयोग करना

DTC (डिवाइस ट्री कंपाइलर + ओवरले पैच) प्रोजेक्ट dtc-format.txt और Manual.txt में DTS प्रारूप का वर्णन करता है। डीटीओ प्रारूप और नियमों को dt-object-internal.txt में वर्णित किया गया है। ये दस्तावेज़ वर्णन करते हैं कि ओवरले डीटी में नोड fragment@x और सिंटैक्स __overlay__ का उपयोग करके मुख्य डीटी को कैसे अपडेट किया __overlay__ । उदाहरण के लिए:

/ {
  fragment@0 {
    target = <&some_node>;
      __overlay__ {
        some_prop = "okay";
        ...
      };
  };
};

हालाँकि, Google अनुशंसा करता है कि आप fragment@x और सिंटैक्स __overlay__ उपयोग करें, और इसके बजाय संदर्भ सिंटैक्स का उपयोग करें। उदाहरण के लिए:

&some_node {
  some_prop = "okay";
  ...
};

सिंटैक्स __overlay__ का उपयोग करके उपरोक्त के रूप में संदर्भ सिंटैक्स को dtc द्वारा संकलित किया जाता है। यह वाक्यविन्यास आपको टुकड़ों को संख्या करने के लिए मजबूर नहीं करता है, जिससे आप ओवरले डीटीएस को आसानी से पढ़ और लिख सकते हैं। यदि आपका dtc इस सिंथैटिक शुगर का समर्थन नहीं करता है, तो AOSP में dtc का उपयोग करें।

लेबल का उपयोग करना

संकलन समय पर मौजूद नोड्स के लिए अपरिभाषित संदर्भों की अनुमति देने के लिए, ओवरले DT .dts फ़ाइल के हेडर में एक टैग /plugin/ होना चाहिए। उदाहरण के लिए:

/dts-v1/;
/plugin/;

यहां से आप एक संदर्भ का उपयोग करते हुए नोड्स को ओवरलैड करने के लिए लक्षित कर सकते हैं, जो कि एंपर्संड (और) के साथ उपसर्ग किए गए एक निरपेक्ष नोड पथ है। उदाहरण के लिए, मुख्य DT में node@0 के लिए:

मुख्य डीटी में लेबल को परिभाषित करें ... ... तो लेबल का उपयोग करें।
[my_main_dt.dts]

/dts-v1/;

/ {
  my_node: node@0 {
    status = "disabled";

    my_child: child@0 {
      value = <0xffffffff>;
    };
  };
};
[my_overlay_dt.dts]

/dts-v1/;
/plugin/;

&my_node {
  status = "okay";
};

&my_child {
  value = <0x1>;
};

अधिभावी

यदि संदर्भ लक्ष्य संपत्ति मुख्य डीटी में मौजूद है, तो डीटीओ के बाद इसे ओवरराइड किया जाता है; अन्यथा, यह संलग्न है। उदाहरण के लिए:

main.dts overlay.dts परिणाम में विलय हुआ
[my_main_dt.dts]

/dts-v1/;

/ {
  compatible = "corp,foo";

  my_node: node@0 {
    status = "disabled";
  };
};
[my_overlay_dt.dts]

/dts-v1/;
/plugin/;

&my_node {
  status = "okay";
};
/dts-v1/;

/ {
  compatible = "corp,foo";

  ...

  node@0 {
    linux,phandle = <0x1>;
    phandle = <0x1>;
    status = "okay";
  };
};
है

जोड़कर

यदि संदर्भ लक्ष्य संपत्ति मुख्य DT में मौजूद नहीं है, तो इसे DTO के बाद जोड़ा जाता है। उदाहरण के लिए:

main.dts overlay.dts परिणाम में विलय
[my_main_dt.dts]

/dts-v1/;

/ {
  compatible = "corp,foo";

  my_node: node@0 {
    status = "okay";
  };
};
[my_overlay_dt.dts]

/dts-v1/;
/plugin/;

&my_node {
  new_prop = "bar";
};
/dts-v1/;

/ {
  compatible = "corp,foo";

  ...

  node@0 {
    linux,phandle = <0x1>;
    phandle = <0x1>;
    status = "okay";
    new_prop = "bar";
  };
};

बच्चा नोड्स

बाल नोड वाक्यविन्यास के उदाहरण:

main.dts overlay.dts परिणाम में विलय
[my_main_dt.dts]

/dts-v1/;

/ {
  compatible = "corp,foo";

  my_nodes: nodes {
    compatible = "corp,bar";

    node@0 {
      status = "disabled";
    };
  };
};
[my_overlay_dt.dts]

/dts-v1/;
/plugin/;

&my_nodes {
  new_prop1 = "abc";

  node@0 {
    status = "okay";
    new_prop2 = "xyz";
  };
};
/dts-v1/;

/ {
  compatible = "corp,foo";

  ...

  nodes {
    linux,phandle = <0x1>;
    phandle = <0x1>;
    compatible = "corp,bar";
    new_prop1 = "abc";

    node@0 {
      linux,phandle = <0x2>;
      phandle = <0x2>;
      status = "okay";
      new_prop2 = "xyz";
    };
  };
};