瀏覽代碼

Merge branch 'next'

Peter Korsgaard 3 年之前
父節點
當前提交
46ccda3a2f
共有 100 個文件被更改,包括 1130 次插入4177 次删除
  1. 9 0
      Config.in.legacy
  2. 10 0
      DEVELOPERS
  3. 1 1
      board/altera/socrates_cyclone5/genimage.cfg
  4. 0 1783
      board/beagleboneai/patches/uboot/0001-BeagleBone-AI-support.patch
  5. 839 0
      board/beagleboneai/patches/uboot/0001-am57xx_evm-fixes.patch
  6. 1 1
      board/friendlyarm/nanopi-neo2/genimage.cfg
  7. 1 1
      board/kontron/pitx-imx8m/genimage.cfg
  8. 1 1
      board/kontron/smarc-sal28/genimage.cfg
  9. 1 1
      board/minnowboard/genimage.cfg
  10. 1 1
      board/nezha/genimage.cfg
  11. 1 1
      board/olimex/a20_olinuxino/genimage.cfg
  12. 1 1
      board/orangepi/orangepi-pc2/genimage.cfg
  13. 29 0
      board/raspberrypi/config_zero2w.txt
  14. 32 0
      board/raspberrypi/genimage-raspberrypizero2w.cfg
  15. 10 0
      board/raspberrypi/readme.txt
  16. 1 0
      board/raspberrypizero2w
  17. 2 2
      boot/barebox/Config.in
  18. 3 3
      boot/barebox/barebox.hash
  19. 6 5
      configs/beagleboneai_defconfig
  20. 3 3
      configs/globalscale_espressobin_defconfig
  21. 4 4
      configs/imx6-sabreauto_defconfig
  22. 6 6
      configs/orangepi_lite_defconfig
  23. 1 1
      configs/raspberrypi0_defconfig
  24. 1 1
      configs/raspberrypi0w_defconfig
  25. 1 1
      configs/raspberrypi2_defconfig
  26. 1 1
      configs/raspberrypi3_64_defconfig
  27. 1 1
      configs/raspberrypi3_defconfig
  28. 1 1
      configs/raspberrypi3_qt5we_defconfig
  29. 1 1
      configs/raspberrypi4_64_defconfig
  30. 1 1
      configs/raspberrypi4_defconfig
  31. 1 1
      configs/raspberrypi_defconfig
  32. 1 1
      configs/raspberrypicm4io_64_defconfig
  33. 1 1
      configs/raspberrypicm4io_defconfig
  34. 36 0
      configs/raspberrypizero2w_defconfig
  35. 6 0
      docs/manual/writing-rules.txt
  36. 10 1
      package/Config.in
  37. 0 37
      package/assimp/0001-Fix-FBXConverter-use-proper-64-bit-constant.patch
  38. 0 1638
      package/assimp/0002-closes-2733-update-of-zlip-to-fix-gcc-build-for-v9-2-0-32-bit.patch
  39. 0 243
      package/assimp/0003-closes-2954-upgrade-to-latest-greatest.patch
  40. 2 2
      package/assimp/assimp.hash
  41. 1 1
      package/assimp/assimp.mk
  42. 0 43
      package/azmq/0001-Conditionally-disable-test-and-doc-builds.patch
  43. 3 5
      package/azmq/Config.in
  44. 2 3
      package/azmq/azmq.hash
  45. 3 1
      package/azmq/azmq.mk
  46. 0 33
      package/bdwgc/0001-Fix-undefined-reference-to-__data_start-linker-error.patch
  47. 1 1
      package/bdwgc/Config.in
  48. 2 2
      package/bdwgc/bdwgc.hash
  49. 2 2
      package/bdwgc/bdwgc.mk
  50. 7 1
      package/bind/bind.mk
  51. 1 1
      package/bitwise/bitwise.hash
  52. 1 1
      package/bitwise/bitwise.mk
  53. 1 1
      package/cwiid/Config.in
  54. 1 1
      package/dehydrated/Config.in
  55. 2 2
      package/dehydrated/dehydrated.hash
  56. 2 2
      package/dehydrated/dehydrated.mk
  57. 10 8
      package/dmalloc/0001-mips.patch
  58. 0 18
      package/dmalloc/0002-fix-parallel-build.patch
  59. 0 46
      package/dmalloc/0003-fix-shlibs.patch
  60. 0 24
      package/dmalloc/0004-fix-strdup.patch
  61. 0 24
      package/dmalloc/0005-fix-strndup.patch
  62. 2 2
      package/dmalloc/dmalloc.hash
  63. 3 4
      package/dmalloc/dmalloc.mk
  64. 1 1
      package/dovecot-pigeonhole/dovecot-pigeonhole.hash
  65. 1 1
      package/dovecot-pigeonhole/dovecot-pigeonhole.mk
  66. 1 1
      package/dovecot/dovecot.hash
  67. 1 1
      package/dovecot/dovecot.mk
  68. 0 57
      package/easyframes/0001-CMakesLists.txt-fix-static-build-with-pcap.patch
  69. 0 91
      package/easyframes/0002-Fix-different-compiling-issues.patch
  70. 2 2
      package/easyframes/easyframes.hash
  71. 1 1
      package/easyframes/easyframes.mk
  72. 1 1
      package/ell/ell.hash
  73. 1 1
      package/ell/ell.mk
  74. 3 3
      package/enlightenment/Config.in
  75. 2 2
      package/fetchmail/fetchmail.hash
  76. 1 1
      package/fetchmail/fetchmail.mk
  77. 1 1
      package/fswebcam/fswebcam.hash
  78. 1 1
      package/fswebcam/fswebcam.mk
  79. 2 2
      package/fwts/fwts.hash
  80. 1 1
      package/fwts/fwts.mk
  81. 1 1
      package/fwup/fwup.hash
  82. 2 2
      package/fwup/fwup.mk
  83. 3 1
      package/gcr/gcr.mk
  84. 3 3
      package/gdbm/gdbm.hash
  85. 1 1
      package/gdbm/gdbm.mk
  86. 1 1
      package/genimage/genimage.hash
  87. 1 1
      package/genimage/genimage.mk
  88. 3 3
      package/gnuradio/gnuradio.mk
  89. 6 6
      package/gstreamer1/gst1-plugins-bad/Config.in
  90. 3 3
      package/gstreamer1/gst1-plugins-base/Config.in
  91. 2 2
      package/haproxy/haproxy.hash
  92. 1 1
      package/haproxy/haproxy.mk
  93. 3 3
      package/harfbuzz/Config.in
  94. 1 1
      package/harfbuzz/harfbuzz.hash
  95. 1 1
      package/harfbuzz/harfbuzz.mk
  96. 1 1
      package/hwdata/hwdata.hash
  97. 1 1
      package/hwdata/hwdata.mk
  98. 2 2
      package/ima-evm-utils/ima-evm-utils.hash
  99. 1 1
      package/ima-evm-utils/ima-evm-utils.mk
  100. 2 2
      package/inadyn/inadyn.hash

+ 9 - 0
Config.in.legacy

@@ -144,6 +144,15 @@ endif
 
 
 ###############################################################################
 ###############################################################################
 
 
+comment "Legacy options removed in 2022.02"
+
+config BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE
+	bool "libmediaart 'none' backend removed"
+	select BR2_LEGACY
+	help
+	  'none' backend has been removed from libmediaart since version
+	  1.9.5.
+
 comment "Legacy options removed in 2021.11"
 comment "Legacy options removed in 2021.11"
 
 
 config BR2_OPENJDK_VERSION_LTS
 config BR2_OPENJDK_VERSION_LTS

+ 10 - 0
DEVELOPERS

@@ -1098,6 +1098,7 @@ F:	package/python-pyjwt/
 F:	package/python-redis/
 F:	package/python-redis/
 F:	package/python-rpi-ws281x/
 F:	package/python-rpi-ws281x/
 F:	package/python-wtforms/
 F:	package/python-wtforms/
+F:	package/rpi-rgb-led-matrix/
 
 
 N:	Guillaume William Brs <guillaume.bressaix@gmail.com>
 N:	Guillaume William Brs <guillaume.bressaix@gmail.com>
 F:	package/libnids/
 F:	package/libnids/
@@ -1257,17 +1258,24 @@ F:	package/python-brotli/
 F:	package/python-cbor2/
 F:	package/python-cbor2/
 F:	package/python-cchardet/
 F:	package/python-cchardet/
 F:	package/python-charset-normalizer/
 F:	package/python-charset-normalizer/
+F:	package/python-cssselect2/
 F:	package/python-flatbuffers/
 F:	package/python-flatbuffers/
+F:	package/python-fonttools/
 F:	package/python-frozenlist/
 F:	package/python-frozenlist/
 F:	package/python-greenlet/
 F:	package/python-greenlet/
 F:	package/python-janus/
 F:	package/python-janus/
 F:	package/python-logstash/
 F:	package/python-logstash/
 F:	package/python-multidict/
 F:	package/python-multidict/
 F:	package/python-pycares/
 F:	package/python-pycares/
+F:	package/python-pydyf/
+F:	package/python-pyphen/
 F:	package/python-snappy/
 F:	package/python-snappy/
 F:	package/python-sockjs/
 F:	package/python-sockjs/
 F:	package/python-terminaltables/
 F:	package/python-terminaltables/
+F:	package/python-tinycss2/
+F:	package/python-weasyprint/
 F:	package/python-yarl/
 F:	package/python-yarl/
+F:	package/python-zopfli/
 
 
 N:	James Knight <james.knight@collins.com>
 N:	James Knight <james.knight@collins.com>
 F:	package/atkmm/
 F:	package/atkmm/
@@ -1514,7 +1522,9 @@ N:	Julien Corjon <corjon.j@ecagroup.com>
 F:	package/qt5/
 F:	package/qt5/
 
 
 N:	Julien Grossholtz <julien.grossholtz@openest.io>
 N:	Julien Grossholtz <julien.grossholtz@openest.io>
+F:	board/raspberrypi/
 F:	board/technologic/ts7680/
 F:	board/technologic/ts7680/
+F:	configs/raspberrypizero2w_defconfig
 F:	configs/ts7680_defconfig
 F:	configs/ts7680_defconfig
 F:	package/paho-mqtt-c
 F:	package/paho-mqtt-c
 
 

+ 1 - 1
board/altera/socrates_cyclone5/genimage.cfg

@@ -24,7 +24,7 @@ image uboot.img {
 	partition uboot-full {
 	partition uboot-full {
 		in-partition-table = "no"
 		in-partition-table = "no"
 		image = "u-boot.img"
 		image = "u-boot.img"
-		offset = 256k
+		offset = 256K
 	}
 	}
 
 
 	size = 1M
 	size = 1M

+ 0 - 1783
board/beagleboneai/patches/uboot/0001-BeagleBone-AI-support.patch

@@ -1,1783 +0,0 @@
-From 989c27c791a453550ff6c1440b41c55c6e70615d Mon Sep 17 00:00:00 2001
-From: Jason Kridner <jdk@ti.com>
-Date: Wed, 27 Mar 2019 14:06:24 -0400
-Subject: [PATCH] BeagleBone AI support
-
-Patch from:
-https://github.com/beagleboard/beaglebone-ai/blob/master/SW/buildroot/local/patches/uboot/0001-BeagleBone-AI-support.patch
-
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
----
- arch/arm/dts/Makefile                |   1 +
- arch/arm/dts/am5729-beagleboneai.dts | 494 +++++++++++++++++++++++++++
- arch/arm/mach-omap2/omap5/hw_data.c  |   3 +-
- board/ti/am57xx/board.c              | 134 +++++++-
- board/ti/am57xx/mux_data.h           | 390 +++++++++++++++++++++
- configs/am57xx_evm_defconfig         |  10 +-
- include/configs/am57xx_evm.h         |   2 +-
- include/configs/ti_armv7_common.h    | 357 +++++++++++++++++++
- include/configs/ti_omap5_common.h    |   5 +
- include/environment/ti/boot.h        |  49 +--
- include/environment/ti/mmc.h         |  45 ++-
- 11 files changed, 1447 insertions(+), 43 deletions(-)
- create mode 100644 arch/arm/dts/am5729-beagleboneai.dts
-
-diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
-index 2a040b20a5..6771d457a4 100644
---- a/arch/arm/dts/Makefile
-+++ b/arch/arm/dts/Makefile
-@@ -232,6 +232,7 @@ dtb-$(CONFIG_TARGET_DRA7XX_EVM) += dra72-evm.dtb dra7-evm.dtb	\
- dtb-$(CONFIG_TARGET_AM57XX_EVM) += am57xx-beagle-x15.dtb \
- 	am57xx-beagle-x15-revb1.dtb \
- 	am57xx-beagle-x15-revc.dtb \
-+	am5729-beagleboneai.dtb \
- 	am574x-idk.dtb \
- 	am572x-idk.dtb	\
- 	am571x-idk.dtb
-diff --git a/arch/arm/dts/am5729-beagleboneai.dts b/arch/arm/dts/am5729-beagleboneai.dts
-new file mode 100644
-index 0000000000..d1afe55751
---- /dev/null
-+++ b/arch/arm/dts/am5729-beagleboneai.dts
-@@ -0,0 +1,494 @@
-+/*
-+ * Copyright (C) 2014-2018 Texas Instruments Incorporated - http://www.ti.com/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+/dts-v1/;
-+
-+#include "dra74x.dtsi"
-+#include "am57xx-commercial-grade.dtsi"
-+#include "dra74x-mmc-iodelay.dtsi"
-+#include <dt-bindings/gpio/gpio.h>
-+#include <dt-bindings/interrupt-controller/irq.h>
-+#include <dt-bindings/pinctrl/dra.h>
-+
-+/ {
-+	model = "BeagleBoard.org BeagleBone AI";
-+	compatible = "beagleboard.org,am57xx-beagleboneai", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
-+
-+	chosen {
-+		stdout-path = &uart1;
-+	};
-+
-+	memory@0 {
-+		device_type = "memory";
-+		reg = <0x0 0x80000000 0x0 0x40000000>;
-+	};
-+
-+	vdd_5v: fixedregulator-vdd_5v {
-+		compatible = "regulator-fixed";
-+		regulator-name = "vdd_5v";
-+		regulator-min-microvolt = <5000000>;
-+		regulator-max-microvolt = <5000000>;
-+		regulator-always-on;
-+		regulator-boot-on;
-+	};
-+
-+	vtt_fixed: fixedregulator-vtt {
-+		/* TPS51200 */
-+		compatible = "regulator-fixed";
-+		regulator-name = "vtt_fixed";
-+		vin-supply = <&vdd_3v3>;
-+		regulator-min-microvolt = <3300000>;
-+		regulator-max-microvolt = <3300000>;
-+		regulator-always-on;
-+		regulator-boot-on;
-+	};
-+
-+	src_clk_x1: src_clk_x1 {
-+		#clock-cells = <0>;
-+		compatible = "fixed-clock";
-+		clock-frequency = <20000000>;
-+	};
-+
-+	src_clk_osc1: src_clk_osc1 {
-+		#clock-cells = <0>;
-+		compatible = "fixed-clock";
-+		clock-frequency = <24000000>;
-+	};
-+
-+	src_clk_osc4: src_clk_osc4 {
-+        	#clock-cells = <0>;
-+        	compatible = "fixed-clock";
-+        	clock-frequency = <24000000>;
-+    	};
-+
-+	leds {
-+		compatible = "gpio-leds";
-+
-+		led0 {
-+			label = "beaglebone:green:usr0";
-+			gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>;
-+			linux,default-trigger = "heartbeat";
-+			default-state = "off";
-+		};
-+
-+		led1 {
-+			label = "beaglebone:green:usr1";
-+			gpios = <&gpio3 15 GPIO_ACTIVE_HIGH>;
-+			linux,default-trigger = "mmc0";
-+			default-state = "off";
-+		};
-+
-+		led2 {
-+			label = "beaglebone:green:usr2";
-+			gpios = <&gpio5 5 GPIO_ACTIVE_HIGH>;
-+			linux,default-trigger = "cpu";
-+			default-state = "off";
-+		};
-+
-+		led3 {
-+			label = "beaglebone:green:usr3";
-+			gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>;
-+			linux,default-trigger = "mmc1";
-+			default-state = "off";
-+		};
-+	};
-+};
-+
-+&i2c1 {
-+	status = "okay";
-+	clock-frequency = <400000>;
-+
-+	tps659038: tps659038@58 {
-+		compatible = "ti,tps659038";
-+		reg = <0x58>;
-+		interrupts-extended = <&gpio6 16 IRQ_TYPE_LEVEL_HIGH
-+			&dra7_pmx_core 0x418>;
-+
-+		#interrupt-cells = <2>;
-+		interrupt-controller;
-+
-+		ti,system-power-controller;
-+		ti,palmas-override-powerhold;
-+
-+		tps659038_pmic {
-+			compatible = "ti,tps659038-pmic";
-+
-+			smps12-in-supply = <&vdd_5v>;
-+			smps3-in-supply = <&vdd_5v>;
-+			smps45-in-supply = <&vdd_5v>;
-+			smps6-in-supply = <&vdd_5v>;
-+			smps7-in-supply = <&vdd_5v>;
-+			mps3-in-supply = <&vdd_5v>;
-+			smps8-in-supply = <&vdd_5v>;
-+			smps9-in-supply = <&vdd_5v>;
-+			ldo1-in-supply = <&vdd_5v>;
-+			ldo2-in-supply = <&vdd_5v>;
-+			ldo3-in-supply = <&vdd_5v>;
-+			ldo4-in-supply = <&vdd_5v>;
-+			ldo9-in-supply = <&vdd_5v>;
-+			ldoln-in-supply = <&vdd_5v>;
-+			ldousb-in-supply = <&vdd_5v>;
-+			ldortc-in-supply = <&vdd_5v>;
-+
-+			regulators {
-+				vdd_mpu: smps12 {
-+					/* VDD_MPU */
-+					regulator-name = "smps12";
-+					regulator-min-microvolt = <850000>;
-+					regulator-max-microvolt = <1250000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				vdd_ddr: smps3 {
-+					/* VDD_DDR EMIF1 EMIF2 */
-+					regulator-name = "smps3";
-+					regulator-min-microvolt = <1350000>;
-+					regulator-max-microvolt = <1350000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				vdd_dspeve: smps45 {
-+					/* VDD_DSPEVE on AM572 */
-+					/* VDD_IVA + VDD_DSP on AM571 */
-+					regulator-name = "smps45";
-+					regulator-min-microvolt = <850000>;
-+					regulator-max-microvolt = <1250000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				vdd_gpu: smps6 {
-+					/* VDD_GPU */
-+					regulator-name = "smps6";
-+					regulator-min-microvolt = <850000>;
-+					regulator-max-microvolt = <1250000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				vdd_core: smps7 {
-+					/* VDD_CORE */
-+					regulator-name = "smps7";
-+					regulator-min-microvolt = <850000>;	/*** 1.15V */
-+					regulator-max-microvolt = <1150000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				vdd_iva: smps8 {
-+					/* 5728 - VDD_IVAHD */			/*** 1.06V */
-+					/* 5718 - N.C. test point */
-+					regulator-name = "smps8";
-+				};
-+
-+				vdd_3v3: smps9 {
-+					/* VDD_3V3 */
-+					regulator-name = "smps9";
-+					regulator-min-microvolt = <3300000>;
-+					regulator-max-microvolt = <3300000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				vdd_sd: ldo1 {
-+					/* VDDSHV8 - VSDMMC  */
-+					regulator-name = "ldo1";
-+					regulator-min-microvolt = <1800000>;
-+					regulator-max-microvolt = <3300000>;
-+					regulator-boot-on;
-+					regulator-always-on;
-+				};
-+
-+				vdd_1v8: ldo2 {
-+					/* VDDSH18V */
-+					regulator-name = "ldo2";
-+					regulator-min-microvolt = <1800000>;
-+					regulator-max-microvolt = <1800000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				vdd_1v8_phy_ldo3: ldo3 {
-+					/* R1.3a 572x V1_8PHY_LDO3: USB, SATA */
-+					regulator-name = "ldo3";
-+					regulator-min-microvolt = <1800000>;
-+					regulator-max-microvolt = <1800000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				vdd_1v8_phy_ldo4: ldo4 {
-+					/* R1.3a 572x V1_8PHY_LDO4: PCIE, HDMI*/
-+					regulator-name = "ldo4";
-+					regulator-min-microvolt = <1800000>;
-+					regulator-max-microvolt = <1800000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				/* LDO5-8 unused */
-+
-+				vdd_rtc: ldo9 {
-+					/* VDD_RTC  */
-+					regulator-name = "ldo9";
-+					regulator-min-microvolt = <840000>;
-+					regulator-max-microvolt = <1160000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				vdd_1v8_pll: ldoln {
-+					/* VDDA_1V8_PLL */
-+					regulator-name = "ldoln";
-+					regulator-min-microvolt = <1800000>;
-+					regulator-max-microvolt = <1800000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				ldousb_reg: ldousb {
-+					/* VDDA_3V_USB: VDDA_USBHS33 */
-+					regulator-name = "ldousb";
-+					regulator-min-microvolt = <3300000>;
-+					regulator-max-microvolt = <3300000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				ldortc_reg: ldortc {
-+					/* VDDA_RTC  */
-+					regulator-name = "ldortc";
-+					regulator-min-microvolt = <1800000>;
-+					regulator-max-microvolt = <1800000>;
-+					regulator-always-on;
-+					regulator-boot-on;
-+				};
-+
-+				regen1: regen1 {
-+					/* VDD_3V3_ON */
-+					regulator-name = "regen1";
-+					regulator-boot-on;
-+					regulator-always-on;
-+				};
-+
-+				regen2: regen2 {
-+					/* Needed for PMIC internal resource */
-+					regulator-name = "regen2";
-+					regulator-boot-on;
-+					regulator-always-on;
-+				};
-+			};
-+		};
-+
-+		tps659038_rtc: tps659038_rtc {
-+			compatible = "ti,palmas-rtc";
-+			interrupt-parent = <&tps659038>;
-+			interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
-+			wakeup-source;
-+		};
-+
-+		tps659038_pwr_button: tps659038_pwr_button {
-+			compatible = "ti,palmas-pwrbutton";
-+			interrupt-parent = <&tps659038>;
-+			interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
-+			wakeup-source;
-+			ti,palmas-long-press-seconds = <12>;
-+		};
-+
-+		tps659038_gpio: tps659038_gpio {
-+			compatible = "ti,palmas-gpio";
-+			gpio-controller;
-+			#gpio-cells = <2>;
-+		};
-+
-+		extcon_usb2: tps659038_usb {
-+			compatible = "ti,palmas-usb-vid";
-+		};
-+
-+	};
-+
-+	eeprom: eeprom@50 {
-+		compatible = "atmel,24c32";
-+		reg = <0x50>;
-+	};
-+};
-+
-+&i2c2 {
-+	status = "okay";
-+	clock-frequency = <400000>;
-+};
-+
-+&i2c3 {
-+	status = "okay";
-+	clock-frequency = <400000>;
-+};
-+
-+&i2c4 {
-+	status = "okay";
-+	clock-frequency = <100000>;
-+};
-+
-+&i2c5 {
-+	status = "okay";
-+	clock-frequency = <100000>;
-+};
-+
-+&cpu0 {
-+	vdd-supply = <&vdd_mpu>;
-+	voltage-tolerance = <1>;
-+};
-+
-+&uart1 {
-+	status = "okay";
-+	interrupts-extended = <&crossbar_mpu GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
-+			      <&dra7_pmx_core 0x3e0>;
-+};
-+
-+&uart3 {
-+	status = "okay";
-+	interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
-+			      <&dra7_pmx_core 0x3f8>;
-+};
-+
-+&davinci_mdio {
-+	reset-gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
-+	reset-delay-us = <2>;
-+
-+	phy0: ethernet-phy@1 {
-+		reg = <4>;
-+	};
-+};
-+
-+&mac {
-+	slaves = <1>;
-+	status = "okay";
-+	//dual_emac;
-+};
-+
-+&cpsw_emac0 {
-+	phy-handle = <&phy0>;
-+	phy-mode = "rgmii";
-+	//dual_emac_res_vlan = <1>;
-+};
-+
-+&mmc1 {
-+	status = "okay";
-+	vmmc-supply = <&vdd_3v3>;
-+	vmmc_aux-supply = <&vdd_sd>;
-+	vqmmc-supply = <&vdd_sd>;  /* IO Line Power */
-+	bus-width = <4>;
-+	max-frequency = <24000000>;
-+	cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>; /* gpio 219 */
-+
-+	pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";
-+	pinctrl-0 = <&mmc1_pins_default>;
-+	pinctrl-1 = <&mmc1_pins_hs>;
-+	pinctrl-2 = <&mmc1_pins_sdr12>;
-+	pinctrl-3 = <&mmc1_pins_sdr25>;
-+	pinctrl-4 = <&mmc1_pins_sdr50>;
-+	pinctrl-5 = <&mmc1_pins_ddr50 &mmc1_iodelay_ddr_rev20_conf>;
-+	pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev20_conf>;
-+};
-+
-+&mmc2 {
-+	status = "okay";
-+	vmmc-supply = <&vdd_3v3>;
-+	//FUTURE: vqmmc-supply = <&vdd_3v3>; /* IO Line Power */
-+	bus-width = <8>;
-+	ti,non-removable;
-+	non-removable;
-+	max-frequency = <96000000>;
-+	no-1-8-v;
-+	/delete-property/ mmc-hs200-1_8v;
-+
-+	pinctrl-names = "default", "hs";
-+	pinctrl-0 = <&mmc2_pins_default>;
-+	pinctrl-1 = <&mmc2_pins_hs>;
-+};
-+
-+&usb2_phy1 {
-+	phy-supply = <&ldousb_reg>;
-+};
-+
-+&usb2_phy2 {
-+	phy-supply = <&ldousb_reg>;
-+};
-+
-+&usb1 {
-+	dr_mode = "host";
-+};
-+
-+&omap_dwc3_2 {
-+	extcon = <&extcon_usb2>;
-+};
-+
-+&usb2 {
-+	dr_mode = "peripheral";
-+};
-+
-+&cpu_trips {
-+	cpu_alert1: cpu_alert1 {
-+		temperature = <50000>; /* millicelsius */
-+		hysteresis = <2000>; /* millicelsius */
-+		type = "active";
-+	};
-+};
-+
-+&cpu_cooling_maps {
-+	map1 {
-+		trip = <&cpu_alert1>;
-+	};
-+};
-+
-+&thermal_zones {
-+	board_thermal: board_thermal {
-+		polling-delay-passive = <1250>; /* milliseconds */
-+		polling-delay = <1500>; /* milliseconds */
-+
-+		board_trips: trips {
-+			board_alert0: board_alert {
-+				temperature = <40000>; /* millicelsius */
-+				hysteresis = <2000>; /* millicelsius */
-+				type = "active";
-+			};
-+
-+			board_crit: board_crit {
-+				temperature = <105000>; /* millicelsius */
-+				hysteresis = <0>; /* millicelsius */
-+				type = "critical";
-+			};
-+		};
-+
-+		board_cooling_maps: cooling-maps {
-+			map0 {
-+				trip = <&board_alert0>;
-+			};
-+		};
-+       };
-+};
-+
-+&mailbox5 {
-+	status = "okay";
-+	mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
-+		status = "okay";
-+	};
-+	mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
-+		status = "okay";
-+	};
-+};
-+
-+&mailbox6 {
-+	status = "okay";
-+	mbox_ipu2_ipc3x: mbox_ipu2_ipc3x {
-+		status = "okay";
-+	};
-+	mbox_dsp2_ipc3x: mbox_dsp2_ipc3x {
-+		status = "okay";
-+	};
-+};
-diff --git a/arch/arm/mach-omap2/omap5/hw_data.c b/arch/arm/mach-omap2/omap5/hw_data.c
-index c4a41db92a..57b23b93b5 100644
---- a/arch/arm/mach-omap2/omap5/hw_data.c
-+++ b/arch/arm/mach-omap2/omap5/hw_data.c
-@@ -418,8 +418,10 @@ void enable_basic_clocks(void)
- 		(*prcm)->cm_l3init_hsmmc2_clkctrl,
- 		(*prcm)->cm_l4per_gptimer2_clkctrl,
- 		(*prcm)->cm_wkup_wdtimer2_clkctrl,
-+		(*prcm)->cm_l4per_uart1_clkctrl,
- 		(*prcm)->cm_l4per_uart3_clkctrl,
- 		(*prcm)->cm_l4per_i2c1_clkctrl,
-+		(*prcm)->cm_l4per_i2c4_clkctrl,
- #ifdef CONFIG_DRIVER_TI_CPSW
- 		(*prcm)->cm_gmac_gmac_clkctrl,
- #endif
-@@ -493,7 +495,6 @@ void enable_basic_uboot_clocks(void)
- 		(*prcm)->cm_l4per_mcspi1_clkctrl,
- 		(*prcm)->cm_l4per_i2c2_clkctrl,
- 		(*prcm)->cm_l4per_i2c3_clkctrl,
--		(*prcm)->cm_l4per_i2c4_clkctrl,
- #if defined(CONFIG_DRA7XX)
- 		(*prcm)->cm_ipu_i2c5_clkctrl,
- #else
-diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c
-index 7063345dcc..47a8391de8 100644
---- a/board/ti/am57xx/board.c
-+++ b/board/ti/am57xx/board.c
-@@ -30,6 +30,8 @@
- #include <dwc3-omap-uboot.h>
- #include <ti-usb-phy-uboot.h>
- #include <mmc.h>
-+#include <dm/uclass.h>
-+#include <i2c.h>
- 
- #include "../common/board_detect.h"
- #include "mux_data.h"
-@@ -46,6 +48,7 @@
- #define board_is_am574x_idk()	board_ti_is("AM574IDK")
- #define board_is_am572x_idk()	board_ti_is("AM572IDK")
- #define board_is_am571x_idk()	board_ti_is("AM571IDK")
-+#define board_is_bbai()		board_ti_is("BBBBAI__") //no EEPROM...
- 
- #ifdef CONFIG_DRIVER_TI_CPSW
- #include <cpsw.h>
-@@ -75,6 +78,12 @@ DECLARE_GLOBAL_DATA_PTR;
- #define TPS65903X_PRIMARY_SECONDARY_PAD2	0xFB
- #define TPS65903X_PAD2_POWERHOLD_MASK		0x20
- 
-+#define CAPE_EEPROM_BUS_NUM 3
-+#define CAPE_EEPROM_ADDR0 0x54
-+#define CAPE_EEPROM_ADDR3 0x57
-+
-+#define CAPE_EEPROM_ADDR_LEN 0x10
-+
- const struct omap_sysinfo sysinfo = {
- 	"Board: UNKNOWN(BeagleBoard X15?) REV UNKNOWN\n"
- };
-@@ -84,6 +93,12 @@ static const struct dmm_lisa_map_regs beagle_x15_lisa_regs = {
- 	.is_ma_present  = 0x1
- };
- 
-+static const struct dmm_lisa_map_regs bbai_lisa_regs = {
-+	///FIXME: Document, where this magic number come from?
-+	.dmm_lisa_map_3 = 0x80640100,
-+	.is_ma_present  = 0x1
-+};
-+
- static const struct dmm_lisa_map_regs am571x_idk_lisa_regs = {
- 	.dmm_lisa_map_3 = 0x80640100,
- 	.is_ma_present  = 0x1
-@@ -101,6 +116,8 @@ void emif_get_dmm_regs(const struct dmm_lisa_map_regs **dmm_lisa_regs)
- 		*dmm_lisa_regs = &am571x_idk_lisa_regs;
- 	else if (board_is_am574x_idk())
- 		*dmm_lisa_regs = &am574x_idk_lisa_regs;
-+	else if (board_is_bbai())
-+		*dmm_lisa_regs = &bbai_lisa_regs;
- 	else
- 		*dmm_lisa_regs = &beagle_x15_lisa_regs;
- }
-@@ -502,8 +519,30 @@ void do_board_detect(void)
- 
- 	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
- 				  CONFIG_EEPROM_CHIP_ADDRESS);
--	if (rc)
-+	if (rc)	{
- 		printf("ti_i2c_eeprom_init failed %d\n", rc);
-+		ti_i2c_eeprom_am_set("BBBBAI__", "A");
-+	};
-+
-+	puts("in do_board_detect\n");
-+	printf("do_board_detect\n");
-+}
-+
-+void write_hex (unsigned char i)
-+{
-+	char cc;
-+
-+	cc = i >> 4;
-+	cc &= 0xf;
-+	if (cc > 9)
-+		serial_putc (cc + 55);
-+	else
-+		serial_putc (cc + 48);
-+	cc = i & 0xf;
-+	if (cc > 9)
-+		serial_putc (cc + 55);
-+	else
-+		serial_putc (cc + 48);
- }
- 
- #else	/* CONFIG_SPL_BUILD */
-@@ -521,6 +560,8 @@ void do_board_detect(void)
- 
- 	if (board_is_x15())
- 		bname = "BeagleBoard X15";
-+	else if (board_is_bbai())
-+		bname = "BeagleBone AI";
- 	else if (board_is_am572x_evm())
- 		bname = "AM572x EVM";
- 	else if (board_is_am574x_idk())
-@@ -535,6 +576,23 @@ void do_board_detect(void)
- 			 "Board: %s REV %s\n", bname, board_ti_get_rev());
- }
- 
-+void write_hex (unsigned char i)
-+{
-+	char cc;
-+
-+	cc = i >> 4;
-+	cc &= 0xf;
-+	if (cc > 9)
-+		serial_putc (cc + 55);
-+	else
-+		serial_putc (cc + 48);
-+	cc = i & 0xf;
-+	if (cc > 9)
-+		serial_putc (cc + 55);
-+	else
-+		serial_putc (cc + 48);
-+}
-+
- static void setup_board_eeprom_env(void)
- {
- 	char *name = "beagle_x15";
-@@ -557,6 +615,8 @@ static void setup_board_eeprom_env(void)
- 			name = "am57xx_evm_reva3";
- 		else
- 			name = "am57xx_evm";
-+	} else if (board_is_bbai()) {
-+		name = "am5729_beagleboneai";
- 	} else if (board_is_am574x_idk()) {
- 		name = "am574x_idk";
- 	} else if (board_is_am572x_idk()) {
-@@ -626,7 +686,7 @@ void am57x_idk_lcd_detect(void)
- 	struct udevice *dev;
- 
- 	/* Only valid for IDKs */
--	if (board_is_x15() || board_is_am572x_evm())
-+	if (board_is_x15() || board_is_am572x_evm() || board_is_bbai())
- 		return;
- 
- 	/* Only AM571x IDK has gpio control detect.. so check that */
-@@ -720,6 +780,28 @@ int board_late_init(void)
- 
- 	am57x_idk_lcd_detect();
- 
-+	///FIXME, too late!! But useful for testing function...
-+	unsigned char addr;
-+	struct udevice *dev;
-+	int rc;
-+
-+	for ( addr = CAPE_EEPROM_ADDR0; addr <= CAPE_EEPROM_ADDR3; addr++ ) {
-+		puts("BeagleBone: cape eeprom: i2c_probe: 0x");  write_hex(addr); puts(":\n");
-+		rc = i2c_get_chip_for_busnum(CAPE_EEPROM_BUS_NUM, addr, 1, &dev);
-+		if (rc) {
-+			printf("failed to get device for EEPROM at address 0x%x\n",
-+			       addr);
-+//			goto out;
-+		}
-+//		out:
-+	}
-+
-+	if (board_is_bbai()) {
-+		env_set("console", "ttyS0,115200n8");
-+	} else {
-+		env_set("console", "ttyO2,115200n8");
-+	}
-+
- #if !defined(CONFIG_SPL_BUILD)
- 	board_ti_set_ethaddr(2);
- #endif
-@@ -762,6 +844,13 @@ void recalibrate_iodelay(void)
- 		pconf_sz = ARRAY_SIZE(core_padconf_array_essential_am571x_idk);
- 		iod = iodelay_cfg_array_am571x_idk;
- 		iod_sz = ARRAY_SIZE(iodelay_cfg_array_am571x_idk);
-+	} else if (board_is_bbai()) {
-+		/* Common for X15/GPEVM */
-+		pconf = core_padconf_array_essential_bbai;
-+		pconf_sz = ARRAY_SIZE(core_padconf_array_essential_bbai);
-+		/* Since full production should switch to SR2.0  */
-+		iod = iodelay_cfg_array_bbai;
-+		iod_sz = ARRAY_SIZE(iodelay_cfg_array_bbai);
- 	} else {
- 		/* Common for X15/GPEVM */
- 		pconf = core_padconf_array_essential_x15;
-@@ -863,12 +952,50 @@ const struct mmc_platform_fixups *platform_fixups_mmc(uint32_t addr)
- #endif
- 
- #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_OS_BOOT)
-+
-+//static int eeprom_has_been_read;
-+//static struct id_eeprom eeprom;
-+
-+struct am335x_cape_eeprom_id {
-+	unsigned int header;
-+	char eeprom_rev[2];
-+	char board_name[32];
-+	char version[4];
-+	char manufacture[16];
-+	char part_number[16];
-+	char number_of_pins[2];
-+	char serial_number[12];
-+	char pin_usage[140];
-+	char vdd_3v3exp[ 2];
-+	char vdd_5v[ 2];
-+	char sys_5v[2];
-+	char dc_supplied[2];
-+};
-+
- int spl_start_uboot(void)
- {
- 	/* break into full u-boot on 'c' */
- 	if (serial_tstc() && serial_getc() == 'c')
- 		return 1;
- 
-+	//FIXME, i2c doesn't see to be up..
-+	puts("spl_start_uboot\n");
-+	unsigned char addr;
-+	struct udevice *dev;
-+	int rc;
-+
-+	for ( addr = CAPE_EEPROM_ADDR0; addr <= CAPE_EEPROM_ADDR3; addr++ ) {
-+		puts("BeagleBone: cape eeprom: i2c_probe: 0x");  write_hex(addr); puts(":\n");
-+		rc = i2c_get_chip_for_busnum(CAPE_EEPROM_BUS_NUM, addr, 1, &dev);
-+		if (rc) {
-+			printf("failed to get device for EEPROM at address 0x%x\n",
-+			       addr);
-+//			goto out;
-+		}
-+//		out:
-+	}
-+
-+
- #ifdef CONFIG_SPL_ENV_SUPPORT
- 	env_init();
- 	env_load();
-@@ -1084,6 +1211,9 @@ int board_fit_config_name_match(const char *name)
- 	} else if (board_is_am572x_evm() &&
- 		   !strcmp(name, "am57xx-beagle-x15")) {
- 		return 0;
-+	} else if (board_is_bbai() &&
-+		   !strcmp(name, "am5729-beagleboneai")) {
-+		return 0;
- 	} else if (board_is_am572x_idk() && !strcmp(name, "am572x-idk")) {
- 		return 0;
- 	} else if (board_is_am574x_idk() && !strcmp(name, "am574x-idk")) {
-diff --git a/board/ti/am57xx/mux_data.h b/board/ti/am57xx/mux_data.h
-index d4a15ae93d..9b8ee944f8 100644
---- a/board/ti/am57xx/mux_data.h
-+++ b/board/ti/am57xx/mux_data.h
-@@ -233,6 +233,272 @@ const struct pad_conf_entry core_padconf_array_essential_x15[] = {
- 	{RSTOUTN, (M0 | PIN_OUTPUT)},	/* rstoutn.rstoutn */
- };
- 
-+const struct pad_conf_entry core_padconf_array_essential_bbai[] = {
-+	{GPMC_AD0, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad0.vin3a_d0 */
-+	{GPMC_AD1, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad1.vin3a_d1 */
-+	{GPMC_AD2, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad2.vin3a_d2 */
-+	{GPMC_AD3, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad3.vin3a_d3 */
-+	{GPMC_AD4, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad4.vin3a_d4 */
-+	{GPMC_AD5, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad5.vin3a_d5 */
-+	{GPMC_AD6, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad6.vin3a_d6 */
-+	{GPMC_AD7, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad7.vin3a_d7 */
-+	{GPMC_AD8, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad8.vin3a_d8 */
-+	{GPMC_AD9, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad9.vin3a_d9 */
-+	{GPMC_AD10, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad10.vin3a_d10 */
-+	{GPMC_AD11, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad11.vin3a_d11 */
-+	{GPMC_AD12, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad12.vin3a_d12 */
-+	{GPMC_AD13, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad13.vin3a_d13 */
-+	{GPMC_AD14, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad14.vin3a_d14 */
-+	{GPMC_AD15, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad15.vin3a_d15 */
-+
-+	/* Cape Bus i2c */
-+	{GPMC_A0, (M7 | PIN_INPUT_PULLUP)},		/* R6_GPIO7_3: gpmc_a0.i2c4_scl (Shared with F4_UART10_RTSN) */
-+	{GPMC_A1, (M7 | PIN_INPUT_PULLUP)},		/* T9_GPIO7_4: gpmc_a1.i2c4_sda (Shared with D2_UART10_CTSN) */
-+
-+	{GPMC_A2, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a2.vin3a_d18 */
-+	{GPMC_A3, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a3.vin3a_d19 */
-+	{GPMC_A4, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a4.vin3a_d20 */
-+	{GPMC_A5, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a5.vin3a_d21 */
-+	{GPMC_A6, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a6.vin3a_d22 */
-+	{GPMC_A7, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a7.vin3a_d23 */
-+	{GPMC_A8, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a8.vin3a_hsync0 */
-+	{GPMC_A9, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a9.vin3a_vsync0 */
-+	{GPMC_A10, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a10.vin3a_de0 */
-+	{GPMC_A11, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a11.vin3a_fld0 */
-+	{GPMC_A12, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_a12.gpio2_2 */
-+	{GPMC_A13, (M14 | PIN_INPUT_PULLDOWN)},	/* gpmc_a13.gpio2_3 */
-+	{GPMC_A14, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_a14.gpio2_4 */
-+	{GPMC_A15, (M14 | PIN_INPUT_PULLDOWN)},	/* gpmc_a15.gpio2_5 */
-+	{GPMC_A16, (M14 | PIN_INPUT_PULLDOWN)},	/* gpmc_a16.gpio2_6 */
-+	{GPMC_A17, (M14 | PIN_INPUT_PULLDOWN)},	/* gpmc_a17.gpio2_7 */
-+	{GPMC_A18, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_a18.gpio2_8 */
-+
-+	/* eMMC */
-+	{GPMC_A19, (M1 | PIN_INPUT_PULLUP)},			/*  K7: gpmc_a19.mmc2_dat4 */
-+	{GPMC_A20, (M1 | PIN_INPUT_PULLUP)},			/*  M7: gpmc_a20.mmc2_dat5 */
-+	{GPMC_A21, (M1 | PIN_INPUT_PULLUP)},			/*  J5: gpmc_a21.mmc2_dat6 */
-+	{GPMC_A22, (M1 | PIN_INPUT_PULLUP)},			/*  K6: gpmc_a22.mmc2_dat7 */
-+	{GPMC_A23, (M1 | PIN_INPUT_PULLUP)},			/*  J7: gpmc_a23.mmc2_clk */
-+	{GPMC_A24, (M1 | PIN_INPUT_PULLUP)},			/*  J4: gpmc_a24.mmc2_dat0 */
-+	{GPMC_A25, (M1 | PIN_INPUT_PULLUP)},			/*  J6: gpmc_a25.mmc2_dat1 */
-+	{GPMC_A26, (M1 | PIN_INPUT_PULLUP)},			/*  H4: gpmc_a26.mmc2_dat2 */
-+	{GPMC_A27, (M1 | PIN_INPUT_PULLUP)},			/*  H5: gpmc_a27.mmc2_dat3 */
-+	{GPMC_CS1, (M1 | PIN_INPUT_PULLUP)},			/*  H6: gpmc_cs1.mmc2_cmd */
-+
-+	{GPMC_CS0, (M14 | PIN_INPUT_PULLDOWN)},	/* gpmc_cs0.gpio2_19 */
-+	{GPMC_CS2, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_cs2.gpio2_20 */
-+	{GPMC_CS3, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_cs3.vin3a_clk0 */
-+	{GPMC_CLK, (M9 | PIN_INPUT_PULLDOWN)},	/* gpmc_clk.dma_evt1 */
-+	{GPMC_ADVN_ALE, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_advn_ale.gpio2_23 */
-+	{GPMC_OEN_REN, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_oen_ren.gpio2_24 */
-+	{GPMC_WEN, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_wen.gpio2_25 */
-+	{GPMC_BEN0, (M9 | PIN_INPUT_PULLDOWN)},	/* gpmc_ben0.dma_evt3 */
-+	{GPMC_BEN1, (M9 | PIN_INPUT_PULLDOWN)},	/* gpmc_ben1.dma_evt4 */
-+	{GPMC_WAIT0, (M14 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* gpmc_wait0.gpio2_28 */
-+	{VIN1A_CLK0, (M14 | PIN_INPUT)},	/* vin1a_clk0.gpio2_30 */
-+	{VIN1B_CLK1, (M14 | PIN_INPUT_SLEW)},	/* vin1b_clk1.gpio2_31 */
-+	{VIN1A_D2, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d2.gpio3_6 */
-+	{VIN1A_D3, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d3.gpio3_7 */
-+	{VIN1A_D4, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d4.gpio3_8 */
-+	{VIN1A_D5, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d5.gpio3_9 */
-+	{VIN1A_D6, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d6.gpio3_10 */
-+	{VIN1A_D7, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d7.gpio3_11 */
-+	{VIN1A_D8, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d8.gpio3_12 */
-+	{VIN1A_D10, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d10.gpio3_14 */
-+	{VIN1A_D11, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d11.gpio3_15 */
-+	{VIN1A_D12, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d12.gpio3_16 */
-+	{VIN1A_D14, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d14.gpio3_18 */
-+	{VIN1A_D16, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d16.gpio3_20 */
-+	{VIN1A_D19, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d19.gpio3_23 */
-+	{VIN1A_D20, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d20.gpio3_24 */
-+	{VIN1A_D22, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d22.gpio3_26 */
-+	{VIN2A_CLK0, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_clk0.gpio3_28 */
-+	{VIN2A_DE0, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_de0.gpio3_29 */
-+	{VIN2A_FLD0, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_fld0.gpio3_30 */
-+	{VIN2A_HSYNC0, (M11 | PIN_INPUT_PULLUP)},	/* vin2a_hsync0.pr1_uart0_cts_n */
-+	{VIN2A_VSYNC0, (M11 | PIN_OUTPUT_PULLUP)},	/* vin2a_vsync0.pr1_uart0_rts_n */
-+	{VIN2A_D0, (M11 | PIN_INPUT_PULLUP)},	/* vin2a_d0.pr1_uart0_rxd */
-+	{VIN2A_D1, (M11 | PIN_OUTPUT)},	/* vin2a_d1.pr1_uart0_txd */
-+	{VIN2A_D2, (M8 | PIN_INPUT_PULLUP)},	/* vin2a_d2.uart10_rxd */
-+	{VIN2A_D3, (M8 | PIN_OUTPUT)},	/* vin2a_d3.uart10_txd */
-+
-+	/* Cape Bus i2c (gpio shared) */
-+	{VIN2A_D4, (M15 | PIN_INPUT)},			/* D2_UART10_CTSN: vin2a_d4.uart10_ctsn (Shared with T9_GPIO7_4) */
-+	{VIN2A_D5, (M15 | PIN_INPUT)},			/* F4_UART10_RTSN: vin2a_d5.uart10_rtsn (Shared with R6_GPIO7_3) */
-+
-+	{VIN2A_D6, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_d6.gpio4_7 */
-+	{VIN2A_D7, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_d7.gpio4_8 */
-+	{VIN2A_D8, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_d8.gpio4_9 */
-+	{VIN2A_D9, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_d9.gpio4_10 */
-+	{VIN2A_D10, (M10 | PIN_OUTPUT_PULLDOWN)},	/* vin2a_d10.ehrpwm2B */
-+	{VIN2A_D11, (M10 | PIN_INPUT_PULLDOWN)},	/* vin2a_d11.ehrpwm2_tripzone_input */
-+	{VIN2A_D12, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d12.rgmii1_txc */
-+	{VIN2A_D13, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d13.rgmii1_txctl */
-+	{VIN2A_D14, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d14.rgmii1_txd3 */
-+	{VIN2A_D15, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d15.rgmii1_txd2 */
-+	{VIN2A_D16, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d16.rgmii1_txd1 */
-+	{VIN2A_D17, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d17.rgmii1_txd0 */
-+	{VIN2A_D18, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d18.rgmii1_rxc */
-+	{VIN2A_D19, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d19.rgmii1_rxctl */
-+	{VIN2A_D20, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d20.rgmii1_rxd3 */
-+	{VIN2A_D21, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d21.rgmii1_rxd2 */
-+	{VIN2A_D22, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d22.rgmii1_rxd1 */
-+	{VIN2A_D23, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d23.rgmii1_rxd0 */
-+	{VOUT1_CLK, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_clk.vout1_clk */
-+	{VOUT1_DE, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_de.vout1_de */
-+	{VOUT1_FLD, (M14 | PIN_INPUT)},	/* vout1_fld.gpio4_21 */
-+	{VOUT1_HSYNC, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_hsync.vout1_hsync */
-+	{VOUT1_VSYNC, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_vsync.vout1_vsync */
-+	{VOUT1_D0, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d0.vout1_d0 */
-+	{VOUT1_D1, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d1.vout1_d1 */
-+	{VOUT1_D2, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d2.vout1_d2 */
-+	{VOUT1_D3, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d3.vout1_d3 */
-+	{VOUT1_D4, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d4.vout1_d4 */
-+	{VOUT1_D5, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d5.vout1_d5 */
-+	{VOUT1_D6, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d6.vout1_d6 */
-+	{VOUT1_D7, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d7.vout1_d7 */
-+	{VOUT1_D8, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d8.vout1_d8 */
-+	{VOUT1_D9, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d9.vout1_d9 */
-+	{VOUT1_D10, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d10.vout1_d10 */
-+	{VOUT1_D11, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d11.vout1_d11 */
-+	{VOUT1_D12, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d12.vout1_d12 */
-+	{VOUT1_D13, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d13.vout1_d13 */
-+	{VOUT1_D14, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d14.vout1_d14 */
-+	{VOUT1_D15, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d15.vout1_d15 */
-+	{VOUT1_D16, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d16.vout1_d16 */
-+	{VOUT1_D17, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d17.vout1_d17 */
-+	{VOUT1_D18, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d18.vout1_d18 */
-+	{VOUT1_D19, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d19.vout1_d19 */
-+	{VOUT1_D20, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d20.vout1_d20 */
-+	{VOUT1_D21, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d21.vout1_d21 */
-+	{VOUT1_D22, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d22.vout1_d22 */
-+	{VOUT1_D23, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d23.vout1_d23 */
-+	{MDIO_MCLK, (M0 | PIN_OUTPUT | SLEWCONTROL)},	/* mdio_mclk.mdio_mclk */
-+	{MDIO_D, (M0 | PIN_INPUT | SLEWCONTROL)},	/* mdio_d.mdio_d */
-+	{RMII_MHZ_50_CLK, (M14 | PIN_INPUT_PULLUP)},	/* RMII_MHZ_50_CLK.gpio5_17 */
-+	{UART3_RXD, (M14 | PIN_INPUT_SLEW)},	/* uart3_rxd.gpio5_18 */
-+	{UART3_TXD, (M14 | PIN_INPUT_SLEW)},	/* uart3_txd.gpio5_19 */
-+	{RGMII0_TXC, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txc.rgmii0_txc */
-+	{RGMII0_TXCTL, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txctl.rgmii0_txctl */
-+	{RGMII0_TXD3, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txd3.rgmii0_txd3 */
-+	{RGMII0_TXD2, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txd2.rgmii0_txd2 */
-+	{RGMII0_TXD1, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txd1.rgmii0_txd1 */
-+	{RGMII0_TXD0, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txd0.rgmii0_txd0 */
-+	{RGMII0_RXC, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxc.rgmii0_rxc */
-+	{RGMII0_RXCTL, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxctl.rgmii0_rxctl */
-+	{RGMII0_RXD3, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxd3.rgmii0_rxd3 */
-+	{RGMII0_RXD2, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxd2.rgmii0_rxd2 */
-+	{RGMII0_RXD1, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxd1.rgmii0_rxd1 */
-+	{RGMII0_RXD0, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxd0.rgmii0_rxd0 */
-+	{USB1_DRVVBUS, (M0 | PIN_OUTPUT | SLEWCONTROL)},	/* usb1_drvvbus.usb1_drvvbus */
-+	{USB2_DRVVBUS, (M0 | PIN_OUTPUT_PULLDOWN | SLEWCONTROL)},	/* usb2_drvvbus.usb2_drvvbus */
-+	{GPIO6_14, (M10 | PIN_INPUT_PULLUP)},	/* gpio6_14.timer1 */
-+	{GPIO6_15, (M10 | PIN_INPUT_PULLUP)},	/* gpio6_15.timer2 */
-+	{GPIO6_16, (M10 | PIN_INPUT_PULLUP)},	/* gpio6_16.timer3 */
-+	{XREF_CLK0, (M9 | PIN_OUTPUT_PULLDOWN)},	/* xref_clk0.clkout2 */
-+	{XREF_CLK1, (M14 | PIN_INPUT_PULLDOWN)},	/* xref_clk1.gpio6_18 */
-+	{XREF_CLK2, (M14 | PIN_INPUT_PULLDOWN)},	/* xref_clk2.gpio6_19 */
-+	{XREF_CLK3, (M9 | PIN_OUTPUT_PULLDOWN)},	/* xref_clk3.clkout3 */
-+	{MCASP1_ACLKX, (M10 | PIN_INPUT_PULLUP)},	/* mcasp1_aclkx.i2c3_sda */
-+	{MCASP1_FSX, (M10 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mcasp1_fsx.i2c3_scl */
-+	{MCASP1_ACLKR, (M10 | PIN_INPUT_PULLUP)},	/* mcasp1_aclkr.i2c4_sda */
-+	{MCASP1_FSR, (M10 | PIN_INPUT_PULLUP)},	/* mcasp1_fsr.i2c4_scl */
-+	{MCASP1_AXR0, (M10 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mcasp1_axr0.i2c5_sda */
-+	{MCASP1_AXR1, (M10 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mcasp1_axr1.i2c5_scl */
-+	{MCASP1_AXR2, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr2.gpio5_4 */
-+	{MCASP1_AXR3, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr3.gpio5_5 */
-+	{MCASP1_AXR4, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr4.gpio5_6 */
-+	{MCASP1_AXR5, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr5.gpio5_7 */
-+	{MCASP1_AXR6, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr6.gpio5_8 */
-+	{MCASP1_AXR7, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr7.gpio5_9 */
-+	{MCASP1_AXR8, (M14 | PIN_INPUT | SLEWCONTROL)},	/* mcasp1_axr8.gpio5_10 */
-+	{MCASP1_AXR9, (M14 | PIN_INPUT | SLEWCONTROL)},	/* mcasp1_axr9.gpio5_11 */
-+	{MCASP1_AXR10, (M14 | PIN_INPUT | SLEWCONTROL)},	/* mcasp1_axr10.gpio5_12 */
-+	{MCASP1_AXR11, (M14 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mcasp1_axr11.gpio4_17 */
-+	{MCASP1_AXR12, (M1 | PIN_INPUT_SLEW | VIRTUAL_MODE10)},	/* mcasp1_axr12.mcasp7_axr0 */
-+	{MCASP1_AXR13, (M1 | PIN_INPUT_SLEW | VIRTUAL_MODE10)},	/* mcasp1_axr13.mcasp7_axr1 */
-+	{MCASP1_AXR14, (M1 | PIN_INPUT_SLEW | VIRTUAL_MODE10)},	/* mcasp1_axr14.mcasp7_aclkx */
-+	{MCASP1_AXR15, (M1 | PIN_INPUT_SLEW | VIRTUAL_MODE10)},	/* mcasp1_axr15.mcasp7_fsx */
-+	{MCASP3_ACLKX, (M0 | PIN_INPUT_PULLDOWN)},	/* mcasp3_aclkx.mcasp3_aclkx */
-+	{MCASP3_FSX, (M0 | PIN_INPUT_SLEW)},	/* mcasp3_fsx.mcasp3_fsx */
-+	{MCASP3_AXR0, (M0 | PIN_INPUT_SLEW)},	/* mcasp3_axr0.mcasp3_axr0 */
-+	{MCASP3_AXR1, (M0 | PIN_INPUT_SLEW)},	/* mcasp3_axr1.mcasp3_axr1 */
-+	{MCASP4_ACLKX, (M3 | PIN_INPUT_PULLUP)},	/* mcasp4_aclkx.uart8_rxd */
-+	{MCASP4_FSX, (M3 | PIN_OUTPUT)},	/* mcasp4_fsx.uart8_txd */
-+	{MCASP4_AXR0, (M3 | PIN_INPUT_PULLUP)},	/* mcasp4_axr0.uart8_ctsn */
-+	{MCASP4_AXR1, (M3 | PIN_OUTPUT_PULLUP)},	/* mcasp4_axr1.uart8_rtsn */
-+	{MCASP5_ACLKX, (M3 | PIN_INPUT_PULLUP)},	/* mcasp5_aclkx.uart9_rxd */
-+	{MCASP5_FSX, (M3 | PIN_OUTPUT)},	/* mcasp5_fsx.uart9_txd */
-+	{MCASP5_AXR0, (M3 | PIN_INPUT_PULLUP)},	/* mcasp5_axr0.uart9_ctsn */
-+	{MCASP5_AXR1, (M3 | PIN_OUTPUT_PULLUP)},	/* mcasp5_axr1.uart9_rtsn */
-+
-+	/* microSD Socket */
-+	{MMC1_CLK, (M0 | PIN_INPUT_PULLUP)},			/*  W6: mmc1_clk.mmc1_clk */
-+	{MMC1_CMD, (M0 | PIN_INPUT_PULLUP)},			/*  Y6: mmc1_cmd.mmc1_cmd */
-+	{MMC1_DAT0, (M0 | PIN_INPUT_PULLUP)},			/* AA6: mmc1_dat0.mmc1_dat0 */
-+	{MMC1_DAT1, (M0 | PIN_INPUT_PULLUP)},			/*  Y4: mmc1_dat1.mmc1_dat1 */
-+	{MMC1_DAT2, (M0 | PIN_INPUT_PULLUP)},			/* AA5: mmc1_dat2.mmc1_dat2 */
-+	{MMC1_DAT3, (M0 | PIN_INPUT_PULLUP)},			/*  Y3: mmc1_dat3.mmc1_dat3 */
-+	{MMC1_SDCD, (M14 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/*  W7: mmc1_sdcd.gpio6_27 */
-+
-+	{GPIO6_10, (M10 | PIN_OUTPUT_PULLDOWN)},	/* gpio6_10.ehrpwm2A */
-+	{GPIO6_11, (M0 | PIN_INPUT_PULLUP)},	/* gpio6_11.gpio6_11 */
-+	{MMC3_CLK, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_clk.mmc3_clk */
-+	{MMC3_CMD, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_cmd.mmc3_cmd */
-+	{MMC3_DAT0, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat0.mmc3_dat0 */
-+	{MMC3_DAT1, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat1.mmc3_dat1 */
-+	{MMC3_DAT2, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat2.mmc3_dat2 */
-+	{MMC3_DAT3, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat3.mmc3_dat3 */
-+	{MMC3_DAT4, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat4.mmc3_dat4 */
-+	{MMC3_DAT5, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat5.mmc3_dat5 */
-+	{MMC3_DAT6, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat6.mmc3_dat6 */
-+	{MMC3_DAT7, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat7.mmc3_dat7 */
-+	{SPI1_SCLK, (M14 | PIN_INPUT_PULLDOWN)},	/* spi1_sclk.gpio7_7 */
-+	{SPI1_D1, (M14 | PIN_INPUT_PULLDOWN)},	/* spi1_d1.gpio7_8 */
-+	{SPI1_D0, (M14 | PIN_INPUT_PULLDOWN)},	/* spi1_d0.gpio7_9 */
-+	{SPI1_CS0, (M14 | PIN_INPUT)},	/* spi1_cs0.gpio7_10 */
-+	{SPI1_CS1, (M14 | PIN_INPUT)},	/* spi1_cs1.gpio7_11 */
-+	{SPI1_CS2, (M14 | PIN_INPUT_SLEW)},	/* spi1_cs2.gpio7_12 */
-+	{SPI1_CS3, (M6 | PIN_INPUT | SLEWCONTROL)},	/* spi1_cs3.hdmi1_cec */
-+	{SPI2_SCLK, (M14 | PIN_INPUT_PULLDOWN)},	/* spi2_sclk.gpio7_14 */
-+	{SPI2_D1, (M14 | PIN_INPUT_SLEW)},	/* spi2_d1.gpio7_15 */
-+	{SPI2_D0, (M14 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* spi2_d0.gpio7_16 */
-+	{SPI2_CS0, (M14 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* spi2_cs0.gpio7_17 */
-+	{DCAN1_TX, (M0 | PIN_OUTPUT | SLEWCONTROL)},	/* dcan1_tx.dcan1_tx */
-+	{DCAN1_RX, (M0 | PIN_INPUT | SLEWCONTROL)},	/* dcan1_rx.dcan1_rx */
-+
-+	/* BeagleBone AI: Debug UART */
-+	{UART1_RXD, (M0 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* uart1_rxd.uart1_rxd */
-+	{UART1_TXD, (M0 | PIN_OUTPUT | SLEWCONTROL)},	/* uart1_txd.uart1_txd */
-+
-+	{UART1_CTSN, (M14 | PIN_INPUT_PULLDOWN)},	/* uart1_ctsn.gpio7_24 */
-+	{UART1_RTSN, (M14 | PIN_INPUT)},	/* uart1_rtsn.gpio7_25 */
-+	{UART2_RXD, (M14 | PIN_INPUT_PULLDOWN)},	/* uart2_rxd.gpio7_26 */
-+	{UART2_TXD, (M14 | PIN_INPUT_PULLDOWN)},	/* uart2_txd.gpio7_27 */
-+	{UART2_CTSN, (M2 | PIN_INPUT_PULLUP)},	/* uart2_ctsn.uart3_rxd */
-+	{UART2_RTSN, (M1 | PIN_OUTPUT)},	/* uart2_rtsn.uart3_txd */
-+	{I2C1_SDA, (M0 | PIN_INPUT_PULLUP)},	/* i2c1_sda.i2c1_sda */
-+	{I2C1_SCL, (M0 | PIN_INPUT_PULLUP)},	/* i2c1_scl.i2c1_scl */
-+	{I2C2_SDA, (M1 | PIN_INPUT_PULLUP)},	/* i2c2_sda.hdmi1_ddc_scl */
-+	{I2C2_SCL, (M1 | PIN_INPUT_PULLUP)},	/* i2c2_scl.hdmi1_ddc_sda */
-+	{WAKEUP0, (M0 | PIN_INPUT)},	/* Wakeup0.Wakeup0 */
-+	{WAKEUP1, (M0 | PIN_INPUT)},	/* Wakeup1.Wakeup1 */
-+	{WAKEUP2, (M0 | PIN_INPUT)},	/* Wakeup2.Wakeup2 */
-+	{WAKEUP3, (M0 | PIN_INPUT)},	/* Wakeup3.Wakeup3 */
-+	{ON_OFF, (M0 | PIN_OUTPUT)},	/* on_off.on_off */
-+	{RTC_PORZ, (M0 | PIN_INPUT)},	/* rtc_porz.rtc_porz */
-+	{TMS, (M0 | PIN_INPUT_PULLUP)},	/* tms.tms */
-+	{TDI, (M0 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* tdi.tdi */
-+	{TDO, (M0 | PIN_OUTPUT)},	/* tdo.tdo */
-+	{TCLK, (M0 | PIN_INPUT_PULLDOWN)},	/* tclk.tclk */
-+	{TRSTN, (M0 | PIN_INPUT)},	/* trstn.trstn */
-+	{RTCK, (M0 | PIN_OUTPUT)},	/* rtck.rtck */
-+	{EMU0, (M0 | PIN_INPUT)},	/* emu0.emu0 */
-+	{EMU1, (M0 | PIN_INPUT)},	/* emu1.emu1 */
-+	{NMIN_DSP, (M0 | PIN_INPUT)},	/* nmin_dsp.nmin_dsp */
-+	{RSTOUTN, (M0 | PIN_OUTPUT)},	/* rstoutn.rstoutn */
-+};
-+
- const struct pad_conf_entry core_padconf_array_delta_x15_sr1_1[] = {
- 	{MMC1_SDWP, (M14 | PIN_INPUT | SLEWCONTROL)},	/* mmc1_sdwp.gpio6_28 */
- 	{VOUT1_CLK, (M0 | PIN_OUTPUT | SLEWCONTROL)},	/* vout1_clk.vout1_clk */
-@@ -998,6 +1264,17 @@ const struct pad_conf_entry early_padconf[] = {
- 	{UART2_RTSN, (M1 | PIN_INPUT_SLEW)},	/* uart2_rtsn.uart3_txd */
- 	{I2C1_SDA, (PIN_INPUT_PULLUP | M0)},	/* I2C1_SDA */
- 	{I2C1_SCL, (PIN_INPUT_PULLUP | M0)},	/* I2C1_SCL */
-+
-+	/* BeagleBone AI: Debug UART */
-+	{UART1_RXD, (M0 | PIN_INPUT_SLEW)},	/* UART1_RXD */
-+	{UART1_TXD, (M0 | PIN_INPUT_SLEW)},	/* UART1_TXD */
-+
-+	/* Cape Bus i2c */
-+	{GPMC_A0, (M7 | PIN_INPUT_PULLUP)},	/* R6_GPIO7_3: gpmc_a0.i2c4_scl (Shared with F4_UART10_RTSN) */
-+	{GPMC_A1, (M7 | PIN_INPUT_PULLUP)},	/* T9_GPIO7_4: gpmc_a1.i2c4_sda (Shared with D2_UART10_CTSN) */
-+	/* Cape Bus i2c (gpio shared) */
-+	{VIN2A_D4, (M14 | PIN_INPUT_PULLUP)},	/* D2_UART10_CTSN: vin2a_d4.uart10_ctsn (Shared with T9_GPIO7_4) */
-+	{VIN2A_D5, (M14 | PIN_INPUT_PULLUP)},	/* F4_UART10_RTSN: vin2a_d5.uart10_rtsn (Shared with R6_GPIO7_3) */
- };
- 
- #ifdef CONFIG_IODELAY_RECALIBRATION
-@@ -1199,6 +1476,119 @@ const struct iodelay_cfg_entry iodelay_cfg_array_x15_sr2_0[] = {
- 	{0x0CEC, 2739, 0},	/* CFG_VOUT1_VSYNC_OUT */
- };
- 
-+const struct iodelay_cfg_entry iodelay_cfg_array_bbai[] = {
-+	{0x0114, 2519, 702},	/* CFG_GPMC_A0_IN */
-+	{0x0120, 2435, 411},	/* CFG_GPMC_A10_IN */
-+	{0x012C, 2379, 755},	/* CFG_GPMC_A11_IN */
-+	{0x0198, 2384, 778},	/* CFG_GPMC_A1_IN */
-+	{0x0204, 2499, 1127},	/* CFG_GPMC_A2_IN */
-+	{0x0210, 2455, 1181},	/* CFG_GPMC_A3_IN */
-+	{0x021C, 2486, 1039},	/* CFG_GPMC_A4_IN */
-+	{0x0228, 2456, 938},	/* CFG_GPMC_A5_IN */
-+	{0x0234, 2463, 573},	/* CFG_GPMC_A6_IN */
-+	{0x0240, 2608, 783},	/* CFG_GPMC_A7_IN */
-+	{0x024C, 2430, 656},	/* CFG_GPMC_A8_IN */
-+	{0x0258, 2465, 850},	/* CFG_GPMC_A9_IN */
-+	{0x0264, 2316, 301},	/* CFG_GPMC_AD0_IN */
-+	{0x0270, 2324, 406},	/* CFG_GPMC_AD10_IN */
-+	{0x027C, 2278, 352},	/* CFG_GPMC_AD11_IN */
-+	{0x0288, 2297, 160},	/* CFG_GPMC_AD12_IN */
-+	{0x0294, 2278, 108},	/* CFG_GPMC_AD13_IN */
-+	{0x02A0, 2035, 0},	/* CFG_GPMC_AD14_IN */
-+	{0x02AC, 2279, 378},	/* CFG_GPMC_AD15_IN */
-+	{0x02B8, 2440, 70},	/* CFG_GPMC_AD1_IN */
-+	{0x02C4, 2404, 446},	/* CFG_GPMC_AD2_IN */
-+	{0x02D0, 2343, 212},	/* CFG_GPMC_AD3_IN */
-+	{0x02DC, 2355, 322},	/* CFG_GPMC_AD4_IN */
-+	{0x02E8, 2337, 192},	/* CFG_GPMC_AD5_IN */
-+	{0x02F4, 2270, 314},	/* CFG_GPMC_AD6_IN */
-+	{0x0300, 2339, 259},	/* CFG_GPMC_AD7_IN */
-+	{0x030C, 2308, 577},	/* CFG_GPMC_AD8_IN */
-+	{0x0318, 2334, 166},	/* CFG_GPMC_AD9_IN */
-+	{0x0378, 0, 0},	/* CFG_GPMC_CS3_IN */
-+	{0x0678, 0, 386},	/* CFG_MMC3_CLK_IN */
-+	{0x0680, 605, 0},	/* CFG_MMC3_CLK_OUT */
-+	{0x0684, 0, 0},	/* CFG_MMC3_CMD_IN */
-+	{0x0688, 0, 0},	/* CFG_MMC3_CMD_OEN */
-+	{0x068C, 0, 0},	/* CFG_MMC3_CMD_OUT */
-+	{0x0690, 171, 0},	/* CFG_MMC3_DAT0_IN */
-+	{0x0694, 0, 0},	/* CFG_MMC3_DAT0_OEN */
-+	{0x0698, 0, 0},	/* CFG_MMC3_DAT0_OUT */
-+	{0x069C, 221, 0},	/* CFG_MMC3_DAT1_IN */
-+	{0x06A0, 0, 0},	/* CFG_MMC3_DAT1_OEN */
-+	{0x06A4, 0, 0},	/* CFG_MMC3_DAT1_OUT */
-+	{0x06A8, 0, 0},	/* CFG_MMC3_DAT2_IN */
-+	{0x06AC, 0, 0},	/* CFG_MMC3_DAT2_OEN */
-+	{0x06B0, 0, 0},	/* CFG_MMC3_DAT2_OUT */
-+	{0x06B4, 474, 0},	/* CFG_MMC3_DAT3_IN */
-+	{0x06B8, 0, 0},	/* CFG_MMC3_DAT3_OEN */
-+	{0x06BC, 0, 0},	/* CFG_MMC3_DAT3_OUT */
-+	{0x06C0, 792, 0},	/* CFG_MMC3_DAT4_IN */
-+	{0x06C4, 0, 0},	/* CFG_MMC3_DAT4_OEN */
-+	{0x06C8, 0, 0},	/* CFG_MMC3_DAT4_OUT */
-+	{0x06CC, 782, 0},	/* CFG_MMC3_DAT5_IN */
-+	{0x06D0, 0, 0},	/* CFG_MMC3_DAT5_OEN */
-+	{0x06D4, 0, 0},	/* CFG_MMC3_DAT5_OUT */
-+	{0x06D8, 942, 0},	/* CFG_MMC3_DAT6_IN */
-+	{0x06DC, 0, 0},	/* CFG_MMC3_DAT6_OEN */
-+	{0x06E0, 0, 0},	/* CFG_MMC3_DAT6_OUT */
-+	{0x06E4, 636, 0},	/* CFG_MMC3_DAT7_IN */
-+	{0x06E8, 0, 0},	/* CFG_MMC3_DAT7_OEN */
-+	{0x06EC, 0, 0},	/* CFG_MMC3_DAT7_OUT */
-+	{0x06F0, 260, 0},	/* CFG_RGMII0_RXC_IN */
-+	{0x06FC, 0, 1412},	/* CFG_RGMII0_RXCTL_IN */
-+	{0x0708, 123, 1047},	/* CFG_RGMII0_RXD0_IN */
-+	{0x0714, 139, 1081},	/* CFG_RGMII0_RXD1_IN */
-+	{0x0720, 195, 1100},	/* CFG_RGMII0_RXD2_IN */
-+	{0x072C, 239, 1216},	/* CFG_RGMII0_RXD3_IN */
-+	{0x0740, 89, 0},	/* CFG_RGMII0_TXC_OUT */
-+	{0x074C, 15, 125},	/* CFG_RGMII0_TXCTL_OUT */
-+	{0x0758, 339, 162},	/* CFG_RGMII0_TXD0_OUT */
-+	{0x0764, 146, 94},	/* CFG_RGMII0_TXD1_OUT */
-+	{0x0770, 0, 27},	/* CFG_RGMII0_TXD2_OUT */
-+	{0x077C, 291, 205},	/* CFG_RGMII0_TXD3_OUT */
-+	{0x0A70, 0, 0},	/* CFG_VIN2A_D12_OUT */
-+	{0x0A7C, 219, 101},	/* CFG_VIN2A_D13_OUT */
-+	{0x0A88, 92, 58},	/* CFG_VIN2A_D14_OUT */
-+	{0x0A94, 135, 100},	/* CFG_VIN2A_D15_OUT */
-+	{0x0AA0, 154, 101},	/* CFG_VIN2A_D16_OUT */
-+	{0x0AAC, 78, 27},	/* CFG_VIN2A_D17_OUT */
-+	{0x0AB0, 411, 0},	/* CFG_VIN2A_D18_IN */
-+	{0x0ABC, 0, 382},	/* CFG_VIN2A_D19_IN */
-+	{0x0AD4, 320, 750},	/* CFG_VIN2A_D20_IN */
-+	{0x0AE0, 192, 836},	/* CFG_VIN2A_D21_IN */
-+	{0x0AEC, 294, 669},	/* CFG_VIN2A_D22_IN */
-+	{0x0AF8, 50, 700},	/* CFG_VIN2A_D23_IN */
-+	{0x0B9C, 0, 706},	/* CFG_VOUT1_CLK_OUT */
-+	{0x0BA8, 2313, 0},	/* CFG_VOUT1_D0_OUT */
-+	{0x0BB4, 2199, 0},	/* CFG_VOUT1_D10_OUT */
-+	{0x0BC0, 2266, 0},	/* CFG_VOUT1_D11_OUT */
-+	{0x0BCC, 3159, 0},	/* CFG_VOUT1_D12_OUT */
-+	{0x0BD8, 2100, 0},	/* CFG_VOUT1_D13_OUT */
-+	{0x0BE4, 2229, 0},	/* CFG_VOUT1_D14_OUT */
-+	{0x0BF0, 2202, 0},	/* CFG_VOUT1_D15_OUT */
-+	{0x0BFC, 2084, 0},	/* CFG_VOUT1_D16_OUT */
-+	{0x0C08, 2195, 0},	/* CFG_VOUT1_D17_OUT */
-+	{0x0C14, 2342, 0},	/* CFG_VOUT1_D18_OUT */
-+	{0x0C20, 2463, 0},	/* CFG_VOUT1_D19_OUT */
-+	{0x0C2C, 2439, 0},	/* CFG_VOUT1_D1_OUT */
-+	{0x0C38, 2304, 0},	/* CFG_VOUT1_D20_OUT */
-+	{0x0C44, 2103, 0},	/* CFG_VOUT1_D21_OUT */
-+	{0x0C50, 2145, 0},	/* CFG_VOUT1_D22_OUT */
-+	{0x0C5C, 1932, 0},	/* CFG_VOUT1_D23_OUT */
-+	{0x0C68, 2200, 0},	/* CFG_VOUT1_D2_OUT */
-+	{0x0C74, 2355, 0},	/* CFG_VOUT1_D3_OUT */
-+	{0x0C80, 3215, 0},	/* CFG_VOUT1_D4_OUT */
-+	{0x0C8C, 2314, 0},	/* CFG_VOUT1_D5_OUT */
-+	{0x0C98, 2238, 0},	/* CFG_VOUT1_D6_OUT */
-+	{0x0CA4, 2381, 0},	/* CFG_VOUT1_D7_OUT */
-+	{0x0CB0, 2138, 0},	/* CFG_VOUT1_D8_OUT */
-+	{0x0CBC, 2383, 0},	/* CFG_VOUT1_D9_OUT */
-+	{0x0CC8, 1984, 0},	/* CFG_VOUT1_DE_OUT */
-+	{0x0CE0, 1947, 0},	/* CFG_VOUT1_HSYNC_OUT */
-+	{0x0CEC, 2739, 0},	/* CFG_VOUT1_VSYNC_OUT */
-+};
-+
- const struct iodelay_cfg_entry iodelay_cfg_array_am574x_idk[] = {
- 	{0x0114, 2199, 621},	/* CFG_GPMC_A0_IN */
- 	{0x0120, 0, 0},	/* CFG_GPMC_A10_IN */
-diff --git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig
-index 3e2c166e0d..b1e2960a9f 100644
---- a/configs/am57xx_evm_defconfig
-+++ b/configs/am57xx_evm_defconfig
-@@ -27,14 +27,20 @@ CONFIG_SPL_DMA_SUPPORT=y
- CONFIG_SPL_OS_BOOT=y
- CONFIG_SPL_SPI_LOAD=y
- CONFIG_SPL_YMODEM_SUPPORT=y
-+CONFIG_AUTOBOOT_KEYED=y
-+CONFIG_AUTOBOOT_PROMPT="Press SPACE to abort autoboot in %d seconds\n"
-+CONFIG_AUTOBOOT_DELAY_STR="d"
-+CONFIG_AUTOBOOT_STOP_STR=" "
- CONFIG_CMD_SPL=y
- # CONFIG_CMD_FLASH is not set
- # CONFIG_CMD_SETEXPR is not set
- # CONFIG_CMD_PMIC is not set
-+CONFIG_CMD_BTRFS=y
- CONFIG_OF_CONTROL=y
- CONFIG_SPL_OF_CONTROL=y
--CONFIG_DEFAULT_DEVICE_TREE="am572x-idk"
--CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am572x-idk am571x-idk am574x-idk"
-+CONFIG_DEFAULT_DEVICE_TREE="am5729-beagleboneai"
-+CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am5729-beagleboneai am572x-idk am571x-idk am574x-idk"
-+# CONFIG_ENV_IS_IN_FAT is not set
- CONFIG_ENV_IS_IN_MMC=y
- CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
- CONFIG_DM=y
-diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h
-index 70aa425060..fcc6ac7f8f 100644
---- a/include/configs/am57xx_evm.h
-+++ b/include/configs/am57xx_evm.h
-@@ -24,7 +24,7 @@
- #define CONFIG_ENV_OFFSET_REDUND	(CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
- #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
- 
--#define CONSOLEDEV			"ttyO2"
-+//#define CONSOLEDEV			"ttyO2"
- #define CONFIG_SYS_NS16550_COM1		UART1_BASE	/* Base EVM has UART0 */
- #define CONFIG_SYS_NS16550_COM2		UART2_BASE	/* UART2 */
- #define CONFIG_SYS_NS16550_COM3		UART3_BASE	/* UART3 */
-diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h
-index 1e2a62dd6f..47f641165d 100644
---- a/include/configs/ti_armv7_common.h
-+++ b/include/configs/ti_armv7_common.h
-@@ -80,6 +80,363 @@
- #define CONFIG_SYS_I2C
- #endif
- 
-+#define EEPROM_PROGRAMMING \
-+	"eeprom_dump=i2c dev 0; " \
-+		"i2c md 0x50 0x00.2 20; " \
-+		"\0" \
-+	"eeprom_blank=i2c dev 0; " \
-+		"i2c mw 0x50 0x00.2 ff; " \
-+		"i2c mw 0x50 0x01.2 ff; " \
-+		"i2c mw 0x50 0x02.2 ff; " \
-+		"i2c mw 0x50 0x03.2 ff; " \
-+		"i2c mw 0x50 0x04.2 ff; " \
-+		"i2c mw 0x50 0x05.2 ff; " \
-+		"i2c mw 0x50 0x06.2 ff; " \
-+		"i2c mw 0x50 0x07.2 ff; " \
-+		"i2c mw 0x50 0x08.2 ff; " \
-+		"i2c mw 0x50 0x09.2 ff; " \
-+		"i2c mw 0x50 0x0a.2 ff; " \
-+		"i2c mw 0x50 0x0b.2 ff; " \
-+		"i2c mw 0x50 0x0c.2 ff; " \
-+		"i2c mw 0x50 0x0d.2 ff; " \
-+		"i2c mw 0x50 0x0e.2 ff; " \
-+		"i2c mw 0x50 0x0f.2 ff; " \
-+		"i2c mw 0x50 0x10.2 ff; " \
-+		"i2c mw 0x50 0x11.2 ff; " \
-+		"i2c mw 0x50 0x12.2 ff; " \
-+		"i2c mw 0x50 0x13.2 ff; " \
-+		"i2c mw 0x50 0x14.2 ff; " \
-+		"i2c mw 0x50 0x15.2 ff; " \
-+		"i2c mw 0x50 0x16.2 ff; " \
-+		"i2c mw 0x50 0x17.2 ff; " \
-+		"i2c mw 0x50 0x18.2 ff; " \
-+		"i2c mw 0x50 0x19.2 ff; " \
-+		"i2c mw 0x50 0x1a.2 ff; " \
-+		"i2c mw 0x50 0x1b.2 ff; " \
-+		"i2c mw 0x50 0x1c.2 ff; " \
-+		"i2c mw 0x50 0x1d.2 ff; " \
-+		"i2c mw 0x50 0x1e.2 ff; " \
-+		"i2c mw 0x50 0x1f.2 ff; " \
-+		"i2c md 0x50 0x00.2 20; " \
-+		"\0" \
-+	"eeprom_x15_b1=i2c dev 0; " \
-+		"i2c mw 0x50 0x00.2 aa; " \
-+		"i2c mw 0x50 0x01.2 55; " \
-+		"i2c mw 0x50 0x02.2 33; " \
-+		"i2c mw 0x50 0x03.2 ee; " \
-+		"i2c mw 0x50 0x04.2 42; " \
-+		"i2c mw 0x50 0x05.2 42; " \
-+		"i2c mw 0x50 0x06.2 52; " \
-+		"i2c mw 0x50 0x07.2 44; " \
-+		"i2c mw 0x50 0x08.2 58; " \
-+		"i2c mw 0x50 0x09.2 31; " \
-+		"i2c mw 0x50 0x0a.2 35; " \
-+		"i2c mw 0x50 0x0b.2 5f; " \
-+		"i2c mw 0x50 0x0c.2 42; " \
-+		"i2c mw 0x50 0x0d.2 2e; " \
-+		"i2c mw 0x50 0x0e.2 31; " \
-+		"i2c mw 0x50 0x0f.2 30; " \
-+		"i2c mw 0x50 0x10.2 57; " \
-+		"i2c mw 0x50 0x11.2 57; " \
-+		"i2c mw 0x50 0x12.2 59; " \
-+		"i2c mw 0x50 0x13.2 59; " \
-+		"i2c mw 0x50 0x14.2 34; " \
-+		"i2c mw 0x50 0x15.2 50; " \
-+		"i2c mw 0x50 0x16.2 35; " \
-+		"i2c mw 0x50 0x17.2 35; " \
-+		"i2c mw 0x50 0x18.2 30; " \
-+		"i2c mw 0x50 0x19.2 30; " \
-+		"i2c mw 0x50 0x1a.2 30; " \
-+		"i2c mw 0x50 0x1b.2 30; " \
-+		"i2c mw 0x50 0x1c.2 ff; " \
-+		"i2c mw 0x50 0x1d.2 ff; " \
-+		"i2c mw 0x50 0x1e.2 ff; " \
-+		"i2c mw 0x50 0x1f.2 ff; " \
-+		"i2c md 0x50 0x00.2 20; " \
-+		"\0" \
-+	"eeprom_x15_c=i2c dev 0; " \
-+		"i2c mw 0x50 0x00.2 aa; " \
-+		"i2c mw 0x50 0x01.2 55; " \
-+		"i2c mw 0x50 0x02.2 33; " \
-+		"i2c mw 0x50 0x03.2 ee; " \
-+		"i2c mw 0x50 0x04.2 42; " \
-+		"i2c mw 0x50 0x05.2 42; " \
-+		"i2c mw 0x50 0x06.2 52; " \
-+		"i2c mw 0x50 0x07.2 44; " \
-+		"i2c mw 0x50 0x08.2 58; " \
-+		"i2c mw 0x50 0x09.2 31; " \
-+		"i2c mw 0x50 0x0a.2 35; " \
-+		"i2c mw 0x50 0x0b.2 5f; " \
-+		"i2c mw 0x50 0x0c.2 43; " \
-+		"i2c mw 0x50 0x0d.2 2e; " \
-+		"i2c mw 0x50 0x0e.2 30; " \
-+		"i2c mw 0x50 0x0f.2 30; " \
-+		"i2c mw 0x50 0x10.2 79; " \
-+		"i2c mw 0x50 0x11.2 79; " \
-+		"i2c mw 0x50 0x12.2 77; " \
-+		"i2c mw 0x50 0x13.2 77; " \
-+		"i2c mw 0x50 0x14.2 50; " \
-+		"i2c mw 0x50 0x15.2 58; " \
-+		"i2c mw 0x50 0x16.2 31; " \
-+		"i2c mw 0x50 0x17.2 35; " \
-+		"i2c mw 0x50 0x18.2 6e; " \
-+		"i2c mw 0x50 0x19.2 6e; " \
-+		"i2c mw 0x50 0x1a.2 6e; " \
-+		"i2c mw 0x50 0x1b.2 6e; " \
-+		"i2c mw 0x50 0x1c.2 ff; " \
-+		"i2c mw 0x50 0x1d.2 ff; " \
-+		"i2c mw 0x50 0x1e.2 ff; " \
-+		"i2c mw 0x50 0x1f.2 ff; " \
-+		"i2c md 0x50 0x00.2 20; " \
-+		"\0" \
-+
-+#define EEWIKI_MMC_BOOT \
-+	"mmc_boot=${devtype} dev ${mmcdev}; ${devtype} part; " \
-+		"if ${devtype} rescan; then " \
-+			"echo Scanning ${devtype} device ${mmcdev};" \
-+			"setenv bootpart ${mmcdev}:1; " \
-+			"echo Checking for: /uEnv.txt ...;" \
-+			"if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
-+				"load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
-+				"env import -t ${loadaddr} ${filesize};" \
-+				"echo Loaded environment from /uEnv.txt;" \
-+				"echo Checking if uenvcmd is set ...;" \
-+				"if test -n ${uenvcmd}; then " \
-+					"echo Running uenvcmd ...;" \
-+					"run uenvcmd;" \
-+				"fi;" \
-+			"fi; " \
-+			"echo Checking for: /boot/uEnv.txt ...;" \
-+			"for i in 1 2 3 4 5 6 7 ; do " \
-+				"setenv mmcpart ${i};" \
-+				"setenv bootpart ${mmcdev}:${mmcpart};" \
-+				"if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
-+					"load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
-+					"env import -t ${loadaddr} ${filesize};" \
-+					"echo Loaded environment from /boot/uEnv.txt;" \
-+					"if test -n ${dtb}; then " \
-+						"setenv fdtfile ${dtb};" \
-+						"echo debug: [dtb=${fdtfile}] ...;" \
-+					"fi;" \
-+					"echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
-+					"if test -n ${uname_r}; then " \
-+						"echo debug: [uname_r=${uname_r}] ...;" \
-+						"setenv oldroot /dev/mmcblk${mmcdev}p${mmcpart};" \
-+						"run uname_boot;" \
-+					"fi;" \
-+				"fi;" \
-+			"done;" \
-+		"fi;\0" \
-+
-+#define EEWIKI_SCSI_BOOT \
-+	"scsi_boot=${devtype} reset ; " \
-+		"if ${devtype} dev ${mmcdev}; then " \
-+			"echo Scanning ${devtype} device ${mmcdev};" \
-+			"setenv bootpart ${mmcdev}:1; " \
-+			"echo Checking for: /uEnv.txt ...;" \
-+			"if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
-+				"load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
-+				"env import -t ${loadaddr} ${filesize};" \
-+				"echo Loaded environment from /uEnv.txt;" \
-+				"echo Checking if uenvcmd is set ...;" \
-+				"if test -n ${uenvcmd}; then " \
-+					"echo Running uenvcmd ...;" \
-+					"run uenvcmd;" \
-+				"fi;" \
-+			"fi; " \
-+			"echo Checking for: /boot/uEnv.txt ...;" \
-+			"for i in 1 2 3 4 ; do " \
-+				"setenv mmcpart ${i};" \
-+				"setenv bootpart ${mmcdev}:${mmcpart};" \
-+				"if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
-+					"load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
-+					"env import -t ${loadaddr} ${filesize};" \
-+					"echo Loaded environment from /boot/uEnv.txt;" \
-+					"if test -n ${dtb}; then " \
-+						"setenv fdtfile ${dtb};" \
-+						"echo debug: [dtb=${fdtfile}] ...;" \
-+					"fi;" \
-+					"echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
-+					"if test -n ${uname_r}; then " \
-+						"echo debug: [uname_r=${uname_r}] ...;" \
-+						"setenv oldroot /dev/sda${mmcpart};" \
-+						"run uname_boot;" \
-+					"fi;" \
-+				"fi;" \
-+			"done;" \
-+		"fi;\0" \
-+
-+#define EEWIKI_USB_BOOT \
-+	"usb_boot=${devtype} reset ; " \
-+		"if ${devtype} dev ${mmcdev}; then " \
-+			"echo Scanning ${devtype} device ${mmcdev};" \
-+			"setenv bootpart ${mmcdev}:1; " \
-+			"echo Checking for: /uEnv.txt ...;" \
-+			"if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
-+				"load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
-+				"env import -t ${loadaddr} ${filesize};" \
-+				"echo Loaded environment from /uEnv.txt;" \
-+				"echo Checking if uenvcmd is set in /uEnv.txt ...;" \
-+				"if test -n ${uenvcmd}; then " \
-+					"echo Running uenvcmd ...;" \
-+					"run uenvcmd;" \
-+				"fi;" \
-+			"fi; " \
-+			"echo Checking for: /boot/uEnv.txt ...;" \
-+			"for i in 1 2 3 4 ; do " \
-+				"setenv mmcpart ${i};" \
-+				"setenv bootpart ${mmcdev}:${mmcpart};" \
-+				"if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
-+					"load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
-+					"env import -t ${loadaddr} ${filesize};" \
-+					"echo Loaded environment from /boot/uEnv.txt;" \
-+					"if test -n ${dtb}; then " \
-+						"setenv fdtfile ${dtb};" \
-+						"echo debug: [dtb=${fdtfile}] ...;" \
-+					"fi;" \
-+					"echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
-+					"if test -n ${uname_r}; then " \
-+						"echo debug: [uname_r=${uname_r}] ...;" \
-+						"setenv oldroot /dev/sda${mmcpart};" \
-+						"run uname_boot;" \
-+					"fi;" \
-+				"fi;" \
-+			"done;" \
-+		"fi;\0" \
-+
-+#define EEWIKI_UNAME_BOOT \
-+	"uname_boot="\
-+		"setenv bootdir /boot; " \
-+		"setenv bootfile vmlinuz-${uname_r}; " \
-+		"if test -e ${devtype} ${bootpart} ${bootdir}/${bootfile}; then " \
-+			"echo loading ${bootdir}/${bootfile} ...; "\
-+			"run loadimage;" \
-+			"setenv fdtdir /boot/dtbs/${uname_r}; " \
-+			"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
-+				"run loadfdt;" \
-+			"else " \
-+				"setenv fdtdir /usr/lib/linux-image-${uname_r}; " \
-+				"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
-+					"run loadfdt;" \
-+				"else " \
-+					"setenv fdtdir /lib/firmware/${uname_r}/device-tree; " \
-+					"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
-+						"run loadfdt;" \
-+					"else " \
-+						"setenv fdtdir /boot/dtb-${uname_r}; " \
-+						"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
-+							"run loadfdt;" \
-+						"else " \
-+							"setenv fdtdir /boot/dtbs; " \
-+							"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
-+								"run loadfdt;" \
-+							"else " \
-+								"setenv fdtdir /boot/dtb; " \
-+								"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
-+									"run loadfdt;" \
-+								"else " \
-+									"setenv fdtdir /boot; " \
-+									"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
-+										"run loadfdt;" \
-+									"else " \
-+										"echo; echo unable to find ${fdtfile} ...; echo booting legacy ...;"\
-+										"run args_mmc;" \
-+										"echo debug: [${bootargs}] ... ;" \
-+										"echo debug: [bootz ${loadaddr}] ... ;" \
-+										"bootz ${loadaddr}; " \
-+									"fi;" \
-+								"fi;" \
-+							"fi;" \
-+						"fi;" \
-+					"fi;" \
-+				"fi;" \
-+			"fi; " \
-+			"if test -n ${enable_uboot_overlays}; then " \
-+				"setenv fdt_buffer 0x60000;" \
-+				"if test -n ${uboot_fdt_buffer}; then " \
-+					"setenv fdt_buffer ${uboot_fdt_buffer};" \
-+				"fi;" \
-+				"echo uboot_overlays: [fdt_buffer=${fdt_buffer}] ... ;" \
-+				"if test -n ${uboot_overlay_addr0}; then " \
-+					"setenv uboot_overlay ${uboot_overlay_addr0}; " \
-+					"run capeloadoverlay;" \
-+				"fi;" \
-+				"if test -n ${uboot_overlay_addr1}; then " \
-+					"setenv uboot_overlay ${uboot_overlay_addr1}; " \
-+					"run capeloadoverlay;" \
-+				"fi;" \
-+				"if test -n ${uboot_overlay_addr2}; then " \
-+					"setenv uboot_overlay ${uboot_overlay_addr2}; " \
-+					"run capeloadoverlay;" \
-+				"fi;" \
-+				"if test -n ${uboot_overlay_addr3}; then " \
-+					"setenv uboot_overlay ${uboot_overlay_addr3}; " \
-+					"run capeloadoverlay;" \
-+				"fi;" \
-+				"if test -n ${uboot_overlay_addr4}; then " \
-+					"setenv uboot_overlay ${uboot_overlay_addr4}; " \
-+					"run capeloadoverlay;" \
-+				"fi;" \
-+				"if test -n ${uboot_overlay_addr5}; then " \
-+					"setenv uboot_overlay ${uboot_overlay_addr5}; " \
-+					"run capeloadoverlay;" \
-+				"fi;" \
-+				"if test -n ${uboot_overlay_addr6}; then " \
-+					"setenv uboot_overlay ${uboot_overlay_addr6}; " \
-+					"run capeloadoverlay;" \
-+				"fi;" \
-+				"if test -n ${uboot_overlay_addr7}; then " \
-+					"setenv uboot_overlay ${uboot_overlay_addr7}; " \
-+					"run capeloadoverlay;" \
-+				"fi;" \
-+				"if test -n ${uboot_overlay_pru}; then " \
-+					"setenv uboot_overlay ${uboot_overlay_pru}; " \
-+					"run virtualloadoverlay;" \
-+				"fi;" \
-+			"else " \
-+				"echo uboot_overlays: add [enable_uboot_overlays=1] to /boot/uEnv.txt to enable...;" \
-+			"fi;" \
-+			"setenv rdfile initrd.img-${uname_r}; " \
-+			"if test -e ${devtype} ${bootpart} ${bootdir}/${rdfile}; then " \
-+				"echo loading ${bootdir}/${rdfile} ...; "\
-+				"run loadrd;" \
-+				"if test -n ${netinstall_enable}; then " \
-+					"run args_netinstall; run message;" \
-+					"echo debug: [${bootargs}] ... ;" \
-+					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
-+					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
-+				"fi;" \
-+				"if test -n ${uenv_root}; then " \
-+					"run args_uenv_root;" \
-+					"echo debug: [${bootargs}] ... ;" \
-+					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
-+					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
-+				"fi;" \
-+				"if test -n ${uuid}; then " \
-+					"run args_mmc_uuid;" \
-+					"echo debug: [${bootargs}] ... ;" \
-+					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
-+					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
-+				"else " \
-+					"run args_mmc_old;" \
-+					"echo debug: [${bootargs}] ... ;" \
-+					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
-+					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
-+				"fi;" \
-+			"else " \
-+				"if test -n ${uenv_root}; then " \
-+					"run args_uenv_root;" \
-+					"echo debug: [${bootargs}] ... ;" \
-+					"echo debug: [bootz ${loadaddr} - ${fdtaddr}] ... ;" \
-+					"bootz ${loadaddr} - ${fdtaddr}; " \
-+				"fi;" \
-+				"run args_mmc_old;" \
-+				"echo debug: [${bootargs}] ... ;" \
-+				"echo debug: [bootz ${loadaddr} - ${fdtaddr}] ... ;" \
-+				"bootz ${loadaddr} - ${fdtaddr}; " \
-+			"fi;" \
-+		"fi;\0" \
-+
- /*
-  * The following are general good-enough settings for U-Boot.  We set a
-  * large malloc pool as we generally have a lot of DDR, and we opt for
-diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h
-index ba57c40182..93368cdc51 100644
---- a/include/configs/ti_omap5_common.h
-+++ b/include/configs/ti_omap5_common.h
-@@ -63,6 +63,11 @@
- 	DEFAULT_FIT_TI_ARGS \
- 	DEFAULT_COMMON_BOOT_TI_ARGS \
- 	DEFAULT_FDT_TI_ARGS \
-+	EEWIKI_USB_BOOT \
-+	EEWIKI_SCSI_BOOT \
-+	EEWIKI_MMC_BOOT \
-+	EEWIKI_UNAME_BOOT \
-+	EEPROM_PROGRAMMING \
- 	DFUARGS \
- 	NETARGS \
- 
-diff --git a/include/environment/ti/boot.h b/include/environment/ti/boot.h
-index 05bdbbc23e..b0254b064a 100644
---- a/include/environment/ti/boot.h
-+++ b/include/environment/ti/boot.h
-@@ -64,32 +64,18 @@
- 	"bootpart=0:2\0" \
- 	"bootdir=/boot\0" \
- 	"bootfile=zImage\0" \
-+	"board_eeprom_header=undefined\0" \
- 	"usbtty=cdc_acm\0" \
- 	"vram=16M\0" \
- 	AVB_VERIFY_CMD \
- 	"partitions=" PARTS_DEFAULT "\0" \
- 	"optargs=\0" \
- 	"dofastboot=0\0" \
--	"emmc_linux_boot=" \
--		"echo Trying to boot Linux from eMMC ...; " \
--		"setenv mmcdev 1; " \
--		"setenv bootpart 1:2; " \
--		"setenv mmcroot /dev/mmcblk0p2 rw; " \
--		"run mmcboot;\0" \
--	"emmc_android_boot=" \
--		"echo Trying to boot Android from eMMC ...; " \
--		"run update_to_fit; " \
--		"setenv eval_bootargs setenv bootargs $bootargs; " \
--		"run eval_bootargs; " \
--		"setenv mmcdev 1; " \
--		"setenv machid fe6; " \
--		"mmc dev $mmcdev; " \
--		"mmc rescan; " \
--		AVB_VERIFY_CHECK \
--		"part start mmc ${mmcdev} boot boot_start; " \
--		"part size mmc ${mmcdev} boot boot_size; " \
--		"mmc read ${loadaddr} ${boot_start} ${boot_size}; " \
--		"bootm ${loadaddr}#${fdtfile};\0 "
-+	"read_board_eeprom="\
-+		"if test $board_eeprom_header = beagle_x15_revb1_blank; then " \
-+			"run eeprom_dump; run eeprom_x15_b1; reset; fi; " \
-+		"if test $board_eeprom_header = beagle_x15_revc_blank; then " \
-+			"run eeprom_dump; run eeprom_x15_c; reset; fi;  \0 "
- 
- #ifdef CONFIG_OMAP54XX
- 
-@@ -127,20 +113,17 @@
- 			"echo WARNING: Could not determine device tree to use; fi; \0"
- 
- #define CONFIG_BOOTCOMMAND \
--	"if test ${dofastboot} -eq 1; then " \
--		"echo Boot fastboot requested, resetting dofastboot ...;" \
--		"setenv dofastboot 0; saveenv;" \
--		"echo Booting into fastboot ...; " \
--		"fastboot " __stringify(CONFIG_FASTBOOT_USB_DEV) "; " \
--	"fi;" \
--	"if test ${boot_fit} -eq 1; then "	\
--		"run update_to_fit;"	\
--	"fi;"	\
-+	"run read_board_eeprom; " \
- 	"run findfdt; " \
--	"run envboot; " \
--	"run mmcboot;" \
--	"run emmc_linux_boot; " \
--	"run emmc_android_boot; " \
-+	"setenv mmcdev 0; " \
-+	"setenv devtype usb; " \
-+	"echo usb_boot is currently disabled;" \
-+	"setenv devtype scsi; " \
-+	"echo scsi_boot is currently disabled;" \
-+	"setenv devtype mmc; " \
-+	"run mmc_boot;" \
-+	"setenv mmcdev 1; " \
-+	"run mmc_boot;" \
- 	""
- 
- #endif /* CONFIG_OMAP54XX */
-diff --git a/include/environment/ti/mmc.h b/include/environment/ti/mmc.h
-index 785fc15345..6481682fc7 100644
---- a/include/environment/ti/mmc.h
-+++ b/include/environment/ti/mmc.h
-@@ -11,11 +11,33 @@
- #define DEFAULT_MMC_TI_ARGS \
- 	"mmcdev=0\0" \
- 	"mmcrootfstype=ext4 rootwait\0" \
--	"finduuid=part uuid mmc ${bootpart} uuid\0" \
-+	"finduuid=part uuid ${devtype} ${bootpart} uuid\0" \
- 	"args_mmc=run finduuid;setenv bootargs console=${console} " \
- 		"${optargs} " \
--		"root=PARTUUID=${uuid} rw " \
--		"rootfstype=${mmcrootfstype}\0" \
-+		"root=PARTUUID=${uuid} ro " \
-+		"rootfstype=${mmcrootfstype} " \
-+		"${cmdline}\0" \
-+	"args_mmc_old=setenv bootargs console=${console} " \
-+		"${optargs} " \
-+		"root=${oldroot} ro " \
-+		"rootfstype=${mmcrootfstype} " \
-+		"${cmdline}\0" \
-+	"args_mmc_uuid=setenv bootargs console=${console} " \
-+		"${optargs} " \
-+		"root=UUID=${uuid} ro " \
-+		"rootfstype=${mmcrootfstype} " \
-+		"${cmdline}\0" \
-+	"args_uenv_root=setenv bootargs console=${console} " \
-+		"${optargs} " \
-+		"root=${uenv_root} ro " \
-+		"rootfstype=${mmcrootfstype} " \
-+		"${musb} ${cmdline}\0" \
-+	"args_netinstall=setenv bootargs ${netinstall_bootargs} " \
-+		"${optargs} " \
-+		"${cape_disable} " \
-+		"${cape_enable} " \
-+		"root=/dev/ram rw " \
-+		"${cmdline}\0" \
- 	"loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
- 	"bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
- 		"source ${loadaddr}\0" \
-@@ -24,7 +46,22 @@
- 		"env import -t ${loadaddr} ${filesize}\0" \
- 	"loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \
- 	"loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
--	"loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
-+	"loadrd=load ${devtype} ${bootpart} ${rdaddr} ${bootdir}/${rdfile}; setenv rdsize ${filesize}\0" \
-+	"loadfdt=echo loading ${fdtdir}/${fdtfile} ...; load ${devtype} ${bootpart} ${fdtaddr} ${fdtdir}/${fdtfile}\0" \
-+	"loadoverlay=echo uboot_overlays: loading ${uboot_overlay} ...; " \
-+		"load ${devtype} ${bootpart} ${rdaddr} ${uboot_overlay}; " \
-+		"fdt addr ${fdtaddr}; fdt resize ${fdt_buffer}; " \
-+		"fdt apply ${rdaddr}; fdt resize ${fdt_buffer};\0" \
-+	"virtualloadoverlay=if test -e ${devtype} ${bootpart} ${uboot_overlay}; then " \
-+				"run loadoverlay;" \
-+			"else " \
-+				"echo uboot_overlays: unable to find [${devtype} ${bootpart} ${uboot_overlay}]...;" \
-+			"fi;\0" \
-+	"capeloadoverlay=if test -e ${devtype} ${bootpart} ${uboot_overlay}; then " \
-+				"run loadoverlay;" \
-+			"else " \
-+				"echo uboot_overlays: unable to find [${devtype} ${bootpart} ${uboot_overlay}]...;" \
-+			"fi;\0" \
- 	"envboot=mmc dev ${mmcdev}; " \
- 		"if mmc rescan; then " \
- 			"echo SD/MMC found on device ${mmcdev};" \
--- 
-2.17.1
-

+ 839 - 0
board/beagleboneai/patches/uboot/0001-am57xx_evm-fixes.patch

@@ -0,0 +1,839 @@
+From 702ea30b462ba06f4fbee3393f0e6c19531f1e5f Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Fri, 25 Jun 2021 11:33:25 -0500
+Subject: [PATCH] am57xx_evm-fixes
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+[Patch from https://github.com/beagleboard/u-boot/commit/702ea30b462ba06f4fbee3393f0e6c19531f1e5f]
+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
+---
+ arch/arm/mach-omap2/omap5/hw_data.c |   1 +
+ board/ti/am57xx/board.c             | 167 +++++++++++-
+ configs/am57xx_evm_defconfig        |  15 +-
+ include/configs/ti_armv7_common.h   | 407 ++++++++++++++++++++++++++++
+ include/configs/ti_omap5_common.h   |   5 +
+ include/environment/ti/boot.h       |  32 ++-
+ include/environment/ti/mmc.h        |  49 +++-
+ 7 files changed, 651 insertions(+), 25 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/omap5/hw_data.c b/arch/arm/mach-omap2/omap5/hw_data.c
+index fa4e27063c..d5192b1671 100644
+--- a/arch/arm/mach-omap2/omap5/hw_data.c
++++ b/arch/arm/mach-omap2/omap5/hw_data.c
+@@ -421,6 +421,7 @@ void enable_basic_clocks(void)
+ 		(*prcm)->cm_l4per_uart1_clkctrl,
+ 		(*prcm)->cm_l4per_uart3_clkctrl,
+ 		(*prcm)->cm_l4per_i2c1_clkctrl,
++		(*prcm)->cm_l4per_i2c4_clkctrl,
+ #ifdef CONFIG_DRIVER_TI_CPSW
+ 		(*prcm)->cm_gmac_gmac_clkctrl,
+ #endif
+diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c
+index 73063faee6..ad05c41f22 100644
+--- a/board/ti/am57xx/board.c
++++ b/board/ti/am57xx/board.c
+@@ -41,6 +41,7 @@
+ #include <mmc.h>
+ #include <dm/uclass.h>
+ #include <hang.h>
++#include <i2c.h>
+ 
+ #include "../common/board_detect.h"
+ #include "mux_data.h"
+@@ -528,8 +529,10 @@ void do_board_detect(void)
+ 
+ 	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
+ 				  CONFIG_EEPROM_CHIP_ADDRESS);
+-	if (rc)
++	if (rc) {
+ 		printf("ti_i2c_eeprom_init failed %d\n", rc);
++		ti_i2c_eeprom_am_set("BBONE-AI", "A");
++	};
+ 
+ #ifdef CONFIG_SUPPORT_EMMC_BOOT
+ 	rc = board_bootmode_has_emmc();
+@@ -579,6 +582,164 @@ void do_board_detect(void)
+ 			 "Board: %s REV %s\n", bname, board_ti_get_rev());
+ }
+ 
++struct am335x_cape_eeprom_id {
++	unsigned int header;
++	char eeprom_rev[2];
++	char board_name[32];
++	char version[4];
++	char manufacture[16];
++	char part_number[16];
++	char number_of_pins[2];
++	char serial_number[12];
++	char pin_usage[140];
++	char vdd_3v3exp[ 2];
++	char vdd_5v[ 2];
++	char sys_5v[2];
++	char dc_supplied[2];
++};
++
++#define CAPE_EEPROM_BUS_NUM 3
++#define CAPE_EEPROM_ADDR0	0x54
++#define CAPE_EEPROM_ADDR1	0x55
++#define CAPE_EEPROM_ADDR2	0x56
++#define CAPE_EEPROM_ADDR3	0x57
++
++#define CAPE_EEPROM_ADDR_LEN 0x10
++
++static int probe_cape_eeprom(struct am335x_cape_eeprom_id *cape_header)
++{
++	int ret;
++	struct udevice *dev;
++	unsigned char addr;
++	/* /lib/firmware/BB-CAPE-DISP-CT4-00A0.dtbo */
++	/* 14 + 16 + 1 + 4 + 5 = 40 */
++	char hash_cape_overlay[40];
++	char cape_overlay[26];
++	char process_cape_part_number[16];
++	char process_cape_version[4];
++	char end_part_number;
++	char cape_overlay_pass_to_kernel[18];
++
++	strlcpy(cape_overlay_pass_to_kernel, "", 1);
++
++	for ( addr = CAPE_EEPROM_ADDR0; addr <= CAPE_EEPROM_ADDR3; addr++ ) {
++		ret = i2c_get_chip_for_busnum(CAPE_EEPROM_BUS_NUM, addr, 1, &dev);
++		if (ret) {
++			printf("BeagleBone Cape EEPROM: no EEPROM at address: 0x%x\n", addr);
++		} else {
++			printf("BeagleBone Cape EEPROM: found EEPROM at address: 0x%x\n", addr);
++
++			ret = i2c_set_chip_offset_len(dev, 2);
++			if (ret) {
++				printf("BeagleBone Cape EEPROM: i2c_set_chip_offset_len failure\n");
++			}
++
++			ret = dm_i2c_read(dev, 0, (uchar *)cape_header, sizeof(struct am335x_cape_eeprom_id));
++			if (ret) {
++				printf("BeagleBone Cape EEPROM: Cannot read eeprom params\n");
++			}
++
++			if (cape_header->header == 0xEE3355AA) {
++				strlcpy(hash_cape_overlay, "/lib/firmware/", 14 + 1);
++				strlcpy(cape_overlay, "", 2);
++				strlcpy(cape_overlay_pass_to_kernel, "", 2);
++				strlcpy(process_cape_part_number, "...............", 16 + 1);
++				strlcpy(process_cape_version, "...", 4 + 1);
++
++				strlcpy(process_cape_part_number, cape_header->part_number, 16 + 1);
++				printf("BeagleBone Cape EEPROM: debug part_number field:[%s]\n", process_cape_part_number);
++
++				//FIXME: some capes end with '.'
++				if ( process_cape_part_number[15] == 0x2E ) {
++					puts("debug: fixup, extra . in eeprom field\n");
++					process_cape_part_number[15] = 0x00;
++					if ( process_cape_part_number[14] == 0x2E ) {
++						process_cape_part_number[14] = 0x00;
++					}
++				}
++
++				//Find ending 0x00 or 0xFF
++				puts("BeagleBone Cape EEPROM: debug part_number field HEX:[");
++				end_part_number=16;
++				for ( int i=0; i <= 16; i++ ) {
++					if (( process_cape_part_number[i] == 0x00 ) || ( process_cape_part_number[i] == 0xFF )) {
++						end_part_number=i;
++						i=17;
++					} else {
++						printf("%x", process_cape_part_number[i]);
++					}
++				}
++				puts("]\n");
++
++				strncat(cape_overlay_pass_to_kernel, process_cape_part_number, end_part_number);
++				strncat(cape_overlay_pass_to_kernel, ",", 1);
++				//printf("debug: %s\n", cape_overlay_pass_to_kernel);
++
++				strncat(hash_cape_overlay, process_cape_part_number, end_part_number);
++				strncat(cape_overlay, process_cape_part_number, end_part_number);
++				//printf("debug: %s %s\n", hash_cape_overlay, cape_overlay);
++
++				strncat(hash_cape_overlay, "-", 1);
++				strncat(cape_overlay, "-", 1);
++				//printf("debug: %s %s\n", hash_cape_overlay, cape_overlay);
++
++				strlcpy(process_cape_version, cape_header->version, 4 + 1);
++				//printf("debug: version field:[%s]\n", process_cape_version);
++
++				//Find invalid 0xFF -> 0x30 BBAI FAN Cape...
++				puts("BeagleBone Cape EEPROM: debug version field HEX:[");
++				for ( int i=0; i <= 3; i++ ) {
++					printf("%x", process_cape_version[i]);
++					if ( process_cape_version[i] == 0xFF ) {
++						process_cape_version[i] = 0x30;
++					}
++				}
++				puts("]\n");
++
++				strncat(hash_cape_overlay, process_cape_version, 4);
++				strncat(cape_overlay, process_cape_version, 4);
++				//printf("debug: %s %s\n", hash_cape_overlay, cape_overlay);
++
++				strncat(hash_cape_overlay, ".dtbo", 5);
++				strncat(cape_overlay, ".dtbo", 5);
++				//printf("debug: %s %s\n", hash_cape_overlay, cape_overlay);
++
++				printf("BeagleBone Cape EEPROM: 0x%x %s\n", addr, cape_overlay);
++
++				switch(addr) {
++					case CAPE_EEPROM_ADDR0:
++						env_set("uboot_overlay_addr0", cape_overlay);
++						env_set("uboot_detected_capes_addr0", cape_overlay_pass_to_kernel);
++						break;
++					case CAPE_EEPROM_ADDR1:
++						env_set("uboot_overlay_addr1", cape_overlay);
++						env_set("uboot_detected_capes_addr1", cape_overlay_pass_to_kernel);
++						break;
++					case CAPE_EEPROM_ADDR2:
++						env_set("uboot_overlay_addr2", cape_overlay);
++						env_set("uboot_detected_capes_addr2", cape_overlay_pass_to_kernel);
++						break;
++					case CAPE_EEPROM_ADDR3:
++						env_set("uboot_overlay_addr3", cape_overlay);
++						env_set("uboot_detected_capes_addr3", cape_overlay_pass_to_kernel);
++						break;
++				}
++				env_set("uboot_detected_capes", "1");
++			} else {
++				printf("BeagleBone Cape EEPROM: EEPROM contents not valid (or blank) on address: 0x%x\n", addr);
++			}
++		}
++	}
++	return 0;
++}
++
++void do_cape_detect(void)
++{
++	struct am335x_cape_eeprom_id cape_header;
++
++	probe_cape_eeprom(&cape_header);
++}
++
+ static void setup_board_eeprom_env(void)
+ {
+ 	char *name = "beagle_x15";
+@@ -782,8 +943,10 @@ int board_late_init(void)
+ 	/* Just probe the potentially supported cdce913 device */
+ 	uclass_get_device(UCLASS_CLK, 0, &dev);
+ 
+-	if (board_is_bbai())
++	if (board_is_bbai()) {
+ 		env_set("console", "ttyS0,115200n8");
++		do_cape_detect();
++	}
+ 
+ #if !defined(CONFIG_SPL_BUILD)
+ 	board_ti_set_ethaddr(2);
+diff --git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig
+index 4da4aaa1c7..ed5b8aec16 100644
+--- a/configs/am57xx_evm_defconfig
++++ b/configs/am57xx_evm_defconfig
+@@ -10,16 +10,20 @@ CONFIG_SPL_TEXT_BASE=0x40300000
+ CONFIG_OMAP54XX=y
+ CONFIG_TARGET_AM57XX_EVM=y
+ CONFIG_SPL=y
+-CONFIG_ENV_OFFSET_REDUND=0x280000
+ CONFIG_SPL_SPI_FLASH_SUPPORT=y
+ CONFIG_SPL_SPI_SUPPORT=y
+ CONFIG_ARMV7_LPAE=y
+-CONFIG_DEFAULT_DEVICE_TREE="am572x-idk"
++CONFIG_DEFAULT_DEVICE_TREE="am57xx-beagle-x15-revc"
+ CONFIG_AHCI=y
+ CONFIG_DISTRO_DEFAULTS=y
+ CONFIG_SPL_LOAD_FIT=y
+ # CONFIG_USE_SPL_FIT_GENERATOR is not set
+ CONFIG_OF_BOARD_SETUP=y
++CONFIG_BOOTDELAY=1
++CONFIG_AUTOBOOT_KEYED=y
++CONFIG_AUTOBOOT_PROMPT="Press SPACE to abort autoboot in %d seconds\n"
++CONFIG_AUTOBOOT_DELAY_STR="d"
++CONFIG_AUTOBOOT_STOP_STR=" "
+ CONFIG_USE_BOOTARGS=y
+ CONFIG_BOOTARGS="androidboot.serialno=${serial#} console=ttyS2,115200 androidboot.console=ttyS2 androidboot.hardware=beagle_x15board"
+ # CONFIG_USE_BOOTCOMMAND is not set
+@@ -48,13 +52,12 @@ CONFIG_BOOTP_DNS2=y
+ CONFIG_CMD_AVB=y
+ CONFIG_OF_CONTROL=y
+ CONFIG_SPL_OF_CONTROL=y
+-CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am5729-beagleboneai am572x-idk am571x-idk am574x-idk"
++CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am5729-beagleboneai"
+ CONFIG_ENV_OVERWRITE=y
+-CONFIG_ENV_IS_IN_MMC=y
+-CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
++# CONFIG_ENV_IS_IN_FAT is not set
+ CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+-CONFIG_SYS_MMC_ENV_DEV=1
+ CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
++# CONFIG_SPL_ENV_IS_NOWHERE is not set
+ CONFIG_VERSION_VARIABLE=y
+ CONFIG_BOOTP_SEND_HOSTNAME=y
+ CONFIG_DM=y
+diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h
+index f13e9e5264..eabd03e27d 100644
+--- a/include/configs/ti_armv7_common.h
++++ b/include/configs/ti_armv7_common.h
+@@ -92,6 +92,413 @@
+ #define CONFIG_SYS_I2C
+ #endif
+ 
++#define EEPROM_PROGRAMMING \
++	"eeprom_dump=i2c dev 0; " \
++		"i2c md 0x50 0x00.2 20; " \
++		"\0" \
++	"eeprom_blank=i2c dev 0; " \
++		"i2c mw 0x50 0x00.2 ff; " \
++		"i2c mw 0x50 0x01.2 ff; " \
++		"i2c mw 0x50 0x02.2 ff; " \
++		"i2c mw 0x50 0x03.2 ff; " \
++		"i2c mw 0x50 0x04.2 ff; " \
++		"i2c mw 0x50 0x05.2 ff; " \
++		"i2c mw 0x50 0x06.2 ff; " \
++		"i2c mw 0x50 0x07.2 ff; " \
++		"i2c mw 0x50 0x08.2 ff; " \
++		"i2c mw 0x50 0x09.2 ff; " \
++		"i2c mw 0x50 0x0a.2 ff; " \
++		"i2c mw 0x50 0x0b.2 ff; " \
++		"i2c mw 0x50 0x0c.2 ff; " \
++		"i2c mw 0x50 0x0d.2 ff; " \
++		"i2c mw 0x50 0x0e.2 ff; " \
++		"i2c mw 0x50 0x0f.2 ff; " \
++		"i2c mw 0x50 0x10.2 ff; " \
++		"i2c mw 0x50 0x11.2 ff; " \
++		"i2c mw 0x50 0x12.2 ff; " \
++		"i2c mw 0x50 0x13.2 ff; " \
++		"i2c mw 0x50 0x14.2 ff; " \
++		"i2c mw 0x50 0x15.2 ff; " \
++		"i2c mw 0x50 0x16.2 ff; " \
++		"i2c mw 0x50 0x17.2 ff; " \
++		"i2c mw 0x50 0x18.2 ff; " \
++		"i2c mw 0x50 0x19.2 ff; " \
++		"i2c mw 0x50 0x1a.2 ff; " \
++		"i2c mw 0x50 0x1b.2 ff; " \
++		"i2c mw 0x50 0x1c.2 ff; " \
++		"i2c mw 0x50 0x1d.2 ff; " \
++		"i2c mw 0x50 0x1e.2 ff; " \
++		"i2c mw 0x50 0x1f.2 ff; " \
++		"i2c md 0x50 0x00.2 20; " \
++		"\0" \
++	"eeprom_x15_b1=i2c dev 0; " \
++		"i2c mw 0x50 0x00.2 aa; " \
++		"i2c mw 0x50 0x01.2 55; " \
++		"i2c mw 0x50 0x02.2 33; " \
++		"i2c mw 0x50 0x03.2 ee; " \
++		"i2c mw 0x50 0x04.2 42; " \
++		"i2c mw 0x50 0x05.2 42; " \
++		"i2c mw 0x50 0x06.2 52; " \
++		"i2c mw 0x50 0x07.2 44; " \
++		"i2c mw 0x50 0x08.2 58; " \
++		"i2c mw 0x50 0x09.2 31; " \
++		"i2c mw 0x50 0x0a.2 35; " \
++		"i2c mw 0x50 0x0b.2 5f; " \
++		"i2c mw 0x50 0x0c.2 42; " \
++		"i2c mw 0x50 0x0d.2 2e; " \
++		"i2c mw 0x50 0x0e.2 31; " \
++		"i2c mw 0x50 0x0f.2 30; " \
++		"i2c mw 0x50 0x10.2 57; " \
++		"i2c mw 0x50 0x11.2 57; " \
++		"i2c mw 0x50 0x12.2 59; " \
++		"i2c mw 0x50 0x13.2 59; " \
++		"i2c mw 0x50 0x14.2 34; " \
++		"i2c mw 0x50 0x15.2 50; " \
++		"i2c mw 0x50 0x16.2 35; " \
++		"i2c mw 0x50 0x17.2 35; " \
++		"i2c mw 0x50 0x18.2 30; " \
++		"i2c mw 0x50 0x19.2 30; " \
++		"i2c mw 0x50 0x1a.2 30; " \
++		"i2c mw 0x50 0x1b.2 30; " \
++		"i2c mw 0x50 0x1c.2 ff; " \
++		"i2c mw 0x50 0x1d.2 ff; " \
++		"i2c mw 0x50 0x1e.2 ff; " \
++		"i2c mw 0x50 0x1f.2 ff; " \
++		"i2c md 0x50 0x00.2 20; " \
++		"\0" \
++	"eeprom_x15_c=i2c dev 0; " \
++		"i2c mw 0x50 0x00.2 aa; " \
++		"i2c mw 0x50 0x01.2 55; " \
++		"i2c mw 0x50 0x02.2 33; " \
++		"i2c mw 0x50 0x03.2 ee; " \
++		"i2c mw 0x50 0x04.2 42; " \
++		"i2c mw 0x50 0x05.2 42; " \
++		"i2c mw 0x50 0x06.2 52; " \
++		"i2c mw 0x50 0x07.2 44; " \
++		"i2c mw 0x50 0x08.2 58; " \
++		"i2c mw 0x50 0x09.2 31; " \
++		"i2c mw 0x50 0x0a.2 35; " \
++		"i2c mw 0x50 0x0b.2 5f; " \
++		"i2c mw 0x50 0x0c.2 43; " \
++		"i2c mw 0x50 0x0d.2 2e; " \
++		"i2c mw 0x50 0x0e.2 30; " \
++		"i2c mw 0x50 0x0f.2 30; " \
++		"i2c mw 0x50 0x10.2 79; " \
++		"i2c mw 0x50 0x11.2 79; " \
++		"i2c mw 0x50 0x12.2 77; " \
++		"i2c mw 0x50 0x13.2 77; " \
++		"i2c mw 0x50 0x14.2 50; " \
++		"i2c mw 0x50 0x15.2 58; " \
++		"i2c mw 0x50 0x16.2 31; " \
++		"i2c mw 0x50 0x17.2 35; " \
++		"i2c mw 0x50 0x18.2 6e; " \
++		"i2c mw 0x50 0x19.2 6e; " \
++		"i2c mw 0x50 0x1a.2 6e; " \
++		"i2c mw 0x50 0x1b.2 6e; " \
++		"i2c mw 0x50 0x1c.2 ff; " \
++		"i2c mw 0x50 0x1d.2 ff; " \
++		"i2c mw 0x50 0x1e.2 ff; " \
++		"i2c mw 0x50 0x1f.2 ff; " \
++		"i2c md 0x50 0x00.2 20; " \
++	"eeprom_bbai_a2=i2c dev 0; " \
++		"i2c mw 0x50 0x00.2 aa; " \
++		"i2c mw 0x50 0x01.2 55; " \
++		"i2c mw 0x50 0x02.2 33; " \
++		"i2c mw 0x50 0x03.2 ee; " \
++		"i2c mw 0x50 0x04.2 42; " \
++		"i2c mw 0x50 0x05.2 42; " \
++		"i2c mw 0x50 0x06.2 4F; " \
++		"i2c mw 0x50 0x07.2 4E; " \
++		"i2c mw 0x50 0x08.2 45; " \
++		"i2c mw 0x50 0x09.2 2D; " \
++		"i2c mw 0x50 0x0a.2 41; " \
++		"i2c mw 0x50 0x0b.2 49; " \
++		"i2c mw 0x50 0x0c.2 30; " \
++		"i2c mw 0x50 0x0d.2 30; " \
++		"i2c mw 0x50 0x0e.2 41; " \
++		"i2c mw 0x50 0x0f.2 32; " \
++		"i2c mw 0x50 0x10.2 57; " \
++		"i2c mw 0x50 0x11.2 57; " \
++		"i2c mw 0x50 0x12.2 59; " \
++		"i2c mw 0x50 0x13.2 59; " \
++		"i2c mw 0x50 0x14.2 53; " \
++		"i2c mw 0x50 0x15.2 42; " \
++		"i2c mw 0x50 0x16.2 41; " \
++		"i2c mw 0x50 0x17.2 49; " \
++		"i2c mw 0x50 0x18.2 30; " \
++		"i2c mw 0x50 0x19.2 30; " \
++		"i2c mw 0x50 0x1a.2 30; " \
++		"i2c mw 0x50 0x1b.2 30; " \
++		"i2c mw 0x50 0x1c.2 30; " \
++		"i2c mw 0x50 0x1d.2 30; " \
++		"i2c mw 0x50 0x1e.2 ff; " \
++		"i2c mw 0x50 0x1f.2 ff; " \
++		"i2c md 0x50 0x00.2 20; " \
++		"\0" \
++
++#define EEWIKI_MMC_BOOT \
++	"mmc_boot=${devtype} dev ${mmcdev}; ${devtype} part; " \
++		"if ${devtype} rescan; then " \
++			"echo Scanning ${devtype} device ${mmcdev};" \
++			"setenv bootpart ${mmcdev}:1; " \
++			"echo Checking for: /uEnv.txt ...;" \
++			"if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
++				"load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
++				"env import -t ${loadaddr} ${filesize};" \
++				"echo Loaded environment from /uEnv.txt;" \
++				"echo Checking if uenvcmd is set ...;" \
++				"if test -n ${uenvcmd}; then " \
++					"echo Running uenvcmd ...;" \
++					"run uenvcmd;" \
++				"fi;" \
++			"fi; " \
++			"echo Checking for: /boot/uEnv.txt ...;" \
++			"for i in 1 2 3 4 5 6 7 ; do " \
++				"setenv mmcpart ${i};" \
++				"setenv bootpart ${mmcdev}:${mmcpart};" \
++				"if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
++					"load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
++					"env import -t ${loadaddr} ${filesize};" \
++					"echo Loaded environment from /boot/uEnv.txt;" \
++					"if test -n ${dtb}; then " \
++						"setenv fdtfile ${dtb};" \
++						"echo debug: [dtb=${fdtfile}] ...;" \
++					"fi;" \
++					"echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
++					"if test -n ${uname_r}; then " \
++						"echo debug: [uname_r=${uname_r}] ...;" \
++						"setenv oldroot /dev/mmcblk${mmcdev}p${mmcpart};" \
++						"run uname_boot;" \
++					"fi;" \
++				"fi;" \
++			"done;" \
++		"fi;\0" \
++
++#define EEWIKI_SCSI_BOOT \
++	"scsi_boot=${devtype} reset ; " \
++		"if ${devtype} dev ${mmcdev}; then " \
++			"echo Scanning ${devtype} device ${mmcdev};" \
++			"setenv bootpart ${mmcdev}:1; " \
++			"echo Checking for: /uEnv.txt ...;" \
++			"if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
++				"load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
++				"env import -t ${loadaddr} ${filesize};" \
++				"echo Loaded environment from /uEnv.txt;" \
++				"echo Checking if uenvcmd is set ...;" \
++				"if test -n ${uenvcmd}; then " \
++					"echo Running uenvcmd ...;" \
++					"run uenvcmd;" \
++				"fi;" \
++			"fi; " \
++			"echo Checking for: /boot/uEnv.txt ...;" \
++			"for i in 1 2 3 4 ; do " \
++				"setenv mmcpart ${i};" \
++				"setenv bootpart ${mmcdev}:${mmcpart};" \
++				"if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
++					"load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
++					"env import -t ${loadaddr} ${filesize};" \
++					"echo Loaded environment from /boot/uEnv.txt;" \
++					"if test -n ${dtb}; then " \
++						"setenv fdtfile ${dtb};" \
++						"echo debug: [dtb=${fdtfile}] ...;" \
++					"fi;" \
++					"echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
++					"if test -n ${uname_r}; then " \
++						"echo debug: [uname_r=${uname_r}] ...;" \
++						"setenv oldroot /dev/sda${mmcpart};" \
++						"run uname_boot;" \
++					"fi;" \
++				"fi;" \
++			"done;" \
++		"fi;\0" \
++
++#define EEWIKI_USB_BOOT \
++	"usb_boot=${devtype} reset ; " \
++		"if ${devtype} dev ${mmcdev}; then " \
++			"echo Scanning ${devtype} device ${mmcdev};" \
++			"setenv bootpart ${mmcdev}:1; " \
++			"echo Checking for: /uEnv.txt ...;" \
++			"if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
++				"load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
++				"env import -t ${loadaddr} ${filesize};" \
++				"echo Loaded environment from /uEnv.txt;" \
++				"echo Checking if uenvcmd is set in /uEnv.txt ...;" \
++				"if test -n ${uenvcmd}; then " \
++					"echo Running uenvcmd ...;" \
++					"run uenvcmd;" \
++				"fi;" \
++			"fi; " \
++			"echo Checking for: /boot/uEnv.txt ...;" \
++			"for i in 1 2 3 4 ; do " \
++				"setenv mmcpart ${i};" \
++				"setenv bootpart ${mmcdev}:${mmcpart};" \
++				"if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
++					"load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
++					"env import -t ${loadaddr} ${filesize};" \
++					"echo Loaded environment from /boot/uEnv.txt;" \
++					"if test -n ${dtb}; then " \
++						"setenv fdtfile ${dtb};" \
++						"echo debug: [dtb=${fdtfile}] ...;" \
++					"fi;" \
++					"echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
++					"if test -n ${uname_r}; then " \
++						"echo debug: [uname_r=${uname_r}] ...;" \
++						"setenv oldroot /dev/sda${mmcpart};" \
++						"run uname_boot;" \
++					"fi;" \
++				"fi;" \
++			"done;" \
++		"fi;\0" \
++
++#define EEWIKI_UNAME_BOOT \
++	"uname_boot="\
++		"setenv bootdir /boot; " \
++		"setenv bootfile vmlinuz-${uname_r}; " \
++		"if test -e ${devtype} ${bootpart} ${bootdir}/${bootfile}; then " \
++			"echo loading ${bootdir}/${bootfile} ...; "\
++			"run loadimage;" \
++			"setenv fdtdir /boot/dtbs/${uname_r}; " \
++			"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
++				"run loadfdt;" \
++			"else " \
++				"setenv fdtdir /usr/lib/linux-image-${uname_r}; " \
++				"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
++					"run loadfdt;" \
++				"else " \
++					"setenv fdtdir /lib/firmware/${uname_r}/device-tree; " \
++					"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
++						"run loadfdt;" \
++					"else " \
++						"setenv fdtdir /boot/dtb-${uname_r}; " \
++						"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
++							"run loadfdt;" \
++						"else " \
++							"setenv fdtdir /boot/dtbs; " \
++							"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
++								"run loadfdt;" \
++							"else " \
++								"setenv fdtdir /boot/dtb; " \
++								"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
++									"run loadfdt;" \
++								"else " \
++									"setenv fdtdir /boot; " \
++									"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
++										"run loadfdt;" \
++									"else " \
++										"echo; echo unable to find ${fdtfile} ...; echo booting legacy ...;"\
++										"run args_mmc;" \
++										"echo debug: [${bootargs}] ... ;" \
++										"echo debug: [bootz ${loadaddr}] ... ;" \
++										"bootz ${loadaddr}; " \
++									"fi;" \
++								"fi;" \
++							"fi;" \
++						"fi;" \
++					"fi;" \
++				"fi;" \
++			"fi; " \
++			"if test -n ${enable_uboot_overlays}; then " \
++				"setenv fdt_buffer 0x60000;" \
++				"if test -n ${uboot_fdt_buffer}; then " \
++					"setenv fdt_buffer ${uboot_fdt_buffer};" \
++				"fi;" \
++				"echo uboot_overlays: [fdt_buffer=${fdt_buffer}] ... ;" \
++				"if test -n ${uboot_overlay_addr0}; then " \
++					"if test -n ${disable_uboot_overlay_addr0}; then " \
++						"echo uboot_overlays: uboot loading of [${uboot_overlay_addr0}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr0=1]...;" \
++					"else " \
++						"setenv uboot_overlay ${uboot_overlay_addr0}; " \
++						"run virtualloadoverlay;" \
++					"fi;" \
++				"fi;" \
++				"if test -n ${uboot_overlay_addr1}; then " \
++					"if test -n ${disable_uboot_overlay_addr1}; then " \
++						"echo uboot_overlays: uboot loading of [${uboot_overlay_addr1}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr1=1]...;" \
++					"else " \
++						"setenv uboot_overlay ${uboot_overlay_addr1}; " \
++						"run virtualloadoverlay;" \
++					"fi;" \
++				"fi;" \
++				"if test -n ${uboot_overlay_addr2}; then " \
++					"if test -n ${disable_uboot_overlay_addr2}; then " \
++						"echo uboot_overlays: uboot loading of [${uboot_overlay_addr2}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr2=1]...;" \
++					"else " \
++						"setenv uboot_overlay ${uboot_overlay_addr2}; " \
++						"run virtualloadoverlay;" \
++					"fi;" \
++				"fi;" \
++				"if test -n ${uboot_overlay_addr3}; then " \
++					"if test -n ${disable_uboot_overlay_addr3}; then " \
++						"echo uboot_overlays: uboot loading of [${uboot_overlay_addr3}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr3=1]...;" \
++					"else " \
++						"setenv uboot_overlay ${uboot_overlay_addr3}; " \
++						"run virtualloadoverlay;" \
++					"fi;" \
++				"fi;" \
++				"if test -n ${uboot_overlay_addr4}; then " \
++					"setenv uboot_overlay ${uboot_overlay_addr4}; " \
++					"run virtualloadoverlay;" \
++				"fi;" \
++				"if test -n ${uboot_overlay_addr5}; then " \
++					"setenv uboot_overlay ${uboot_overlay_addr5}; " \
++					"run virtualloadoverlay;" \
++				"fi;" \
++				"if test -n ${uboot_overlay_addr6}; then " \
++					"setenv uboot_overlay ${uboot_overlay_addr6}; " \
++					"run virtualloadoverlay;" \
++				"fi;" \
++				"if test -n ${uboot_overlay_addr7}; then " \
++					"setenv uboot_overlay ${uboot_overlay_addr7}; " \
++					"run virtualloadoverlay;" \
++				"fi;" \
++				"if test -n ${uboot_overlay_pru}; then " \
++					"setenv uboot_overlay ${uboot_overlay_pru}; " \
++					"run virtualloadoverlay;" \
++				"fi;" \
++			"else " \
++				"echo uboot_overlays: add [enable_uboot_overlays=1] to /boot/uEnv.txt to enable...;" \
++			"fi;" \
++			"setenv rdfile initrd.img-${uname_r}; " \
++			"if test -e ${devtype} ${bootpart} ${bootdir}/${rdfile}; then " \
++				"echo loading ${bootdir}/${rdfile} ...; "\
++				"run loadrd;" \
++				"if test -n ${netinstall_enable}; then " \
++					"run args_netinstall; run message;" \
++					"echo debug: [${bootargs}] ... ;" \
++					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
++					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
++				"fi;" \
++				"if test -n ${uenv_root}; then " \
++					"run args_uenv_root;" \
++					"echo debug: [${bootargs}] ... ;" \
++					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
++					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
++				"fi;" \
++				"if test -n ${uuid}; then " \
++					"run args_mmc_uuid;" \
++					"echo debug: [${bootargs}] ... ;" \
++					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
++					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
++				"else " \
++					"run args_mmc_old;" \
++					"echo debug: [${bootargs}] ... ;" \
++					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
++					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
++				"fi;" \
++			"else " \
++				"if test -n ${uenv_root}; then " \
++					"run args_uenv_root;" \
++					"echo debug: [${bootargs}] ... ;" \
++					"echo debug: [bootz ${loadaddr} - ${fdtaddr}] ... ;" \
++					"bootz ${loadaddr} - ${fdtaddr}; " \
++				"fi;" \
++				"run args_mmc_old;" \
++				"echo debug: [${bootargs}] ... ;" \
++				"echo debug: [bootz ${loadaddr} - ${fdtaddr}] ... ;" \
++				"bootz ${loadaddr} - ${fdtaddr}; " \
++			"fi;" \
++		"fi;\0" \
++
+ /*
+  * The following are general good-enough settings for U-Boot.  We set a
+  * large malloc pool as we generally have a lot of DDR, and we opt for
+diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h
+index de0a6af2fd..0cd2ccea03 100644
+--- a/include/configs/ti_omap5_common.h
++++ b/include/configs/ti_omap5_common.h
+@@ -64,6 +64,11 @@
+ 	DEFAULT_FIT_TI_ARGS \
+ 	DEFAULT_COMMON_BOOT_TI_ARGS \
+ 	DEFAULT_FDT_TI_ARGS \
++	EEWIKI_USB_BOOT \
++	EEWIKI_SCSI_BOOT \
++	EEWIKI_MMC_BOOT \
++	EEWIKI_UNAME_BOOT \
++	EEPROM_PROGRAMMING \
+ 	DFUARGS \
+ 	NETARGS \
+ 	NANDARGS \
+diff --git a/include/environment/ti/boot.h b/include/environment/ti/boot.h
+index a9d8f28d46..1480b6e3df 100644
+--- a/include/environment/ti/boot.h
++++ b/include/environment/ti/boot.h
+@@ -132,6 +132,7 @@
+ 	"bootpart=0:2\0" \
+ 	"bootdir=/boot\0" \
+ 	"bootfile=zImage\0" \
++	"board_eeprom_header=undefined\0" \
+ 	"usbtty=cdc_acm\0" \
+ 	"vram=16M\0" \
+ 	AVB_VERIFY_CMD \
+@@ -183,7 +184,14 @@
+ 		"else " \
+ 			"echo $apart partition not found; " \
+ 			"exit; " \
+-		"fi;\0"
++		"fi;\0 " \
++	"read_board_eeprom=" \
++		"if test $board_eeprom_header = beagle_x15_revb1_blank; then " \
++			"run eeprom_dump; run eeprom_x15_b1; reset; fi; " \
++		"if test $board_eeprom_header = beagle_x15_revc_blank; then " \
++			"run eeprom_dump; run eeprom_x15_c; reset; fi; " \
++		"if test $board_eeprom_header = bbai_a2_blank; then " \
++			"run eeprom_dump; run eeprom_bbai_a2; reset; fi;  \0 "
+ 
+ #ifdef CONFIG_OMAP54XX
+ 
+@@ -223,19 +231,17 @@
+ 			"echo WARNING: Could not determine device tree to use; fi; \0"
+ 
+ #define CONFIG_BOOTCOMMAND \
+-	"if test ${dofastboot} -eq 1; then " \
+-		"echo Boot fastboot requested, resetting dofastboot ...;" \
+-		"setenv dofastboot 0; saveenv;" \
+-		FASTBOOT_CMD \
+-	"fi;" \
+-	"if test ${boot_fit} -eq 1; then "	\
+-		"run update_to_fit;"	\
+-	"fi;"	\
++	"run read_board_eeprom; " \
+ 	"run findfdt; " \
+-	"run envboot; " \
+-	"run mmcboot;" \
+-	"run emmc_linux_boot; " \
+-	"run emmc_android_boot; " \
++	"setenv mmcdev 0; " \
++	"setenv devtype usb; " \
++	"echo usb_boot is currently disabled;" \
++	"setenv devtype scsi; " \
++	"echo scsi_boot is currently disabled;" \
++	"setenv devtype mmc; " \
++	"run mmc_boot;" \
++	"setenv mmcdev 1; " \
++	"run mmc_boot;" \
+ 	""
+ 
+ #endif /* CONFIG_OMAP54XX */
+diff --git a/include/environment/ti/mmc.h b/include/environment/ti/mmc.h
+index b86c8dc7a4..0ec09f279a 100644
+--- a/include/environment/ti/mmc.h
++++ b/include/environment/ti/mmc.h
+@@ -11,11 +11,31 @@
+ #define DEFAULT_MMC_TI_ARGS \
+ 	"mmcdev=0\0" \
+ 	"mmcrootfstype=ext4 rootwait\0" \
+-	"finduuid=part uuid mmc ${bootpart} uuid\0" \
++	"finduuid=part uuid ${devtype} ${bootpart} uuid\0" \
+ 	"args_mmc=run finduuid;setenv bootargs console=${console} " \
+ 		"${optargs} " \
+-		"root=PARTUUID=${uuid} rw " \
+-		"rootfstype=${mmcrootfstype}\0" \
++		"root=PARTUUID=${uuid} ro " \
++		"rootfstype=${mmcrootfstype} " \
++		"${cmdline}\0" \
++	"args_mmc_old=setenv bootargs console=${console} " \
++		"${optargs} " \
++		"root=${oldroot} ro " \
++		"rootfstype=${mmcrootfstype} " \
++		"${cmdline}\0" \
++	"args_mmc_uuid=setenv bootargs console=${console} " \
++		"${optargs} " \
++		"root=UUID=${uuid} ro " \
++		"rootfstype=${mmcrootfstype} " \
++		"${cmdline}\0" \
++	"args_uenv_root=setenv bootargs console=${console} " \
++		"${optargs} " \
++		"root=${uenv_root} ro " \
++		"rootfstype=${mmcrootfstype} " \
++		"${musb} ${cmdline}\0" \
++	"args_netinstall=setenv bootargs ${netinstall_bootargs} " \
++		"${optargs} " \
++		"root=/dev/ram rw " \
++		"${cmdline}\0" \
+ 	"loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
+ 	"bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
+ 		"source ${loadaddr}\0" \
+@@ -24,7 +44,28 @@
+ 		"env import -t ${loadaddr} ${filesize}\0" \
+ 	"loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \
+ 	"loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
+-	"loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
++	"loadrd=load ${devtype} ${bootpart} ${rdaddr} ${bootdir}/${rdfile}; setenv rdsize ${filesize}\0" \
++	"loadfdt=echo loading ${fdtdir}/${fdtfile} ...; load ${devtype} ${bootpart} ${fdtaddr} ${fdtdir}/${fdtfile}\0" \
++	"loadoverlay=echo uboot_overlays: loading ${actual_uboot_overlay} ...; " \
++		"load ${devtype} ${bootpart} ${rdaddr} ${actual_uboot_overlay}; " \
++		"fdt addr ${fdtaddr}; fdt resize ${fdt_buffer}; " \
++		"fdt apply ${rdaddr}; fdt resize ${fdt_buffer};\0" \
++	"virtualloadoverlay=if test -e ${devtype} ${bootpart} ${fdtdir}/overlays/${uboot_overlay}; then " \
++				"setenv actual_uboot_overlay ${fdtdir}/overlays/${uboot_overlay}; " \
++				"run loadoverlay;" \
++			"else " \
++				"if test -e ${devtype} ${bootpart} /lib/firmware/${uboot_overlay}; then " \
++					"setenv actual_uboot_overlay /lib/firmware/${uboot_overlay}; " \
++					"run loadoverlay;" \
++				"else " \
++					"if test -e ${devtype} ${bootpart} ${uboot_overlay}; then " \
++						"setenv actual_uboot_overlay ${uboot_overlay}; " \
++						"run loadoverlay;" \
++					"else " \
++						"echo uboot_overlays: unable to find [${devtype} ${bootpart} ${uboot_overlay}]...;" \
++					"fi;" \
++				"fi;" \
++			"fi;\0" \
+ 	"envboot=mmc dev ${mmcdev}; " \
+ 		"if mmc rescan; then " \
+ 			"echo SD/MMC found on device ${mmcdev};" \
+-- 
+2.20.1
+

+ 1 - 1
board/friendlyarm/nanopi-neo2/genimage.cfg

@@ -24,7 +24,7 @@ image sdcard.img {
 		in-partition-table = "no"
 		in-partition-table = "no"
 		image = "u-boot.itb"
 		image = "u-boot.itb"
 		offset = 40K
 		offset = 40K
-		size = 1M # 1MB - 40K
+		size = 1M # 1MB - 40KB
 	}
 	}
 
 
 	partition boot {
 	partition boot {

+ 1 - 1
board/kontron/pitx-imx8m/genimage.cfg

@@ -5,7 +5,7 @@ image sdcard.img {
 	partition imx-boot {
 	partition imx-boot {
 		in-partition-table = "no"
 		in-partition-table = "no"
 		image = "imx8-boot-sd.bin"
 		image = "imx8-boot-sd.bin"
-		offset = 33k
+		offset = 33K
 	}
 	}
 
 
 	partition rootfs {
 	partition rootfs {

+ 1 - 1
board/kontron/smarc-sal28/genimage.cfg

@@ -4,7 +4,7 @@ image sdcard-emmc.img {
 	}
 	}
 
 
 	partition rcw {
 	partition rcw {
-		offset = 4k
+		offset = 4K
 		in-partition-table = "no"
 		in-partition-table = "no"
 		image = "rcw.bin"
 		image = "rcw.bin"
 	}
 	}

+ 1 - 1
board/minnowboard/genimage.cfg

@@ -9,7 +9,7 @@ image efi-part.vfat {
 		}
 		}
 	}
 	}
 
 
-	size=10M
+	size = 10M
 }
 }
 
 
 # Create the sdcard image, pulling in
 # Create the sdcard image, pulling in

+ 1 - 1
board/nezha/genimage.cfg

@@ -19,7 +19,7 @@ image sdcard.img {
 	partition u-boot-1 {
 	partition u-boot-1 {
 		in-partition-table = "no"
 		in-partition-table = "no"
 		image = "u-boot.toc1"
 		image = "u-boot.toc1"
-		offset = 12288K
+		offset = 12M
 	}
 	}
 
 
 	partition u-boot-2 {
 	partition u-boot-2 {

+ 1 - 1
board/olimex/a20_olinuxino/genimage.cfg

@@ -5,7 +5,7 @@ image sdcard.img {
 	partition u-boot {
 	partition u-boot {
 		in-partition-table = "no"
 		in-partition-table = "no"
 		image = "u-boot-sunxi-with-spl.bin"
 		image = "u-boot-sunxi-with-spl.bin"
-		offset = 8KB
+		offset = 8K
 		size = 1016K # 1MB - 8KB
 		size = 1016K # 1MB - 8KB
 	}
 	}
 
 

+ 1 - 1
board/orangepi/orangepi-pc2/genimage.cfg

@@ -24,7 +24,7 @@ image sdcard.img {
 		in-partition-table = "no"
 		in-partition-table = "no"
 		image = "u-boot.itb"
 		image = "u-boot.itb"
 		offset = 40K
 		offset = 40K
-		size = 1M # 1MB - 40K
+		size = 1M # 1MB - 40KB
 	}
 	}
 
 
 	partition boot {
 	partition boot {

+ 29 - 0
board/raspberrypi/config_zero2w.txt

@@ -0,0 +1,29 @@
+# Please note that this is only a sample, we recommend you to change it to fit
+# your needs.
+# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE.
+# See http://buildroot.org/manual.html#rootfs-custom
+# and http://elinux.org/RPiconfig for a description of config.txt syntax
+
+start_file=start.elf
+fixup_file=fixup.dat
+
+kernel=zImage
+
+# To use an external initramfs file
+#initramfs rootfs.cpio.gz
+
+# Disable overscan assuming the display supports displaying the full resolution
+# If the text shown on the screen disappears off the edge, comment this out
+disable_overscan=1
+
+# How much memory in MB to assign to the GPU on Pi models having
+# 256, 512 or 1024 MB total memory
+gpu_mem_256=100
+gpu_mem_512=100
+gpu_mem_1024=100
+
+# fixes rpi (3B, 3B+, 3A+, 4B ,zero W and zero 2) ttyAMA0 serial console
+dtoverlay=miniuart-bt
+
+# enable autoprobing of Bluetooth driver without need of hciattach/btattach
+dtoverlay=krnbt=on

+ 32 - 0
board/raspberrypi/genimage-raspberrypizero2w.cfg

@@ -0,0 +1,32 @@
+image boot.vfat {
+	vfat {
+		files = {
+			"bcm2710-rpi-zero-2-w.dtb",
+			"rpi-firmware/bootcode.bin",
+			"rpi-firmware/cmdline.txt",
+			"rpi-firmware/config.txt",
+			"rpi-firmware/fixup.dat",
+			"rpi-firmware/start.elf",
+			"rpi-firmware/overlays",
+			"zImage"
+		}
+	}
+
+	size = 32M
+}
+
+image sdcard.img {
+	hdimage {
+	}
+
+	partition boot {
+		partition-type = 0xC
+		bootable = "true"
+		image = "boot.vfat"
+	}
+
+	partition rootfs {
+		partition-type = 0x83
+		image = "rootfs.ext4"
+	}
+}

+ 10 - 0
board/raspberrypi/readme.txt

@@ -28,6 +28,10 @@ For model Zero (model A+ in smaller form factor):
 
 
   $ make raspberrypi0_defconfig
   $ make raspberrypi0_defconfig
 
 
+For model Zero 2 W (model B3 in smaller form factor):
+
+  $ make raspberrypizero2w_defconfig
+
 For model 2 B:
 For model 2 B:
 
 
   $ make raspberrypi2_defconfig
   $ make raspberrypi2_defconfig
@@ -76,11 +80,17 @@ After building, you should obtain this tree:
     output/images/
     output/images/
     +-- bcm2708-rpi-b.dtb           [1]
     +-- bcm2708-rpi-b.dtb           [1]
     +-- bcm2708-rpi-b-plus.dtb      [1]
     +-- bcm2708-rpi-b-plus.dtb      [1]
+    +-- bcm2708-rpi-cm.dtb          [1]
+    +-- bcm2708-rpi-zero.dtb        [1]
+    +-- bcm2708-rpi-zero-w.dtb      [1]
+    +-- bcm2710-rpi-zero-2-w.dtb    [1]
     +-- bcm2709-rpi-2-b.dtb         [1]
     +-- bcm2709-rpi-2-b.dtb         [1]
     +-- bcm2710-rpi-3-b.dtb         [1]
     +-- bcm2710-rpi-3-b.dtb         [1]
     +-- bcm2710-rpi-3-b-plus.dtb    [1]
     +-- bcm2710-rpi-3-b-plus.dtb    [1]
+    +-- bcm2710-rpi-cm3.dtb         [1]
     +-- bcm2711-rpi-4-b.dtb         [1]
     +-- bcm2711-rpi-4-b.dtb         [1]
     +-- bcm2711-rpi-cm4.dtb         [1]
     +-- bcm2711-rpi-cm4.dtb         [1]
+    +-- bcm2837-rpi-3-b.dtb         [1]
     +-- boot.vfat
     +-- boot.vfat
     +-- rootfs.ext4
     +-- rootfs.ext4
     +-- rpi-firmware/
     +-- rpi-firmware/

+ 1 - 0
board/raspberrypizero2w

@@ -0,0 +1 @@
+raspberrypi

+ 2 - 2
boot/barebox/Config.in

@@ -12,7 +12,7 @@ choice
 	  Select the specific Barebox version you want to use
 	  Select the specific Barebox version you want to use
 
 
 config BR2_TARGET_BAREBOX_LATEST_VERSION
 config BR2_TARGET_BAREBOX_LATEST_VERSION
-	bool "2021.10.0"
+	bool "2021.11.0"
 
 
 config BR2_TARGET_BAREBOX_CUSTOM_VERSION
 config BR2_TARGET_BAREBOX_CUSTOM_VERSION
 	bool "Custom version"
 	bool "Custom version"
@@ -40,7 +40,7 @@ endif
 
 
 config BR2_TARGET_BAREBOX_VERSION
 config BR2_TARGET_BAREBOX_VERSION
 	string
 	string
-	default "2021.10.0"	if BR2_TARGET_BAREBOX_LATEST_VERSION
+	default "2021.11.0"	if BR2_TARGET_BAREBOX_LATEST_VERSION
 	default BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE if BR2_TARGET_BAREBOX_CUSTOM_VERSION
 	default BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE if BR2_TARGET_BAREBOX_CUSTOM_VERSION
 	default "custom"	if BR2_TARGET_BAREBOX_CUSTOM_TARBALL
 	default "custom"	if BR2_TARGET_BAREBOX_CUSTOM_TARBALL
 	default BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION if BR2_TARGET_BAREBOX_CUSTOM_GIT
 	default BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION if BR2_TARGET_BAREBOX_CUSTOM_GIT

+ 3 - 3
boot/barebox/barebox.hash

@@ -1,8 +1,8 @@
-# From https://www.barebox.org/download/barebox-2021.10.0.tar.bz2.md5
-md5  7d79102fd8d45bf3756b4f3a569654a8  barebox-2021.10.0.tar.bz2
+# From https://www.barebox.org/download/barebox-2021.11.0.tar.bz2.md5
+md5  e7f7629701e9e8b9566b6799b422de5e  barebox-2021.11.0.tar.bz2
 
 
 # Locally calculated
 # Locally calculated
-sha256  4bb077b54d03743b3e8c20751d318dcc3ef03b20abe1a64a79c413ea03de3632  barebox-2021.10.0.tar.bz2
+sha256  34fbd33e17d052a7d8d64918183170675008768fe7618c31c16b9f5c92803c6a  barebox-2021.11.0.tar.bz2
 
 
 # License files, locally computed
 # License files, locally computed
 sha256  ab1122aa9f9073ad1ec824edcd970b16a6a7881a34a18fd56c080debb2dca5d4  COPYING
 sha256  ab1122aa9f9073ad1ec824edcd970b16a6a7881a34a18fd56c080debb2dca5d4  COPYING

+ 6 - 5
configs/beagleboneai_defconfig

@@ -1,23 +1,24 @@
 BR2_arm=y
 BR2_arm=y
 BR2_cortex_a15=y
 BR2_cortex_a15=y
 BR2_GLOBAL_PATCH_DIR="board/beagleboneai/patches"
 BR2_GLOBAL_PATCH_DIR="board/beagleboneai/patches"
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
 BR2_SYSTEM_DHCP="eth0"
 BR2_SYSTEM_DHCP="eth0"
 BR2_ROOTFS_POST_BUILD_SCRIPT="board/beagleboneai/post-build.sh"
 BR2_ROOTFS_POST_BUILD_SCRIPT="board/beagleboneai/post-build.sh"
 BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
 BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
 BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/beagleboneai/genimage.cfg"
 BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/beagleboneai/genimage.cfg"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,beagleboard,linux,4.14.108-ti-r143)/linux-4.14.108-ti-r143.tar.gz"
-BR2_LINUX_KERNEL_DEFCONFIG="bb.org"
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.79"
+BR2_LINUX_KERNEL_DEFCONFIG="omap2plus"
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="am5729-beagleboneai"
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="am5729-beagleboneai"
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
 BR2_TARGET_ROOTFS_EXT2=y
 BR2_TARGET_ROOTFS_EXT2=y
 BR2_TARGET_ROOTFS_EXT2_4=y
 BR2_TARGET_ROOTFS_EXT2_4=y
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
 BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
 BR2_TARGET_UBOOT_CUSTOM_VERSION=y
 BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.04"
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04"
 BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am57xx_evm"
 BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am57xx_evm"
 BR2_TARGET_UBOOT_NEEDS_DTC=y
 BR2_TARGET_UBOOT_NEEDS_DTC=y
 # BR2_TARGET_UBOOT_FORMAT_BIN is not set
 # BR2_TARGET_UBOOT_FORMAT_BIN is not set

+ 3 - 3
configs/globalscale_espressobin_defconfig

@@ -2,13 +2,13 @@ BR2_aarch64=y
 BR2_cortex_a53=y
 BR2_cortex_a53=y
 BR2_ARM_FPU_VFPV4=y
 BR2_ARM_FPU_VFPV4=y
 
 
-# Linux headers same as kernel, a 5.11 series
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_11=y
+# Linux headers same as kernel, a 5.15 series
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y
 
 
 # Kernel
 # Kernel
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.11.21"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.1"
 BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
 BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
 BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/globalscale/espressobin/linux-extras.config"
 BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/globalscale/espressobin/linux-extras.config"
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_DTS_SUPPORT=y

+ 4 - 4
configs/imx6-sabreauto_defconfig

@@ -4,8 +4,8 @@ BR2_ARM_ENABLE_NEON=y
 BR2_ARM_ENABLE_VFP=y
 BR2_ARM_ENABLE_VFP=y
 BR2_ARM_FPU_VFPV3=y
 BR2_ARM_FPU_VFPV3=y
 
 
-# Linux headers same as kernel, a 5.3 series
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_3=y
+# Linux headers same as kernel, a 5.15 series
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y
 
 
 # System
 # System
 BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3"
 BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3"
@@ -24,7 +24,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT_BOARDNAME="mx6sabreauto"
 BR2_TARGET_UBOOT_BOARDNAME="mx6sabreauto"
 BR2_TARGET_UBOOT_CUSTOM_VERSION=y
 BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.10"
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10"
 BR2_TARGET_UBOOT_NEEDS_LZOP=y
 BR2_TARGET_UBOOT_NEEDS_LZOP=y
 BR2_TARGET_UBOOT_FORMAT_IMG=y
 BR2_TARGET_UBOOT_FORMAT_IMG=y
 BR2_TARGET_UBOOT_SPL=y
 BR2_TARGET_UBOOT_SPL=y
@@ -33,7 +33,7 @@ BR2_TARGET_UBOOT_SPL_NAME="SPL"
 # Kernel
 # Kernel
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.4"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.1"
 BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7"
 BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7"
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabreauto imx6dl-sabreauto imx6qp-sabreauto"
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabreauto imx6dl-sabreauto imx6qp-sabreauto"

+ 6 - 6
configs/orangepi_lite_defconfig

@@ -1,12 +1,12 @@
 BR2_arm=y
 BR2_arm=y
 BR2_cortex_a7=y
 BR2_cortex_a7=y
 BR2_ARM_FPU_VFPV4=y
 BR2_ARM_FPU_VFPV4=y
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_3=y
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y
 BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Lite"
 BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Lite"
 BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Lite"
 BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Lite"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.8"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.1"
 BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
 BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
 BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-lite/linux-extras.config"
 BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-lite/linux-extras.config"
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
@@ -22,18 +22,18 @@ BR2_TARGET_ROOTFS_EXT2_4=y
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
 BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
 BR2_TARGET_UBOOT_CUSTOM_VERSION=y
 BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.10"
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.10"
 BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_lite"
 BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_lite"
 BR2_TARGET_UBOOT_NEEDS_DTC=y
 BR2_TARGET_UBOOT_NEEDS_DTC=y
+BR2_TARGET_UBOOT_NEEDS_PYTHON3=y
 BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y
 BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y
-BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
-BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin"
+BR2_TARGET_UBOOT_SPL=y
+BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin"
 BR2_PACKAGE_HOST_UBOOT_TOOLS=y
 BR2_PACKAGE_HOST_UBOOT_TOOLS=y
 BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y
 BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y
 BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-lite/boot.cmd"
 BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-lite/boot.cmd"
 BR2_PACKAGE_HOST_DOSFSTOOLS=y
 BR2_PACKAGE_HOST_DOSFSTOOLS=y
 BR2_PACKAGE_HOST_GENIMAGE=y
 BR2_PACKAGE_HOST_GENIMAGE=y
 BR2_PACKAGE_HOST_MTOOLS=y
 BR2_PACKAGE_HOST_MTOOLS=y
-BR2_PACKAGE_HOST_UBOOT_TOOLS=y
 BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
 BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
 BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-lite/genimage.cfg"
 BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-lite/genimage.cfg"

+ 1 - 1
configs/raspberrypi0_defconfig

@@ -9,7 +9,7 @@ BR2_TOOLCHAIN_BUILDROOT_CXX=y
 
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,581049d718caf95f5feb00607ac748d5841cf27c)/linux-581049d718caf95f5feb00607ac748d5841cf27c.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi"
 BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi"
 
 
 # Build the DTBs for A/B from the kernel sources: the zero is the same
 # Build the DTBs for A/B from the kernel sources: the zero is the same

+ 1 - 1
configs/raspberrypi0w_defconfig

@@ -9,7 +9,7 @@ BR2_TOOLCHAIN_BUILDROOT_CXX=y
 
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,581049d718caf95f5feb00607ac748d5841cf27c)/linux-581049d718caf95f5feb00607ac748d5841cf27c.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi"
 BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi"
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-zero-w"
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-zero-w"

+ 1 - 1
configs/raspberrypi2_defconfig

@@ -12,7 +12,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
 
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,581049d718caf95f5feb00607ac748d5841cf27c)/linux-581049d718caf95f5feb00607ac748d5841cf27c.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
 
 
 # Build the DTB from the kernel sources
 # Build the DTB from the kernel sources

+ 1 - 1
configs/raspberrypi3_64_defconfig

@@ -11,7 +11,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
 
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,581049d718caf95f5feb00607ac748d5841cf27c)/linux-581049d718caf95f5feb00607ac748d5841cf27c.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3"
 BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3"
 
 
 # Build the DTB from the kernel sources
 # Build the DTB from the kernel sources

+ 1 - 1
configs/raspberrypi3_defconfig

@@ -11,7 +11,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
 
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,581049d718caf95f5feb00607ac748d5841cf27c)/linux-581049d718caf95f5feb00607ac748d5841cf27c.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
 
 
 # Build the DTB from the kernel sources
 # Build the DTB from the kernel sources

+ 1 - 1
configs/raspberrypi3_qt5we_defconfig

@@ -12,7 +12,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
 
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,581049d718caf95f5feb00607ac748d5841cf27c)/linux-581049d718caf95f5feb00607ac748d5841cf27c.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
 
 
 # Build the DTB from the kernel sources
 # Build the DTB from the kernel sources

+ 1 - 1
configs/raspberrypi4_64_defconfig

@@ -11,7 +11,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
 
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,581049d718caf95f5feb00607ac748d5841cf27c)/linux-581049d718caf95f5feb00607ac748d5841cf27c.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
 
 
 # Build the DTB from the kernel sources
 # Build the DTB from the kernel sources

+ 1 - 1
configs/raspberrypi4_defconfig

@@ -11,7 +11,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
 
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,581049d718caf95f5feb00607ac748d5841cf27c)/linux-581049d718caf95f5feb00607ac748d5841cf27c.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
 
 
 # Build the DTB from the kernel sources
 # Build the DTB from the kernel sources

+ 1 - 1
configs/raspberrypi_defconfig

@@ -11,7 +11,7 @@ BR2_TOOLCHAIN_BUILDROOT_CXX=y
 
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,581049d718caf95f5feb00607ac748d5841cf27c)/linux-581049d718caf95f5feb00607ac748d5841cf27c.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi"
 BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi"
 
 
 # Build the DTBs for A/B, A+/B+ and compute module from the kernel sources
 # Build the DTBs for A/B, A+/B+ and compute module from the kernel sources

+ 1 - 1
configs/raspberrypicm4io_64_defconfig

@@ -11,7 +11,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
 
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,581049d718caf95f5feb00607ac748d5841cf27c)/linux-581049d718caf95f5feb00607ac748d5841cf27c.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
 
 
 # Build the DTB from the kernel sources
 # Build the DTB from the kernel sources

+ 1 - 1
configs/raspberrypicm4io_defconfig

@@ -11,7 +11,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
 
 
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,581049d718caf95f5feb00607ac748d5841cf27c)/linux-581049d718caf95f5feb00607ac748d5841cf27c.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
 BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
 
 
 # Build the DTB from the kernel sources
 # Build the DTB from the kernel sources

+ 36 - 0
configs/raspberrypizero2w_defconfig

@@ -0,0 +1,36 @@
+BR2_arm=y
+BR2_cortex_a53=y
+BR2_ARM_FPU_NEON_VFPV4=y
+
+# Linux headers same as kernel, 5.10 series
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
+
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,9878a118cbdb7779fd15caa45915d22bff381ba3)/linux-9878a118cbdb7779fd15caa45915d22bff381ba3.tar.gz"
+BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
+
+# Build the DTB from the kernel sources
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-zero-2-w"
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+
+BR2_PACKAGE_RPI_FIRMWARE=y
+BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
+BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
+BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypizero2w/config_zero2w.txt"
+
+# MicroSD images generation tools
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
+
+# Filesystem / image
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
+# BR2_TARGET_ROOTFS_TAR is not set
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypizero2w/post-build.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypizero2w/post-image.sh"

+ 6 - 0
docs/manual/writing-rules.txt

@@ -192,6 +192,12 @@ image sdimage.img {
 * Filename must at least begin with genimage prefix and have the .cfg
 * Filename must at least begin with genimage prefix and have the .cfg
   extension to be easy to recognize.
   extension to be easy to recognize.
 
 
+* Allowed notations for +offset+ and +size+ options are: +G+, +M+, +K+
+  (not +k+).  If it's not possible to express a precise byte count
+  with notations above then use hexadecimal +0x+ prefix or, as last
+  chance, the byte count.  In comments instead use +GB+, +MB+, +KB+
+  (not +kb+) in place of +G+, +M+, +K+.
+
 The +genimage.cfg+ files are the input for the genimage tool used in
 The +genimage.cfg+ files are the input for the genimage tool used in
 Buildroot to generate the final image file(i.e. sdcard.img). For further
 Buildroot to generate the final image file(i.e. sdcard.img). For further
 details about the _genimage_ language, refer to
 details about the _genimage_ language, refer to

+ 10 - 1
package/Config.in

@@ -307,6 +307,7 @@ comment "Graphic applications"
 	source "package/kmscube/Config.in"
 	source "package/kmscube/Config.in"
 	source "package/libva-utils/Config.in"
 	source "package/libva-utils/Config.in"
 	source "package/mesa3d-demos/Config.in"
 	source "package/mesa3d-demos/Config.in"
+	source "package/midori/Config.in"
 	source "package/netsurf/Config.in"
 	source "package/netsurf/Config.in"
 	source "package/pngquant/Config.in"
 	source "package/pngquant/Config.in"
 	source "package/qt5cinex/Config.in"
 	source "package/qt5cinex/Config.in"
@@ -377,7 +378,6 @@ comment "X applications"
 	source "package/gmpc/Config.in"
 	source "package/gmpc/Config.in"
 	source "package/gtkperf/Config.in"
 	source "package/gtkperf/Config.in"
 	source "package/leafpad/Config.in"
 	source "package/leafpad/Config.in"
-	source "package/midori/Config.in"
 	source "package/mupdf/Config.in"
 	source "package/mupdf/Config.in"
 	source "package/nodm/Config.in"
 	source "package/nodm/Config.in"
 	source "package/pcmanfm/Config.in"
 	source "package/pcmanfm/Config.in"
@@ -970,6 +970,7 @@ menu "External python modules"
 	source "package/python-crossbar/Config.in"
 	source "package/python-crossbar/Config.in"
 	source "package/python-cryptography/Config.in"
 	source "package/python-cryptography/Config.in"
 	source "package/python-cssselect/Config.in"
 	source "package/python-cssselect/Config.in"
+	source "package/python-cssselect2/Config.in"
 	source "package/python-cssutils/Config.in"
 	source "package/python-cssutils/Config.in"
 	source "package/python-cycler/Config.in"
 	source "package/python-cycler/Config.in"
 	source "package/python-daemon/Config.in"
 	source "package/python-daemon/Config.in"
@@ -1012,6 +1013,7 @@ menu "External python modules"
 	source "package/python-flask-wtf/Config.in"
 	source "package/python-flask-wtf/Config.in"
 	source "package/python-flatbuffers/Config.in"
 	source "package/python-flatbuffers/Config.in"
 	source "package/python-flup/Config.in"
 	source "package/python-flup/Config.in"
+	source "package/python-fonttools/Config.in"
 	source "package/python-frozenlist/Config.in"
 	source "package/python-frozenlist/Config.in"
 	source "package/python-functools32/Config.in"
 	source "package/python-functools32/Config.in"
 	source "package/python-future/Config.in"
 	source "package/python-future/Config.in"
@@ -1141,6 +1143,7 @@ menu "External python modules"
 	source "package/python-pycups/Config.in"
 	source "package/python-pycups/Config.in"
 	source "package/python-pydal/Config.in"
 	source "package/python-pydal/Config.in"
 	source "package/python-pydantic/Config.in"
 	source "package/python-pydantic/Config.in"
+	source "package/python-pydyf/Config.in"
 	source "package/python-pyelftools/Config.in"
 	source "package/python-pyelftools/Config.in"
 	source "package/python-pyftpdlib/Config.in"
 	source "package/python-pyftpdlib/Config.in"
 	source "package/python-pygame/Config.in"
 	source "package/python-pygame/Config.in"
@@ -1160,6 +1163,7 @@ menu "External python modules"
 	source "package/python-pyparsing/Config.in"
 	source "package/python-pyparsing/Config.in"
 	source "package/python-pyparted/Config.in"
 	source "package/python-pyparted/Config.in"
 	source "package/python-pypcap/Config.in"
 	source "package/python-pypcap/Config.in"
+	source "package/python-pyphen/Config.in"
 	source "package/python-pyqrcode/Config.in"
 	source "package/python-pyqrcode/Config.in"
 	source "package/python-pyqt5/Config.in"
 	source "package/python-pyqt5/Config.in"
 	source "package/python-pyratemp/Config.in"
 	source "package/python-pyratemp/Config.in"
@@ -1240,6 +1244,7 @@ menu "External python modules"
 	source "package/python-terminaltables/Config.in"
 	source "package/python-terminaltables/Config.in"
 	source "package/python-texttable/Config.in"
 	source "package/python-texttable/Config.in"
 	source "package/python-thrift/Config.in"
 	source "package/python-thrift/Config.in"
+	source "package/python-tinycss2/Config.in"
 	source "package/python-tinyrpc/Config.in"
 	source "package/python-tinyrpc/Config.in"
 	source "package/python-tomako/Config.in"
 	source "package/python-tomako/Config.in"
 	source "package/python-toml/Config.in"
 	source "package/python-toml/Config.in"
@@ -1266,6 +1271,7 @@ menu "External python modules"
 	source "package/python-visitor/Config.in"
 	source "package/python-visitor/Config.in"
 	source "package/python-watchdog/Config.in"
 	source "package/python-watchdog/Config.in"
 	source "package/python-wcwidth/Config.in"
 	source "package/python-wcwidth/Config.in"
+	source "package/python-weasyprint/Config.in"
 	source "package/python-web2py/Config.in"
 	source "package/python-web2py/Config.in"
 	source "package/python-webencodings/Config.in"
 	source "package/python-webencodings/Config.in"
 	source "package/python-webob/Config.in"
 	source "package/python-webob/Config.in"
@@ -1292,6 +1298,7 @@ menu "External python modules"
 	source "package/python-zc-lockfile/Config.in"
 	source "package/python-zc-lockfile/Config.in"
 	source "package/python-zeroconf/Config.in"
 	source "package/python-zeroconf/Config.in"
 	source "package/python-zope-interface/Config.in"
 	source "package/python-zope-interface/Config.in"
+	source "package/python-zopfli/Config.in"
 endmenu
 endmenu
 endif
 endif
 	source "package/quickjs/Config.in"
 	source "package/quickjs/Config.in"
@@ -1615,6 +1622,7 @@ menu "Hardware handling"
 	source "package/neardal/Config.in"
 	source "package/neardal/Config.in"
 	source "package/owfs/Config.in"
 	source "package/owfs/Config.in"
 	source "package/pcsc-lite/Config.in"
 	source "package/pcsc-lite/Config.in"
+	source "package/rpi-rgb-led-matrix/Config.in"
 	source "package/tslib/Config.in"
 	source "package/tslib/Config.in"
 	source "package/uhd/Config.in"
 	source "package/uhd/Config.in"
 	source "package/urg/Config.in"
 	source "package/urg/Config.in"
@@ -1960,6 +1968,7 @@ menu "Other"
 	source "package/libnpth/Config.in"
 	source "package/libnpth/Config.in"
 	source "package/libnspr/Config.in"
 	source "package/libnspr/Config.in"
 	source "package/libosmium/Config.in"
 	source "package/libosmium/Config.in"
+	source "package/libpeas/Config.in"
 	source "package/libpfm4/Config.in"
 	source "package/libpfm4/Config.in"
 	source "package/libplatform/Config.in"
 	source "package/libplatform/Config.in"
 	source "package/libplist/Config.in"
 	source "package/libplist/Config.in"

+ 0 - 37
package/assimp/0001-Fix-FBXConverter-use-proper-64-bit-constant.patch

@@ -1,37 +0,0 @@
-From 30a2ecc7939449f235282eb6de42e367fc5b1867 Mon Sep 17 00:00:00 2001
-From: Peter Seiderer <ps.report@gmx.net>
-Date: Thu, 14 Jan 2016 22:13:15 +0100
-Subject: [PATCH] Fix FBXConverter: use proper 64-bit constant
-
-Use proper 64-bit constant for CONVERT_FBX_TIME(time) conversion, fixes:
-
-  code/FBXConverter.cpp:2025: error: integer constant is too large for 'long' type
-  code/FBXConverter.cpp:2026: error: integer constant is too large for 'long' type
-  code/FBXConverter.cpp:2794: error: integer constant is too large for 'long' type
-  code/FBXConverter.cpp:2868: error: integer constant is too large for 'long' type
-  code/FBXConverter.cpp:2878: error: integer constant is too large for 'long' type
-  code/FBXConverter.cpp:2888: error: integer constant is too large for 'long' type
-
-Signed-off-by: Peter Seiderer <ps.report@gmx.net>
-[Rebased on 5.0.1]
-Signed-off-by: Peter Seiderer <ps.report@gmx.net>
----
- code/FBX/FBXConverter.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/code/FBX/FBXConverter.cpp b/code/FBXConverter.cpp
-index e0c6b9c..b1e9a71 100644
---- a/code/FBX/FBXConverter.cpp
-+++ b/code/FBX/FBXConverter.cpp
-@@ -67,7 +67,7 @@ namespace FBX {
- 
- #define MAGIC_NODE_TAG "_$AssimpFbx$"
- 
--#define CONVERT_FBX_TIME(time) static_cast<double>(time) / 46186158000L
-+#define CONVERT_FBX_TIME(time) static_cast<double>(time) / 46186158000LL
- 
-     // XXX vc9's debugger won't step into anonymous namespaces
- //namespace {
--- 
-2.1.4
-

+ 0 - 1638
package/assimp/0002-closes-2733-update-of-zlip-to-fix-gcc-build-for-v9-2-0-32-bit.patch

@@ -1,1638 +0,0 @@
-From f78446b14aff46db2ef27d062a275b6a01fd68b1 Mon Sep 17 00:00:00 2001
-From: Kim Kulling <kim.kulling@googlemail.com>
-Date: Tue, 19 Nov 2019 20:30:40 +0100
-Subject: [PATCH] closes https://github.com/assimp/assimp/issues/2733: update
- of zlip to fix gcc build for v9.2.0 32 bit
-
-[Retrieved (and updated to remove .gitignore and appveyor.yml) from:
-https://github.com/assimp/assimp/commit/f78446b14aff46db2ef27d062a275b6a01fd68b1]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- contrib/zip/.gitignore          |   2 +
- contrib/zip/CMakeLists.txt      |  83 +++++-
- contrib/zip/README.md           |  12 +-
- contrib/zip/appveyor.yml        |   2 +-
- contrib/zip/src/miniz.h         | 457 ++++++++++++++++++++++++++++----
- contrib/zip/src/zip.c           |  62 +++--
- contrib/zip/src/zip.h           | 457 ++++++++++++++++----------------
- contrib/zip/test/CMakeLists.txt |  27 +-
- contrib/zip/test/test.c         |  38 ++-
- contrib/zip/test/test_miniz.c   |  25 +-
- 10 files changed, 821 insertions(+), 344 deletions(-)
-
-diff --git a/contrib/zip/CMakeLists.txt b/contrib/zip/CMakeLists.txt
-index b46dbb1db0..77916d2e14 100644
---- a/contrib/zip/CMakeLists.txt
-+++ b/contrib/zip/CMakeLists.txt
-@@ -1,10 +1,14 @@
--cmake_minimum_required(VERSION 2.8)
--project(zip)
--enable_language(C)
-+cmake_minimum_required(VERSION 3.0)
-+
-+project(zip
-+  LANGUAGES C
-+  VERSION "0.1.15")
- set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
- 
-+option(CMAKE_DISABLE_TESTING "Disable test creation" OFF)
-+
- if (MSVC)
--  # Use secure functions by defaualt and suppress warnings about "deprecated" functions
-+  # Use secure functions by default and suppress warnings about "deprecated" functions
-   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1")
-   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1")
-   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_NONSTDC_NO_WARNINGS=1 /D _CRT_SECURE_NO_WARNINGS=1")
-@@ -12,28 +16,80 @@ elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR
-         "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
-         "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang")
-   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra -Werror -pedantic")
-+  if(ENABLE_COVERAGE)
-+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
-+    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
-+  endif()
- endif (MSVC)
- 
- # zip
- set(SRC src/miniz.h src/zip.h src/zip.c)
- add_library(${PROJECT_NAME} ${SRC})
--target_include_directories(${PROJECT_NAME} INTERFACE src)
-+target_include_directories(${PROJECT_NAME} PUBLIC
-+  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
-+  $<INSTALL_INTERFACE:include>
-+)
- 
- # test
- if (NOT CMAKE_DISABLE_TESTING)
-   enable_testing()
-   add_subdirectory(test)
-   find_package(Sanitizers)
--  add_sanitizers(${PROJECT_NAME} test.exe)
--  add_sanitizers(${PROJECT_NAME} test_miniz.exe)
-+  add_sanitizers(${PROJECT_NAME} ${test_out} ${test_miniz_out})
- endif()
- 
-+####
-+# Installation (https://github.com/forexample/package-example) {
-+
-+set(CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}")
-+set(INCLUDE_INSTALL_DIR "include")
-+
-+set(GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
-+
-+# Configuration
-+set(VERSION_CONFIG "${GENERATED_DIR}/${PROJECT_NAME}ConfigVersion.cmake")
-+set(PROJECT_CONFIG "${GENERATED_DIR}/${PROJECT_NAME}Config.cmake")
-+set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
-+set(NAMESPACE "${PROJECT_NAME}::")
-+
-+# Include module with fuction 'write_basic_package_version_file'
-+include(CMakePackageConfigHelpers)
-+
-+# Note: PROJECT_VERSION is used as a VERSION
-+write_basic_package_version_file(
-+    "${VERSION_CONFIG}" COMPATIBILITY SameMajorVersion
-+)
-+
-+# Use variables:
-+#   * TARGETS_EXPORT_NAME
-+#   * PROJECT_NAME
-+configure_package_config_file(
-+    "cmake/Config.cmake.in"
-+    "${PROJECT_CONFIG}"
-+    INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}"
-+)
-+
-+install(
-+    FILES "${PROJECT_CONFIG}" "${VERSION_CONFIG}"
-+    DESTINATION "${CONFIG_INSTALL_DIR}"
-+)
-+
-+install(
-+    EXPORT "${TARGETS_EXPORT_NAME}"
-+    NAMESPACE "${NAMESPACE}"
-+    DESTINATION "${CONFIG_INSTALL_DIR}"
-+)
-+
-+# }
-+
- install(TARGETS ${PROJECT_NAME}
-+        EXPORT ${TARGETS_EXPORT_NAME}
-         RUNTIME DESTINATION bin
-         ARCHIVE DESTINATION lib
-         LIBRARY DESTINATION lib
--        COMPONENT library)
--install(FILES ${PROJECT_SOURCE_DIR}/src/zip.h DESTINATION include)
-+        INCLUDES DESTINATION ${INCLUDE_INSTALL_DIR}
-+)
-+install(FILES ${PROJECT_SOURCE_DIR}/src/zip.h DESTINATION ${INCLUDE_INSTALL_DIR}/zip)
- 
- # uninstall target (https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake)
- if(NOT TARGET uninstall)
-@@ -45,3 +101,12 @@ if(NOT TARGET uninstall)
-     add_custom_target(uninstall
-         COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake)
- endif()
-+
-+find_package(Doxygen)
-+if(DOXYGEN_FOUND)
-+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
-+    add_custom_target(doc
-+        ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
-+        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-+        COMMENT "Generating API documentation with Doxygen" VERBATIM)
-+endif()
-diff --git a/contrib/zip/README.md b/contrib/zip/README.md
-index d5fb8cd203..14eb9a34c8 100644
---- a/contrib/zip/README.md
-+++ b/contrib/zip/README.md
-@@ -71,7 +71,7 @@ int arg = 2;
- zip_extract("foo.zip", "/tmp", on_extract_entry, &arg);
- ```
- 
--*   Extract a zip entry into memory.
-+* Extract a zip entry into memory.
- ```c
- void *buf = NULL;
- size_t bufsize;
-@@ -89,7 +89,7 @@ zip_close(zip);
- free(buf);
- ```
- 
--*   Extract a zip entry into memory (no internal allocation).
-+* Extract a zip entry into memory (no internal allocation).
- ```c
- unsigned char *buf;
- size_t bufsize;
-@@ -110,7 +110,7 @@ zip_close(zip);
- free(buf);
- ```
- 
--*   Extract a zip entry into memory using callback.
-+* Extract a zip entry into memory using callback.
- ```c
- struct buffer_t {
-     char *data;
-@@ -144,7 +144,7 @@ free(buf.data);
- ```
- 
- 
--*   Extract a zip entry into a file.
-+* Extract a zip entry into a file.
- ```c
- struct zip_t *zip = zip_open("foo.zip", 0, 'r');
- {
-@@ -157,7 +157,7 @@ struct zip_t *zip = zip_open("foo.zip", 0, 'r');
- zip_close(zip);
- ```
- 
--*   List of all zip entries
-+* List of all zip entries
- ```c
- struct zip_t *zip = zip_open("foo.zip", 0, 'r');
- int i, n = zip_total_entries(zip);
-@@ -174,7 +174,7 @@ for (i = 0; i < n; ++i) {
- zip_close(zip);
- ```
- 
--## Bindings
-+# Bindings
- Compile zip library as a dynamic library.
- ```shell
- $ mkdir build
-diff --git a/contrib/zip/src/miniz.h b/contrib/zip/src/miniz.h
-index 2c27a94d8d..c4fcfb83e6 100644
---- a/contrib/zip/src/miniz.h
-+++ b/contrib/zip/src/miniz.h
-@@ -221,6 +221,7 @@
- #ifndef MINIZ_HEADER_INCLUDED
- #define MINIZ_HEADER_INCLUDED
- 
-+#include <stdint.h>
- #include <stdlib.h>
- 
- // Defines to completely disable specific portions of miniz.c:
-@@ -284,7 +285,8 @@
- /* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES only if not set */
- #if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES)
- #if MINIZ_X86_OR_X64_CPU
--/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */
-+/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient
-+ * integer loads and stores from unaligned addresses. */
- #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1
- #define MINIZ_UNALIGNED_USE_MEMCPY
- #else
-@@ -354,6 +356,44 @@ enum {
-   MZ_FIXED = 4
- };
- 
-+/* miniz error codes. Be sure to update mz_zip_get_error_string() if you add or
-+ * modify this enum. */
-+typedef enum {
-+  MZ_ZIP_NO_ERROR = 0,
-+  MZ_ZIP_UNDEFINED_ERROR,
-+  MZ_ZIP_TOO_MANY_FILES,
-+  MZ_ZIP_FILE_TOO_LARGE,
-+  MZ_ZIP_UNSUPPORTED_METHOD,
-+  MZ_ZIP_UNSUPPORTED_ENCRYPTION,
-+  MZ_ZIP_UNSUPPORTED_FEATURE,
-+  MZ_ZIP_FAILED_FINDING_CENTRAL_DIR,
-+  MZ_ZIP_NOT_AN_ARCHIVE,
-+  MZ_ZIP_INVALID_HEADER_OR_CORRUPTED,
-+  MZ_ZIP_UNSUPPORTED_MULTIDISK,
-+  MZ_ZIP_DECOMPRESSION_FAILED,
-+  MZ_ZIP_COMPRESSION_FAILED,
-+  MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE,
-+  MZ_ZIP_CRC_CHECK_FAILED,
-+  MZ_ZIP_UNSUPPORTED_CDIR_SIZE,
-+  MZ_ZIP_ALLOC_FAILED,
-+  MZ_ZIP_FILE_OPEN_FAILED,
-+  MZ_ZIP_FILE_CREATE_FAILED,
-+  MZ_ZIP_FILE_WRITE_FAILED,
-+  MZ_ZIP_FILE_READ_FAILED,
-+  MZ_ZIP_FILE_CLOSE_FAILED,
-+  MZ_ZIP_FILE_SEEK_FAILED,
-+  MZ_ZIP_FILE_STAT_FAILED,
-+  MZ_ZIP_INVALID_PARAMETER,
-+  MZ_ZIP_INVALID_FILENAME,
-+  MZ_ZIP_BUF_TOO_SMALL,
-+  MZ_ZIP_INTERNAL_ERROR,
-+  MZ_ZIP_FILE_NOT_FOUND,
-+  MZ_ZIP_ARCHIVE_TOO_LARGE,
-+  MZ_ZIP_VALIDATION_FAILED,
-+  MZ_ZIP_WRITE_CALLBACK_FAILED,
-+  MZ_ZIP_TOTAL_ERRORS
-+} mz_zip_error;
-+
- // Method
- #define MZ_DEFLATED 8
- 
-@@ -696,6 +736,7 @@ typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs,
-                                     void *pBuf, size_t n);
- typedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs,
-                                      const void *pBuf, size_t n);
-+typedef mz_bool (*mz_file_needs_keepalive)(void *pOpaque);
- 
- struct mz_zip_internal_state_tag;
- typedef struct mz_zip_internal_state_tag mz_zip_internal_state;
-@@ -707,13 +748,27 @@ typedef enum {
-   MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3
- } mz_zip_mode;
- 
--typedef struct mz_zip_archive_tag {
-+typedef enum {
-+  MZ_ZIP_TYPE_INVALID = 0,
-+  MZ_ZIP_TYPE_USER,
-+  MZ_ZIP_TYPE_MEMORY,
-+  MZ_ZIP_TYPE_HEAP,
-+  MZ_ZIP_TYPE_FILE,
-+  MZ_ZIP_TYPE_CFILE,
-+  MZ_ZIP_TOTAL_TYPES
-+} mz_zip_type;
-+
-+typedef struct {
-   mz_uint64 m_archive_size;
-   mz_uint64 m_central_directory_file_ofs;
--  mz_uint m_total_files;
-+
-+  /* We only support up to UINT32_MAX files in zip64 mode. */
-+  mz_uint32 m_total_files;
-   mz_zip_mode m_zip_mode;
-+  mz_zip_type m_zip_type;
-+  mz_zip_error m_last_error;
- 
--  mz_uint m_file_offset_alignment;
-+  mz_uint64 m_file_offset_alignment;
- 
-   mz_alloc_func m_pAlloc;
-   mz_free_func m_pFree;
-@@ -722,6 +777,7 @@ typedef struct mz_zip_archive_tag {
- 
-   mz_file_read_func m_pRead;
-   mz_file_write_func m_pWrite;
-+  mz_file_needs_keepalive m_pNeeds_keepalive;
-   void *m_pIO_opaque;
- 
-   mz_zip_internal_state *m_pState;
-@@ -1263,6 +1319,9 @@ mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits,
-                                                 int strategy);
- #endif // #ifndef MINIZ_NO_ZLIB_APIS
- 
-+#define MZ_UINT16_MAX (0xFFFFU)
-+#define MZ_UINT32_MAX (0xFFFFFFFFU)
-+
- #ifdef __cplusplus
- }
- #endif
-@@ -1311,6 +1370,11 @@ typedef unsigned char mz_validate_uint64[sizeof(mz_uint64) == 8 ? 1 : -1];
-    ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U))
- #endif
- 
-+#define MZ_READ_LE64(p)                                                        \
-+  (((mz_uint64)MZ_READ_LE32(p)) |                                              \
-+   (((mz_uint64)MZ_READ_LE32((const mz_uint8 *)(p) + sizeof(mz_uint32)))       \
-+    << 32U))
-+
- #ifdef _MSC_VER
- #define MZ_FORCEINLINE __forceinline
- #elif defined(__GNUC__)
-@@ -4160,6 +4224,17 @@ enum {
-   MZ_ZIP_LOCAL_DIR_HEADER_SIZE = 30,
-   MZ_ZIP_CENTRAL_DIR_HEADER_SIZE = 46,
-   MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE = 22,
-+
-+  /* ZIP64 archive identifier and record sizes */
-+  MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06064b50,
-+  MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG = 0x07064b50,
-+  MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE = 56,
-+  MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE = 20,
-+  MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID = 0x0001,
-+  MZ_ZIP_DATA_DESCRIPTOR_ID = 0x08074b50,
-+  MZ_ZIP_DATA_DESCRIPTER_SIZE64 = 24,
-+  MZ_ZIP_DATA_DESCRIPTER_SIZE32 = 16,
-+
-   // Central directory header record offsets
-   MZ_ZIP_CDH_SIG_OFS = 0,
-   MZ_ZIP_CDH_VERSION_MADE_BY_OFS = 4,
-@@ -4199,6 +4274,31 @@ enum {
-   MZ_ZIP_ECDH_CDIR_SIZE_OFS = 12,
-   MZ_ZIP_ECDH_CDIR_OFS_OFS = 16,
-   MZ_ZIP_ECDH_COMMENT_SIZE_OFS = 20,
-+
-+  /* ZIP64 End of central directory locator offsets */
-+  MZ_ZIP64_ECDL_SIG_OFS = 0,                    /* 4 bytes */
-+  MZ_ZIP64_ECDL_NUM_DISK_CDIR_OFS = 4,          /* 4 bytes */
-+  MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS = 8,  /* 8 bytes */
-+  MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS = 16, /* 4 bytes */
-+
-+  /* ZIP64 End of central directory header offsets */
-+  MZ_ZIP64_ECDH_SIG_OFS = 0,                       /* 4 bytes */
-+  MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS = 4,            /* 8 bytes */
-+  MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS = 12,          /* 2 bytes */
-+  MZ_ZIP64_ECDH_VERSION_NEEDED_OFS = 14,           /* 2 bytes */
-+  MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS = 16,            /* 4 bytes */
-+  MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS = 20,            /* 4 bytes */
-+  MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 24, /* 8 bytes */
-+  MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS = 32,       /* 8 bytes */
-+  MZ_ZIP64_ECDH_CDIR_SIZE_OFS = 40,                /* 8 bytes */
-+  MZ_ZIP64_ECDH_CDIR_OFS_OFS = 48,                 /* 8 bytes */
-+  MZ_ZIP_VERSION_MADE_BY_DOS_FILESYSTEM_ID = 0,
-+  MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG = 0x10,
-+  MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED = 1,
-+  MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG = 32,
-+  MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION = 64,
-+  MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED = 8192,
-+  MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8 = 1 << 11
- };
- 
- typedef struct {
-@@ -4211,7 +4311,24 @@ struct mz_zip_internal_state_tag {
-   mz_zip_array m_central_dir;
-   mz_zip_array m_central_dir_offsets;
-   mz_zip_array m_sorted_central_dir_offsets;
-+
-+  /* The flags passed in when the archive is initially opened. */
-+  uint32_t m_init_flags;
-+
-+  /* MZ_TRUE if the archive has a zip64 end of central directory headers, etc.
-+   */
-+  mz_bool m_zip64;
-+
-+  /* MZ_TRUE if we found zip64 extended info in the central directory (m_zip64
-+   * will also be slammed to true too, even if we didn't find a zip64 end of
-+   * central dir header, etc.) */
-+  mz_bool m_zip64_has_extended_info_fields;
-+
-+  /* These fields are used by the file, FILE, memory, and memory/heap read/write
-+   * helpers. */
-   MZ_FILE *m_pFile;
-+  mz_uint64 m_file_archive_start_ofs;
-+
-   void *m_pMem;
-   size_t m_mem_size;
-   size_t m_mem_capacity;
-@@ -4363,6 +4480,13 @@ static mz_bool mz_zip_set_file_times(const char *pFilename, time_t access_time,
- #endif /* #ifndef MINIZ_NO_STDIO */
- #endif /* #ifndef MINIZ_NO_TIME */
- 
-+static MZ_FORCEINLINE mz_bool mz_zip_set_error(mz_zip_archive *pZip,
-+                                               mz_zip_error err_num) {
-+  if (pZip)
-+    pZip->m_last_error = err_num;
-+  return MZ_FALSE;
-+}
-+
- static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip,
-                                            mz_uint32 flags) {
-   (void)flags;
-@@ -4480,127 +4604,346 @@ mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip) {
-   }
- }
- 
--static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip,
--                                              mz_uint32 flags) {
--  mz_uint cdir_size, num_this_disk, cdir_disk_index;
--  mz_uint64 cdir_ofs;
-+static mz_bool mz_zip_reader_locate_header_sig(mz_zip_archive *pZip,
-+                                               mz_uint32 record_sig,
-+                                               mz_uint32 record_size,
-+                                               mz_int64 *pOfs) {
-   mz_int64 cur_file_ofs;
--  const mz_uint8 *p;
-   mz_uint32 buf_u32[4096 / sizeof(mz_uint32)];
-   mz_uint8 *pBuf = (mz_uint8 *)buf_u32;
--  mz_bool sort_central_dir =
--      ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0);
--  // Basic sanity checks - reject files which are too small, and check the first
--  // 4 bytes of the file to make sure a local header is there.
--  if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)
-+
-+  /* Basic sanity checks - reject files which are too small */
-+  if (pZip->m_archive_size < record_size)
-     return MZ_FALSE;
--  // Find the end of central directory record by scanning the file from the end
--  // towards the beginning.
-+
-+  /* Find the record by scanning the file from the end towards the beginning. */
-   cur_file_ofs =
-       MZ_MAX((mz_int64)pZip->m_archive_size - (mz_int64)sizeof(buf_u32), 0);
-   for (;;) {
-     int i,
-         n = (int)MZ_MIN(sizeof(buf_u32), pZip->m_archive_size - cur_file_ofs);
-+
-     if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, n) != (mz_uint)n)
-       return MZ_FALSE;
--    for (i = n - 4; i >= 0; --i)
--      if (MZ_READ_LE32(pBuf + i) == MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG)
--        break;
-+
-+    for (i = n - 4; i >= 0; --i) {
-+      mz_uint s = MZ_READ_LE32(pBuf + i);
-+      if (s == record_sig) {
-+        if ((pZip->m_archive_size - (cur_file_ofs + i)) >= record_size)
-+          break;
-+      }
-+    }
-+
-     if (i >= 0) {
-       cur_file_ofs += i;
-       break;
-     }
-+
-+    /* Give up if we've searched the entire file, or we've gone back "too far"
-+     * (~64kb) */
-     if ((!cur_file_ofs) || ((pZip->m_archive_size - cur_file_ofs) >=
--                            (0xFFFF + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)))
-+                            (MZ_UINT16_MAX + record_size)))
-       return MZ_FALSE;
-+
-     cur_file_ofs = MZ_MAX(cur_file_ofs - (sizeof(buf_u32) - 3), 0);
-   }
--  // Read and verify the end of central directory record.
-+
-+  *pOfs = cur_file_ofs;
-+  return MZ_TRUE;
-+}
-+
-+static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip,
-+                                              mz_uint flags) {
-+  mz_uint cdir_size = 0, cdir_entries_on_this_disk = 0, num_this_disk = 0,
-+          cdir_disk_index = 0;
-+  mz_uint64 cdir_ofs = 0;
-+  mz_int64 cur_file_ofs = 0;
-+  const mz_uint8 *p;
-+
-+  mz_uint32 buf_u32[4096 / sizeof(mz_uint32)];
-+  mz_uint8 *pBuf = (mz_uint8 *)buf_u32;
-+  mz_bool sort_central_dir =
-+      ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0);
-+  mz_uint32 zip64_end_of_central_dir_locator_u32
-+      [(MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + sizeof(mz_uint32) - 1) /
-+       sizeof(mz_uint32)];
-+  mz_uint8 *pZip64_locator = (mz_uint8 *)zip64_end_of_central_dir_locator_u32;
-+
-+  mz_uint32 zip64_end_of_central_dir_header_u32
-+      [(MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) /
-+       sizeof(mz_uint32)];
-+  mz_uint8 *pZip64_end_of_central_dir =
-+      (mz_uint8 *)zip64_end_of_central_dir_header_u32;
-+
-+  mz_uint64 zip64_end_of_central_dir_ofs = 0;
-+
-+  /* Basic sanity checks - reject files which are too small, and check the first
-+   * 4 bytes of the file to make sure a local header is there. */
-+  if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)
-+    return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);
-+
-+  if (!mz_zip_reader_locate_header_sig(
-+          pZip, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG,
-+          MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE, &cur_file_ofs))
-+    return mz_zip_set_error(pZip, MZ_ZIP_FAILED_FINDING_CENTRAL_DIR);
-+
-+  /* Read and verify the end of central directory record. */
-   if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf,
-                     MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) !=
-       MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)
--    return MZ_FALSE;
--  if ((MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) !=
--       MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG) ||
--      ((pZip->m_total_files =
--            MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS)) !=
--       MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS)))
--    return MZ_FALSE;
-+    return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);
-+
-+  if (MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) !=
-+      MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG)
-+    return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);
-+
-+  if (cur_file_ofs >= (MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE +
-+                       MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)) {
-+    if (pZip->m_pRead(pZip->m_pIO_opaque,
-+                      cur_file_ofs - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE,
-+                      pZip64_locator,
-+                      MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) ==
-+        MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) {
-+      if (MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_SIG_OFS) ==
-+          MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG) {
-+        zip64_end_of_central_dir_ofs = MZ_READ_LE64(
-+            pZip64_locator + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS);
-+        if (zip64_end_of_central_dir_ofs >
-+            (pZip->m_archive_size - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE))
-+          return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);
-+
-+        if (pZip->m_pRead(pZip->m_pIO_opaque, zip64_end_of_central_dir_ofs,
-+                          pZip64_end_of_central_dir,
-+                          MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) ==
-+            MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) {
-+          if (MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIG_OFS) ==
-+              MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG) {
-+            pZip->m_pState->m_zip64 = MZ_TRUE;
-+          }
-+        }
-+      }
-+    }
-+  }
- 
-+  pZip->m_total_files = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS);
-+  cdir_entries_on_this_disk =
-+      MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS);
-   num_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS);
-   cdir_disk_index = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS);
-+  cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS);
-+  cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS);
-+
-+  if (pZip->m_pState->m_zip64) {
-+    mz_uint32 zip64_total_num_of_disks =
-+        MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS);
-+    mz_uint64 zip64_cdir_total_entries = MZ_READ_LE64(
-+        pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS);
-+    mz_uint64 zip64_cdir_total_entries_on_this_disk = MZ_READ_LE64(
-+        pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS);
-+    mz_uint64 zip64_size_of_end_of_central_dir_record = MZ_READ_LE64(
-+        pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS);
-+    mz_uint64 zip64_size_of_central_directory =
-+        MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_SIZE_OFS);
-+
-+    if (zip64_size_of_end_of_central_dir_record <
-+        (MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - 12))
-+      return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+
-+    if (zip64_total_num_of_disks != 1U)
-+      return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
-+
-+    /* Check for miniz's practical limits */
-+    if (zip64_cdir_total_entries > MZ_UINT32_MAX)
-+      return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);
-+
-+    pZip->m_total_files = (mz_uint32)zip64_cdir_total_entries;
-+
-+    if (zip64_cdir_total_entries_on_this_disk > MZ_UINT32_MAX)
-+      return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);
-+
-+    cdir_entries_on_this_disk =
-+        (mz_uint32)zip64_cdir_total_entries_on_this_disk;
-+
-+    /* Check for miniz's current practical limits (sorry, this should be enough
-+     * for millions of files) */
-+    if (zip64_size_of_central_directory > MZ_UINT32_MAX)
-+      return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE);
-+
-+    cdir_size = (mz_uint32)zip64_size_of_central_directory;
-+
-+    num_this_disk = MZ_READ_LE32(pZip64_end_of_central_dir +
-+                                 MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS);
-+
-+    cdir_disk_index = MZ_READ_LE32(pZip64_end_of_central_dir +
-+                                   MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS);
-+
-+    cdir_ofs =
-+        MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_OFS_OFS);
-+  }
-+
-+  if (pZip->m_total_files != cdir_entries_on_this_disk)
-+    return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
-+
-   if (((num_this_disk | cdir_disk_index) != 0) &&
-       ((num_this_disk != 1) || (cdir_disk_index != 1)))
--    return MZ_FALSE;
-+    return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
- 
--  if ((cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS)) <
--      pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)
--    return MZ_FALSE;
-+  if (cdir_size < pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)
-+    return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
- 
--  cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS);
-   if ((cdir_ofs + (mz_uint64)cdir_size) > pZip->m_archive_size)
--    return MZ_FALSE;
-+    return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
- 
-   pZip->m_central_directory_file_ofs = cdir_ofs;
- 
-   if (pZip->m_total_files) {
-     mz_uint i, n;
--
--    // Read the entire central directory into a heap block, and allocate another
--    // heap block to hold the unsorted central dir file record offsets, and
--    // another to hold the sorted indices.
-+    /* Read the entire central directory into a heap block, and allocate another
-+     * heap block to hold the unsorted central dir file record offsets, and
-+     * possibly another to hold the sorted indices. */
-     if ((!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir, cdir_size,
-                               MZ_FALSE)) ||
-         (!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir_offsets,
-                               pZip->m_total_files, MZ_FALSE)))
--      return MZ_FALSE;
-+      return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);
- 
-     if (sort_central_dir) {
-       if (!mz_zip_array_resize(pZip,
-                                &pZip->m_pState->m_sorted_central_dir_offsets,
-                                pZip->m_total_files, MZ_FALSE))
--        return MZ_FALSE;
-+        return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);
-     }
- 
-     if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs,
-                       pZip->m_pState->m_central_dir.m_p,
-                       cdir_size) != cdir_size)
--      return MZ_FALSE;
-+      return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);
- 
--    // Now create an index into the central directory file records, do some
--    // basic sanity checking on each record, and check for zip64 entries (which
--    // are not yet supported).
-+    /* Now create an index into the central directory file records, do some
-+     * basic sanity checking on each record */
-     p = (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p;
-     for (n = cdir_size, i = 0; i < pZip->m_total_files; ++i) {
--      mz_uint total_header_size, comp_size, decomp_size, disk_index;
-+      mz_uint total_header_size, disk_index, bit_flags, filename_size,
-+          ext_data_size;
-+      mz_uint64 comp_size, decomp_size, local_header_ofs;
-+
-       if ((n < MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) ||
-           (MZ_READ_LE32(p) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG))
--        return MZ_FALSE;
-+        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+
-       MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32,
-                            i) =
-           (mz_uint32)(p - (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p);
-+
-       if (sort_central_dir)
-         MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_sorted_central_dir_offsets,
-                              mz_uint32, i) = i;
-+
-       comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);
-       decomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS);
--      if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) &&
--           (decomp_size != comp_size)) ||
--          (decomp_size && !comp_size) || (decomp_size == 0xFFFFFFFF) ||
--          (comp_size == 0xFFFFFFFF))
--        return MZ_FALSE;
-+      local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS);
-+      filename_size = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);
-+      ext_data_size = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS);
-+
-+      if ((!pZip->m_pState->m_zip64_has_extended_info_fields) &&
-+          (ext_data_size) &&
-+          (MZ_MAX(MZ_MAX(comp_size, decomp_size), local_header_ofs) ==
-+           MZ_UINT32_MAX)) {
-+        /* Attempt to find zip64 extended information field in the entry's extra
-+         * data */
-+        mz_uint32 extra_size_remaining = ext_data_size;
-+
-+        if (extra_size_remaining) {
-+          const mz_uint8 *pExtra_data;
-+          void *buf = NULL;
-+
-+          if (MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + ext_data_size >
-+              n) {
-+            buf = MZ_MALLOC(ext_data_size);
-+            if (buf == NULL)
-+              return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);
-+
-+            if (pZip->m_pRead(pZip->m_pIO_opaque,
-+                              cdir_ofs + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE +
-+                                  filename_size,
-+                              buf, ext_data_size) != ext_data_size) {
-+              MZ_FREE(buf);
-+              return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);
-+            }
-+
-+            pExtra_data = (mz_uint8 *)buf;
-+          } else {
-+            pExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size;
-+          }
-+
-+          do {
-+            mz_uint32 field_id;
-+            mz_uint32 field_data_size;
-+
-+            if (extra_size_remaining < (sizeof(mz_uint16) * 2)) {
-+              MZ_FREE(buf);
-+              return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+            }
-+
-+            field_id = MZ_READ_LE16(pExtra_data);
-+            field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16));
-+
-+            if ((field_data_size + sizeof(mz_uint16) * 2) >
-+                extra_size_remaining) {
-+              MZ_FREE(buf);
-+              return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+            }
-+
-+            if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) {
-+              /* Ok, the archive didn't have any zip64 headers but it uses a
-+               * zip64 extended information field so mark it as zip64 anyway
-+               * (this can occur with infozip's zip util when it reads
-+               * compresses files from stdin). */
-+              pZip->m_pState->m_zip64 = MZ_TRUE;
-+              pZip->m_pState->m_zip64_has_extended_info_fields = MZ_TRUE;
-+              break;
-+            }
-+
-+            pExtra_data += sizeof(mz_uint16) * 2 + field_data_size;
-+            extra_size_remaining =
-+                extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size;
-+          } while (extra_size_remaining);
-+
-+          MZ_FREE(buf);
-+        }
-+      }
-+
-+      /* I've seen archives that aren't marked as zip64 that uses zip64 ext
-+       * data, argh */
-+      if ((comp_size != MZ_UINT32_MAX) && (decomp_size != MZ_UINT32_MAX)) {
-+        if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) &&
-+             (decomp_size != comp_size)) ||
-+            (decomp_size && !comp_size))
-+          return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+      }
-+
-       disk_index = MZ_READ_LE16(p + MZ_ZIP_CDH_DISK_START_OFS);
--      if ((disk_index != num_this_disk) && (disk_index != 1))
--        return MZ_FALSE;
--      if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) +
--           MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size)
--        return MZ_FALSE;
-+      if ((disk_index == MZ_UINT16_MAX) ||
-+          ((disk_index != num_this_disk) && (disk_index != 1)))
-+        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
-+
-+      if (comp_size != MZ_UINT32_MAX) {
-+        if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) +
-+             MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size)
-+          return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+      }
-+
-+      bit_flags = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS);
-+      if (bit_flags & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED)
-+        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION);
-+
-       if ((total_header_size = MZ_ZIP_CENTRAL_DIR_HEADER_SIZE +
-                                MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) +
-                                MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS) +
-                                MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS)) >
-           n)
--        return MZ_FALSE;
-+        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+
-       n -= total_header_size;
-       p += total_header_size;
-     }
-diff --git a/contrib/zip/src/zip.c b/contrib/zip/src/zip.c
-index ff3a8fe1e6..1abcfd8fd1 100644
---- a/contrib/zip/src/zip.c
-+++ b/contrib/zip/src/zip.c
-@@ -24,7 +24,6 @@
-   ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) &&   \
-    (P)[1] == ':')
- #define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE(P) ? 2 : 0)
--#define ISSLASH(C) ((C) == '/' || (C) == '\\')
- 
- #else
- 
-@@ -48,7 +47,7 @@ int symlink(const char *target, const char *linkpath); // needed on Linux
- #endif
- 
- #ifndef ISSLASH
--#define ISSLASH(C) ((C) == '/')
-+#define ISSLASH(C) ((C) == '/' || (C) == '\\')
- #endif
- 
- #define CLEANUP(ptr)                                                           \
-@@ -78,26 +77,34 @@ static const char *base_name(const char *name) {
-   return base;
- }
- 
--static int mkpath(const char *path) {
--  char const *p;
-+static int mkpath(char *path) {
-+  char *p;
-   char npath[MAX_PATH + 1];
-   int len = 0;
-   int has_device = HAS_DEVICE(path);
- 
-   memset(npath, 0, MAX_PATH + 1);
--
--#ifdef _WIN32
--  // only on windows fix the path
--  npath[0] = path[0];
--  npath[1] = path[1];
--  len = 2;
--#endif // _WIN32
--    
-+  if (has_device) {
-+    // only on windows
-+    npath[0] = path[0];
-+    npath[1] = path[1];
-+    len = 2;
-+  }
-   for (p = path + len; *p && len < MAX_PATH; p++) {
-     if (ISSLASH(*p) && ((!has_device && len > 0) || (has_device && len > 2))) {
--      if (MKDIR(npath) == -1)
--        if (errno != EEXIST)
-+#if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) ||              \
-+    defined(__MINGW32__)
-+#else
-+      if ('\\' == *p) {
-+        *p = '/';
-+      }
-+#endif
-+
-+      if (MKDIR(npath) == -1) {
-+        if (errno != EEXIST) {
-           return -1;
-+        }
-+      }
-     }
-     npath[len++] = *p;
-   }
-@@ -279,7 +286,14 @@ int zip_entry_open(struct zip_t *zip, const char *entryname) {
-   zip->entry.header_offset = zip->archive.m_archive_size;
-   memset(zip->entry.header, 0, MZ_ZIP_LOCAL_DIR_HEADER_SIZE * sizeof(mz_uint8));
-   zip->entry.method = 0;
-+
-+  // UNIX or APPLE
-+#if MZ_PLATFORM == 3 || MZ_PLATFORM == 19
-+  // regular file with rw-r--r-- persmissions
-+  zip->entry.external_attr = (mz_uint32)(0100644) << 16;
-+#else
-   zip->entry.external_attr = 0;
-+#endif
- 
-   num_alignment_padding_bytes =
-       mz_zip_writer_compute_padding_needed_for_file_alignment(pzip);
-@@ -660,7 +674,7 @@ ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize) {
-   }
- 
-   if (!mz_zip_reader_extract_to_mem_no_alloc(pzip, (mz_uint)zip->entry.index,
--  buf, bufsize, 0, NULL,  0)) {
-+                                             buf, bufsize, 0, NULL, 0)) {
-     return -1;
-   }
- 
-@@ -670,10 +684,7 @@ ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize) {
- int zip_entry_fread(struct zip_t *zip, const char *filename) {
-   mz_zip_archive *pzip = NULL;
-   mz_uint idx;
--#if defined(_MSC_VER)
--#else
-   mz_uint32 xattr = 0;
--#endif
-   mz_zip_archive_file_stat info;
- 
-   if (!zip) {
-@@ -875,12 +886,19 @@ int zip_extract(const char *zipname, const char *dir,
-       goto out;
-     }
- 
--    if ((((info.m_version_made_by >> 8) == 3) || ((info.m_version_made_by >> 8) == 19)) // if zip is produced on Unix or macOS (3 and 19 from section 4.4.2.2 of zip standard)
--        && info.m_external_attr & (0x20 << 24)) { // and has sym link attribute (0x80 is file, 0x40 is directory)
-+    if ((((info.m_version_made_by >> 8) == 3) ||
-+         ((info.m_version_made_by >> 8) ==
-+          19)) // if zip is produced on Unix or macOS (3 and 19 from
-+               // section 4.4.2.2 of zip standard)
-+        && info.m_external_attr &
-+               (0x20 << 24)) { // and has sym link attribute (0x80 is file, 0x40
-+                               // is directory)
- #if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) ||              \
-     defined(__MINGW32__)
--#else      
--      if (info.m_uncomp_size > MAX_PATH || !mz_zip_reader_extract_to_mem_no_alloc(&zip_archive, i, symlink_to, MAX_PATH, 0, NULL, 0)) {
-+#else
-+      if (info.m_uncomp_size > MAX_PATH ||
-+          !mz_zip_reader_extract_to_mem_no_alloc(&zip_archive, i, symlink_to,
-+                                                 MAX_PATH, 0, NULL, 0)) {
-         goto out;
-       }
-       symlink_to[info.m_uncomp_size] = '\0';
-diff --git a/contrib/zip/src/zip.h b/contrib/zip/src/zip.h
-index 5f39df50ad..a48d64d6de 100644
---- a/contrib/zip/src/zip.h
-+++ b/contrib/zip/src/zip.h
-@@ -20,241 +20,240 @@ extern "C" {
- #endif
- 
- #if !defined(_SSIZE_T_DEFINED) && !defined(_SSIZE_T_DEFINED_) &&               \
--    !defined(_SSIZE_T) && !defined(_SSIZE_T_) && !defined(__ssize_t_defined)
--#define _SSIZE_T
-+    !defined(__DEFINED_ssize_t) && !defined(__ssize_t_defined) &&              \
-+    !defined(_SSIZE_T) && !defined(_SSIZE_T_)
-+
- // 64-bit Windows is the only mainstream platform
- // where sizeof(long) != sizeof(void*)
- #ifdef _WIN64
--typedef long long  ssize_t;  /* byte count or error */
-+typedef long long ssize_t; /* byte count or error */
- #else
--typedef long  ssize_t;  /* byte count or error */
-+typedef long ssize_t; /* byte count or error */
- #endif
-+
-+#define _SSIZE_T_DEFINED
-+#define _SSIZE_T_DEFINED_
-+#define __DEFINED_ssize_t
-+#define __ssize_t_defined
-+#define _SSIZE_T
-+#define _SSIZE_T_
-+
- #endif
- 
- #ifndef MAX_PATH
- #define MAX_PATH 32767 /* # chars in a path name including NULL */
- #endif
- 
-+/**
-+ * @mainpage
-+ *
-+ * Documenation for @ref zip.
-+ */
-+
-+/**
-+ * @addtogroup zip
-+ * @{
-+ */
-+
-+/**
-+ * Default zip compression level.
-+ */
-+
- #define ZIP_DEFAULT_COMPRESSION_LEVEL 6
- 
--/*
--  This data structure is used throughout the library to represent zip archive
--  - forward declaration.
--*/
-+/**
-+ * @struct zip_t
-+ *
-+ * This data structure is used throughout the library to represent zip archive -
-+ * forward declaration.
-+ */
- struct zip_t;
- 
--/*
--  Opens zip archive with compression level using the given mode.
--
--  Args:
--    zipname: zip archive file name.
--    level: compression level (0-9 are the standard zlib-style levels).
--    mode: file access mode.
--        'r': opens a file for reading/extracting (the file must exists).
--        'w': creates an empty file for writing.
--        'a': appends to an existing archive.
--
--  Returns:
--    The zip archive handler or NULL on error
--*/
-+/**
-+ * Opens zip archive with compression level using the given mode.
-+ *
-+ * @param zipname zip archive file name.
-+ * @param level compression level (0-9 are the standard zlib-style levels).
-+ * @param mode file access mode.
-+ *        - 'r': opens a file for reading/extracting (the file must exists).
-+ *        - 'w': creates an empty file for writing.
-+ *        - 'a': appends to an existing archive.
-+ *
-+ * @return the zip archive handler or NULL on error
-+ */
- extern struct zip_t *zip_open(const char *zipname, int level, char mode);
- 
--/*
--  Closes the zip archive, releases resources - always finalize.
--
--  Args:
--    zip: zip archive handler.
--*/
-+/**
-+ * Closes the zip archive, releases resources - always finalize.
-+ *
-+ * @param zip zip archive handler.
-+ */
- extern void zip_close(struct zip_t *zip);
- 
--/*
--  Opens an entry by name in the zip archive.
--  For zip archive opened in 'w' or 'a' mode the function will append
--  a new entry. In readonly mode the function tries to locate the entry
--  in global dictionary.
--
--  Args:
--    zip: zip archive handler.
--    entryname: an entry name in local dictionary.
--
--  Returns:
--    The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Opens an entry by name in the zip archive.
-+ *
-+ * For zip archive opened in 'w' or 'a' mode the function will append
-+ * a new entry. In readonly mode the function tries to locate the entry
-+ * in global dictionary.
-+ *
-+ * @param zip zip archive handler.
-+ * @param entryname an entry name in local dictionary.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_open(struct zip_t *zip, const char *entryname);
- 
--/*
--  Opens a new entry by index in the zip archive.
--  This function is only valid if zip archive was opened in 'r' (readonly) mode.
--
--  Args:
--    zip: zip archive handler.
--    index: index in local dictionary.
--
--  Returns:
--    The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Opens a new entry by index in the zip archive.
-+ *
-+ * This function is only valid if zip archive was opened in 'r' (readonly) mode.
-+ *
-+ * @param zip zip archive handler.
-+ * @param index index in local dictionary.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_openbyindex(struct zip_t *zip, int index);
- 
--/*
--  Closes a zip entry, flushes buffer and releases resources.
--
--  Args:
--    zip: zip archive handler.
--
--  Returns:
--    The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Closes a zip entry, flushes buffer and releases resources.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_close(struct zip_t *zip);
- 
--/*
--  Returns a local name of the current zip entry.
--  The main difference between user's entry name and local entry name
--  is optional relative path.
--  Following .ZIP File Format Specification - the path stored MUST not contain
--  a drive or device letter, or a leading slash.
--  All slashes MUST be forward slashes '/' as opposed to backwards slashes '\'
--  for compatibility with Amiga and UNIX file systems etc.
--
--  Args:
--    zip: zip archive handler.
--
--  Returns:
--    The pointer to the current zip entry name, or NULL on error.
--*/
-+/**
-+ * Returns a local name of the current zip entry.
-+ *
-+ * The main difference between user's entry name and local entry name
-+ * is optional relative path.
-+ * Following .ZIP File Format Specification - the path stored MUST not contain
-+ * a drive or device letter, or a leading slash.
-+ * All slashes MUST be forward slashes '/' as opposed to backwards slashes '\'
-+ * for compatibility with Amiga and UNIX file systems etc.
-+ *
-+ * @param zip: zip archive handler.
-+ *
-+ * @return the pointer to the current zip entry name, or NULL on error.
-+ */
- extern const char *zip_entry_name(struct zip_t *zip);
- 
--/*
--  Returns an index of the current zip entry.
--
--  Args:
--    zip: zip archive handler.
--
--  Returns:
--    The index on success, negative number (< 0) on error.
--*/
-+/**
-+ * Returns an index of the current zip entry.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the index on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_index(struct zip_t *zip);
- 
--/*
--  Determines if the current zip entry is a directory entry.
--
--  Args:
--    zip: zip archive handler.
--
--  Returns:
--    The return code - 1 (true), 0 (false), negative number (< 0) on error.
--*/
-+/**
-+ * Determines if the current zip entry is a directory entry.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the return code - 1 (true), 0 (false), negative number (< 0) on
-+ *         error.
-+ */
- extern int zip_entry_isdir(struct zip_t *zip);
- 
--/*
--  Returns an uncompressed size of the current zip entry.
--
--  Args:
--    zip: zip archive handler.
--
--  Returns:
--    The uncompressed size in bytes.
--*/
-+/**
-+ * Returns an uncompressed size of the current zip entry.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the uncompressed size in bytes.
-+ */
- extern unsigned long long zip_entry_size(struct zip_t *zip);
- 
--/*
--  Returns CRC-32 checksum of the current zip entry.
--
--  Args:
--    zip: zip archive handler.
--
--  Returns:
--    The CRC-32 checksum.
--*/
-+/**
-+ * Returns CRC-32 checksum of the current zip entry.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the CRC-32 checksum.
-+ */
- extern unsigned int zip_entry_crc32(struct zip_t *zip);
- 
--/*
--  Compresses an input buffer for the current zip entry.
--
--  Args:
--    zip: zip archive handler.
--    buf: input buffer.
--    bufsize: input buffer size (in bytes).
--
--  Returns:
--    The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Compresses an input buffer for the current zip entry.
-+ *
-+ * @param zip zip archive handler.
-+ * @param buf input buffer.
-+ * @param bufsize input buffer size (in bytes).
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_write(struct zip_t *zip, const void *buf, size_t bufsize);
- 
--/*
--  Compresses a file for the current zip entry.
--
--  Args:
--    zip: zip archive handler.
--    filename: input file.
--
--  Returns:
--    The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Compresses a file for the current zip entry.
-+ *
-+ * @param zip zip archive handler.
-+ * @param filename input file.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_fwrite(struct zip_t *zip, const char *filename);
- 
--/*
--  Extracts the current zip entry into output buffer.
--  The function allocates sufficient memory for a output buffer.
--
--  Args:
--    zip: zip archive handler.
--    buf: output buffer.
--    bufsize: output buffer size (in bytes).
--
--  Note:
--    - remember to release memory allocated for a output buffer.
--    - for large entries, please take a look at zip_entry_extract function.
--
--  Returns:
--    The return code - the number of bytes actually read on success.
--    Otherwise a -1 on error.
--*/
-+/**
-+ * Extracts the current zip entry into output buffer.
-+ *
-+ * The function allocates sufficient memory for a output buffer.
-+ *
-+ * @param zip zip archive handler.
-+ * @param buf output buffer.
-+ * @param bufsize output buffer size (in bytes).
-+ *
-+ * @note remember to release memory allocated for a output buffer.
-+ *       for large entries, please take a look at zip_entry_extract function.
-+ *
-+ * @return the return code - the number of bytes actually read on success.
-+ *         Otherwise a -1 on error.
-+ */
- extern ssize_t zip_entry_read(struct zip_t *zip, void **buf, size_t *bufsize);
- 
--/*
--  Extracts the current zip entry into a memory buffer using no memory
--  allocation.
--
--  Args:
--    zip: zip archive handler.
--    buf: preallocated output buffer.
--    bufsize: output buffer size (in bytes).
--
--  Note:
--    - ensure supplied output buffer is large enough.
--    - zip_entry_size function (returns uncompressed size for the current entry)
--      can be handy to estimate how big buffer is needed.
--    - for large entries, please take a look at zip_entry_extract function.
--
--  Returns:
--    The return code - the number of bytes actually read on success.
--    Otherwise a -1 on error (e.g. bufsize is not large enough).
--*/
--extern ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize);
--
--/*
--  Extracts the current zip entry into output file.
--
--  Args:
--    zip: zip archive handler.
--    filename: output file.
--
--  Returns:
--    The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Extracts the current zip entry into a memory buffer using no memory
-+ * allocation.
-+ *
-+ * @param zip zip archive handler.
-+ * @param buf preallocated output buffer.
-+ * @param bufsize output buffer size (in bytes).
-+ *
-+ * @note ensure supplied output buffer is large enough.
-+ *       zip_entry_size function (returns uncompressed size for the current
-+ *       entry) can be handy to estimate how big buffer is needed. for large
-+ * entries, please take a look at zip_entry_extract function.
-+ *
-+ * @return the return code - the number of bytes actually read on success.
-+ *         Otherwise a -1 on error (e.g. bufsize is not large enough).
-+ */
-+extern ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf,
-+                                     size_t bufsize);
-+
-+/**
-+ * Extracts the current zip entry into output file.
-+ *
-+ * @param zip zip archive handler.
-+ * @param filename output file.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_fread(struct zip_t *zip, const char *filename);
- 
--/*
--  Extracts the current zip entry using a callback function (on_extract).
--
--  Args:
--    zip: zip archive handler.
--    on_extract: callback function.
--    arg: opaque pointer (optional argument,
--                         which you can pass to the on_extract callback)
--
--   Returns:
--    The return code - 0 on success, negative number (< 0) on error.
-+/**
-+ * Extracts the current zip entry using a callback function (on_extract).
-+ *
-+ * @param zip zip archive handler.
-+ * @param on_extract callback function.
-+ * @param arg opaque pointer (optional argument, which you can pass to the
-+ *        on_extract callback)
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-  */
- extern int
- zip_entry_extract(struct zip_t *zip,
-@@ -262,53 +261,49 @@ zip_entry_extract(struct zip_t *zip,
-                                        const void *data, size_t size),
-                   void *arg);
- 
--/*
--  Returns the number of all entries (files and directories) in the zip archive.
--
--  Args:
--    zip: zip archive handler.
--
--  Returns:
--    The return code - the number of entries on success,
--    negative number (< 0) on error.
--*/
-+/**
-+ * Returns the number of all entries (files and directories) in the zip archive.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the return code - the number of entries on success, negative number
-+ *         (< 0) on error.
-+ */
- extern int zip_total_entries(struct zip_t *zip);
- 
--/*
--  Creates a new archive and puts files into a single zip archive.
--
--  Args:
--    zipname: zip archive file.
--    filenames: input files.
--    len: number of input files.
--
--  Returns:
--    The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Creates a new archive and puts files into a single zip archive.
-+ *
-+ * @param zipname zip archive file.
-+ * @param filenames input files.
-+ * @param len: number of input files.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_create(const char *zipname, const char *filenames[], size_t len);
- 
--/*
--  Extracts a zip archive file into directory.
--
--  If on_extract_entry is not NULL, the callback will be called after
--  successfully extracted each zip entry.
--  Returning a negative value from the callback will cause abort and return an
--  error. The last argument (void *arg) is optional, which you can use to pass
--  data to the on_extract_entry callback.
--
--  Args:
--    zipname: zip archive file.
--    dir: output directory.
--    on_extract_entry: on extract callback.
--    arg: opaque pointer.
--
--  Returns:
--    The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Extracts a zip archive file into directory.
-+ *
-+ * If on_extract_entry is not NULL, the callback will be called after
-+ * successfully extracted each zip entry.
-+ * Returning a negative value from the callback will cause abort and return an
-+ * error. The last argument (void *arg) is optional, which you can use to pass
-+ * data to the on_extract_entry callback.
-+ *
-+ * @param zipname zip archive file.
-+ * @param dir output directory.
-+ * @param on_extract_entry on extract callback.
-+ * @param arg opaque pointer.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_extract(const char *zipname, const char *dir,
-                        int (*on_extract_entry)(const char *filename, void *arg),
-                        void *arg);
- 
-+/** @} */
-+
- #ifdef __cplusplus
- }
- #endif
-diff --git a/contrib/zip/test/CMakeLists.txt b/contrib/zip/test/CMakeLists.txt
-index 9b2a8db106..cc060b00fe 100644
---- a/contrib/zip/test/CMakeLists.txt
-+++ b/contrib/zip/test/CMakeLists.txt
-@@ -1,19 +1,16 @@
- cmake_minimum_required(VERSION 2.8)
- 
--if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang")
--  if(ENABLE_COVERAGE)
--    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g ")
--    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
--    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs")
--    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftest-coverage")
--    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
--  endif()
--endif ()
--
- # test
--include_directories(../src)
--add_executable(test.exe test.c ../src/zip.c)
--add_executable(test_miniz.exe test_miniz.c)
-+set(test_out test.out)
-+set(test_miniz_out test_miniz.out)
-+
-+add_executable(${test_out} test.c)
-+target_link_libraries(${test_out} zip)
-+add_executable(${test_miniz_out} test_miniz.c)
-+target_link_libraries(${test_miniz_out} zip)
-+
-+add_test(NAME ${test_out} COMMAND ${test_out})
-+add_test(NAME ${test_miniz_out} COMMAND ${test_miniz_out})
- 
--add_test(NAME test COMMAND test.exe)
--add_test(NAME test_miniz COMMAND test_miniz.exe)
-+set(test_out ${test_out} PARENT_SCOPE)
-+set(test_miniz_out ${test_miniz_out} PARENT_SCOPE)
-diff --git a/contrib/zip/test/test.c b/contrib/zip/test/test.c
-index 454430533a..a9b2ddab1e 100644
---- a/contrib/zip/test/test.c
-+++ b/contrib/zip/test/test.c
-@@ -29,6 +29,8 @@
- #define XFILE "7.txt\0"
- #define XMODE 0100777
- 
-+#define UNIXMODE 0100644
-+
- #define UNUSED(x) (void)x
- 
- static int total_entries = 0;
-@@ -102,7 +104,8 @@ static void test_read(void) {
-   assert(0 == zip_entry_close(zip));
-   free(buf);
-   buf = NULL;
--  
-+  bufsize = 0;
-+
-   assert(0 == zip_entry_open(zip, "test/test-2.txt"));
-   assert(strlen(TESTDATA2) == zip_entry_size(zip));
-   assert(CRC32DATA2 == zip_entry_crc32(zip));
-@@ -131,7 +134,8 @@ static void test_read(void) {
-   assert(0 == zip_entry_close(zip));
-   free(buf);
-   buf = NULL;
--  
-+  bufsize = 0;
-+
-   buftmp = strlen(TESTDATA1);
-   buf = calloc(buftmp, sizeof(char));
-   assert(0 == zip_entry_open(zip, "test/test-1.txt"));
-@@ -433,6 +437,35 @@ static void test_mtime(void) {
-   remove(ZIPNAME);
- }
- 
-+static void test_unix_permissions(void) {
-+#if defined(_WIN64) || defined(_WIN32) || defined(__WIN32__)
-+#else
-+  // UNIX or APPLE
-+  struct MZ_FILE_STAT_STRUCT file_stats;
-+
-+  remove(ZIPNAME);
-+
-+  struct zip_t *zip = zip_open(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w');
-+  assert(zip != NULL);
-+
-+  assert(0 == zip_entry_open(zip, RFILE));
-+  assert(0 == zip_entry_write(zip, TESTDATA1, strlen(TESTDATA1)));
-+  assert(0 == zip_entry_close(zip));
-+
-+  zip_close(zip);
-+
-+  remove(RFILE);
-+
-+  assert(0 == zip_extract(ZIPNAME, ".", NULL, NULL));
-+
-+  assert(0 == MZ_FILE_STAT(RFILE, &file_stats));
-+  assert(UNIXMODE == file_stats.st_mode);
-+
-+  remove(RFILE);
-+  remove(ZIPNAME);
-+#endif
-+}
-+
- int main(int argc, char *argv[]) {
-   UNUSED(argc);
-   UNUSED(argv);
-@@ -453,6 +486,7 @@ int main(int argc, char *argv[]) {
-   test_write_permissions();
-   test_exe_permissions();
-   test_mtime();
-+  test_unix_permissions();
- 
-   remove(ZIPNAME);
-   return 0;
-diff --git a/contrib/zip/test/test_miniz.c b/contrib/zip/test/test_miniz.c
-index ebc0564dc3..babcaecdb6 100644
---- a/contrib/zip/test/test_miniz.c
-+++ b/contrib/zip/test/test_miniz.c
-@@ -23,16 +23,39 @@ int main(int argc, char *argv[]) {
-   uint step = 0;
-   int cmp_status;
-   uLong src_len = (uLong)strlen(s_pStr);
--  uLong cmp_len = compressBound(src_len);
-   uLong uncomp_len = src_len;
-+  uLong cmp_len;
-   uint8 *pCmp, *pUncomp;
-+  size_t sz;
-   uint total_succeeded = 0;
-   (void)argc, (void)argv;
- 
-   printf("miniz.c version: %s\n", MZ_VERSION);
- 
-   do {
-+    pCmp = (uint8 *)tdefl_compress_mem_to_heap(s_pStr, src_len, &cmp_len, 0);
-+    if (!pCmp) {
-+      printf("tdefl_compress_mem_to_heap failed\n");
-+      return EXIT_FAILURE;
-+    }
-+    if (src_len <= cmp_len) {
-+      printf("tdefl_compress_mem_to_heap failed: from %u to %u bytes\n",
-+             (mz_uint32)uncomp_len, (mz_uint32)cmp_len);
-+      free(pCmp);
-+      return EXIT_FAILURE;
-+    }
-+
-+    sz = tdefl_compress_mem_to_mem(pCmp, cmp_len, s_pStr, src_len, 0);
-+    if (sz != cmp_len) {
-+      printf("tdefl_compress_mem_to_mem failed: expected %u, got %u\n",
-+             (mz_uint32)cmp_len, (mz_uint32)sz);
-+      free(pCmp);
-+      return EXIT_FAILURE;
-+    }
-+
-     // Allocate buffers to hold compressed and uncompressed data.
-+    free(pCmp);
-+    cmp_len = compressBound(src_len);
-     pCmp = (mz_uint8 *)malloc((size_t)cmp_len);
-     pUncomp = (mz_uint8 *)malloc((size_t)src_len);
-     if ((!pCmp) || (!pUncomp)) {

+ 0 - 243
package/assimp/0003-closes-2954-upgrade-to-latest-greatest.patch

@@ -1,243 +0,0 @@
-From bb3db0ebaffc6b76de256e597ec1d1e4d2a6663f Mon Sep 17 00:00:00 2001
-From: kimkulling <kim.kulling@googlemail.com>
-Date: Mon, 9 Mar 2020 10:51:26 +0100
-Subject: [PATCH] closes https://github.com/assimp/assimp/issues/2954: upgrade
- to latest greatest.
-
-[Retrieved from:
-https://github.com/assimp/assimp/commit/bb3db0ebaffc6b76de256e597ec1d1e4d2a6663f]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- contrib/zip/CMakeLists.txt      |  8 ++----
- contrib/zip/README.md           | 51 +++++++++++++++++++++++++++++++--
- contrib/zip/src/zip.c           | 17 ++++++++++-
- contrib/zip/src/zip.h           | 13 ++++++++-
- contrib/zip/test/CMakeLists.txt |  5 ----
- contrib/zip/test/test.c         |  4 ++-
- 6 files changed, 81 insertions(+), 17 deletions(-)
-
-diff --git a/contrib/zip/CMakeLists.txt b/contrib/zip/CMakeLists.txt
-index 77916d2e14..f194649ede 100644
---- a/contrib/zip/CMakeLists.txt
-+++ b/contrib/zip/CMakeLists.txt
-@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.0)
- 
- project(zip
-   LANGUAGES C
--  VERSION "0.1.15")
-+  VERSION "0.1.18")
- set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
- 
- option(CMAKE_DISABLE_TESTING "Disable test creation" OFF)
-@@ -16,10 +16,6 @@ elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR
-         "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
-         "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang")
-   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra -Werror -pedantic")
--  if(ENABLE_COVERAGE)
--    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
--    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
--  endif()
- endif (MSVC)
- 
- # zip
-@@ -35,7 +31,7 @@ if (NOT CMAKE_DISABLE_TESTING)
-   enable_testing()
-   add_subdirectory(test)
-   find_package(Sanitizers)
--  add_sanitizers(${PROJECT_NAME} ${test_out} ${test_miniz_out})
-+  add_sanitizers(${PROJECT_NAME} ${test_out})
- endif()
- 
- ####
-diff --git a/contrib/zip/README.md b/contrib/zip/README.md
-index 14eb9a34c8..bdd0822b67 100644
---- a/contrib/zip/README.md
-+++ b/contrib/zip/README.md
-@@ -1,10 +1,8 @@
- ### A portable (OSX/Linux/Windows), simple zip library written in C
- This is done by hacking awesome [miniz](https://code.google.com/p/miniz) library and layering functions on top of the miniz v1.15 API.
- 
--[![Windows](https://ci.appveyor.com/api/projects/status/bph8dr3jacgmjv32/branch/master?svg=true&label=windows)](https://ci.appveyor.com/project/kuba--/zip)
--[![Linux](https://travis-ci.org/kuba--/zip.svg?branch=master&label=linux%2fosx)](https://travis-ci.org/kuba--/zip)
-+[![Build](https://github.com/kuba--/zip/workflows/build/badge.svg)](https://github.com/kuba--/zip/actions?query=workflow%3Abuild)
- [![Version](https://badge.fury.io/gh/kuba--%2Fzip.svg)](https://github.com/kuba--/zip/releases)
--[![Codecov](https://codecov.io/gh/kuba--/zip/branch/master/graph/badge.svg)](https://codecov.io/gh/kuba--/zip)
- 
- 
- # The Idea
-@@ -213,6 +211,53 @@ func main() {
- }
- ```
- 
-+### Rust (ffi)
-+```rust
-+extern crate libc;
-+use std::ffi::CString;
-+
-+#[repr(C)]
-+pub struct Zip {
-+    _private: [u8; 0],
-+}
-+
-+#[link(name = "zip")]
-+extern "C" {
-+    fn zip_open(path: *const libc::c_char, level: libc::c_int, mode: libc::c_char) -> *mut Zip;
-+    fn zip_close(zip: *mut Zip) -> libc::c_void;
-+
-+    fn zip_entry_open(zip: *mut Zip, entryname: *const libc::c_char) -> libc::c_int;
-+    fn zip_entry_close(zip: *mut Zip) -> libc::c_int;
-+    fn zip_entry_write(
-+        zip: *mut Zip,
-+        buf: *const libc::c_void,
-+        bufsize: libc::size_t,
-+    ) -> libc::c_int;
-+}
-+
-+fn main() {
-+    let path = CString::new("/tmp/test.zip").unwrap();
-+    let mode: libc::c_char = 'w' as libc::c_char;
-+
-+    let entryname = CString::new("test.txt").unwrap();
-+    let content = "test content\0";
-+
-+    unsafe {
-+        let zip: *mut Zip = zip_open(path.as_ptr(), 5, mode);
-+        {
-+            zip_entry_open(zip, entryname.as_ptr());
-+            {
-+                let buf = content.as_ptr() as *const libc::c_void;
-+                let bufsize = content.len() as libc::size_t;
-+                zip_entry_write(zip, buf, bufsize);
-+            }
-+            zip_entry_close(zip);
-+        }
-+        zip_close(zip);
-+    }
-+}
-+```
-+
- ### Ruby (ffi)
- Install _ffi_ gem.
- ```shell
-diff --git a/contrib/zip/src/zip.c b/contrib/zip/src/zip.c
-index 1abcfd8fd1..3b2821e6a3 100644
---- a/contrib/zip/src/zip.c
-+++ b/contrib/zip/src/zip.c
-@@ -222,6 +222,20 @@ void zip_close(struct zip_t *zip) {
-   }
- }
- 
-+int zip_is64(struct zip_t *zip) {
-+  if (!zip) {
-+    // zip_t handler is not initialized
-+    return -1;
-+  }
-+
-+  if (!zip->archive.m_pState) {
-+    // zip state is not initialized
-+    return -1;
-+  }
-+
-+  return (int)zip->archive.m_pState->m_zip64;
-+}
-+
- int zip_entry_open(struct zip_t *zip, const char *entryname) {
-   size_t entrylen = 0;
-   mz_zip_archive *pzip = NULL;
-@@ -794,7 +808,8 @@ int zip_create(const char *zipname, const char *filenames[], size_t len) {
- 
-     if (MZ_FILE_STAT(name, &file_stat) != 0) {
-       // problem getting information - check errno
--      return -1;
-+      status = -1;
-+      break;
-     }
- 
-     if ((file_stat.st_mode & 0200) == 0) {
-diff --git a/contrib/zip/src/zip.h b/contrib/zip/src/zip.h
-index a48d64d6de..cd3ab5cd00 100644
---- a/contrib/zip/src/zip.h
-+++ b/contrib/zip/src/zip.h
-@@ -21,7 +21,7 @@ extern "C" {
- 
- #if !defined(_SSIZE_T_DEFINED) && !defined(_SSIZE_T_DEFINED_) &&               \
-     !defined(__DEFINED_ssize_t) && !defined(__ssize_t_defined) &&              \
--    !defined(_SSIZE_T) && !defined(_SSIZE_T_)
-+    !defined(_SSIZE_T) && !defined(_SSIZE_T_) && !defined(_SSIZE_T_DECLARED)
- 
- // 64-bit Windows is the only mainstream platform
- // where sizeof(long) != sizeof(void*)
-@@ -37,6 +37,7 @@ typedef long ssize_t; /* byte count or error */
- #define __ssize_t_defined
- #define _SSIZE_T
- #define _SSIZE_T_
-+#define _SSIZE_T_DECLARED
- 
- #endif
- 
-@@ -90,6 +91,16 @@ extern struct zip_t *zip_open(const char *zipname, int level, char mode);
-  */
- extern void zip_close(struct zip_t *zip);
- 
-+/**
-+ * Determines if the archive has a zip64 end of central directory headers.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the return code - 1 (true), 0 (false), negative number (< 0) on
-+ *         error.
-+ */
-+extern int zip_is64(struct zip_t *zip);
-+
- /**
-  * Opens an entry by name in the zip archive.
-  *
-diff --git a/contrib/zip/test/CMakeLists.txt b/contrib/zip/test/CMakeLists.txt
-index cc060b00fe..1224115858 100644
---- a/contrib/zip/test/CMakeLists.txt
-+++ b/contrib/zip/test/CMakeLists.txt
-@@ -2,15 +2,10 @@ cmake_minimum_required(VERSION 2.8)
- 
- # test
- set(test_out test.out)
--set(test_miniz_out test_miniz.out)
- 
- add_executable(${test_out} test.c)
- target_link_libraries(${test_out} zip)
--add_executable(${test_miniz_out} test_miniz.c)
--target_link_libraries(${test_miniz_out} zip)
- 
- add_test(NAME ${test_out} COMMAND ${test_out})
--add_test(NAME ${test_miniz_out} COMMAND ${test_miniz_out})
- 
- set(test_out ${test_out} PARENT_SCOPE)
--set(test_miniz_out ${test_miniz_out} PARENT_SCOPE)
-diff --git a/contrib/zip/test/test.c b/contrib/zip/test/test.c
-index a9b2ddab1e..9cc2248ac0 100644
---- a/contrib/zip/test/test.c
-+++ b/contrib/zip/test/test.c
-@@ -47,7 +47,7 @@ static void test_write(void) {
-   assert(CRC32DATA1 == zip_entry_crc32(zip));
-   ++total_entries;
-   assert(0 == zip_entry_close(zip));
--
-+  assert(0 == zip_is64(zip));
-   zip_close(zip);
- }
- 
-@@ -92,6 +92,7 @@ static void test_read(void) {
-   size_t buftmp;
-   struct zip_t *zip = zip_open(ZIPNAME, 0, 'r');
-   assert(zip != NULL);
-+  assert(0 == zip_is64(zip));
- 
-   assert(0 == zip_entry_open(zip, "test\\test-1.txt"));
-   assert(strlen(TESTDATA1) == zip_entry_size(zip));
-@@ -310,6 +311,7 @@ static void test_fwrite(void) {
-   assert(0 == zip_entry_open(zip, WFILE));
-   assert(0 == zip_entry_fwrite(zip, WFILE));
-   assert(0 == zip_entry_close(zip));
-+  assert(0 == zip_is64(zip));
- 
-   zip_close(zip);
-   remove(WFILE);

+ 2 - 2
package/assimp/assimp.hash

@@ -1,3 +1,3 @@
 # Locally calculated
 # Locally calculated
-sha256  11310ec1f2ad2cd46b95ba88faca8f7aaa1efe9aa12605c55e3de2b977b3dbfc  assimp-5.0.1.tar.gz
-sha256  a26ccc3dbf2f58ea99c100945a8a126fa0f9f4d7fd2b49aa8bdb8e09355864d8  LICENSE
+sha256  b96f609bca45cc4747bf8ea4b696816ada484aed2812e60ea4d16aae18360b0b  assimp-5.1.0.tar.gz
+sha256  147874443d242b4e2bae97036e26ec9d6b37f706174c1bd5ecfcc8c1294cef51  LICENSE

+ 1 - 1
package/assimp/assimp.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-ASSIMP_VERSION = 5.0.1
+ASSIMP_VERSION = 5.1.0
 ASSIMP_SITE = $(call github,assimp,assimp,v$(ASSIMP_VERSION))
 ASSIMP_SITE = $(call github,assimp,assimp,v$(ASSIMP_VERSION))
 ASSIMP_LICENSE = BSD-3-Clause
 ASSIMP_LICENSE = BSD-3-Clause
 ASSIMP_LICENSE_FILES = LICENSE
 ASSIMP_LICENSE_FILES = LICENSE

+ 0 - 43
package/azmq/0001-Conditionally-disable-test-and-doc-builds.patch

@@ -1,43 +0,0 @@
-From d960f93fb52e373f76cfedbee5f4fb0c5276856a Mon Sep 17 00:00:00 2001
-From: RJ Ascani <rj.ascani@gmail.com>
-Date: Thu, 20 Jul 2017 15:53:40 -0700
-Subject: [PATCH] Conditionally disable test and doc builds
-
-Signed-off-by: RJ Ascani <rj.ascani@gmail.com>
----
- CMakeLists.txt | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 5b5b9cc..97006a4 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -49,7 +49,9 @@ include_directories(${Boost_INCLUDE_DIRS}
-                     ${ZeroMQ_INCLUDE_DIRS}
-                     ${PROJECT_SOURCE_DIR})
-
--enable_testing()
-+if (BUILD_TESTING)
-+    enable_testing()
-+endif()
-
- macro(add_catch_test name)
-     if (TEST_REPORT_FORMAT)
-@@ -59,8 +61,12 @@ macro(add_catch_test name)
-     endif()
- endmacro()
-
--add_subdirectory(test)
--add_subdirectory(doc)
-+if (BUILD_TESTING)
-+    add_subdirectory(test)
-+endif()
-+if (BUILD_DOC)
-+    add_subdirectory(doc)
-+endif()
-
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/azmq
-         DESTINATION include)
---
-2.13.3
-

+ 3 - 5
package/azmq/Config.in

@@ -2,7 +2,7 @@ config BR2_PACKAGE_AZMQ
 	bool "azmq"
 	bool "azmq"
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_ATOMIC
 	depends on BR2_TOOLCHAIN_HAS_ATOMIC
-	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # boost-log
+	depends on BR2_TOOLCHAIN_HAS_THREADS # boost, zeromq
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
 	depends on BR2_USE_WCHAR # boost
 	depends on BR2_USE_WCHAR # boost
 	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
 	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
@@ -11,9 +11,7 @@ config BR2_PACKAGE_AZMQ
 	select BR2_PACKAGE_BOOST
 	select BR2_PACKAGE_BOOST
 	select BR2_PACKAGE_BOOST_CHRONO
 	select BR2_PACKAGE_BOOST_CHRONO
 	select BR2_PACKAGE_BOOST_DATE_TIME
 	select BR2_PACKAGE_BOOST_DATE_TIME
-	select BR2_PACKAGE_BOOST_LOG
 	select BR2_PACKAGE_BOOST_RANDOM
 	select BR2_PACKAGE_BOOST_RANDOM
-	select BR2_PACKAGE_BOOST_REGEX
 	select BR2_PACKAGE_BOOST_SYSTEM
 	select BR2_PACKAGE_BOOST_SYSTEM
 	select BR2_PACKAGE_BOOST_THREAD
 	select BR2_PACKAGE_BOOST_THREAD
 	help
 	help
@@ -21,10 +19,10 @@ config BR2_PACKAGE_AZMQ
 
 
 	  https://github.com/zeromq/azmq
 	  https://github.com/zeromq/azmq
 
 
-comment "azmq needs a toolchain w/ C++11, wchar and NPTL"
+comment "azmq needs a toolchain w/ C++11, wchar and threads"
 	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
 	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
 	depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \
 	depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \
-		&& BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS_NPTL)
+		&& BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS)
 
 
 comment "azmq needs exception_ptr"
 comment "azmq needs exception_ptr"
 	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
 	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735

+ 2 - 3
package/azmq/azmq.hash

@@ -1,4 +1,3 @@
 # Locally calculated
 # Locally calculated
-# https://github.com/zeromq/azmq/archive/v1.0.2.tar.gz
-sha256 25fa8b07756cffae95e25a55c7ea42efe02e8cd797552201aa771dd69cfc8fbf  azmq-1.0.2.tar.gz
-sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  LICENSE-BOOST_1_0
+sha256  80cfb951c5614b8c2e55a59ea2e5723a18ebed08da80e5420e525d6bf273771a  azmq-1.0.3.tar.gz
+sha256  c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  LICENSE-BOOST_1_0

+ 3 - 1
package/azmq/azmq.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-AZMQ_VERSION = 1.0.2
+AZMQ_VERSION = 1.0.3
 AZMQ_SITE = $(call github,zeromq,azmq,v$(AZMQ_VERSION))
 AZMQ_SITE = $(call github,zeromq,azmq,v$(AZMQ_VERSION))
 AZMQ_DEPENDENCIES = boost zeromq
 AZMQ_DEPENDENCIES = boost zeromq
 AZMQ_LICENSE = BSL-1.0
 AZMQ_LICENSE = BSL-1.0
@@ -15,4 +15,6 @@ AZMQ_LICENSE_FILES = LICENSE-BOOST_1_0
 AZMQ_INSTALL_STAGING = YES
 AZMQ_INSTALL_STAGING = YES
 AZMQ_INSTALL_TARGET = NO
 AZMQ_INSTALL_TARGET = NO
 
 
+AZMQ_CONF_OPTS = -DAZMQ_NO_TESTS=ON
+
 $(eval $(cmake-package))
 $(eval $(cmake-package))

+ 0 - 33
package/bdwgc/0001-Fix-undefined-reference-to-__data_start-linker-error.patch

@@ -1,33 +0,0 @@
-From 301ef15aefa6764466c374d07efb511b1c3862cc Mon Sep 17 00:00:00 2001
-From: Nikita Ermakov <coffe92@gmail.com>
-Date: Wed, 20 May 2020 17:57:17 +0300
-Subject: [PATCH] Fix 'undefined reference to __data_start' linker error on
- RISC-V
-
-Issue #294 (bdwgc).
-
-* include/private/gcconfig.h [RISCV && LINUX] (__data_start): Add
-attribute(weak).
-
-(cherry picked from commit 538562ad01b181f4cc3913da1ac06a77945cd9b9)
-Signed-off-by: Romain Naour <romain.naour@gmail.com>
----
- include/private/gcconfig.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/private/gcconfig.h b/include/private/gcconfig.h
-index d9d45da1..d6cefa6f 100644
---- a/include/private/gcconfig.h
-+++ b/include/private/gcconfig.h
-@@ -2943,7 +2943,7 @@ EXTERN_C_BEGIN
- #   define ALIGNMENT (CPP_WORDSZ/8)
- #   ifdef LINUX
- #     define OS_TYPE "LINUX"
--      extern int __data_start[];
-+      extern int __data_start[] __attribute__((__weak__));
- #     define DATASTART ((ptr_t)__data_start)
- #     define LINUX_STACKBOTTOM
- #     define DYNAMIC_LOADING
--- 
-2.30.2
-

+ 1 - 1
package/bdwgc/Config.in

@@ -7,4 +7,4 @@ config BR2_PACKAGE_BDWGC
 	  be used as a garbage collecting replacement for C 'malloc'
 	  be used as a garbage collecting replacement for C 'malloc'
 	  or C++ 'new'.
 	  or C++ 'new'.
 
 
-	  http://www.hboehm.info/gc/
+	  https://www.hboehm.info/gc/

+ 2 - 2
package/bdwgc/bdwgc.hash

@@ -1,3 +1,3 @@
 # Locally computed
 # Locally computed
-sha256 436a0ddc67b1ac0b0405b61a9675bca9e075c8156f4debd1d06f3a56c7cd289d  gc-8.0.4.tar.gz
-sha256 aeeaabbf44e67d413e18719f0c6ac9c23387ab0b33e7a15ee46cf59ddef12cc7  README.QUICK
+sha256 3b4914abc9fa76593596773e4da671d7ed4d5390e3d46fbf2e5f155e121bea11  gc-8.0.6.tar.gz
+sha256 0aab7a56a92ed878c4a5464cf282d65f38bcdee64fe9cf213e26254bddb3f340  README.QUICK

+ 2 - 2
package/bdwgc/bdwgc.mk

@@ -4,9 +4,9 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-BDWGC_VERSION = 8.0.4
+BDWGC_VERSION = 8.0.6
 BDWGC_SOURCE = gc-$(BDWGC_VERSION).tar.gz
 BDWGC_SOURCE = gc-$(BDWGC_VERSION).tar.gz
-BDWGC_SITE = http://www.hboehm.info/gc/gc_source
+BDWGC_SITE = https://github.com/ivmai/bdwgc/releases/download/v$(BDWGC_VERSION)
 BDWGC_INSTALL_STAGING = YES
 BDWGC_INSTALL_STAGING = YES
 BDWGC_LICENSE = bdwgc license
 BDWGC_LICENSE = bdwgc license
 BDWGC_LICENSE_FILES = README.QUICK
 BDWGC_LICENSE_FILES = README.QUICK

+ 7 - 1
package/bind/bind.mk

@@ -35,7 +35,6 @@ BIND_CONF_OPTS = \
 	--with-libjson=no \
 	--with-libjson=no \
 	--with-randomdev=/dev/urandom \
 	--with-randomdev=/dev/urandom \
 	--enable-epoll \
 	--enable-epoll \
-	--with-gssapi=no \
 	--enable-filter-aaaa \
 	--enable-filter-aaaa \
 	--disable-backtrace
 	--disable-backtrace
 
 
@@ -53,6 +52,13 @@ else
 BIND_CONF_OPTS += --disable-linux-caps
 BIND_CONF_OPTS += --disable-linux-caps
 endif
 endif
 
 
+ifeq ($(BR2_PACKAGE_LIBKRB5),y)
+BIND_CONF_OPTS += --with-gssapi=$(STAGING_DIR)/usr/bin/krb5-config
+BIND_DEPENDENCIES += libkrb5
+else
+BIND_CONF_OPTS += --with-gssapi=no
+endif
+
 ifeq ($(BR2_PACKAGE_LIBXML2),y)
 ifeq ($(BR2_PACKAGE_LIBXML2),y)
 BIND_CONF_OPTS += --with-libxml2=$(STAGING_DIR)/usr
 BIND_CONF_OPTS += --with-libxml2=$(STAGING_DIR)/usr
 BIND_DEPENDENCIES += libxml2
 BIND_DEPENDENCIES += libxml2

+ 1 - 1
package/bitwise/bitwise.hash

@@ -1,3 +1,3 @@
 # Locally calculated
 # Locally calculated
-sha256  d3d43cef47bf8f49e85f7ed381c3eaf1df921ca51805e0962f1a97a517e1d1d2  bitwise-v0.42.tar.gz
+sha256  f524f794188a10defc4df673d8cf0b3739f93e58e93aff0cdb8a99fbdcca2ffb  bitwise-v0.43.tar.gz
 sha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  COPYING
 sha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  COPYING

+ 1 - 1
package/bitwise/bitwise.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-BITWISE_VERSION = 0.42
+BITWISE_VERSION = 0.43
 BITWISE_SITE = https://github.com/mellowcandle/bitwise/releases/download/v$(BITWISE_VERSION)
 BITWISE_SITE = https://github.com/mellowcandle/bitwise/releases/download/v$(BITWISE_VERSION)
 BITWISE_SOURCE = bitwise-v$(BITWISE_VERSION).tar.gz
 BITWISE_SOURCE = bitwise-v$(BITWISE_VERSION).tar.gz
 BITWISE_DEPENDENCIES = ncurses readline
 BITWISE_DEPENDENCIES = ncurses readline

+ 1 - 1
package/cwiid/Config.in

@@ -18,7 +18,7 @@ if BR2_PACKAGE_CWIID
 config BR2_PACKAGE_CWIID_WMGUI
 config BR2_PACKAGE_CWIID_WMGUI
 	bool "wmgui"
 	bool "wmgui"
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz
-	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libgtk2 -> pango -> harfbuzz
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libgtk2 -> pango -> harfbuzz
 	depends on BR2_PACKAGE_XORG7 # libgtk2
 	depends on BR2_PACKAGE_XORG7 # libgtk2
 	depends on BR2_USE_WCHAR # libgtk2 -> libglib2
 	depends on BR2_USE_WCHAR # libgtk2 -> libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libgtk2 -> libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libgtk2 -> libglib2

+ 1 - 1
package/dehydrated/Config.in

@@ -30,4 +30,4 @@ config BR2_PACKAGE_DEHYDRATED
 	  You probably need to install a custom /etc/dehydrated/config
 	  You probably need to install a custom /etc/dehydrated/config
 	  with the rootfs overlay.
 	  with the rootfs overlay.
 
 
-	  https://github.com/lukas2511/dehydrated
+	  https://github.com/dehydrated-io/dehydrated

+ 2 - 2
package/dehydrated/dehydrated.hash

@@ -1,6 +1,6 @@
 # Locally computed after verifying
 # Locally computed after verifying
-# https://github.com/lukas2511/dehydrated/releases/download/v0.6.5/dehydrated-0.6.5.tar.gz.asc
+# https://github.com/dehydrated-io/dehydrated/releases/download/v0.7.0/dehydrated-0.7.0.tar.gz.asc
 # with key 3C2F2605E078A1E18F4793909C4DBE6CF438F333 from https://keybase.io/lukas2511
 # with key 3C2F2605E078A1E18F4793909C4DBE6CF438F333 from https://keybase.io/lukas2511
-sha256  10aabd0027450bc70a18e49acaca7a9697e0cfb92368d3e508b7a4d6d69bfa35 dehydrated-0.6.5.tar.gz
+sha256  1c5f12c2e57e64b1762803f82f0f7e767a72e65a6ce68e4d1ec197e61b9dc4f9  dehydrated-0.7.0.tar.gz
 # License, locally computed
 # License, locally computed
 sha256  b4583b7dd07e3e2a08906de38e7e329d41f921ed9dcb6310b3886e013a6b8723  LICENSE
 sha256  b4583b7dd07e3e2a08906de38e7e329d41f921ed9dcb6310b3886e013a6b8723  LICENSE

+ 2 - 2
package/dehydrated/dehydrated.mk

@@ -4,8 +4,8 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-DEHYDRATED_VERSION = 0.6.5
-DEHYDRATED_SITE = https://github.com/lukas2511/dehydrated/releases/download/v$(DEHYDRATED_VERSION)
+DEHYDRATED_VERSION = 0.7.0
+DEHYDRATED_SITE = https://github.com/dehydrated-io/dehydrated/releases/download/v$(DEHYDRATED_VERSION)
 
 
 DEHYDRATED_LICENSE = MIT
 DEHYDRATED_LICENSE = MIT
 DEHYDRATED_LICENSE_FILES = LICENSE
 DEHYDRATED_LICENSE_FILES = LICENSE

+ 10 - 8
package/dmalloc/0001-mips.patch

@@ -1,14 +1,16 @@
+[Fabrice: Updated for 5.6.5]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
 --- a/configure
 --- a/configure
 +++ b/configure
 +++ b/configure
 @@ -7107,7 +7107,7 @@
 @@ -7107,7 +7107,7 @@
- echo $ECHO_N "checking return.h macros work... $ECHO_C" >&6
- if test "$cross_compiling" = yes; then
-    cat >>confdefs.h <<\_ACEOF
--#define RETURN_MACROS_WORK 0
-+#define RETURN_MACROS_WORK 1
- _ACEOF
-  echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking return.h macros work" >&5
+ $as_echo_n "checking return.h macros work... " >&6; }
+ if test "$cross_compiling" = yes; then :
+-   $as_echo "#define RETURN_MACROS_WORK 0" >>confdefs.h
++   $as_echo "#define RETURN_MACROS_WORK 1" >>confdefs.h
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ 
 --- a/return.h
 --- a/return.h
 +++ b/return.h
 +++ b/return.h
 @@ -106,26 +106,16 @@
 @@ -106,26 +106,16 @@

+ 0 - 18
package/dmalloc/0002-fix-parallel-build.patch

@@ -1,18 +0,0 @@
-Fix parallel build issue
-
-Missing dmallocc.o <- dmalloc.h dependency may break parallel builds.
-dmalloc.h is generated,and may not be around by the time gcc starts
-parsing dmallocc.cc.
-
-Signed-off-by: Alex Suykov <alex.suykov@gmail.com>
-
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -401,6 +401,7 @@
- compat.o: compat.c conf.h settings.h dmalloc.h compat.h dmalloc_loc.h
- dmalloc.o: dmalloc.c conf.h settings.h dmalloc_argv.h dmalloc.h compat.h \
-   debug_tok.h dmalloc_loc.h env.h error_val.h version.h
-+dmallocc.o: dmallocc.cc dmalloc.h return.h conf.h settings.h
- dmalloc_argv.o: dmalloc_argv.c conf.h settings.h dmalloc_argv.h \
-   dmalloc_argv_loc.h compat.h
- dmalloc_fc_t.o: dmalloc_fc_t.c conf.h settings.h dmalloc.h dmalloc_argv.h \

+ 0 - 46
package/dmalloc/0003-fix-shlibs.patch

@@ -1,46 +0,0 @@
-Fix shared library rules
-
-dmalloc uses ld -shared --whole-archive -o lib.so lib.a,
-but for some reason lists regular objects in addition
-to the archive, ending up with two copies of each symbol.
-
-Signed-off-by: Alex Suykov <alex.suykov@gmail.com>
-
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -257,7 +257,7 @@ shlib : $(BUILD_SL)
- # via: http://256.com/gray/email.html
- $(LIB_SL) : $(LIBRARY)
- 	rm -f $@ $@.t
--	@shlinkargs@ $(LIBRARY) $(OBJS) $(NORMAL_OBJS)
-+	@shlinkargs@ $(LIBRARY)
- 	mv $@.t $@
- 
- $(LIBRARY) : $(OBJS) $(NORMAL_OBJS)
-@@ -270,7 +270,7 @@ $(LIB_TH) : $(OBJS) $(THREAD_OBJS)
- 
- $(LIB_TH_SL) : $(LIB_TH)
- 	rm -f $@ $@.t
--	@shlinkargs@ $(LIB_TH) $(OBJS) $(THREAD_OBJS)
-+	@shlinkargs@ $(LIB_TH)
- 	mv $@.t $@
- 
- $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
-@@ -279,7 +279,7 @@ $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
- 
- $(LIB_CXX_SL) : $(LIB_CXX)
- 	rm -f $@ $@.t
--	@shlinkargs@ $(LIB_CXX) $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
-+	@shlinkargs@ $(LIB_CXX)
- 	mv $@.t $@
- 
- $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
-@@ -288,7 +288,7 @@ $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
- 
- $(LIB_TH_CXX_SL) : $(LIB_TH_CXX)
- 	rm -f $@ $@.t
--	@shlinkargs@ $(LIB_TH_CXX) $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
-+	@shlinkargs@ $(LIB_TH_CXX)
- 	mv $@.t $@
- 
- threadssl : $(LIB_TH_SL)

+ 0 - 24
package/dmalloc/0004-fix-strdup.patch

@@ -1,24 +0,0 @@
-From 59d73a473f1c1a31bcba90d314f956d0bcc3de95 Mon Sep 17 00:00:00 2001
-From: Siana Gearz <siana.sg@live.de>
-Date: Sat, 8 Sep 2012 22:55:17 +0200
-Subject: [PATCH] Fix strdup
-
-[Retrieved from:
-https://github.com/siana/dmalloc/commit/59d73a473f1c1a31bcba90d314f956d0bcc3de95]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- dmalloc.h.3 | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/dmalloc.h.3 b/dmalloc.h.3
-index d3d1c13..3fc573a 100644
---- a/dmalloc.h.3
-+++ b/dmalloc.h.3
-@@ -459,6 +459,7 @@ DMALLOC_PNT	valloc(DMALLOC_SIZE size);
-  *
-  * string -> String we are duplicating.
-  */
-+#undef strdup
- extern
- char	*strdup(const char *string);
- #endif /* ifndef DMALLOC_STRDUP_MACRO */

+ 0 - 24
package/dmalloc/0005-fix-strndup.patch

@@ -1,24 +0,0 @@
-From 005d92c2cebbde5c8623daa29725f7a62b18df7c Mon Sep 17 00:00:00 2001
-From: Siana Gearz <siana.sg@live.de>
-Date: Sat, 8 Sep 2012 22:44:35 +0200
-Subject: [PATCH] Fix strndup
-
-[Retrieved from:
-https://github.com/siana/dmalloc/commit/005d92c2cebbde5c8623daa29725f7a62b18df7c]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- dmalloc.h.3 | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/dmalloc.h.3 b/dmalloc.h.3
-index 8bda997..fb538a8 100644
---- a/dmalloc.h.3
-+++ b/dmalloc.h.3
-@@ -429,6 +429,7 @@ char	*strdup(const char *string);
-  *
-  * len -> Length of the string to duplicate.
-  */
-+#undef strndup
- extern
- char	*strndup(const char *string, const DMALLOC_SIZE len);
- 

+ 2 - 2
package/dmalloc/dmalloc.hash

@@ -1,3 +1,3 @@
 # Locally computed:
 # Locally computed:
-sha256  d3be5c6eec24950cb3bd67dbfbcdf036f1278fae5fd78655ef8cdf9e911e428a  dmalloc-5.5.2.tgz
-sha256  8659d49ceeeb006288ad246164e504ccfe33f7a4c1680439fb6ff6a393b0722b  dmalloc.h.1
+sha256  480e3414ab6cedca837721c756b7d64b01a84d2d0e837378d98444e2f63a7c01  dmalloc-5.6.5.tgz
+sha256  8657f6bc5ebb765dd792b2c3c54d5dc37b8b4e6bbe8aa48d464fd92081b1e720  LICENSE.txt

+ 3 - 4
package/dmalloc/dmalloc.mk

@@ -4,13 +4,12 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-DMALLOC_VERSION = 5.5.2
+DMALLOC_VERSION = 5.6.5
 DMALLOC_SOURCE = dmalloc-$(DMALLOC_VERSION).tgz
 DMALLOC_SOURCE = dmalloc-$(DMALLOC_VERSION).tgz
 DMALLOC_SITE = http://dmalloc.com/releases
 DMALLOC_SITE = http://dmalloc.com/releases
 
 
-DMALLOC_LICENSE = MIT-like
-# license is in each file, dmalloc.h.1 is the smallest one
-DMALLOC_LICENSE_FILES = dmalloc.h.1
+DMALLOC_LICENSE = ISC
+DMALLOC_LICENSE_FILES = LICENSE.txt
 
 
 DMALLOC_INSTALL_STAGING = YES
 DMALLOC_INSTALL_STAGING = YES
 DMALLOC_CFLAGS = $(TARGET_CFLAGS)
 DMALLOC_CFLAGS = $(TARGET_CFLAGS)

+ 1 - 1
package/dovecot-pigeonhole/dovecot-pigeonhole.hash

@@ -1,3 +1,3 @@
 # Locally computed after checking signature
 # Locally computed after checking signature
-sha256  5ca36780e23b99e6206440f1b3fe3c6598eda5b699b99cebb15d418ba3c6e938  dovecot-2.3-pigeonhole-0.5.16.tar.gz
+sha256  031e823966c53121e289b3ecdcfa4bc35ed9d22ecbf5d93a8eb140384e78d648  dovecot-2.3-pigeonhole-0.5.17.tar.gz
 sha256  fc9e9522216f2a9a28b31300e3c73c1df56acc27dfae951bf516e7995366b51a  COPYING
 sha256  fc9e9522216f2a9a28b31300e3c73c1df56acc27dfae951bf516e7995366b51a  COPYING

+ 1 - 1
package/dovecot-pigeonhole/dovecot-pigeonhole.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-DOVECOT_PIGEONHOLE_VERSION = 0.5.16
+DOVECOT_PIGEONHOLE_VERSION = 0.5.17
 DOVECOT_PIGEONHOLE_SOURCE = dovecot-2.3-pigeonhole-$(DOVECOT_PIGEONHOLE_VERSION).tar.gz
 DOVECOT_PIGEONHOLE_SOURCE = dovecot-2.3-pigeonhole-$(DOVECOT_PIGEONHOLE_VERSION).tar.gz
 DOVECOT_PIGEONHOLE_SITE = https://pigeonhole.dovecot.org/releases/2.3
 DOVECOT_PIGEONHOLE_SITE = https://pigeonhole.dovecot.org/releases/2.3
 DOVECOT_PIGEONHOLE_LICENSE = LGPL-2.1
 DOVECOT_PIGEONHOLE_LICENSE = LGPL-2.1

+ 1 - 1
package/dovecot/dovecot.hash

@@ -1,5 +1,5 @@
 # Locally computed after checking signature
 # Locally computed after checking signature
-sha256  03a71d53055bd9ec528d55e07afaf15c09dec9856cba734904bfd05acbc6cf12  dovecot-2.3.16.tar.gz
+sha256  224412cd77a23a3ffb857da294da200883d956082cff7257942eff2789bd2df9  dovecot-2.3.17.tar.gz
 sha256  319a9830aab406109cd67cb45496587566a8123203d66d037b209ca3e13de02a  COPYING
 sha256  319a9830aab406109cd67cb45496587566a8123203d66d037b209ca3e13de02a  COPYING
 sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LGPL
 sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LGPL
 sha256  52b8c95fabb19575281874b661ef7968ea47e8f5d74ba0dd40ce512e52b3fc97  COPYING.MIT
 sha256  52b8c95fabb19575281874b661ef7968ea47e8f5d74ba0dd40ce512e52b3fc97  COPYING.MIT

+ 1 - 1
package/dovecot/dovecot.mk

@@ -5,7 +5,7 @@
 ################################################################################
 ################################################################################
 
 
 DOVECOT_VERSION_MAJOR = 2.3
 DOVECOT_VERSION_MAJOR = 2.3
-DOVECOT_VERSION = $(DOVECOT_VERSION_MAJOR).16
+DOVECOT_VERSION = $(DOVECOT_VERSION_MAJOR).17
 DOVECOT_SITE = https://dovecot.org/releases/$(DOVECOT_VERSION_MAJOR)
 DOVECOT_SITE = https://dovecot.org/releases/$(DOVECOT_VERSION_MAJOR)
 DOVECOT_INSTALL_STAGING = YES
 DOVECOT_INSTALL_STAGING = YES
 DOVECOT_LICENSE = LGPL-2.1, MIT, Public Domain, BSD-3-Clause, Unicode-DFS-2015
 DOVECOT_LICENSE = LGPL-2.1, MIT, Public Domain, BSD-3-Clause, Unicode-DFS-2015

+ 0 - 57
package/easyframes/0001-CMakesLists.txt-fix-static-build-with-pcap.patch

@@ -1,57 +0,0 @@
-From 89ad9c143825b13d028c2f1713d55e83135d5c0f Mon Sep 17 00:00:00 2001
-From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Date: Sat, 5 Sep 2020 15:38:33 +0200
-Subject: [PATCH] CMakesLists.txt: fix static build with pcap
-
-Use pkg-config to find the dependencies of pcap such as libnl otherwise
-a static-only build will fail on:
-
-[100%] Linking C executable ef
-/srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /srv/storage/autobuild/run/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libpcap.a(pcap-linux.o): in function `nl80211_init':
-pcap-linux.c:(.text+0x460): undefined reference to `nl_socket_alloc'
-/srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: pcap-linux.c:(.text+0x498): undefined reference to `genl_connect'
-
-Fixes:
- - http://autobuild.buildroot.org/results/99062bfc8c21c32bc835acae675aede7c9cf0c90
-
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-[Upstream status: https://github.com/microchip-ung/easyframes/pull/2]
----
- CMakeLists.txt | 20 ++++++++++++++------
- 1 file changed, 14 insertions(+), 6 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index a62a950..5be128c 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -7,13 +7,21 @@ include_directories(src)
- 
- 
- set(_LIBPCAP "")
--FIND_PATH(PCAP_INCLUDE_DIR NAMES pcap/pcap.h)
--FIND_LIBRARY(PCAP_LIBRARY NAMES pcap)
--
--if (PCAP_LIBRARY)
-+find_package(PkgConfig)
-+pkg_check_modules(PCAP libpcap)
-+if (PCAP_FOUND)
-     add_definitions(-DHAS_LIBPCAP)
--    include_directories(${PCAP_INCLUDE_DIR})
--    set(_LIBPCAP ${PCAP_LIBRARY})
-+    include_directories(${PCAP_INCLUDE_DIRS})
-+    set(_LIBPCAP ${PCAP_LIBRARIES})
-+else()
-+    FIND_PATH(PCAP_INCLUDE_DIR NAMES pcap/pcap.h)
-+    FIND_LIBRARY(PCAP_LIBRARY NAMES pcap)
-+
-+    if (PCAP_LIBRARY)
-+        add_definitions(-DHAS_LIBPCAP)
-+        include_directories(${PCAP_INCLUDE_DIR})
-+        set(_LIBPCAP ${PCAP_LIBRARY})
-+    endif()
- endif()
- 
- add_library(libef STATIC
--- 
-2.28.0
-

+ 0 - 91
package/easyframes/0002-Fix-different-compiling-issues.patch

@@ -1,91 +0,0 @@
-From d3d179c3c39ec10ec636b325325ad8e18ae9542f Mon Sep 17 00:00:00 2001
-From: Horatiu Vultur <horatiu.vultur@microchip.com>
-Date: Tue, 1 Sep 2020 13:03:47 +0200
-Subject: [PATCH] Fix different compiling issues
-
-[Retrieved from:
-https://github.com/microchip-ung/easyframes/commit/d3d179c3c39ec10ec636b325325ad8e18ae9542f]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- src/ef-exec.c        | 4 ++--
- src/ef-parse-bytes.c | 8 ++++++--
- src/ef.h             | 4 ++--
- 3 files changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/src/ef-exec.c b/src/ef-exec.c
-index 3d184a0..824164e 100644
---- a/src/ef-exec.c
-+++ b/src/ef-exec.c
-@@ -108,7 +108,7 @@ int ring_wait_for_init(tpacket_ring *ring) {
- 
- 
- int raw_socket(cmd_socket_t *cmd_socket) {
--    int s, res, val, ifidx;
-+    int s, res, val, ifidx, i;
-     struct sockaddr_ll sa = {};
-     struct packet_mreq mr = {};
- 
-@@ -194,7 +194,7 @@ int raw_socket(cmd_socket_t *cmd_socket) {
-     //
-     // TODO: This does not seem to be needed, if we uses a RX ring buffer
-     // instead (atleast that seems to work for libpcap)
--    for (int i = 0; i < 10000; ++i) {
-+    for (i = 0; i < 10000; ++i) {
-         struct msghdr msg = { 0 };
-         int res = recvmsg(s, &msg, MSG_DONTWAIT);
-         if (res < 0)
-diff --git a/src/ef-parse-bytes.c b/src/ef-parse-bytes.c
-index 1dd590f..1785f45 100644
---- a/src/ef-parse-bytes.c
-+++ b/src/ef-parse-bytes.c
-@@ -2,6 +2,7 @@
- #include <errno.h>
- #include <stdio.h>
- #include <stdlib.h>
-+#include <endian.h>
- #include <arpa/inet.h>
- 
- struct start_with {
-@@ -212,7 +213,9 @@ buf_t *parse_bytes(const char *s, int bytes) {
-     for (s = data_begin; *s; ++s) {
-         int match_found = 0;
-         for (i = 0; i < sizeof(has_chars)/sizeof(has_chars[0]); ++i) {
--            for (const char *set_i = has_chars[i].char_set; *set_i; ++set_i) {
-+            const char *set_i;
-+
-+            for (set_i = has_chars[i].char_set; *set_i; ++set_i) {
-                 if (*s == *set_i) {
-                     has_mask |= has_chars[i].mask;
-                     match_found = 1;
-@@ -313,6 +316,7 @@ buf_t *parse_bytes(const char *s, int bytes) {
-                ((has_mask & ~(HAS_HEX_COL)) == 0) && (has_mask & HAS_COLON)) {
-         // This will be treated as a mac-address
-         uint8_t m[6] = {};
-+        const char *x;
- 
-         // We want to be able to write something like this (like we RFC2373
-         // specifies for IPv6):
-@@ -334,7 +338,7 @@ buf_t *parse_bytes(const char *s, int bytes) {
- 
-         //po("line: %d data_begin: %s\n", __LINE__, data_begin);
- 
--        for (const char *x = data_begin; *x; ++x) {
-+        for (x = data_begin; *x; ++x) {
-             int colon = 0;
-             int val = 0;
- 
-diff --git a/src/ef.h b/src/ef.h
-index 8926c25..f4c1629 100644
---- a/src/ef.h
-+++ b/src/ef.h
-@@ -59,8 +59,8 @@ void bl_check(buf_list_t *b);
- void bl_reset(buf_list_t *b);
- void bset_value(buf_t *b, uint8_t v);
- 
--inline void bl_init(buf_list_t *b) { bl_reset(b); }
--inline void bl_destroy(buf_list_t *b) { bl_reset(b); }
-+static inline void bl_init(buf_list_t *b) { bl_reset(b); }
-+static inline void bl_destroy(buf_list_t *b) { bl_reset(b); }
- 
- int bl_printf_append(buf_list_t *b, const char *format, ...)
-     __attribute__ ((format (printf, 2, 3)));

+ 2 - 2
package/easyframes/easyframes.hash

@@ -1,3 +1,3 @@
 # locally calculated
 # locally calculated
-sha256 3c0449b3129c29b5ecf67b689f1a75ffc65fde3c5f62811e2f0439ce4f4af392 easyframes-0.3.tar.gz
-sha256 24f37598e822a1411fb7164ce7eb3ef120aea8279016399abc282c2381ce3f57 COPYING
+sha256  0b8f4af8c41b0b1de2529d500aef6b9be7609f25b28e6a863129578a66806e5d  easyframes-0.4.tar.gz
+sha256  24f37598e822a1411fb7164ce7eb3ef120aea8279016399abc282c2381ce3f57  COPYING

+ 1 - 1
package/easyframes/easyframes.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-EASYFRAMES_VERSION = 0.3
+EASYFRAMES_VERSION = 0.4
 EASYFRAMES_SITE = $(call github,microchip-ung,easyframes,v$(EASYFRAMES_VERSION))
 EASYFRAMES_SITE = $(call github,microchip-ung,easyframes,v$(EASYFRAMES_VERSION))
 EASYFRAMES_DEPENDENCIES = host-pkgconf libpcap
 EASYFRAMES_DEPENDENCIES = host-pkgconf libpcap
 EASYFRAMES_LICENSE = MIT
 EASYFRAMES_LICENSE = MIT

+ 1 - 1
package/ell/ell.hash

@@ -1,5 +1,5 @@
 # From https://mirrors.edge.kernel.org/pub/linux/libs/ell/sha256sums.asc
 # From https://mirrors.edge.kernel.org/pub/linux/libs/ell/sha256sums.asc
-sha256  41a6f8fa4d285b52cb7a5a87bda3e7370ecaac02d94aaa7ec1a23f0480b8bc3f  ell-0.44.tar.xz
+sha256  f4fc647eff32f622e21f8851ed0c8b7270f4800149c91be601754e22d82cbb4d  ell-0.46.tar.xz
 
 
 # License files
 # License files
 sha256  ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5  COPYING
 sha256  ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5  COPYING

+ 1 - 1
package/ell/ell.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-ELL_VERSION = 0.44
+ELL_VERSION = 0.46
 ELL_SOURCE = ell-$(ELL_VERSION).tar.xz
 ELL_SOURCE = ell-$(ELL_VERSION).tar.xz
 ELL_SITE = $(BR2_KERNEL_MIRROR)/linux/libs/ell
 ELL_SITE = $(BR2_KERNEL_MIRROR)/linux/libs/ell
 ELL_LICENSE = LGPL-2.1+
 ELL_LICENSE = LGPL-2.1+

+ 3 - 3
package/enlightenment/Config.in

@@ -14,7 +14,7 @@ config BR2_PACKAGE_ENLIGHTENMENT
 	depends on BR2_PACKAGE_XORG7
 	depends on BR2_PACKAGE_XORG7
 	# libevas-generic-loaders-svg -> librsvg -> pango -> harfbuzz
 	# libevas-generic-loaders-svg -> librsvg -> pango -> harfbuzz
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
-	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 	select BR2_PACKAGE_EFL_X_XLIB
 	select BR2_PACKAGE_EFL_X_XLIB
 	select BR2_PACKAGE_EFL_EEZE
 	select BR2_PACKAGE_EFL_EEZE
 	select BR2_PACKAGE_EFL_JPEG # needed at runtime by enlightenment_start
 	select BR2_PACKAGE_EFL_JPEG # needed at runtime by enlightenment_start
@@ -29,10 +29,10 @@ config BR2_PACKAGE_ENLIGHTENMENT
 
 
 	  http://www.enlightenment.org/
 	  http://www.enlightenment.org/
 
 
-comment "enlightenment needs udev /dev management and a toolchain w/ wchar, C++, threads, gcc >= 4.8"
+comment "enlightenment needs udev /dev management and a toolchain w/ wchar, C++, threads, gcc >= 4.9"
 	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
 	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
 	depends on BR2_PACKAGE_EFL && BR2_PACKAGE_XORG7 && BR2_USE_MMU
 	depends on BR2_PACKAGE_EFL && BR2_PACKAGE_XORG7 && BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \
-		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \
 		!BR2_PACKAGE_HAS_UDEV
 		!BR2_PACKAGE_HAS_UDEV
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4

+ 2 - 2
package/fetchmail/fetchmail.hash

@@ -1,4 +1,4 @@
-# From https://sourceforge.net/p/fetchmail/mailman/message/37376434/
-sha256  5f7a5e13731431134a2ca535bbced7adc666d3aeb93169a0830945d91f492300  fetchmail-6.4.23.tar.xz
+# From https://sourceforge.net/p/fetchmail/mailman/message/37388106/
+sha256  9c961df25cd922f539218b0b56a77e7a47778e49ed907edaa5b4941ad3b253cf  fetchmail-6.4.24.tar.xz
 # Locally computed:
 # Locally computed:
 sha256  001d1b8d111a83e3bab8b4d511ea4767d37d3bd0583560fccece630df1ba8f3c  COPYING
 sha256  001d1b8d111a83e3bab8b4d511ea4767d37d3bd0583560fccece630df1ba8f3c  COPYING

+ 1 - 1
package/fetchmail/fetchmail.mk

@@ -5,7 +5,7 @@
 ################################################################################
 ################################################################################
 
 
 FETCHMAIL_VERSION_MAJOR = 6.4
 FETCHMAIL_VERSION_MAJOR = 6.4
-FETCHMAIL_VERSION = $(FETCHMAIL_VERSION_MAJOR).23
+FETCHMAIL_VERSION = $(FETCHMAIL_VERSION_MAJOR).24
 FETCHMAIL_SOURCE = fetchmail-$(FETCHMAIL_VERSION).tar.xz
 FETCHMAIL_SOURCE = fetchmail-$(FETCHMAIL_VERSION).tar.xz
 FETCHMAIL_SITE = http://downloads.sourceforge.net/project/fetchmail/branch_$(FETCHMAIL_VERSION_MAJOR)
 FETCHMAIL_SITE = http://downloads.sourceforge.net/project/fetchmail/branch_$(FETCHMAIL_VERSION_MAJOR)
 FETCHMAIL_LICENSE = GPL-2.0; some exceptions are mentioned in COPYING
 FETCHMAIL_LICENSE = GPL-2.0; some exceptions are mentioned in COPYING

+ 1 - 1
package/fswebcam/fswebcam.hash

@@ -1,3 +1,3 @@
 # Locally calculated
 # Locally calculated
-sha256  5702771cee6e3fa0f2bbbb72ecf3e5a253ff458c1f648f7e7c0d477e39f0ec80  fswebcam-e9f8094b6a3d1a49f99b2abec4e6ab4df33e2e33.tar.gz
+sha256  d5439b2bf49bb634100d7e42ed9854f84bfd355c1d40bc3d4d81593eeadd8aee  fswebcam-20200725.tar.gz
 sha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  LICENSE
 sha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  LICENSE

+ 1 - 1
package/fswebcam/fswebcam.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-FSWEBCAM_VERSION = e9f8094b6a3d1a49f99b2abec4e6ab4df33e2e33
+FSWEBCAM_VERSION = 20200725
 FSWEBCAM_SITE = $(call github,fsphil,fswebcam,$(FSWEBCAM_VERSION))
 FSWEBCAM_SITE = $(call github,fsphil,fswebcam,$(FSWEBCAM_VERSION))
 FSWEBCAM_LICENSE = GPL-2.0
 FSWEBCAM_LICENSE = GPL-2.0
 FSWEBCAM_LICENSE_FILES = LICENSE
 FSWEBCAM_LICENSE_FILES = LICENSE

+ 2 - 2
package/fwts/fwts.hash

@@ -1,5 +1,5 @@
 # Hash from: http://fwts.ubuntu.com/release/SHA256SUMS
 # Hash from: http://fwts.ubuntu.com/release/SHA256SUMS
-sha256  e2d6e8b0704eba859a567fb8764e5dc5385793fc26bd00ecc70e7af03fd2568d  fwts-V21.05.00.tar.gz
+sha256  17d1f0b9639e0f9b092ed8233be2d63d6c44ea8d2a76be0fb5902cc867961374  fwts-V21.11.00.tar.gz
 
 
 # Hash for license file
 # Hash for license file
-sha256  2003f5c8a1e40d7882f1499bd7adb7bc748c9656851abb28647a3d297c2e8e23  debian/copyright
+sha256  fbbea748555635dd8c7e6e2f99cddd778f5ee3f9e3510775183bf9799076e5e5  debian/copyright

+ 1 - 1
package/fwts/fwts.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-FWTS_VERSION = 21.05.00
+FWTS_VERSION = 21.11.00
 FWTS_SOURCE = fwts-V$(FWTS_VERSION).tar.gz
 FWTS_SOURCE = fwts-V$(FWTS_VERSION).tar.gz
 FWTS_SITE = http://fwts.ubuntu.com/release
 FWTS_SITE = http://fwts.ubuntu.com/release
 FWTS_STRIP_COMPONENTS = 0
 FWTS_STRIP_COMPONENTS = 0

+ 1 - 1
package/fwup/fwup.hash

@@ -1,3 +1,3 @@
 # Locally calculated
 # Locally calculated
-sha256  9890f0328796f4315e6c1188df5c103855c530fbc14fbc8c12f4b24066c975f1  fwup-1.8.0.tar.gz
+sha256  18ae6753145cef2fd5f5fc83e29c2d883e570668d8aa064ee6c94d4c5e44d73d  fwup-1.9.0.tar.gz
 sha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE
 sha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE

+ 2 - 2
package/fwup/fwup.mk

@@ -4,8 +4,8 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-FWUP_VERSION = 1.8.0
-FWUP_SITE = $(call github,fhunleth,fwup,v$(FWUP_VERSION))
+FWUP_VERSION = 1.9.0
+FWUP_SITE = $(call github,fwup-home,fwup,v$(FWUP_VERSION))
 FWUP_LICENSE = Apache-2.0
 FWUP_LICENSE = Apache-2.0
 FWUP_LICENSE_FILES = LICENSE
 FWUP_LICENSE_FILES = LICENSE
 FWUP_DEPENDENCIES = host-pkgconf libconfuse libarchive
 FWUP_DEPENDENCIES = host-pkgconf libconfuse libarchive

+ 3 - 1
package/gcr/gcr.mk

@@ -30,10 +30,12 @@ else
 GCR_CONF_OPTS += -Dintrospection=false
 GCR_CONF_OPTS += -Dintrospection=false
 endif
 endif
 
 
-# Only the X11 backend is supported for the simple GUI
 ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)
 ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)
 GCR_DEPENDENCIES += libgtk3
 GCR_DEPENDENCIES += libgtk3
 GCR_CONF_OPTS += -Dgtk=true
 GCR_CONF_OPTS += -Dgtk=true
+else ifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y)
+GCR_DEPENDENCIES += libgtk3
+GCR_CONF_OPTS += -Dgtk=true
 else
 else
 GCR_CONF_OPTS += -Dgtk=false
 GCR_CONF_OPTS += -Dgtk=false
 endif
 endif

+ 3 - 3
package/gdbm/gdbm.hash

@@ -1,6 +1,6 @@
 # From https://www.gnu.org.ua/software/gdbm/download.html
 # From https://www.gnu.org.ua/software/gdbm/download.html
-md5  a285c6e2dfed78668664c0555a7d202b  gdbm-1.21.tar.gz
-sha1  f6eec6113f04a4b5fd2c1cfead10e7d65c8f3d89  gdbm-1.21.tar.gz
+md5  0bbd38f12656e4728e2f7c4708aec014  gdbm-1.22.tar.gz
+sha1  c45cc0178cbf41828369b07749d41778741703bd  gdbm-1.22.tar.gz
 # Locally computed
 # Locally computed
-sha256  b0b7dbdefd798de7ddccdd8edf6693a30494f7789777838042991ef107339cc2  gdbm-1.21.tar.gz
+sha256  f366c823a6724af313b6bbe975b2809f9a157e5f6a43612a72949138d161d762  gdbm-1.22.tar.gz
 sha256  690d762f2e8e149ab1e2d6a409a3853b6151a2533b2382fae549a176d6bedecf  COPYING
 sha256  690d762f2e8e149ab1e2d6a409a3853b6151a2533b2382fae549a176d6bedecf  COPYING

+ 1 - 1
package/gdbm/gdbm.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-GDBM_VERSION = 1.21
+GDBM_VERSION = 1.22
 GDBM_SITE = $(BR2_GNU_MIRROR)/gdbm
 GDBM_SITE = $(BR2_GNU_MIRROR)/gdbm
 GDBM_LICENSE = GPL-3.0+
 GDBM_LICENSE = GPL-3.0+
 GDBM_LICENSE_FILES = COPYING
 GDBM_LICENSE_FILES = COPYING

+ 1 - 1
package/genimage/genimage.hash

@@ -1,3 +1,3 @@
 # Locally calculated
 # Locally calculated
-sha256  9d1d53b33309fe24ea367ea057eb689bdb8ea33cb99d796de31127ca44ccf44c  genimage-14.tar.xz
+sha256  9bca24bf883310b30ee4511cbc3a580e40ad4540826e5ed3992c595ce72d003e  genimage-15.tar.xz
 sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING
 sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING

+ 1 - 1
package/genimage/genimage.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-GENIMAGE_VERSION = 14
+GENIMAGE_VERSION = 15
 GENIMAGE_SOURCE = genimage-$(GENIMAGE_VERSION).tar.xz
 GENIMAGE_SOURCE = genimage-$(GENIMAGE_VERSION).tar.xz
 GENIMAGE_SITE = https://github.com/pengutronix/genimage/releases/download/v$(GENIMAGE_VERSION)
 GENIMAGE_SITE = https://github.com/pengutronix/genimage/releases/download/v$(GENIMAGE_VERSION)
 HOST_GENIMAGE_DEPENDENCIES = host-pkgconf host-libconfuse
 HOST_GENIMAGE_DEPENDENCIES = host-pkgconf host-libconfuse

+ 3 - 3
package/gnuradio/gnuradio.mk

@@ -20,16 +20,16 @@ endif
 
 
 # host-python-mako and host-python-six are needed for volk to compile
 # host-python-mako and host-python-six are needed for volk to compile
 GNURADIO_DEPENDENCIES = \
 GNURADIO_DEPENDENCIES = \
-	$(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python) \
+	host-python3 \
 	host-python-mako \
 	host-python-mako \
-	host-python-six \
+	host-python3-six \
 	host-swig \
 	host-swig \
 	boost \
 	boost \
 	log4cpp \
 	log4cpp \
 	gmp
 	gmp
 
 
 GNURADIO_CONF_OPTS = \
 GNURADIO_CONF_OPTS = \
-	-DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python \
+	-DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3 \
 	-DENABLE_DEFAULT=OFF \
 	-DENABLE_DEFAULT=OFF \
 	-DENABLE_VOLK=ON \
 	-DENABLE_VOLK=ON \
 	-DENABLE_GNURADIO_RUNTIME=ON \
 	-DENABLE_GNURADIO_RUNTIME=ON \

+ 6 - 6
package/gstreamer1/gst1-plugins-bad/Config.in

@@ -328,13 +328,13 @@ config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASSRENDER
 	bool "assrender"
 	bool "assrender"
 	depends on BR2_INSTALL_LIBSTDCPP # libass -> harfbuzz
 	depends on BR2_INSTALL_LIBSTDCPP # libass -> harfbuzz
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libass -> harfbuzz
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libass -> harfbuzz
-	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libass -> harfbuzz
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libass -> harfbuzz
 	select BR2_PACKAGE_LIBASS
 	select BR2_PACKAGE_LIBASS
 
 
-comment "assrender plugin needs a toolchain w/ C++, gcc => 4.8"
+comment "assrender plugin needs a toolchain w/ C++, gcc => 4.9"
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on !BR2_INSTALL_LIBSTDCPP || \
 	depends on !BR2_INSTALL_LIBSTDCPP || \
-		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 
 
 config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BLUEZ
 config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BLUEZ
 	bool "bluez"
 	bool "bluez"
@@ -563,15 +563,15 @@ config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RSVG
 	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # librsvg
 	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # librsvg
 	depends on BR2_INSTALL_LIBSTDCPP # librsvg -> pango
 	depends on BR2_INSTALL_LIBSTDCPP # librsvg -> pango
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # librsvg -> pango -> harfbuzz
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # librsvg -> pango -> harfbuzz
-	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # librsvg -> pango -> harfbuzz
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # librsvg -> pango -> harfbuzz
 	select BR2_PACKAGE_LIBRSVG
 	select BR2_PACKAGE_LIBRSVG
 	help
 	help
 	  RSVG plugin library
 	  RSVG plugin library
 
 
-comment "rsvg plugin needs a toolchain w/ C++, gcc >= 4.8"
+comment "rsvg plugin needs a toolchain w/ C++, gcc >= 4.9"
 	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
 	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
 	depends on !BR2_INSTALL_LIBSTDCPP || \
 	depends on !BR2_INSTALL_LIBSTDCPP || \
-		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 
 
 config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SBC
 config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SBC

+ 3 - 3
package/gstreamer1/gst1-plugins-base/Config.in

@@ -293,14 +293,14 @@ config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PANGO
 	bool "pango font renderer"
 	bool "pango font renderer"
 	depends on BR2_INSTALL_LIBSTDCPP # pango -> freetype
 	depends on BR2_INSTALL_LIBSTDCPP # pango -> freetype
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz
-	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # pango -> harfbuzz
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz
 	select BR2_PACKAGE_PANGO
 	select BR2_PACKAGE_PANGO
 	help
 	help
 	  Pango-based text rendering and overlay
 	  Pango-based text rendering and overlay
 
 
-comment "pango plugin needs a toolchain w/ C++, gcc >= 4.8"
+comment "pango plugin needs a toolchain w/ C++, gcc >= 4.9"
 	depends on !BR2_INSTALL_LIBSTDCPP || \
 	depends on !BR2_INSTALL_LIBSTDCPP || \
-		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 
 
 config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_THEORA
 config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_THEORA

+ 2 - 2
package/haproxy/haproxy.hash

@@ -1,5 +1,5 @@
-# From: http://www.haproxy.org/download/2.4/src/haproxy-2.4.7.tar.gz.sha256
-sha256  52af97f72f22ffd8a7a995fafc696291d37818feda50a23caef7dc0622421845  haproxy-2.4.7.tar.gz
+# From: http://www.haproxy.org/download/2.4/src/haproxy-2.4.8.tar.gz.sha256
+sha256  e3e4c1ad293bc25e8d8790cc5e45133213dda008bfd0228bf3077259b32ebaa5  haproxy-2.4.8.tar.gz
 # Locally computed:
 # Locally computed:
 sha256  0717ca51fceaa25ac9e5ccc62e0c727dcf27796057201fb5fded56a25ff6ca28  LICENSE
 sha256  0717ca51fceaa25ac9e5ccc62e0c727dcf27796057201fb5fded56a25ff6ca28  LICENSE
 sha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  doc/lgpl.txt
 sha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  doc/lgpl.txt

+ 1 - 1
package/haproxy/haproxy.mk

@@ -5,7 +5,7 @@
 ################################################################################
 ################################################################################
 
 
 HAPROXY_VERSION_MAJOR = 2.4
 HAPROXY_VERSION_MAJOR = 2.4
-HAPROXY_VERSION = $(HAPROXY_VERSION_MAJOR).7
+HAPROXY_VERSION = $(HAPROXY_VERSION_MAJOR).8
 HAPROXY_SITE = http://www.haproxy.org/download/$(HAPROXY_VERSION_MAJOR)/src
 HAPROXY_SITE = http://www.haproxy.org/download/$(HAPROXY_VERSION_MAJOR)/src
 HAPROXY_LICENSE = GPL-2.0+ and LGPL-2.1+ with exceptions
 HAPROXY_LICENSE = GPL-2.0+ and LGPL-2.1+ with exceptions
 HAPROXY_LICENSE_FILES = LICENSE doc/lgpl.txt doc/gpl.txt
 HAPROXY_LICENSE_FILES = LICENSE doc/lgpl.txt doc/gpl.txt

+ 3 - 3
package/harfbuzz/Config.in

@@ -2,7 +2,7 @@ config BR2_PACKAGE_HARFBUZZ
 	bool "harfbuzz"
 	bool "harfbuzz"
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
-	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 	help
 	help
 	  HarfBuzz is an OpenType text shaping engine
 	  HarfBuzz is an OpenType text shaping engine
 
 
@@ -11,7 +11,7 @@ config BR2_PACKAGE_HARFBUZZ
 	  Harfbuzz can make optional use of cairo, freetype,
 	  Harfbuzz can make optional use of cairo, freetype,
 	  glib2 and icu packages if they are selected.
 	  glib2 and icu packages if they are selected.
 
 
-comment "harfbuzz needs a toolchain w/ C++, gcc >= 4.8"
+comment "harfbuzz needs a toolchain w/ C++, gcc >= 4.9"
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on !BR2_INSTALL_LIBSTDCPP || \
 	depends on !BR2_INSTALL_LIBSTDCPP || \
-		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 1 - 1
package/harfbuzz/harfbuzz.hash

@@ -1,3 +1,3 @@
 # Locally computed
 # Locally computed
-sha256  036b0ee118451539783ec7864148bb4106be42a2eb964df4e83e6703ec46f3d9  harfbuzz-3.0.0.tar.xz
+sha256  4056b1541dd8bbd8ec29207fe30e568805c0705515632d7fec53a94399bc7945  harfbuzz-3.1.2.tar.xz
 sha256  4345e1735f8bc6d812fed5180cabb5a5e88a4109d332652f2a45c13cfa5ee692  COPYING
 sha256  4345e1735f8bc6d812fed5180cabb5a5e88a4109d332652f2a45c13cfa5ee692  COPYING

+ 1 - 1
package/harfbuzz/harfbuzz.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-HARFBUZZ_VERSION = 3.0.0
+HARFBUZZ_VERSION = 3.1.2
 HARFBUZZ_SITE = https://github.com/harfbuzz/harfbuzz/releases/download/$(HARFBUZZ_VERSION)
 HARFBUZZ_SITE = https://github.com/harfbuzz/harfbuzz/releases/download/$(HARFBUZZ_VERSION)
 HARFBUZZ_SOURCE = harfbuzz-$(HARFBUZZ_VERSION).tar.xz
 HARFBUZZ_SOURCE = harfbuzz-$(HARFBUZZ_VERSION).tar.xz
 HARFBUZZ_LICENSE = MIT, ISC (ucdn library)
 HARFBUZZ_LICENSE = MIT, ISC (ucdn library)

+ 1 - 1
package/hwdata/hwdata.hash

@@ -1,4 +1,4 @@
 # Locally calculated
 # Locally calculated
-sha256  fafcc97421ba766e08a2714ccc3eebb0daabc99e67d53c2d682721dd01ccf7a7  hwdata-0.345.tar.gz
+sha256  14d120ae58f71da18d7731f44e65a818e4209d621b41fba6f0cd03278a002c1d  hwdata-0.353.tar.gz
 sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING
 sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING
 sha256  21d0406f93e884a050426ebc21931839a45d56bfcbcbfdda7686d583f36f107f  LICENSE
 sha256  21d0406f93e884a050426ebc21931839a45d56bfcbcbfdda7686d583f36f107f  LICENSE

+ 1 - 1
package/hwdata/hwdata.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-HWDATA_VERSION = 0.345
+HWDATA_VERSION = 0.353
 HWDATA_SITE = $(call github,vcrhonek,hwdata,v$(HWDATA_VERSION))
 HWDATA_SITE = $(call github,vcrhonek,hwdata,v$(HWDATA_VERSION))
 HWDATA_LICENSE = GPL-2.0+, BSD-3-Clause, XFree86 1.0
 HWDATA_LICENSE = GPL-2.0+, BSD-3-Clause, XFree86 1.0
 HWDATA_LICENSE_FILES = COPYING LICENSE
 HWDATA_LICENSE_FILES = COPYING LICENSE

+ 2 - 2
package/ima-evm-utils/ima-evm-utils.hash

@@ -1,4 +1,4 @@
 # sha1 from sourceforge, sha256 locally computed
 # sha1 from sourceforge, sha256 locally computed
-sha1  034d163533ae5f9c06001b375ec7e5a1b09a3853  ima-evm-utils-1.3.2.tar.gz
-sha256 c2b206e7f9fbe62a938b7ae59e31906fefae4d5351fe01db739bd8346b75d4a7  ima-evm-utils-1.3.2.tar.gz
+sha1  f23d8a406759a469b0223b0bfb302ada4407a1d1  ima-evm-utils-1.4.tar.gz
+sha256 fcf85b31d6292051b3679e5f17ffa7f89b6898957aad0f59aa4e9878884b27d1  ima-evm-utils-1.4.tar.gz
 sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING
 sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING

+ 1 - 1
package/ima-evm-utils/ima-evm-utils.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-IMA_EVM_UTILS_VERSION = 1.3.2
+IMA_EVM_UTILS_VERSION = 1.4
 IMA_EVM_UTILS_SITE = http://downloads.sourceforge.net/project/linux-ima/ima-evm-utils
 IMA_EVM_UTILS_SITE = http://downloads.sourceforge.net/project/linux-ima/ima-evm-utils
 IMA_EVM_UTILS_LICENSE = GPL-2.0
 IMA_EVM_UTILS_LICENSE = GPL-2.0
 IMA_EVM_UTILS_LICENSE_FILES = COPYING
 IMA_EVM_UTILS_LICENSE_FILES = COPYING

+ 2 - 2
package/inadyn/inadyn.hash

@@ -1,5 +1,5 @@
-# From https://github.com/troglobit/inadyn/releases/download/v2.8.1/inadyn-2.8.1.tar.xz.sha256
-sha256  1185a9fb165bfc5f5b5f66f0dd8a695c9bd78d4b20cd162273eeea77f2d2e685  inadyn-2.8.1.tar.xz
+# Upstream .sha256 from GitHub
+sha256  b90c02a4f1964d8c1f3e178b6ef22eb29c689cd9e09669af17a8fd998c87dab5  inadyn-2.9.0.tar.gz
 
 
 # Locally computed
 # Locally computed
 sha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING
 sha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING

Some files were not shown because too many files changed in this diff