Вы пытаетесь перегрузить свойства в &dcan0
, который использует метод phandle
. Вы можете сделать это, только если вы указали метку для устройства, описанного в дереве устройств. В am33xx.dtsi:
/ {
can@f09237 {
some-properties;
};
};
Чтобы перегрузить или добавить свойства к вышеуказанному устройству, вам нужно сделать в другом DTS (I), который включает DTSI, следующее: В mycustom.dts:
/ {
can@f09237 {
some-other-properties;
};
};
Вам необходимо соблюдать точный путь от /
. Так что если у вас есть следующее: В am33xx.dtsi:
/ {
bus@9908ab {
can@f09237 {
some-properties;
};
};
};
В mycustom.dtsi вы должны иметь:
/ {
bus@9908ab {
can@f09237 {
some-other-properties;
};
};
};
Второй способ перегрузить / добавить свойства на устройство это использовать phandle
с. Для этого вам понадобится метка: В am33xx.dtsi:
/ {
can0: can@f09237 {
some-properties;
};
};
В mycustom.dts:
// Technically not needed but just to show it should be outside of this, the root of the DTS
/ {
};
&can0 {
some-other-properties;
};
Если нет метки для вашего узла, а метки для родительского узел, такой как в следующем примере: В am33xx.dtsi:
/ {
bus0: bus@9908ab {
can@f09237 {
some-properties;
};
};
};
В mycustom.dtsi вы можете сделать следующее (что в основном представляет собой сочетание методов phandle и path):
&bus0 {
can@f09237 {
some-other-properties;
};
};
Я бы go лично применил метод phandle, так что его стало бы более читабельным и легче найти, где был определен исходный узел.
IIR C (не уверен на 100% об этом) вам не нужно добавлять phandle в am33xx.dtsi, вы можете добавить его в другом месте, но вам, очевидно, нужно соблюдать одно из приведенных выше решений для перегрузки узла дерева устройств. Например, с первым примером для am33xx.dtsi вы можете иметь в mycustom.dts (или отделить объявление метки в посреднике mycustom.dtsi):
/ {
can0: can@f09237 {
};
};
&can0 {
some-other-properties;
};
В противном случае я очень удивлен, увидев linux,phandle
и phandle
в вашем Дереве устройств, которое довольно древнее и больше не используется в DTS (хотя на самом деле оно помещается туда DT C при компиляции DTS). Кроме того, я сомневаюсь, что linux,phandle
является детерминированным c, он обычно создается на лету с помощью DT C, просто увеличивая число каждый раз, когда создается phandle
.