út 10. 11. 2020 v 16:20 odesílatel Michal Simek <michal.simek@xxxxxxxxxx> napsal: > > The reason for this change is that after change from amba to axi U-Boot > started to show error like: > Unable to update property /axi/ethernet@ff0e0000:mac-address, err=FDT_ERR_NOTFOUND > Unable to update property /axi/ethernet@ff0e0000:local-mac-address, err=FDT_ERR_NOTFOUND > > The reason is implementation in fdt_nodename_eq_() which is taken from dtc > to the kernel and to the U-Boot. Especially DTC commit d2a9da045897 ("libfdt: > Make unit address optional for finding nodes") which is in DTC from 2007. > > The part of commit description is > " This is contrary to traditional OF-like finddevice() behaviour, which > allows the unit address to be omitted (which is useful when the device > name is unambiguous without the address)." > > The kernel commit dfff9066e60e ("arm64: dts: zynqmp: Rename buses to be > align with simple-bus yaml") changed amba-apu/amba to axi@0/axi but > fdt_nodename_eq_() detects /axi/ as match for /axi@0/ because of commit > above. > > That's why it easier to fix one DT inside the kernel by moving GIC node > from own bus to generic axi bus as is done by others SoCs. This will avoid > incorrect match because the unit address is omitted. > > Reported-by: Paul Thomas <pthomas8589@xxxxxxxxx> > Signed-off-by: Michal Simek <michal.simek@xxxxxxxxxx> > --- > > arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 31 ++++++++++---------------- > 1 file changed, 12 insertions(+), 19 deletions(-) > > diff --git a/arch/arm64/boot/dts/xilinx/zynqmp.dtsi b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi > index 771f60e0346d..515b15ed634a 100644 > --- a/arch/arm64/boot/dts/xilinx/zynqmp.dtsi > +++ b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi > @@ -182,25 +182,6 @@ fpga_full: fpga-full { > ranges; > }; > > - amba_apu: axi@0 { > - compatible = "simple-bus"; > - #address-cells = <2>; > - #size-cells = <1>; > - ranges = <0 0 0 0 0xffffffff>; > - > - gic: interrupt-controller@f9010000 { > - compatible = "arm,gic-400"; > - #interrupt-cells = <3>; > - reg = <0x0 0xf9010000 0x10000>, > - <0x0 0xf9020000 0x20000>, > - <0x0 0xf9040000 0x20000>, > - <0x0 0xf9060000 0x20000>; > - interrupt-controller; > - interrupt-parent = <&gic>; > - interrupts = <1 9 0xf04>; > - }; > - }; > - > amba: axi { > compatible = "simple-bus"; > #address-cells = <2>; > @@ -339,6 +320,18 @@ fpd_dma_chan8: dma@fd570000 { > power-domains = <&zynqmp_firmware PD_GDMA>; > }; > > + gic: interrupt-controller@f9010000 { > + compatible = "arm,gic-400"; > + #interrupt-cells = <3>; > + reg = <0x0 0xf9010000 0x0 0x10000>, > + <0x0 0xf9020000 0x0 0x20000>, > + <0x0 0xf9040000 0x0 0x20000>, > + <0x0 0xf9060000 0x0 0x20000>; > + interrupt-controller; > + interrupt-parent = <&gic>; > + interrupts = <1 9 0xf04>; > + }; > + > /* LPDDMA default allows only secured access. inorder to enable > * These dma channels, Users should ensure that these dma > * Channels are allowed for non secure access. > -- > 2.29.2 > Applied. M -- Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91 w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel - Xilinx Microblaze Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs