Format sumber hierarki perangkat (DTS) adalah representasi tekstual dari hierarki perangkat (DT). {i>Device tree compiler<i} (DTC) memproses format ini menjadi DT biner, yang merupakan bentuk yang diharapkan oleh {i>kernel<i} Linux.
Gunakan referensi
DTC
({i>device Tree compiler + overlay patch<i}) menjelaskan format DTS dalam
dtc-format.txt
dan
manual.txt.
Format dan aturan DTO dijelaskan di
dt-object-internal.txt.
Dokumen ini menjelaskan cara mengupdate DT utama menggunakan node
fragment@x
dan sintaksis __overlay__
di DT overlay. Contoh:
/ { fragment@0 { target = <&some_node>; __overlay__ { some_prop = "okay"; ... }; }; };
Namun, Google sangat menyarankan agar Anda tidak menggunakan
fragment@x
dan sintaksis __overlay__
, dan sebagai gantinya, gunakan
sintaksis referensi. Contoh:
&some_node { some_prop = "okay"; ... };
Sintaksis referensi dikompilasi oleh dtc
ke dalam objek yang sama dengan
di atas menggunakan sintaksis __overlay__
. Sintaks ini tidak memaksa Anda untuk
memberi nomor fragmen, memungkinkan Anda untuk membaca
dan menulis DTS overlay dengan mudah. Jika
dtc
tidak mendukung sugar sintaksis ini, gunakan
dtc
di AOSP.
Menggunakan label
Untuk memungkinkan referensi yang tidak terdefinisi ke node yang tidak ada pada waktu kompilasi,
file .dts
DT overlay harus memiliki tag /plugin/
dalam
{i>header<i}. Contoh:
/dts-v1/; /plugin/;
Dari sini, Anda dapat menargetkan node untuk dihamparkan menggunakan referensi, yang
jalur simpul absolut yang diawali dengan tanda dan (&). Misalnya, untuk
node@0
di DT utama:
Tentukan label di DT utama ... | ... kemudian gunakan labelnya. |
---|---|
[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>; }; |
Ganti
Jika properti target referensi ada di DT utama, properti ini akan diganti setelah DTO; jika tidak, elemen tersebut akan ditambahkan. Contoh:
main.dts | overlay.dts | Hasil Gabungan |
---|---|---|
[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"; }; }; |
Cantelkan
Jika properti target referensi tidak ada di DT utama, ditambahkan setelah DTO. Contoh:
main.dts | overlay.dts | Hasil Gabungan |
---|---|---|
[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"; }; }; |
Node turunan
Contoh sintaksis node turunan:
main.dts | overlay.dts | Hasil Gabungan |
---|---|---|
[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"; }; }; }; |