Instead of incorporating the prebuilt device tree binary as a FREEFORM FFS file into the build, define a module that contains the source so that the device tree compiler is invoked at build time.
The original .dts file is moved into the new module, and cleaned up a little so that explicit phandle properties are dropped, and unused clocks and other redudant pieces are removed as well. The existing prebuilt binary is deleted. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> --- Platform/AMD/OverdriveBoard/OverdriveBoard.dsc | 1 + Platform/LeMaker/CelloBoard/CelloBoard.dsc | 1 + Platform/AMD/OverdriveBoard/OverdriveBoard.fdf | 10 +- Platform/LeMaker/CelloBoard/CelloBoard.fdf | 9 +- Platform/AMD/OverdriveBoard/DeviceTree/OverdriveBoard.inf | 28 ++++ Platform/AMD/OverdriveBoard/{FdtBlob/styx-overdrive.dts => DeviceTree/OverdriveBoard.dts} | 140 ++++++-------------- Platform/AMD/OverdriveBoard/FdtBlob/styx-overdrive.dtb | Bin 9357 -> 0 bytes 7 files changed, 81 insertions(+), 108 deletions(-) diff --git a/Platform/AMD/OverdriveBoard/OverdriveBoard.dsc b/Platform/AMD/OverdriveBoard/OverdriveBoard.dsc index 04d655440d5b..3b680e22cd36 100644 --- a/Platform/AMD/OverdriveBoard/OverdriveBoard.dsc +++ b/Platform/AMD/OverdriveBoard/OverdriveBoard.dsc @@ -622,6 +622,7 @@ DEFINE DO_CAPSULE = FALSE FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf DtPlatformDtbLoaderLib|Silicon/AMD/Styx/Library/StyxDtbLoaderLib/StyxDtbLoaderLib.inf } + Platform/AMD/OverdriveBoard/DeviceTree/OverdriveBoard.inf # # PCI support diff --git a/Platform/LeMaker/CelloBoard/CelloBoard.dsc b/Platform/LeMaker/CelloBoard/CelloBoard.dsc index 37daef4f82e6..6362ab5a17fb 100644 --- a/Platform/LeMaker/CelloBoard/CelloBoard.dsc +++ b/Platform/LeMaker/CelloBoard/CelloBoard.dsc @@ -562,6 +562,7 @@ DEFINE DO_FLASHER = FALSE FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf DtPlatformDtbLoaderLib|Silicon/AMD/Styx/Library/StyxDtbLoaderLib/StyxDtbLoaderLib.inf } + Platform/AMD/OverdriveBoard/DeviceTree/OverdriveBoard.inf # # PCI support diff --git a/Platform/AMD/OverdriveBoard/OverdriveBoard.fdf b/Platform/AMD/OverdriveBoard/OverdriveBoard.fdf index 5dcf67d819f6..e7788c42782f 100644 --- a/Platform/AMD/OverdriveBoard/OverdriveBoard.fdf +++ b/Platform/AMD/OverdriveBoard/OverdriveBoard.fdf @@ -149,10 +149,7 @@ READ_LOCK_STATUS = TRUE # FDT support # INF EmbeddedPkg/Drivers/DtPlatformDxe/DtPlatformDxe.inf - - FILE FREEFORM = 25462CDA-221F-47DF-AC1D-259CFAA4E326 { - SECTION RAW = Platform/AMD/OverdriveBoard/FdtBlob/styx-overdrive.dtb - } + INF RuleOverride = DTB Platform/AMD/OverdriveBoard/DeviceTree/OverdriveBoard.inf # # PCI support @@ -514,3 +511,8 @@ CAPSULE_HEADER_INIT_VERSION = 0x1 UI STRING="$(MODULE_NAME)" Optional VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) } + +[Rule.Common.USER_DEFINED.DTB] + FILE FREEFORM = $(NAMED_GUID) { + RAW BIN |.dtb + } diff --git a/Platform/LeMaker/CelloBoard/CelloBoard.fdf b/Platform/LeMaker/CelloBoard/CelloBoard.fdf index 6362257deb8c..0f5880cfa4ac 100644 --- a/Platform/LeMaker/CelloBoard/CelloBoard.fdf +++ b/Platform/LeMaker/CelloBoard/CelloBoard.fdf @@ -145,10 +145,7 @@ READ_LOCK_STATUS = TRUE # FDT support # INF EmbeddedPkg/Drivers/DtPlatformDxe/DtPlatformDxe.inf - - FILE FREEFORM = 25462CDA-221F-47DF-AC1D-259CFAA4E326 { - SECTION RAW = Platform/AMD/OverdriveBoard/FdtBlob/styx-overdrive.dtb - } + INF RuleOverride = DTB Platform/AMD/OverdriveBoard/DeviceTree/OverdriveBoard.inf # # PCI support @@ -408,3 +405,7 @@ READ_LOCK_STATUS = TRUE RAW ASL |.aml } +[Rule.Common.USER_DEFINED.DTB] + FILE FREEFORM = $(NAMED_GUID) { + RAW BIN |.dtb + } diff --git a/Platform/AMD/OverdriveBoard/DeviceTree/OverdriveBoard.inf b/Platform/AMD/OverdriveBoard/DeviceTree/OverdriveBoard.inf new file mode 100644 index 000000000000..d908ff03fda9 --- /dev/null +++ b/Platform/AMD/OverdriveBoard/DeviceTree/OverdriveBoard.inf @@ -0,0 +1,28 @@ +## @file +# +# Device tree description of the AMD Overdrive platform +# +# Copyright (c) 2018, Linaro Ltd. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = OverdriveBoardDeviceTree + FILE_GUID = 25462CDA-221F-47DF-AC1D-259CFAA4E326 # gDtPlatformDefaultDtbFileGuid + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +[Sources] + OverdriveBoard.dts + +[Packages] + MdePkg/MdePkg.dec diff --git a/Platform/AMD/OverdriveBoard/FdtBlob/styx-overdrive.dts b/Platform/AMD/OverdriveBoard/DeviceTree/OverdriveBoard.dts similarity index 77% rename from Platform/AMD/OverdriveBoard/FdtBlob/styx-overdrive.dts rename to Platform/AMD/OverdriveBoard/DeviceTree/OverdriveBoard.dts index 4039f666004a..3ae323a9f0a7 100644 --- a/Platform/AMD/OverdriveBoard/FdtBlob/styx-overdrive.dts +++ b/Platform/AMD/OverdriveBoard/DeviceTree/OverdriveBoard.dts @@ -19,11 +19,11 @@ / { model = "AMD Seattle (Rev.B) Development Board (Overdrive)"; compatible = "amd,seattle-overdrive", "amd,seattle"; - interrupt-parent = <0x1>; + interrupt-parent = <&gic>; #address-cells = <0x2>; #size-cells = <0x2>; - interrupt-controller@e1101000 { + gic: interrupt-controller@e1101000 { compatible = "arm,gic-400", "arm,cortex-a15-gic"; interrupt-controller; #interrupt-cells = <0x3>; @@ -35,15 +35,11 @@ <0x0 0xe1160000 0x0 0x2000>; interrupts = <0x1 0x9 0xf04>; ranges = <0x0 0x0 0x0 0xe1100000 0x0 0x100000>; - linux,phandle = <0x1>; - phandle = <0x1>; - v2m@e0080000 { + msi: v2m@e0080000 { compatible = "arm,gic-v2m-frame"; msi-controller; reg = <0x0 0x80000 0x0 0x1000>; - linux,phandle = <0x4>; - phandle = <0x4>; }; }; @@ -67,59 +63,25 @@ */ dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>; - clk100mhz_0 { - compatible = "fixed-clock"; - #clock-cells = <0x0>; - clock-frequency = <100000000>; - clock-output-names = "adl3clk_100mhz"; - }; - - clk375mhz { - compatible = "fixed-clock"; - #clock-cells = <0x0>; - clock-frequency = <375000000>; - clock-output-names = "ccpclk_375mhz"; - }; - - clk333mhz { + sata_clk: clk333mhz { compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <333000000>; clock-output-names = "sataclk_333mhz"; - linux,phandle = <0x2>; - phandle = <0x2>; }; - clk500mhz_0 { - compatible = "fixed-clock"; - #clock-cells = <0x0>; - clock-frequency = <500000000>; - clock-output-names = "pcieclk_500mhz"; - }; - - clk500mhz_1 { - compatible = "fixed-clock"; - #clock-cells = <0x0>; - clock-frequency = <500000000>; - clock-output-names = "dmaclk_500mhz"; - }; - - clk250mhz_4 { + i2c_clk: clk250mhz_4 { compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <250000000>; clock-output-names = "miscclk_250mhz"; - linux,phandle = <0xd>; - phandle = <0xd>; }; - clk100mhz_1 { + apb_clk: clk100mhz_1 { compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <100000000>; clock-output-names = "uartspiclk_100mhz"; - linux,phandle = <0x3>; - phandle = <0x3>; }; sata0_smmu: smmu@e0200000 { @@ -152,7 +114,7 @@ compatible = "snps,dwc-ahci"; reg = <0x0 0xe0300000 0x0 0xf0000>; interrupts = <0x0 0x163 0x4>; - clocks = <0x2>; + clocks = <&sata_clk>; dma-coherent; iommus = <&sata0_smmu 0x00 0x1f>; /* 0-31 */ }; @@ -162,7 +124,7 @@ compatible = "snps,dwc-ahci"; reg = <0x0 0xe0d00000 0x0 0xf0000>; interrupts = <0x0 0x162 0x4>; - clocks = <0x2>; + clocks = <&sata_clk>; dma-coherent; iommus = <&sata1_smmu 0x00 0x1f>; /* 0-31 */ }; @@ -171,21 +133,21 @@ compatible = "snps,designware-i2c"; reg = <0x0 0xe1000000 0x0 0x1000>; interrupts = <0x0 0x165 0x4>; - clocks = <0xd>; + clocks = <&i2c_clk>; }; i2c@e0050000 { compatible = "snps,designware-i2c"; reg = <0x0 0xe0050000 0x0 0x1000>; interrupts = <0x0 0x154 0x4>; - clocks = <0xd>; + clocks = <&i2c_clk>; }; serial@e1010000 { compatible = "arm,pl011", "arm,primecell"; reg = <0x0 0xe1010000 0x0 0x1000>; interrupts = <0x0 0x148 0x4>; - clocks = <0x3 0x3>; + clocks = <&apb_clk &apb_clk>; clock-names = "uartclk", "apb_pclk"; }; @@ -194,7 +156,7 @@ reg = <0x0 0xe1020000 0x0 0x1000>; spi-controller; interrupts = <0x0 0x14a 0x4>; - clocks = <0x3>; + clocks = <&apb_clk>; clock-names = "apb_pclk"; }; @@ -203,7 +165,7 @@ reg = <0x0 0xe1030000 0x0 0x1000>; spi-controller; interrupts = <0x0 0x149 0x4>; - clocks = <0x3>; + clocks = <&apb_clk>; clock-names = "apb_pclk"; num-cs = <0x1>; #address-cells = <0x1>; @@ -230,7 +192,7 @@ interrupt-controller; #interrupt-cells = <0x2>; interrupts = <0x0 0x166 0x4>; - clocks = <0x3>; + clocks = <&apb_clk>; clock-names = "apb_pclk"; }; @@ -243,7 +205,7 @@ interrupt-controller; #interrupt-cells = <0x2>; interrupts = <0x0 0x16e 0x4>; - clocks = <0x3>; + clocks = <&apb_clk>; clock-names = "apb_pclk"; }; @@ -256,7 +218,7 @@ interrupt-controller; #interrupt-cells = <0x2>; interrupts = <0x0 0x16d 0x4>; - clocks = <0x3>; + clocks = <&apb_clk>; clock-names = "apb_pclk"; }; @@ -268,7 +230,7 @@ interrupt-controller; #interrupt-cells = <0x2>; interrupts = <0x0 0x169 0x4>; - clocks = <0x3>; + clocks = <&apb_clk>; clock-names = "apb_pclk"; }; @@ -288,23 +250,23 @@ iommu-map = <0x0 &pcie_smmu 0x0 0x10000>; device_type = "pci"; bus-range = <0x0 0x7f>; - msi-parent = <0x4>; + msi-parent = <&msi>; reg = <0x0 0xf0000000 0x0 0x10000000>; interrupt-map-mask = <0xff00 0x0 0x0 0x7>; - interrupt-map = <0x1100 0x0 0x0 0x1 0x1 0x0 0x0 0x0 0x120 0x1>, - <0x1100 0x0 0x0 0x2 0x1 0x0 0x0 0x0 0x121 0x1>, - <0x1100 0x0 0x0 0x3 0x1 0x0 0x0 0x0 0x122 0x1>, - <0x1100 0x0 0x0 0x4 0x1 0x0 0x0 0x0 0x123 0x1>, + interrupt-map = <0x1100 0x0 0x0 0x1 &gic 0x0 0x0 0x0 0x120 0x1>, + <0x1100 0x0 0x0 0x2 &gic 0x0 0x0 0x0 0x121 0x1>, + <0x1100 0x0 0x0 0x3 &gic 0x0 0x0 0x0 0x122 0x1>, + <0x1100 0x0 0x0 0x4 &gic 0x0 0x0 0x0 0x123 0x1>, - <0x1200 0x0 0x0 0x1 0x1 0x0 0x0 0x0 0x124 0x1>, - <0x1200 0x0 0x0 0x2 0x1 0x0 0x0 0x0 0x125 0x1>, - <0x1200 0x0 0x0 0x3 0x1 0x0 0x0 0x0 0x126 0x1>, - <0x1200 0x0 0x0 0x4 0x1 0x0 0x0 0x0 0x127 0x1>, + <0x1200 0x0 0x0 0x1 &gic 0x0 0x0 0x0 0x124 0x1>, + <0x1200 0x0 0x0 0x2 &gic 0x0 0x0 0x0 0x125 0x1>, + <0x1200 0x0 0x0 0x3 &gic 0x0 0x0 0x0 0x126 0x1>, + <0x1200 0x0 0x0 0x4 &gic 0x0 0x0 0x0 0x127 0x1>, - <0x1300 0x0 0x0 0x1 0x1 0x0 0x0 0x0 0x128 0x1>, - <0x1300 0x0 0x0 0x2 0x1 0x0 0x0 0x0 0x129 0x1>, - <0x1300 0x0 0x0 0x3 0x1 0x0 0x0 0x0 0x12a 0x1>, - <0x1300 0x0 0x0 0x4 0x1 0x0 0x0 0x0 0x12b 0x1>; + <0x1300 0x0 0x0 0x1 &gic 0x0 0x0 0x0 0x128 0x1>, + <0x1300 0x0 0x0 0x2 &gic 0x0 0x0 0x0 0x129 0x1>, + <0x1300 0x0 0x0 0x3 &gic 0x0 0x0 0x0 0x12a 0x1>, + <0x1300 0x0 0x0 0x4 &gic 0x0 0x0 0x0 0x12b 0x1>; dma-coherent; dma-ranges = <0x43000000 0x0 0x0 0x0 0x0 0x100 0x0>; ranges = <0x1000000 0x0 0x00000000 0x0 0xefff0000 0x00 0x00010000>, /* I/O Memory (size=64K) */ @@ -352,43 +314,35 @@ reg-spacing = <4>; }; - clk250mhz_0 { + xgmacclk0_dma: clk250mhz_0 { compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <250000000>; clock-output-names = "xgmacclk0_dma_250mhz"; - linux,phandle = <0x5>; - phandle = <0x5>; }; - clk250mhz_1 { + xgmacclk0_ptp: clk250mhz_1 { compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <250000000>; clock-output-names = "xgmacclk0_ptp_250mhz"; - linux,phandle = <0x6>; - phandle = <0x6>; }; - clk250mhz_2 { + xgmacclk1_dma: clk250mhz_2 { compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <250000000>; clock-output-names = "xgmacclk1_dma_250mhz"; - linux,phandle = <0x7>; - phandle = <0x7>; }; - clk250mhz_3 { + xgmacclk1_ptp: clk250mhz_3 { compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <250000000>; clock-output-names = "xgmacclk1_ptp_250mhz"; - linux,phandle = <0x8>; - phandle = <0x8>; }; - phy@e1240800 { + xgmac0_phy: phy@e1240800 { status = "disabled"; compatible = "amd,xgbe-phy-seattle-v1a"; reg = <0x0 0xe1240800 0x0 0x0400>, /* SERDES RX/TX0 */ @@ -402,11 +356,9 @@ amd,serdes-tx-amp = <0xf 0xf 0xa>; amd,serdes-dfe-tap-config = <0x3 0x3 0x1>; amd,serdes-dfe-tap-enable = <0x0 0x0 0x7f>; - linux,phandle = <0x9>; - phandle = <0x9>; }; - phy@e1240c00 { + xgmac1_phy: phy@e1240c00 { status = "disabled"; compatible = "amd,xgbe-phy-seattle-v1a"; reg = <0x0 0xe1240c00 0x0 0x0400>, /* SERDES RX/TX0 */ @@ -420,8 +372,6 @@ amd,serdes-tx-amp = <0xf 0xf 0xa>; amd,serdes-dfe-tap-config = <0x3 0x3 0x1>; amd,serdes-dfe-tap-enable = <0x0 0x0 0x7f>; - linux,phandle = <0xa>; - phandle = <0xa>; }; xgmac0_smmu: smmu@e0600000 { @@ -461,14 +411,12 @@ <0x0 0x15d 0x1>; amd,per-channel-interrupt; mac-address = [02 a1 a2 a3 a4 a5]; - clocks = <0x5 0x6>; + clocks = <&xgmacclk0_dma &xgmacclk0_ptp>; clock-names = "dma_clk", "ptp_clk"; - phy-handle = <0x9>; + phy-handle = <&xgmac0_phy>; phy-mode = "xgmii"; dma-coherent; iommus = <&xgmac0_smmu 0x00 0x1f>; /* 0-31 */ - linux,phandle = <0xb>; - phandle = <0xb>; }; xgmac@e0900000 { @@ -482,25 +430,17 @@ <0x0 0x158 0x1>; amd,per-channel-interrupt; mac-address = [02 b1 b2 b3 b4 b5]; - clocks = <0x7 0x8>; + clocks = <&xgmacclk1_dma &xgmacclk1_ptp>; clock-names = "dma_clk", "ptp_clk"; - phy-handle = <0xa>; + phy-handle = <&xgmac1_phy>; phy-mode = "xgmii"; dma-coherent; iommus = <&xgmac1_smmu 0x00 0x1f>; /* 0-31 */ - linux,phandle = <0xc>; - phandle = <0xc>; }; }; chosen { stdout-path = "/smb/serial@e1010000"; - /* Note: - * Linux support for pci-probe-only DT is not - * stable. Disable this for now and let Linux - * take care of the resource assignment. - */ - // linux,pci-probe-only; }; psci { diff --git a/Platform/AMD/OverdriveBoard/FdtBlob/styx-overdrive.dtb b/Platform/AMD/OverdriveBoard/FdtBlob/styx-overdrive.dtb deleted file mode 100644 index c8e5fd980bce305186214aab10a7d399faa22500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9357 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 -- 2.19.2 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel