From the below documentation, I couldn’t understand which one to use as best practice. I guess using #include solves all the problems. If so, why do we need the other one?

#include vs. /include/

There are two directives available to incorporate an external file
into a devicetree source file:

#include FILE
/include/ FILE

The Linux compile process for devicetree source file XXX.dts is:

XXX.dts (file) –> cpp (tool) –> XXX.dts.tmp (file) –> dtc (tool)
–> XXX.dtb (file)

#include is processed by cpp

/include/ is processed by dtc

All files incorporated via #include appear within file XXX.dts.tmp.

A file incorporated via /include/ may not contain #include because the
file is not subsequently processed by cpp after being processed by


a file incorporated via #include may contain #include and/or /include/
a file incorporated via /include/ may contain /include/