[OpenWrt-Devel] [PATCH] lantiq: use upstream mechanism to append device tree file

John Crispin john at phrozen.org
Sat Mar 19 13:08:00 EDT 2016



On 19/03/2016 17:27, Hauke Mehrtens wrote:
> Instead of using our patch-dtb program just place the device tree
> behind the kernel binary and then let the in kernel mechanism fetch it.
> This also adds support for having the device tree file in the boot
> loader.
> 
> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>

can you send 0120 and 0121 to ralf aswell please and add my acked-by to
them please.

	John


> ---
>  target/linux/lantiq/config-4.4                     |  8 ++--
>  target/linux/lantiq/image/Makefile                 |  4 +-
>  .../0002-MIPS-lantiq-dtb-image-hack.patch          | 31 --------------
>  .../0036-owrt-generic-dtb-image-hack.patch         | 32 ---------------
>  ...-add-support-for-device-tree-file-from-bo.patch | 48 ++++++++++++++++++++++
>  ...-make-it-possible-to-build-in-no-device-t.patch | 37 +++++++++++++++++
>  6 files changed, 91 insertions(+), 69 deletions(-)
>  delete mode 100644 target/linux/lantiq/patches-4.4/0002-MIPS-lantiq-dtb-image-hack.patch
>  delete mode 100644 target/linux/lantiq/patches-4.4/0036-owrt-generic-dtb-image-hack.patch
>  create mode 100644 target/linux/lantiq/patches-4.4/0120-MIPS-lantiq-add-support-for-device-tree-file-from-bo.patch
>  create mode 100644 target/linux/lantiq/patches-4.4/0121-MIPS-lantiq-make-it-possible-to-build-in-no-device-t.patch
> 
> diff --git a/target/linux/lantiq/config-4.4 b/target/linux/lantiq/config-4.4
> index 5d4b7cc..cf3ec47 100644
> --- a/target/linux/lantiq/config-4.4
> +++ b/target/linux/lantiq/config-4.4
> @@ -38,7 +38,7 @@ CONFIG_CRYPTO_WORKQUEUE=y
>  CONFIG_CSRC_R4K=y
>  CONFIG_DMA_NONCOHERENT=y
>  CONFIG_DTC=y
> -CONFIG_DT_EASY50712=y
> +# CONFIG_DT_EASY50712 is not set
>  CONFIG_EARLY_PRINTK=y
>  CONFIG_ETHERNET_PACKET_MANGLE=y
>  CONFIG_GENERIC_ATOMIC64=y
> @@ -108,6 +108,7 @@ CONFIG_IRQ_FORCED_THREADING=y
>  CONFIG_IRQ_MIPS_CPU=y
>  CONFIG_IRQ_WORK=y
>  CONFIG_LANTIQ=y
> +CONFIG_LANTIQ_DT_NONE=y
>  CONFIG_LANTIQ_ETOP=y
>  # CONFIG_LANTIQ_PHY is not set
>  CONFIG_LANTIQ_WDT=y
> @@ -125,8 +126,8 @@ CONFIG_MIPS_CMDLINE_FROM_DTB=y
>  CONFIG_MIPS_L1_CACHE_SHIFT=5
>  # CONFIG_MIPS_MACHINE is not set
>  # CONFIG_MIPS_MT_SMP is not set
> -CONFIG_MIPS_NO_APPENDED_DTB=y
> -# CONFIG_MIPS_RAW_APPENDED_DTB is not set
> +# CONFIG_MIPS_NO_APPENDED_DTB is not set
> +CONFIG_MIPS_RAW_APPENDED_DTB=y
>  CONFIG_MIPS_SPRAM=y
>  # CONFIG_MIPS_VPE_LOADER is not set
>  CONFIG_MODULES_USE_ELF_REL=y
> @@ -187,7 +188,6 @@ CONFIG_SPI=y
>  CONFIG_SPI_LANTIQ=y
>  CONFIG_SPI_MASTER=y
>  CONFIG_SRCU=y
> -# CONFIG_SUNXI_SRAM is not set
>  CONFIG_SWAP_IO_SPACE=y
>  CONFIG_SWCONFIG=y
>  CONFIG_SYSCTL_EXCEPTION_TRACE=y
> diff --git a/target/linux/lantiq/image/Makefile b/target/linux/lantiq/image/Makefile
> index 882fba8..c3cb48a 100644
> --- a/target/linux/lantiq/image/Makefile
> +++ b/target/linux/lantiq/image/Makefile
> @@ -32,8 +32,8 @@ endef
>  define PatchKernelLzma
>  	cp $(KDIR)/vmlinux$(2) $(KDIR)/vmlinux$(2)-$(1)
>  	$(LINUX_DIR)/scripts/dtc/dtc -O dtb -o $(KDIR)/$(1).dtb ../dts/$(1).dts
> -	$(STAGING_DIR_HOST)/bin/patch-dtb $(KDIR)/vmlinux$(2)-$(1) $(KDIR)/$(1).dtb
> -	$(call CompressLzma,$(KDIR)/vmlinux$(2)-$(1),$(KDIR)/vmlinux$(2)-$(1).lzma)
> +	cat $(KDIR)/vmlinux$(2)-$(1) $(KDIR)/$(1).dtb > $(KDIR)/vmlinux$(2)-$(1).tmp
> +	$(call CompressLzma,$(KDIR)/vmlinux$(2)-$(1).tmp,$(KDIR)/vmlinux$(2)-$(1).lzma)
>  endef
>  
>  define MkBrnImage
> diff --git a/target/linux/lantiq/patches-4.4/0002-MIPS-lantiq-dtb-image-hack.patch b/target/linux/lantiq/patches-4.4/0002-MIPS-lantiq-dtb-image-hack.patch
> deleted file mode 100644
> index 89a498d..0000000
> --- a/target/linux/lantiq/patches-4.4/0002-MIPS-lantiq-dtb-image-hack.patch
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -From 17348293f7f8103c97c8d2a6b0ef36eae06ec371 Mon Sep 17 00:00:00 2001
> -From: John Crispin <blogic at openwrt.org>
> -Date: Wed, 13 Mar 2013 09:36:16 +0100
> -Subject: [PATCH 02/36] MIPS: lantiq: dtb image hack
> -
> -Signed-off-by: John Crispin <blogic at openwrt.org>
> ----
> - arch/mips/lantiq/Makefile |    2 --
> - arch/mips/lantiq/prom.c   |    4 +++-
> - 2 files changed, 3 insertions(+), 3 deletions(-)
> -
> ---- a/arch/mips/lantiq/prom.c
> -+++ b/arch/mips/lantiq/prom.c
> -@@ -63,6 +63,8 @@ static void __init prom_init_cmdline(voi
> - 	}
> - }
> - 
> -+extern struct boot_param_header __image_dtb;
> -+
> - void __init plat_mem_setup(void)
> - {
> - 	ioport_resource.start = IOPORT_RESOURCE_START;
> -@@ -76,7 +78,7 @@ void __init plat_mem_setup(void)
> - 	 * Load the builtin devicetree. This causes the chosen node to be
> - 	 * parsed resulting in our memory appearing
> - 	 */
> --	__dt_setup_arch(__dtb_start);
> -+	__dt_setup_arch(&__image_dtb);
> - }
> - 
> - void __init device_tree_init(void)
> diff --git a/target/linux/lantiq/patches-4.4/0036-owrt-generic-dtb-image-hack.patch b/target/linux/lantiq/patches-4.4/0036-owrt-generic-dtb-image-hack.patch
> deleted file mode 100644
> index 7a306b3..0000000
> --- a/target/linux/lantiq/patches-4.4/0036-owrt-generic-dtb-image-hack.patch
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -From dba8578e06aedf1e67312ebfc6162e2fadc9448d Mon Sep 17 00:00:00 2001
> -From: John Crispin <blogic at openwrt.org>
> -Date: Thu, 7 Aug 2014 18:32:12 +0200
> -Subject: [PATCH 36/36] owrt: generic dtb image hack
> -
> -Signed-off-by: John Crispin <blogic at openwrt.org>
> ----
> - arch/mips/kernel/head.S |    3 +++
> - 1 file changed, 3 insertions(+)
> -
> ---- a/arch/mips/kernel/head.S
> -+++ b/arch/mips/kernel/head.S
> -@@ -86,6 +86,9 @@ EXPORT(__image_cmdline)
> - 	.fill	0x400
> - #endif /* CONFIG_IMAGE_CMDLINE_HACK */
> - 
> -+	.ascii  "OWRTDTB:"
> -+	EXPORT(__image_dtb)
> -+	.fill   0x4000
> - 	__REF
> - 
> - NESTED(kernel_entry, 16, sp)			# kernel entry point
> ---- a/arch/mips/lantiq/Kconfig
> -+++ b/arch/mips/lantiq/Kconfig
> -@@ -32,7 +32,6 @@ choice
> - config DT_EASY50712
> - 	bool "Easy50712"
> - 	depends on SOC_XWAY
> --	select BUILTIN_DTB
> - endchoice
> - 
> - config PCI_LANTIQ
> diff --git a/target/linux/lantiq/patches-4.4/0120-MIPS-lantiq-add-support-for-device-tree-file-from-bo.patch b/target/linux/lantiq/patches-4.4/0120-MIPS-lantiq-add-support-for-device-tree-file-from-bo.patch
> new file mode 100644
> index 0000000..3c6fa23
> --- /dev/null
> +++ b/target/linux/lantiq/patches-4.4/0120-MIPS-lantiq-add-support-for-device-tree-file-from-bo.patch
> @@ -0,0 +1,48 @@
> +From a32285ed4ba970b868b7fb49b716d776f4410ef6 Mon Sep 17 00:00:00 2001
> +From: Hauke Mehrtens <hauke at hauke-m.de>
> +Date: Sat, 19 Mar 2016 16:52:46 +0100
> +Subject: [PATCH] MIPS: lantiq: add support for device tree file from boot
> + loader
> +
> +This fetches the device tree file like it is specified in the MIPS UHI
> +interface if one was found. This is also used when the device tree file
> +was appended to the kernel image with cat.
> +This code is copied from arch/mips/bmips/setup.c.
> +
> +Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
> +---
> + arch/mips/lantiq/prom.c | 13 +++++++++++--
> + 1 file changed, 11 insertions(+), 2 deletions(-)
> +
> +--- a/arch/mips/lantiq/prom.c
> ++++ b/arch/mips/lantiq/prom.c
> +@@ -65,6 +65,8 @@ static void __init prom_init_cmdline(voi
> + 
> + void __init plat_mem_setup(void)
> + {
> ++	void *dtb;
> ++
> + 	ioport_resource.start = IOPORT_RESOURCE_START;
> + 	ioport_resource.end = IOPORT_RESOURCE_END;
> + 	iomem_resource.start = IOMEM_RESOURCE_START;
> +@@ -72,11 +74,18 @@ void __init plat_mem_setup(void)
> + 
> + 	set_io_port_base((unsigned long) KSEG1);
> + 
> ++	if (fw_arg0 == -2) /* UHI interface */
> ++		dtb = (void *)fw_arg1;
> ++	else if (__dtb_start != __dtb_end)
> ++		dtb = (void *)__dtb_start;
> ++	else
> ++		panic("no dtb found");
> ++
> + 	/*
> +-	 * Load the builtin devicetree. This causes the chosen node to be
> ++	 * Load the devicetree. This causes the chosen node to be
> + 	 * parsed resulting in our memory appearing
> + 	 */
> +-	__dt_setup_arch(__dtb_start);
> ++	__dt_setup_arch(dtb);
> + }
> + 
> + void __init device_tree_init(void)
> diff --git a/target/linux/lantiq/patches-4.4/0121-MIPS-lantiq-make-it-possible-to-build-in-no-device-t.patch b/target/linux/lantiq/patches-4.4/0121-MIPS-lantiq-make-it-possible-to-build-in-no-device-t.patch
> new file mode 100644
> index 0000000..2b7b6f1
> --- /dev/null
> +++ b/target/linux/lantiq/patches-4.4/0121-MIPS-lantiq-make-it-possible-to-build-in-no-device-t.patch
> @@ -0,0 +1,37 @@
> +From 8cfe01de7d5c974165c1383fcc9e1dad6953341d Mon Sep 17 00:00:00 2001
> +From: Hauke Mehrtens <hauke at hauke-m.de>
> +Date: Sat, 19 Mar 2016 17:06:00 +0100
> +Subject: [PATCH 2/2] MIPS: lantiq: make it possible to build in no device tree
> +
> +Now it is possible to build in no device tree at all and depend on the
> +boot loader providing one or someone concatenating a device tree to the
> +end of the image.
> +
> +This was copied from arch/mips/bmips/Kconfig
> +
> +Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
> +---
> + arch/mips/lantiq/Kconfig | 12 +++++++++++-
> + 1 file changed, 11 insertions(+), 1 deletion(-)
> +
> +--- a/arch/mips/lantiq/Kconfig
> ++++ b/arch/mips/lantiq/Kconfig
> +@@ -27,7 +27,17 @@ config SOC_FALCON
> + endchoice
> + 
> + choice
> +-	prompt "Devicetree"
> ++	prompt "Built-in device tree"
> ++	help
> ++	  Legacy bootloaders do not pass a DTB pointer to the kernel, so
> ++	  if a "wrapper" is not being used, the kernel will need to include
> ++	  a device tree that matches the target board.
> ++
> ++	  The builtin DTB will only be used if the firmware does not supply
> ++	  a valid DTB.
> ++
> ++config LANTIQ_DT_NONE
> ++	bool "None"
> + 
> + config DT_EASY50712
> + 	bool "Easy50712"
> 
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list