Message ID | f767fe007e446a2299fda9905e75b723c650a424.1605021644.git.michal.simek@xilinx.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: zynqmp: Move gic node to axi bus | expand |
Ășt 10. 11. 2020 v 16:20 odesĂlatel Michal Simek <michal.simek@xilinx.com> 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@gmail.com> > Signed-off-by: Michal Simek <michal.simek@xilinx.com> > --- > > 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
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.
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@gmail.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com> --- arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 31 ++++++++++---------------- 1 file changed, 12 insertions(+), 19 deletions(-)