|
@@ -0,0 +1,198 @@
|
|
|
|
+From: Prasad Kummari <prasad.kummari@amd.com>
|
|
|
|
+Date: Fri, 6 Sep 2024 12:38:07 +0530
|
|
|
|
+Subject: [PATCH] kbuild: cherry-pick kbuild fdtoverlay changes from linux
|
|
|
|
+
|
|
|
|
+Linux commits:
|
|
|
|
+15d16d6dadf6 kbuild: Add generic rule to apply fdtoverlay
|
|
|
|
+44f87191d105 kbuild: parameterize the .o part of suffix-search
|
|
|
|
+
|
|
|
|
+The Linux commit 15d16d6dadf6 adds a generic rule in Makefile.lib
|
|
|
|
+to automatically apply fdtoverlay, so that each platform doesn't
|
|
|
|
+need to include a complex rule. This also automatically appends
|
|
|
|
+DTC_FLAGS_foo_base += -@ to all base files
|
|
|
|
+
|
|
|
|
+The platform's Makefile only needs to have this now:
|
|
|
|
+
|
|
|
|
+foo-dtbs := foo_base.dtb foo_overlay1.dtbo foo_overlay2.dtbo
|
|
|
|
+dtb-y := foo.dtb
|
|
|
|
+
|
|
|
|
+Signed-off-by: Prasad Kummari <prasad.kummari@amd.com>
|
|
|
|
+Reviewed-by: Tom Rini <trini@konsulko.com>
|
|
|
|
+Signed-off-by: Michal Simek <michal.simek@amd.com>
|
|
|
|
+Link: https://lore.kernel.org/r/20240906070808.1045991-2-prasad.kummari@amd.com
|
|
|
|
+Upstream: https://source.denx.de/u-boot/u-boot/-/commit/10de9b5a6a5b53a37600894115685f00d3bbfc2d
|
|
|
|
+---
|
|
|
|
+ arch/arm/dts/Makefile | 57 ++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
+ scripts/Kbuild.include | 4 +++
|
|
|
|
+ scripts/Makefile.build | 1 +
|
|
|
|
+ scripts/Makefile.lib | 27 ++++++++++++++++++++
|
|
|
|
+ 4 files changed, 89 insertions(+)
|
|
|
|
+
|
|
|
|
+diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
|
|
|
|
+index 48ca62521b8..8b6f65a61a2 100644
|
|
|
|
+--- a/arch/arm/dts/Makefile
|
|
|
|
++++ b/arch/arm/dts/Makefile
|
|
|
|
+@@ -477,6 +477,63 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += \
|
|
|
|
+ zynqmp-zc1751-xm017-dc3.dtb \
|
|
|
|
+ zynqmp-zc1751-xm018-dc4.dtb \
|
|
|
|
+ zynqmp-zc1751-xm019-dc5.dtb
|
|
|
|
++
|
|
|
|
++zynqmp-p-a2197-00-revA-x-prc-01-revA-dtbs := zynqmp-p-a2197-00-revA.dtb zynqmp-p-a2197-00-revA-x-prc-01-revA.dtbo
|
|
|
|
++zynqmp-p-a2197-00-revA-x-prc-02-revA-dtbs := zynqmp-p-a2197-00-revA.dtb zynqmp-p-a2197-00-revA-x-prc-02-revA.dtbo
|
|
|
|
++zynqmp-p-a2197-00-revA-x-prc-03-revA-dtbs := zynqmp-p-a2197-00-revA.dtb zynqmp-p-a2197-00-revA-x-prc-03-revA.dtbo
|
|
|
|
++zynqmp-p-a2197-00-revA-x-prc-04-revA-dtbs := zynqmp-p-a2197-00-revA.dtb zynqmp-p-a2197-00-revA-x-prc-04-revA.dtbo
|
|
|
|
++zynqmp-p-a2197-00-revA-x-prc-05-revA-dtbs := zynqmp-p-a2197-00-revA.dtb zynqmp-p-a2197-00-revA-x-prc-05-revA.dtbo
|
|
|
|
++
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-p-a2197-00-revA-x-prc-01-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-p-a2197-00-revA-x-prc-02-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-p-a2197-00-revA-x-prc-03-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-p-a2197-00-revA-x-prc-04-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-p-a2197-00-revA-x-prc-05-revA.dtb
|
|
|
|
++
|
|
|
|
++zynqmp-sc-vek280-revA-dtbs := zynqmp-sc-revB.dtb zynqmp-sc-vek280-revA.dtbo
|
|
|
|
++zynqmp-sc-vek280-revB-dtbs := zynqmp-sc-revC.dtb zynqmp-sc-vek280-revB.dtbo
|
|
|
|
++zynqmp-sc-vhk158-revA-dtbs := zynqmp-sc-revB.dtb zynqmp-sc-vhk158-revA.dtbo
|
|
|
|
++zynqmp-sc-vpk120-revB-dtbs := zynqmp-sc-revB.dtb zynqmp-sc-vpk120-revB.dtbo
|
|
|
|
++zynqmp-sc-vpk180-revA-dtbs := zynqmp-sc-revB.dtb zynqmp-sc-vpk180-revA.dtbo
|
|
|
|
++zynqmp-sc-vpk180-revB-dtbs := zynqmp-sc-revB.dtb zynqmp-sc-vpk180-revB.dtbo
|
|
|
|
++zynqmp-sc-vn-p-b2197-00-revA-dtbs := zynqmp-sc-revB.dtb zynqmp-sc-vn-p-b2197-00-revA.dtbo
|
|
|
|
++
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sc-vek280-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sc-vek280-revB.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sc-vhk158-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sc-vpk120-revB.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sc-vpk180-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sc-vpk180-revB.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sc-vn-p-b2197-00-revA.dtb
|
|
|
|
++
|
|
|
|
++zynqmp-sm-k26-revA-sck-kv-g-revA-dtbs := zynqmp-sm-k26-revA.dtb zynqmp-sck-kv-g-revA.dtbo
|
|
|
|
++zynqmp-sm-k26-revA-sck-kv-g-revB-dtbs := zynqmp-sm-k26-revA.dtb zynqmp-sck-kv-g-revB.dtbo
|
|
|
|
++zynqmp-smk-k26-revA-sck-kv-g-revA-dtbs := zynqmp-smk-k26-revA.dtb zynqmp-sck-kv-g-revA.dtbo
|
|
|
|
++zynqmp-smk-k26-revA-sck-kv-g-revB-dtbs := zynqmp-smk-k26-revA.dtb zynqmp-sck-kv-g-revB.dtbo
|
|
|
|
++
|
|
|
|
++zynqmp-sm-k26-revA-sck-kr-g-revA-dtbs := zynqmp-sm-k26-revA.dtb zynqmp-sck-kr-g-revA.dtbo
|
|
|
|
++zynqmp-sm-k26-revA-sck-kr-g-revB-dtbs := zynqmp-sm-k26-revA.dtb zynqmp-sck-kr-g-revB.dtbo
|
|
|
|
++zynqmp-smk-k26-revA-sck-kr-g-revA-dtbs := zynqmp-smk-k26-revA.dtb zynqmp-sck-kr-g-revA.dtbo
|
|
|
|
++zynqmp-smk-k26-revA-sck-kr-g-revB-dtbs := zynqmp-smk-k26-revA.dtb zynqmp-sck-kr-g-revB.dtbo
|
|
|
|
++
|
|
|
|
++zynqmp-sm-k24-revA-sck-kd-g-revA-dtbs := zynqmp-sm-k24-revA.dtb zynqmp-sck-kd-g-revA.dtbo
|
|
|
|
++zynqmp-smk-k24-revA-sck-kd-g-revA-dtbs := zynqmp-smk-k24-revA.dtb zynqmp-sck-kd-g-revA.dtbo
|
|
|
|
++zynqmp-sm-k24-revA-sck-kv-g-revB-dtbs := zynqmp-sm-k24-revA.dtb zynqmp-sck-kv-g-revB.dtbo
|
|
|
|
++zynqmp-smk-k24-revA-sck-kv-g-revB-dtbs := zynqmp-smk-k24-revA.dtb zynqmp-sck-kv-g-revB.dtbo
|
|
|
|
++
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sm-k26-revA-sck-kv-g-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sm-k26-revA-sck-kv-g-revB.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-smk-k26-revA-sck-kv-g-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-smk-k26-revA-sck-kv-g-revB.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sm-k26-revA-sck-kr-g-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sm-k26-revA-sck-kr-g-revB.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-smk-k26-revA-sck-kr-g-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-smk-k26-revA-sck-kr-g-revB.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sm-k24-revA-sck-kd-g-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-smk-k24-revA-sck-kd-g-revA.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sm-k24-revA-sck-kv-g-revB.dtb
|
|
|
|
++dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-smk-k24-revA-sck-kv-g-revB.dtb
|
|
|
|
++
|
|
|
|
+ dtb-$(CONFIG_ARCH_VERSAL) += \
|
|
|
|
+ versal-emb-plus-ve2302-revA.dtb \
|
|
|
|
+ versal-mini.dtb \
|
|
|
|
+diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
|
|
|
|
+index 62e0207f91b..5daceb26061 100644
|
|
|
|
+--- a/scripts/Kbuild.include
|
|
|
|
++++ b/scripts/Kbuild.include
|
|
|
|
+@@ -31,6 +31,10 @@ baseprereq = $(basename $(notdir $<))
|
|
|
|
+ # Escape single quote for use in echo statements
|
|
|
|
+ escsq = $(subst $(squote),'\$(squote)',$1)
|
|
|
|
+
|
|
|
|
++###
|
|
|
|
++# real prerequisites without phony targets
|
|
|
|
++real-prereqs = $(filter-out $(PHONY), $^)
|
|
|
|
++
|
|
|
|
+ ###
|
|
|
|
+ # Easy method for doing a status message
|
|
|
|
+ kecho := :
|
|
|
|
+diff --git a/scripts/Makefile.build b/scripts/Makefile.build
|
|
|
|
+index 97dd4a64f6e..b3bb8e558d3 100644
|
|
|
|
+--- a/scripts/Makefile.build
|
|
|
|
++++ b/scripts/Makefile.build
|
|
|
|
+@@ -293,6 +293,7 @@ $(obj)/%.o: $(src)/%.S FORCE
|
|
|
|
+
|
|
|
|
+ targets += $(real-objs-y) $(real-objs-m) $(lib-y)
|
|
|
|
+ targets += $(extra-y) $(MAKECMDGOALS) $(always)
|
|
|
|
++targets += $(real-dtb-y) $(lib-y) $(always-y)
|
|
|
|
+
|
|
|
|
+ # Linker scripts preprocessor (.lds.S -> .lds)
|
|
|
|
+ # ---------------------------------------------------------------------------
|
|
|
|
+diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
|
|
|
|
+index 16bbc277a9f..b867941816d 100644
|
|
|
|
+--- a/scripts/Makefile.lib
|
|
|
|
++++ b/scripts/Makefile.lib
|
|
|
|
+@@ -47,6 +47,13 @@ obj-m := $(filter-out %/, $(obj-m))
|
|
|
|
+
|
|
|
|
+ subdir-ym := $(sort $(subdir-y) $(subdir-m))
|
|
|
|
+
|
|
|
|
++# Expand $(foo-objs) $(foo-y) etc. by replacing their individuals
|
|
|
|
++suffix-search = $(strip $(foreach s, $3, $($(1:%$(strip $2)=%$s))))
|
|
|
|
++# List composite targets that are constructed by combining other targets
|
|
|
|
++multi-search = $(sort $(foreach m, $1, $(if $(call suffix-search, $m, $2, $3 -), $m)))
|
|
|
|
++# List primitive targets that are compiled from source files
|
|
|
|
++real-search = $(foreach m, $1, $(if $(call suffix-search, $m, $2, $3 -), $(call suffix-search, $m, $2, $3), $m))
|
|
|
|
++
|
|
|
|
+ # if $(foo-objs) exists, foo.o is a composite object
|
|
|
|
+ multi-used-y := $(sort $(foreach m,$(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m))))
|
|
|
|
+ multi-used-m := $(sort $(foreach m,$(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m))))
|
|
|
|
+@@ -58,6 +65,13 @@ single-used-m := $(sort $(filter-out $(multi-used-m),$(obj-m)))
|
|
|
|
+ multi-objs-y := $(foreach m, $(multi-used-y), $($(m:.o=-objs)) $($(m:.o=-y)))
|
|
|
|
+ multi-objs-m := $(foreach m, $(multi-used-m), $($(m:.o=-objs)) $($(m:.o=-y)))
|
|
|
|
+
|
|
|
|
++# Composite DTB (i.e. DTB constructed by overlay)
|
|
|
|
++multi-dtb-y := $(call multi-search, $(dtb-y), .dtb, -dtbs)
|
|
|
|
++# Primitive DTB compiled from *.dts
|
|
|
|
++real-dtb-y := $(call real-search, $(dtb-y), .dtb, -dtbs)
|
|
|
|
++# Base DTB that overlay is applied onto (each first word of $(*-dtbs) expansion)
|
|
|
|
++base-dtb-y := $(foreach m, $(multi-dtb-y), $(firstword $(call suffix-search, $m, .dtb, -dtbs)))
|
|
|
|
++
|
|
|
|
+ # $(subdir-obj-y) is the list of objects in $(obj-y) which uses dir/ to
|
|
|
|
+ # tell kbuild to descend
|
|
|
|
+ subdir-obj-y := $(filter %/built-in.o, $(obj-y))
|
|
|
|
+@@ -69,6 +83,7 @@ real-objs-m := $(foreach m, $(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)
|
|
|
|
+ # Add subdir path
|
|
|
|
+
|
|
|
|
+ extra-y := $(addprefix $(obj)/,$(extra-y))
|
|
|
|
++always-y := $(addprefix $(obj)/,$(always-y))
|
|
|
|
+ always := $(addprefix $(obj)/,$(always))
|
|
|
|
+ targets := $(addprefix $(obj)/,$(targets))
|
|
|
|
+ modorder := $(addprefix $(obj)/,$(modorder))
|
|
|
|
+@@ -83,6 +98,8 @@ multi-used-y := $(addprefix $(obj)/,$(multi-used-y))
|
|
|
|
+ multi-used-m := $(addprefix $(obj)/,$(multi-used-m))
|
|
|
|
+ multi-objs-y := $(addprefix $(obj)/,$(multi-objs-y))
|
|
|
|
+ multi-objs-m := $(addprefix $(obj)/,$(multi-objs-m))
|
|
|
|
++multi-dtb-y := $(addprefix $(obj)/,$(multi-dtb-y))
|
|
|
|
++real-dtb-y := $(addprefix $(obj)/,$(real-dtb-y))
|
|
|
|
+ subdir-ym := $(addprefix $(obj)/,$(subdir-ym))
|
|
|
|
+
|
|
|
|
+ # These flags are needed for modversions and compiling, so we define them here
|
|
|
|
+@@ -296,6 +313,9 @@ endif
|
|
|
|
+
|
|
|
|
+ DTC_FLAGS += $(DTC_FLAGS_$(basetarget))
|
|
|
|
+
|
|
|
|
++# Set -@ if the target is a base DTB that overlay is applied onto
|
|
|
|
++DTC_FLAGS += $(if $(filter $(patsubst $(obj)/%,%,$@), $(base-dtb-y)), -@)
|
|
|
|
++
|
|
|
|
+ # Generate an assembly file to wrap the output of the device tree compiler
|
|
|
|
+ quiet_cmd_dt_S_dtb= DTB $@
|
|
|
|
+ # Modified for U-Boot
|
|
|
|
+@@ -382,6 +402,13 @@ $(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE
|
|
|
|
+ $(obj)/%.dtbo: $(src)/%.dtso $(DTC) FORCE
|
|
|
|
+ $(call if_changed_dep,dtco)
|
|
|
|
+
|
|
|
|
++quiet_cmd_fdtoverlay = DTOVL $@
|
|
|
|
++ cmd_fdtoverlay = fdtoverlay -o $@ -i $(real-prereqs)
|
|
|
|
++
|
|
|
|
++$(multi-dtb-y): FORCE
|
|
|
|
++ $(call if_changed,fdtoverlay)
|
|
|
|
++$(call multi_depend, $(multi-dtb-y), .dtb, -dtbs)
|
|
|
|
++
|
|
|
|
+ # Fonts
|
|
|
|
+ # ---------------------------------------------------------------------------
|
|
|
|
+
|