[PATCH] gnu: u-boot: Enlarge space available for kernel.

  • Open
  • quality assurance status badge
Details
4 participants
  • Herman Rimm
  • Ludovic Courtès
  • Simon Glass
  • Vagrant Cascadian
Owner
unassigned
Submitted by
Herman Rimm
Severity
normal
H
H
Herman Rimm wrote on 2 Sep 2024 21:04
(address . guix-patches@gnu.org)
20240902190459.13783-1-herman@rimm.ee
* gnu/packages/bootloaders.scm (u-boot): Use patch.
* gnu/packages/patches/u-boot-50M-kernel.patch: Add file.
* gnu/local.mk (dist_patch_DATA): Register patch.
---
Based on [bug#70131].

gnu/local.mk | 1 +
gnu/packages/bootloaders.scm | 7 ++-
gnu/packages/patches/u-boot-50M-kernel.patch | 47 ++++++++++++++++++++
3 files changed, 54 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/u-boot-50M-kernel.patch

Toggle diff (92 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 2ce910ad28..d674acd7ca 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2165,6 +2165,7 @@ dist_patch_DATA = \
%D%/packages/patches/turbovnc-find-system-packages.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-bcg729.patch \
+ %D%/packages/patches/u-boot-50M-kernel.patch \
%D%/packages/patches/u-boot-allow-disabling-openssl.patch \
%D%/packages/patches/u-boot-nintendo-nes-serial.patch \
%D%/packages/patches/u-boot-rockchip-inno-usb.patch \
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 162eef6859..9980521a5f 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -841,6 +841,10 @@ (define %u-boot-nanopi-r4s-ddr3-patch
;; Use DDR3 instead of LPDDR4 for the Nano Pi R4S U-boot.
(search-patch "u-boot-nanopi-r4s-ddr3.patch"))
+(define %u-boot-50M-kernel-patch
+ ;; Make space for 6.9+ linux-libre kernel.
+ (search-patch "u-boot-50M-kernel.patch"))
+
(define u-boot
(package
(name "u-boot")
@@ -849,7 +853,8 @@ (define u-boot
(patches
(list %u-boot-rockchip-inno-usb-patch
%u-boot-allow-disabling-openssl-patch
- %u-boot-nanopi-r4s-ddr3-patch))
+ %u-boot-nanopi-r4s-ddr3-patch
+ %u-boot-50M-kernel-patch))
(method url-fetch)
(uri (string-append
"https://ftp.denx.de/pub/u-boot/"
diff --git a/gnu/packages/patches/u-boot-50M-kernel.patch b/gnu/packages/patches/u-boot-50M-kernel.patch
new file mode 100644
index 0000000000..d31501400e
--- /dev/null
+++ b/gnu/packages/patches/u-boot-50M-kernel.patch
@@ -0,0 +1,47 @@
+diff --git a/board/raspberrypi/rpi/rpi.env b/board/raspberrypi/rpi/rpi.env
+index 30228285ed..54a8e9e5ae 100644
+--- a/board/raspberrypi/rpi/rpi.env
++++ b/board/raspberrypi/rpi/rpi.env
+@@ -43,22 +43,22 @@ dfu_alt_info+=zImage fat 0 1
+ * text_offset bytes (specified in the header of the Image) into a 2MB
+ * boundary. The 'booti' command relocates the image if necessary. Linux uses
+ * a default text_offset of 0x80000. In summary, loading at 0x80000
+- * satisfies all these constraints and reserving memory up to 0x02400000
+- * permits fairly large (roughly 36M) kernels.
++ * satisfies all these constraints and reserving memory up to 0x03400000
++ * permits fairly large (roughly 50M) kernels.
+ *
+ * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't
+ * conflict with something else. Reserving 1M for each of them at
+- * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty.
++ * 0x03200000-0x03300000 and 0x03300000-0x03400000 should be plenty.
+ *
+ * On ARM, both the DTB and any possible initrd must be loaded such that they
+ * fit inside the lowmem mapping in Linux. In practice, this usually means not
+ * more than ~700M away from the start of the kernel image but this number can
+ * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line
+ * parameter given to the kernel. So reserving memory from low to high
+- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for
+- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000.
++ * satisfies this constraint again. Reserving 1M at 0x03400000-0x03500000 for
++ * the DTB leaves rest of the free RAM to the initrd starting at 0x03500000.
+ * Even with the smallest possible CPU-GPU memory split of the CPU getting
+- * only 64M, the remaining 25M starting at 0x02700000 should allow quite
++ * only 64M, the remaining 11M starting at 0x03500000 should allow quite
+ * large initrds before they start colliding with U-Boot.
+ */
+ #ifdef CONFIG_ARM64
+@@ -69,9 +69,9 @@ fdt_high=ffffffff
+ initrd_high=ffffffff
+ #endif
+ kernel_addr_r=0x00080000
+-scriptaddr=0x02400000
+-pxefile_addr_r=0x02500000
+-fdt_addr_r=0x02600000
+-ramdisk_addr_r=0x02700000
++scriptaddr=0x03200000
++pxefile_addr_r=0x03300000
++fdt_addr_r=0x03400000
++ramdisk_addr_r=0x03500000
+
+ boot_targets=mmc usb pxe dhcp
--
2.45.2
L
L
Ludovic Courtès wrote on 16 Sep 2024 00:12
(name . Herman Rimm)(address . herman@rimm.ee)
877cbcbm88.fsf@gnu.org
Hi,

Cc’ing members of the ‘embedded’ team (normally the ‘git send-email’
hook that gets installed should do that when you compose the message,
no?).

Herman Rimm <herman@rimm.ee> skribis:

Toggle quote (6 lines)
> * gnu/packages/bootloaders.scm (u-boot): Use patch.
> * gnu/packages/patches/u-boot-50M-kernel.patch: Add file.
> * gnu/local.mk (dist_patch_DATA): Register patch.
> ---
> Based on [bug#70131].

Vagrant, Efraim: could you review and possibly apply #70131?

Some superficial comments:

Toggle quote (9 lines)
> +++ b/gnu/packages/bootloaders.scm
> @@ -841,6 +841,10 @@ (define %u-boot-nanopi-r4s-ddr3-patch
> ;; Use DDR3 instead of LPDDR4 for the Nano Pi R4S U-boot.
> (search-patch "u-boot-nanopi-r4s-ddr3.patch"))
>
> +(define %u-boot-50M-kernel-patch
> + ;; Make space for 6.9+ linux-libre kernel.
> + (search-patch "u-boot-50M-kernel.patch"))

‘search-patch’ must not be called from the top level: it incurs extra
‘stat’ calls and it could throw an exception. Thus, arrange to have it
called from the ‘patches’ field (which is thunked) or something similar.

Toggle quote (6 lines)
> +++ b/gnu/packages/patches/u-boot-50M-kernel.patch
> @@ -0,0 +1,47 @@
> +diff --git a/board/raspberrypi/rpi/rpi.env b/board/raspberrypi/rpi/rpi.env
> +index 30228285ed..54a8e9e5ae 100644
> +--- a/board/raspberrypi/rpi/rpi.env

Please add a line or two at the top explaining what the patch does and
where it comes from.

I’ll let Vagrant and Efraim comment on the actual change.

Thanks,
Ludo’.
H
H
Herman Rimm wrote on 16 Sep 2024 19:24
[PATCH v2] gnu: u-boot: Enlarge space available for kernel.
(address . 72987@debbugs.gnu.org)
c56191d9f088cc52844d3cb1c7eec0f413745b2d.1726507300.git.herman@rimm.ee
* gnu/packages/bootloaders.scm (%u-boot-rockchip-inno-usb-patch,
%u-boot-allow-disabling-openssl-patch, %u-boot-nanopi-r4s-ddr3-patch):
Remove variables.
(u-boot)[source]: Use search-patches and add new patch.
* gnu/packages/patches/u-boot-50M-kernel.patch: Add file.
* gnu/local.mk (dist_patch_DATA): Register patch.

Change-Id: Ib0074d888a3553543b491e9198f9b9a1162722f3
---
gnu/local.mk | 1 +
gnu/packages/bootloaders.scm | 49 +++++++++----------
gnu/packages/patches/u-boot-50M-kernel.patch | 51 ++++++++++++++++++++
3 files changed, 74 insertions(+), 27 deletions(-)
create mode 100644 gnu/packages/patches/u-boot-50M-kernel.patch

Toggle diff (137 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index ce58d5bfb4..b763991d63 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2216,6 +2216,7 @@ dist_patch_DATA = \
%D%/packages/patches/turbovnc-find-system-packages.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-bcg729.patch \
+ %D%/packages/patches/u-boot-50M-kernel.patch \
%D%/packages/patches/u-boot-allow-disabling-openssl.patch \
%D%/packages/patches/u-boot-nintendo-nes-serial.patch \
%D%/packages/patches/u-boot-rockchip-inno-usb.patch \
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 50e7bb8bbc..b38b407d38 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -826,37 +826,32 @@ (define-public dtc
tree binary files. These are board description files used by Linux and BSD.")
(license license:gpl2+)))
-(define %u-boot-rockchip-inno-usb-patch
- ;; Fix regression in 2020.10 causing freezes on boot with USB boot enabled.
- ;; See https://gitlab.manjaro.org/manjaro-arm/packages/core/uboot-rockpro64/-/issues/4
- ;; and https://patchwork.ozlabs.org/project/uboot/patch/20210406151059.1187379-1-icenowy@aosc.io
- (search-patch "u-boot-rockchip-inno-usb.patch"))
-
-(define %u-boot-allow-disabling-openssl-patch
- ;; Fixes build of u-boot 2021.10 without openssl
- ;; https://lists.denx.de/pipermail/u-boot/2021-October/462728.html
- (search-patch "u-boot-allow-disabling-openssl.patch"))
-
-(define %u-boot-nanopi-r4s-ddr3-patch
- ;; Use DDR3 instead of LPDDR4 for the Nano Pi R4S U-boot.
- (search-patch "u-boot-nanopi-r4s-ddr3.patch"))
-
(define u-boot
(package
(name "u-boot")
(version "2024.07")
- (source (origin
- (patches
- (list %u-boot-rockchip-inno-usb-patch
- %u-boot-allow-disabling-openssl-patch
- %u-boot-nanopi-r4s-ddr3-patch))
- (method url-fetch)
- (uri (string-append
- "https://ftp.denx.de/pub/u-boot/"
- "u-boot-" version ".tar.bz2"))
- (sha256
- (base32
- "13rwv28g6z8ihrs8k0066gblw37rvw6nsxkks6rxdwqfp6ddm4gm"))))
+ (source
+ (origin
+ (patches
+ (search-patches
+ ;; Fix regression in 2020.10 causing freezes on boot with
+ ;; USB boot enabled. See:
+ ;; https://gitlab.manjaro.org/manjaro-arm/packages/core/uboot-rockpro64/-/issues/4
+ ;; https://patchwork.ozlabs.org/project/uboot/patch/20210406151059.1187379-1-icenowy@aosc.io
+ "u-boot-rockchip-inno-usb.patch"
+ ;; Fixes build of u-boot 2021.10 without openssl. See:
+ ;; https://lists.denx.de/pipermail/u-boot/2021-October/462728.html
+ "u-boot-allow-disabling-openssl.patch"
+ ;; Use DDR3 instead of LPDDR4 for the Nano Pi R4S.
+ "u-boot-nanopi-r4s-ddr3.patch"
+ ;; Reserve more than 36 MB for linux-libre 6.9+ kernels.
+ "u-boot-50M-kernel.patch"))
+ (method url-fetch)
+ (uri (string-append "https://ftp.denx.de/pub/u-boot/"
+ "u-boot-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "13rwv28g6z8ihrs8k0066gblw37rvw6nsxkks6rxdwqfp6ddm4gm"))))
(build-system gnu-build-system)
(native-inputs
(list bison
diff --git a/gnu/packages/patches/u-boot-50M-kernel.patch b/gnu/packages/patches/u-boot-50M-kernel.patch
new file mode 100644
index 0000000000..4566894087
--- /dev/null
+++ b/gnu/packages/patches/u-boot-50M-kernel.patch
@@ -0,0 +1,51 @@
+This patch configures the U-Boot for Raspberry Pis to reserve 50 MB for
+linux kernels, because the 6.9 and newer linux-libre-arm64-generic
+kernels can be larger than 36 MB. It was created by Herman Rimm
+<herman@rimm.ee> in August 2024 and is not submitted upstream yet.
+diff --git a/board/raspberrypi/rpi/rpi.env b/board/raspberrypi/rpi/rpi.env
+index 30228285ed..54a8e9e5ae 100644
+--- a/board/raspberrypi/rpi/rpi.env
++++ b/board/raspberrypi/rpi/rpi.env
+@@ -43,22 +43,22 @@ dfu_alt_info+=zImage fat 0 1
+ * text_offset bytes (specified in the header of the Image) into a 2MB
+ * boundary. The 'booti' command relocates the image if necessary. Linux uses
+ * a default text_offset of 0x80000. In summary, loading at 0x80000
+- * satisfies all these constraints and reserving memory up to 0x02400000
+- * permits fairly large (roughly 36M) kernels.
++ * satisfies all these constraints and reserving memory up to 0x03400000
++ * permits fairly large (roughly 50M) kernels.
+ *
+ * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't
+ * conflict with something else. Reserving 1M for each of them at
+- * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty.
++ * 0x03200000-0x03300000 and 0x03300000-0x03400000 should be plenty.
+ *
+ * On ARM, both the DTB and any possible initrd must be loaded such that they
+ * fit inside the lowmem mapping in Linux. In practice, this usually means not
+ * more than ~700M away from the start of the kernel image but this number can
+ * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line
+ * parameter given to the kernel. So reserving memory from low to high
+- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for
+- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000.
++ * satisfies this constraint again. Reserving 1M at 0x03400000-0x03500000 for
++ * the DTB leaves rest of the free RAM to the initrd starting at 0x03500000.
+ * Even with the smallest possible CPU-GPU memory split of the CPU getting
+- * only 64M, the remaining 25M starting at 0x02700000 should allow quite
++ * only 64M, the remaining 11M starting at 0x03500000 should allow quite
+ * large initrds before they start colliding with U-Boot.
+ */
+ #ifdef CONFIG_ARM64
+@@ -69,9 +69,9 @@ fdt_high=ffffffff
+ initrd_high=ffffffff
+ #endif
+ kernel_addr_r=0x00080000
+-scriptaddr=0x02400000
+-pxefile_addr_r=0x02500000
+-fdt_addr_r=0x02600000
+-ramdisk_addr_r=0x02700000
++scriptaddr=0x03200000
++pxefile_addr_r=0x03300000
++fdt_addr_r=0x03400000
++ramdisk_addr_r=0x03500000
+
+ boot_targets=mmc usb pxe dhcp

base-commit: a493d65d04deafb763710bb1cb0425185750327d
--
2.45.2
V
V
Vagrant Cascadian wrote on 16 Sep 2024 23:05
u-boot: rpi: Enlarge space available for kernel.
87jzfbl371.fsf@wireframe
On 2024-09-16, Herman Rimm wrote:
Toggle quote (55 lines)
> --- /dev/null
> +++ b/gnu/packages/patches/u-boot-50M-kernel.patch
> @@ -0,0 +1,51 @@
> +This patch configures the U-Boot for Raspberry Pis to reserve 50 MB for
> +linux kernels, because the 6.9 and newer linux-libre-arm64-generic
> +kernels can be larger than 36 MB. It was created by Herman Rimm
> +<herman@rimm.ee> in August 2024 and is not submitted upstream yet.
> +diff --git a/board/raspberrypi/rpi/rpi.env b/board/raspberrypi/rpi/rpi.env
> +index 30228285ed..54a8e9e5ae 100644
> +--- a/board/raspberrypi/rpi/rpi.env
> ++++ b/board/raspberrypi/rpi/rpi.env
> +@@ -43,22 +43,22 @@ dfu_alt_info+=zImage fat 0 1
> + * text_offset bytes (specified in the header of the Image) into a 2MB
> + * boundary. The 'booti' command relocates the image if necessary. Linux uses
> + * a default text_offset of 0x80000. In summary, loading at 0x80000
> +- * satisfies all these constraints and reserving memory up to 0x02400000
> +- * permits fairly large (roughly 36M) kernels.
> ++ * satisfies all these constraints and reserving memory up to 0x03400000
> ++ * permits fairly large (roughly 50M) kernels.
> + *
> + * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't
> + * conflict with something else. Reserving 1M for each of them at
> +- * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty.
> ++ * 0x03200000-0x03300000 and 0x03300000-0x03400000 should be plenty.
> + *
> + * On ARM, both the DTB and any possible initrd must be loaded such that they
> + * fit inside the lowmem mapping in Linux. In practice, this usually means not
> + * more than ~700M away from the start of the kernel image but this number can
> + * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line
> + * parameter given to the kernel. So reserving memory from low to high
> +- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for
> +- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000.
> ++ * satisfies this constraint again. Reserving 1M at 0x03400000-0x03500000 for
> ++ * the DTB leaves rest of the free RAM to the initrd starting at 0x03500000.
> + * Even with the smallest possible CPU-GPU memory split of the CPU getting
> +- * only 64M, the remaining 25M starting at 0x02700000 should allow quite
> ++ * only 64M, the remaining 11M starting at 0x03500000 should allow quite
> + * large initrds before they start colliding with U-Boot.
> + */
> + #ifdef CONFIG_ARM64
> +@@ -69,9 +69,9 @@ fdt_high=ffffffff
> + initrd_high=ffffffff
> + #endif
> + kernel_addr_r=0x00080000
> +-scriptaddr=0x02400000
> +-pxefile_addr_r=0x02500000
> +-fdt_addr_r=0x02600000
> +-ramdisk_addr_r=0x02700000
> ++scriptaddr=0x03200000
> ++pxefile_addr_r=0x03300000
> ++fdt_addr_r=0x03400000
> ++ramdisk_addr_r=0x03500000
> +
> + boot_targets=mmc usb pxe dhcp

I would really like to hear comments from the upstream u-boot
maintainers on adjusting these values...

live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCZuidkgAKCRDcUY/If5cW
quPqAP9nLcLkuvtdpf3dyKxkpJQuA9j+odEOJFEWuQNcG1gvBAEA9Yk4uId+n409
4gEcIwaiPYOyQnE0iIT1igum6nxu1AY=
=lRKm
-----END PGP SIGNATURE-----

V
V
Vagrant Cascadian wrote on 16 Sep 2024 23:10
Re: [bug#72987] [PATCH v2] gnu: u-boot: Enlarge space available for kernel.
(name . Efraim Flashner)(address . efraim@flashner.co.il)
87h6afl2y7.fsf@wireframe
On 2024-09-16, Herman Rimm wrote:
Toggle quote (5 lines)
> (define u-boot
> (package
> (name "u-boot")
> (version "2024.07")

u-boot is still only version 2024.01 in guix ... sorry I have lagged at
u-boot updates.


Toggle quote (2 lines)
> base-commit: a493d65d04deafb763710bb1cb0425185750327d

This appears to be from some branch not present in guix....

live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCZuie0AAKCRDcUY/If5cW
qvAYAP9vGwLcSQl9qOI7RcO/jy4glni8r/cCW7HeZ0gjlsjVPAD+MfYUtVnD5HuV
lwh1cZJW0mFBMEjREvg7cBFesir+4AE=
=F7yi
-----END PGP SIGNATURE-----

S
S
Simon Glass wrote on 19 Sep 2024 16:11
Re: u-boot: rpi: Enlarge space available for kernel.
(name . Vagrant Cascadian)(address . vagrant@debian.org)
CAFLszTgMRRFiLVMq8YAHFc355LoT-Jmk77E1CweYUzoJffd4vw@mail.gmail.com
Hi,

On Mon, 16 Sept 2024 at 23:06, Vagrant Cascadian <vagrant@debian.org> wrote:
Toggle quote (60 lines)
>
> On 2024-09-16, Herman Rimm wrote:
> > --- /dev/null
> > +++ b/gnu/packages/patches/u-boot-50M-kernel.patch
> > @@ -0,0 +1,51 @@
> > +This patch configures the U-Boot for Raspberry Pis to reserve 50 MB for
> > +linux kernels, because the 6.9 and newer linux-libre-arm64-generic
> > +kernels can be larger than 36 MB. It was created by Herman Rimm
> > +<herman@rimm.ee> in August 2024 and is not submitted upstream yet.
> > +diff --git a/board/raspberrypi/rpi/rpi.env b/board/raspberrypi/rpi/rpi.env
> > +index 30228285ed..54a8e9e5ae 100644
> > +--- a/board/raspberrypi/rpi/rpi.env
> > ++++ b/board/raspberrypi/rpi/rpi.env
> > +@@ -43,22 +43,22 @@ dfu_alt_info+=zImage fat 0 1
> > + * text_offset bytes (specified in the header of the Image) into a 2MB
> > + * boundary. The 'booti' command relocates the image if necessary. Linux uses
> > + * a default text_offset of 0x80000. In summary, loading at 0x80000
> > +- * satisfies all these constraints and reserving memory up to 0x02400000
> > +- * permits fairly large (roughly 36M) kernels.
> > ++ * satisfies all these constraints and reserving memory up to 0x03400000
> > ++ * permits fairly large (roughly 50M) kernels.
> > + *
> > + * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't
> > + * conflict with something else. Reserving 1M for each of them at
> > +- * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty.
> > ++ * 0x03200000-0x03300000 and 0x03300000-0x03400000 should be plenty.
> > + *
> > + * On ARM, both the DTB and any possible initrd must be loaded such that they
> > + * fit inside the lowmem mapping in Linux. In practice, this usually means not
> > + * more than ~700M away from the start of the kernel image but this number can
> > + * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line
> > + * parameter given to the kernel. So reserving memory from low to high
> > +- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for
> > +- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000.
> > ++ * satisfies this constraint again. Reserving 1M at 0x03400000-0x03500000 for
> > ++ * the DTB leaves rest of the free RAM to the initrd starting at 0x03500000.
> > + * Even with the smallest possible CPU-GPU memory split of the CPU getting
> > +- * only 64M, the remaining 25M starting at 0x02700000 should allow quite
> > ++ * only 64M, the remaining 11M starting at 0x03500000 should allow quite
> > + * large initrds before they start colliding with U-Boot.
> > + */
> > + #ifdef CONFIG_ARM64
> > +@@ -69,9 +69,9 @@ fdt_high=ffffffff
> > + initrd_high=ffffffff
> > + #endif
> > + kernel_addr_r=0x00080000
> > +-scriptaddr=0x02400000
> > +-pxefile_addr_r=0x02500000
> > +-fdt_addr_r=0x02600000
> > +-ramdisk_addr_r=0x02700000
> > ++scriptaddr=0x03200000
> > ++pxefile_addr_r=0x03300000
> > ++fdt_addr_r=0x03400000
> > ++ramdisk_addr_r=0x03500000
> > +
> > + boot_targets=mmc usb pxe dhcp
>
> I would really like to hear comments from the upstream u-boot
> maintainers on adjusting these values...

It is fine to adjust them, so long as the memory is actually there. I
don't know of anything special about the current values.

Regards,
Simon
V
V
Vagrant Cascadian wrote on 20 Sep 2024 23:52
Re: [bug#70131] [bug#72987] [PATCH v2] gnu: u-boot: Enlarge space available for kernel.
(address . 72987@debbugs.gnu.org)
87tteaj8lj.fsf@wireframe
On 2024-09-19, Herman Rimm wrote:
Toggle quote (12 lines)
> On Mon, Sep 16, 2024 at 02:10:40PM -0700, Vagrant Cascadian wrote:
>> u-boot is still only version 2024.01 in guix ... sorry I have lagged at
>> u-boot updates.
>>
>>
>> > base-commit: a493d65d04deafb763710bb1cb0425185750327d
>>
>> This appears to be from some branch not present in guix....
>
> This patch can be applied on top of the v2 revision of issue 70131, I
> must not have CC'ed you that either.

Or the bug you were replying to, done so now, so people know what is
up. :)

live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCZu3uuAAKCRDcUY/If5cW
qmy9AP42JJs23hOESglGuC/f/OzSOmfWLfs+fzNEhVU+xxhzVwD/YoJkX1L/32s5
x+iEVniDk0YzspfQqs9VGSpOLXEtcg8=
=Tgfr
-----END PGP SIGNATURE-----

H
H
Herman Rimm wrote on 13 Dec 2024 22:07
[PATCH v3 0/5] Add U-Boot patches and bootloaders.
(address . 72987@debbugs.gnu.org)
cover.1734122005.git.herman@rimm.ee
Hello,

This revision depends on #74842 and #74849, in addition to #70131.

The top-level U-Boot patches are removed in #70131 instead of in the
first patch, and the Nano Pi R4S and Orange Pi Zero 2W bootloaders are
added in the second and fourth instead of in #70131.

The final patch adds a bootloader for the ASUS Tinker Board S and the
ARM Trusted Firmware for its SoC. The HDMI is flaky.

I could create an additional U-Boot package for the Nano Pi R4S, and
apply the DDR3 patch to it instead, so both variants are supported.

Cheers,
Herman

Herman Rimm (5):
gnu: u-boot: Enlarge space available for kernel.
gnu: bootloader: Add nanopi-r4s-rk3399 bootloader.
gnu: u-boot: Use DDR3 patch for Nano Pi R4S.
gnu: bootloader: Add orangepi-zero2w bootloader.
gnu: bootloader: Add ASUS Tinker Board S bootloader.

gnu/bootloader/u-boot.scm | 22 ++++++++
gnu/local.mk | 4 +-
gnu/packages/bootloaders.scm | 43 ++++++++++++++-
gnu/packages/firmware.scm | 9 +++
gnu/packages/patches/u-boot-50M-kernel.patch | 55 +++++++++++++++++++
.../patches/u-boot-nanopi-r4s-ddr3.patch | 33 +++++++++++
6 files changed, 164 insertions(+), 2 deletions(-)
create mode 100644 gnu/packages/patches/u-boot-50M-kernel.patch
create mode 100644 gnu/packages/patches/u-boot-nanopi-r4s-ddr3.patch


base-commit: 383e7ca281bae36a151f3fdb2e3a1ac4c5c65b50
--
2.45.2
H
H
Herman Rimm wrote on 13 Dec 2024 22:07
[PATCH v3 2/5] gnu: bootloader: Add nanopi-r4s-rk3399 bootloader.
(address . 72987@debbugs.gnu.org)
ecde5ff47a839a2d727c7a3917b1edf58ec51abb.1734122005.git.herman@rimm.ee
* gnu/bootloader/u-boot.scm (u-boot-nanopi-r4s-rk3399-bootloader): Add.
* gnu/packages/bootloaders.scm (u-boot-nanopi-r4s-rk3399): Add variable.

Change-Id: I6d4cb098727fe4027aea33a39c59d34000dfc4db
---
gnu/bootloader/u-boot.scm | 6 ++++++
gnu/packages/bootloaders.scm | 3 +++
2 files changed, 9 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 5d5fc1bff2..9c7df3b40f 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -38,6 +38,7 @@ (define-module (gnu bootloader u-boot)
u-boot-cubietruck-bootloader
u-boot-firefly-rk3399-bootloader
u-boot-mx6cuboxi-bootloader
+ u-boot-nanopi-r4s-rk3399-bootloader
u-boot-nintendo-nes-classic-edition-bootloader
u-boot-novena-bootloader
u-boot-orangepi-r1-plus-lts-rk3328-bootloader
@@ -220,6 +221,11 @@ (define u-boot-novena-bootloader
(inherit u-boot-imx-bootloader)
(package u-boot-novena)))
+(define u-boot-nanopi-r4s-rk3399-bootloader
+ (bootloader
+ (inherit u-boot-rockchip-bootloader)
+ (package u-boot-nanopi-r4s-rk3399)))
+
(define u-boot-orangepi-r1-plus-lts-rk3328-bootloader
(bootloader
(inherit u-boot-rockchip-bootloader)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 478385fb18..1a464655b6 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1274,6 +1274,9 @@ (define-public u-boot-novena
version, contrary to Novena upstream, does not load u-boot.img from the first
partition."))
+(define-public u-boot-nanopi-r4s-rk3399
+ (make-u-boot-rockchip-package "nanopi-r4s" 'rk3399))
+
(define-public u-boot-orangepi-r1-plus-lts-rk3328
(make-u-boot-rockchip-package "orangepi-r1-plus-lts" 'rk3328))
--
2.45.2
H
H
Herman Rimm wrote on 13 Dec 2024 22:07
[PATCH v3 3/5] gnu: u-boot: Use DDR3 patch for Nano Pi R4S.
(address . 72987@debbugs.gnu.org)
ca04751770e9c5108d9f3c3f1228485be731f4d7.1734122005.git.herman@rimm.ee
* gnu/packages/bootloaders.scm (u-boot)[source]: Use patch.
* gnu/packages/patches/u-boot-nanopi-r4s-ddr3.patch: Add file.
* gnu/local.mk (dist_patch_DATA): Register patch.

Change-Id: Ibbf952f2806c9cac7fc29e1264d427bf6ee67d01
---
gnu/local.mk | 1 +
gnu/packages/bootloaders.scm | 1 +
.../patches/u-boot-nanopi-r4s-ddr3.patch | 33 +++++++++++++++++++
3 files changed, 35 insertions(+)
create mode 100644 gnu/packages/patches/u-boot-nanopi-r4s-ddr3.patch

Toggle diff (65 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 4da94f68e2..4852c427b2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2277,6 +2277,7 @@ dist_patch_DATA = \
%D%/packages/patches/u-boot-allow-disabling-openssl.patch \
%D%/packages/patches/u-boot-nintendo-nes-serial.patch \
%D%/packages/patches/u-boot-rockchip-inno-usb.patch \
+ %D%/packages/patches/u-boot-nanopi-r4s-ddr3.patch \
%D%/packages/patches/ucx-tcp-iface-ioctl.patch \
%D%/packages/patches/ultrastar-deluxe-no-freesans.patch \
%D%/packages/patches/ungoogled-chromium-extension-search-path.patch \
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 1a464655b6..d946270317 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -759,6 +759,7 @@ (define u-boot
(base32 "0yrhb0izihv47p781dc4cp0znc5g225ayl7anz23c6jdrmfbpz2h"))
(patches (search-patches "u-boot-allow-disabling-openssl.patch"
"u-boot-50M-kernel.patch"
+ "u-boot-nanopi-r4s-ddr3.patch"
"u-boot-rockchip-inno-usb.patch"))))
(build-system gnu-build-system)
(native-inputs
diff --git a/gnu/packages/patches/u-boot-nanopi-r4s-ddr3.patch b/gnu/packages/patches/u-boot-nanopi-r4s-ddr3.patch
new file mode 100644
index 0000000000..435ffd5554
--- /dev/null
+++ b/gnu/packages/patches/u-boot-nanopi-r4s-ddr3.patch
@@ -0,0 +1,33 @@
+From: Herman Rimm <herman@rimm.me>
+Date: Sun, 2 Jul 2023 13:43:18 +0200
+Subject: [PATCH] Configure the Nano Pi R4S with DDR3.
+
+---
+This patch should be removed once something like this is upstream:
+https://github.com/anaelorlinski/OpenWrt-NanoPi-R2S-R4S-Builds/commit/9d836044340ddef53f5d9f1946ac48c946a78284
+
+diff --git a/arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi b/arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi
+index 69800cc368d..a3054849f88 100644
+--- a/arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi
++++ b/arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi
+@@ -13,7 +13,7 @@
+ */
+
+ #include "rk3399-nanopi4-u-boot.dtsi"
+-#include "rk3399-sdram-lpddr4-100.dtsi"
++#include "rk3399-sdram-ddr3-1866.dtsi"
+
+ / {
+ smbios {
+diff --git a/configs/nanopi-r4s-rk3399_defconfig b/configs/nanopi-r4s-rk3399_defconfig
+index ada04b46cb1..b39e350bbed 100644
+--- a/configs/nanopi-r4s-rk3399_defconfig
++++ b/configs/nanopi-r4s-rk3399_defconfig
+@@ -48,7 +48,6 @@ CONFIG_PMIC_RK8XX=y
+ CONFIG_SPL_DM_REGULATOR_FIXED=y
+ CONFIG_REGULATOR_RK8XX=y
+ CONFIG_PWM_ROCKCHIP=y
+-CONFIG_RAM_ROCKCHIP_LPDDR4=y
+ CONFIG_BAUDRATE=1500000
+ CONFIG_DEBUG_UART_SHIFT=2
+ CONFIG_SYS_NS16550_MEM32=y
--
2.45.2
H
H
Herman Rimm wrote on 13 Dec 2024 22:07
[PATCH v3 1/5] gnu: u-boot: Enlarge space available for kernel.
(address . 72987@debbugs.gnu.org)
c121fa3727428f6e43f9722676288e9b6c989fa8.1734122005.git.herman@rimm.ee
* gnu/packages/bootloaders.scm (u-boot)[source]: Add patch.
* gnu/packages/patches/u-boot-50M-kernel.patch: Add file.
* gnu/local.mk (dist_patch_DATA): Register patch.

Change-Id: Ib0074d888a3553543b491e9198f9b9a1162722f3
---
gnu/local.mk | 3 +-
gnu/packages/bootloaders.scm | 1 +
gnu/packages/patches/u-boot-50M-kernel.patch | 55 ++++++++++++++++++++
3 files changed, 58 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/u-boot-50M-kernel.patch

Toggle diff (96 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index ace19eb8a4..4da94f68e2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -62,7 +62,7 @@
# Copyright © 2023 B. Wilson <elaexuotee@wilsonb.com>
# Copyright © 2023 Bruno Victal <mirai@makinata.eu>
# Copyright © 2023, 2024 gemmaro <gemmaro.dev@gmail.com>
-# Copyright © 2023 Herman Rimm <herman@rimm.ee>
+# Copyright © 2023, 2024 Herman Rimm <herman@rimm.ee>
# Copyright © 2023 Troy Figiel <troy@troyfigiel.com>
# Copyright © 2024 David Elsing <david.elsing@posteo.net>
# Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se>
@@ -2273,6 +2273,7 @@ dist_patch_DATA = \
%D%/packages/patches/turbovnc-find-system-packages.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-bcg729.patch \
+ %D%/packages/patches/u-boot-50M-kernel.patch \
%D%/packages/patches/u-boot-allow-disabling-openssl.patch \
%D%/packages/patches/u-boot-nintendo-nes-serial.patch \
%D%/packages/patches/u-boot-rockchip-inno-usb.patch \
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 5183b2fc14..478385fb18 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -758,6 +758,7 @@ (define u-boot
(sha256
(base32 "0yrhb0izihv47p781dc4cp0znc5g225ayl7anz23c6jdrmfbpz2h"))
(patches (search-patches "u-boot-allow-disabling-openssl.patch"
+ "u-boot-50M-kernel.patch"
"u-boot-rockchip-inno-usb.patch"))))
(build-system gnu-build-system)
(native-inputs
diff --git a/gnu/packages/patches/u-boot-50M-kernel.patch b/gnu/packages/patches/u-boot-50M-kernel.patch
new file mode 100644
index 0000000000..c4d054dd42
--- /dev/null
+++ b/gnu/packages/patches/u-boot-50M-kernel.patch
@@ -0,0 +1,55 @@
+From: Herman Rimm <herman@rimm.ee>
+Date: Mon, Sep 16 2024 19:24:02 +0200
+Subject: [PATCH] Configure Raspberry Pis to reserve 50 MB for linux kernels.
+
+---
+The 6.9 and newer linux-libre-arm64-generic kernels for Guix can be
+larger than the allocated 36 MB. This patch is not submitted upstream.
+
+diff --git a/board/raspberrypi/rpi/rpi.env b/board/raspberrypi/rpi/rpi.env
+index 30228285edd..666883e9212 100644
+--- a/board/raspberrypi/rpi/rpi.env
++++ b/board/raspberrypi/rpi/rpi.env
+@@ -43,22 +43,22 @@ dfu_alt_info+=zImage fat 0 1
+ * text_offset bytes (specified in the header of the Image) into a 2MB
+ * boundary. The 'booti' command relocates the image if necessary. Linux uses
+ * a default text_offset of 0x80000. In summary, loading at 0x80000
+- * satisfies all these constraints and reserving memory up to 0x02400000
+- * permits fairly large (roughly 36M) kernels.
++ * satisfies all these constraints and reserving memory up to 0x03400000
++ * permits fairly large (roughly 50M) kernels.
+ *
+ * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't
+ * conflict with something else. Reserving 1M for each of them at
+- * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty.
++ * 0x03200000-0x03300000 and 0x03300000-0x03400000 should be plenty.
+ *
+ * On ARM, both the DTB and any possible initrd must be loaded such that they
+ * fit inside the lowmem mapping in Linux. In practice, this usually means not
+ * more than ~700M away from the start of the kernel image but this number can
+ * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line
+ * parameter given to the kernel. So reserving memory from low to high
+- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for
+- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000.
++ * satisfies this constraint again. Reserving 1M at 0x03400000-0x03500000 for
++ * the DTB leaves rest of the free RAM to the initrd starting at 0x03500000.
+ * Even with the smallest possible CPU-GPU memory split of the CPU getting
+- * only 64M, the remaining 25M starting at 0x02700000 should allow quite
++ * only 64M, the remaining 11M starting at 0x03500000 should allow quite
+ * large initrds before they start colliding with U-Boot.
+ */
+ #ifdef CONFIG_ARM64
+@@ -69,9 +69,9 @@ fdt_high=ffffffff
+ initrd_high=ffffffff
+ #endif
+ kernel_addr_r=0x00080000
+-scriptaddr=0x02400000
+-pxefile_addr_r=0x02500000
+-fdt_addr_r=0x02600000
+-ramdisk_addr_r=0x02700000
++scriptaddr=0x03200000
++pxefile_addr_r=0x03300000
++fdt_addr_r=0x03400000
++ramdisk_addr_r=0x03500000
+
+ boot_targets=mmc usb pxe dhcp
--
2.45.2
H
H
Herman Rimm wrote on 13 Dec 2024 22:07
[PATCH v3 5/5] gnu: bootloader: Add ASUS Tinker Board S bootloader.
(address . 72987@debbugs.gnu.org)
aa942aa5c8e550aa6d3f4c8c80840107c70d5957.1734122005.git.herman@rimm.ee
* gnu/bootloader/u-boot.scm (install-tinker-s-rk3288-u-boot,
u-boot-tinker-s-rk3288-bootloader): Add variables.
* gnu/packages/bootloaders.scm (u-boot)[native-inputs]: Add bc.
(u-boot-tinker-s-rk3288): Add variable.
* gnu/packages/firmware.scm (arm-trusted-firmware-rk3288): Add variable.

Change-Id: Ic28193d4377c672f4cbbac4cc059e283fcfb06e0
---
gnu/bootloader/u-boot.scm | 10 ++++++++++
gnu/packages/bootloaders.scm | 20 +++++++++++++++++++-
gnu/packages/firmware.scm | 6 ++++++
3 files changed, 35 insertions(+), 1 deletion(-)

Toggle diff (99 lines)
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 52527ab0db..0d6cd5c6a8 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -53,6 +53,7 @@ (define-module (gnu bootloader u-boot)
u-boot-sifive-unmatched-bootloader
u-boot-qemu-riscv64-bootloader
u-boot-starfive-visionfive2-bootloader
+ u-boot-tinker-s-rk3288-bootloader
u-boot-ts7970-q-2g-1000mhz-c-bootloader
u-boot-wandboard-bootloader))
@@ -115,6 +116,9 @@ (define install-puma-rk3399-u-boot
(define install-rockchip-u-boot
(write-u-boot-image '(("idbloader.img" 64) ("u-boot.itb" 16384)) 512))
+(define install-tinker-s-rk3288-u-boot
+ (write-u-boot-image '(("idbloader.img" 64) ("u-boot.img" 16384)) 512))
+
(define install-sifive-unmatched-u-boot
(write-u-boot-image '(("spl/u-boot-spl.bin" 34) ("u-boot.itb" 2082))
512))
@@ -273,6 +277,12 @@ (define u-boot-pinebook-pro-rk3399-bootloader
(inherit u-boot-rockchip-bootloader)
(package u-boot-pinebook-pro-rk3399)))
+(define u-boot-tinker-s-rk3288-bootloader
+ (bootloader
+ (inherit u-boot-bootloader)
+ (package u-boot-tinker-s-rk3288)
+ (disk-image-installer install-tinker-s-rk3288-u-boot)))
+
(define u-boot-ts7970-q-2g-1000mhz-c-bootloader
;; This bootloader doesn't really need to be installed, as it is read from
;; an SPI memory chip, not the SD card. It is copied to /boot/u-boot.imx
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index b91ff00e28..4516e343b2 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -39,6 +39,7 @@
(define-module (gnu packages bootloaders)
#:use-module (gnu packages)
+ #:use-module (gnu packages algebra)
#:use-module (gnu packages assembly)
#:use-module (gnu packages base)
#:use-module (gnu packages disk)
@@ -763,7 +764,8 @@ (define u-boot
"u-boot-rockchip-inno-usb.patch"))))
(build-system gnu-build-system)
(native-inputs
- (list bison
+ (list bc
+ bison
dtc
gnutls
flex
@@ -1308,6 +1310,22 @@ (define-public u-boot-cubietruck
(define-public u-boot-puma-rk3399
(make-u-boot-rockchip-package "puma" 'rk3399))
+(define-public u-boot-tinker-s-rk3288
+ (let ((base (make-u-boot-package "tinker-s-rk3288" "arm-linux-gnueabihf")))
+ (package
+ (inherit base)
+ (arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'set-environment
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; ARMv7 does not have the BL31 stage.
+ (setenv "BL32" (search-input-file inputs "/bl32.elf"))))))))
+ (inputs
+ (modify-inputs (package-inputs base)
+ (append arm-trusted-firmware-rk3288))))))
+
(define-public u-boot-qemu-arm
(make-u-boot-package "qemu_arm" "arm-linux-gnueabihf"
;; Disable features that require OpenSSL due
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index d89b136c86..670cef5a02 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -1171,6 +1171,12 @@ (define-public arm-trusted-firmware-sun50i-a64
(define-public arm-trusted-firmware-sun50i-h616
(make-arm-trusted-firmware "sun50i_h616"))
+(define-public arm-trusted-firmware-rk3288
+ (make-arm-trusted-firmware "rk3288" #:triplet "arm-linux-gnueabihf"
+ #:make-flags '("ARCH=aarch32"
+ "AARCH32_SP=sp_min"
+ "DEBUG=1")))
+
(define-public arm-trusted-firmware-rk3328
(make-arm-trusted-firmware "rk3328"))
--
2.45.2
H
H
Herman Rimm wrote on 13 Dec 2024 22:07
[PATCH v3 4/5] gnu: bootloader: Add orangepi-zero2w bootloader.
(address . 72987@debbugs.gnu.org)
88ebf15a930627469311be3126a20234e4051710.1734122005.git.herman@rimm.ee
* gnu/bootloader/u-boot.scm (u-boot-orangepi-zero2w-bootloader): Add
variable.
* gnu/packages/bootloaders.scm (u-boot-orangepi-zero2w): Add variable.
* gnu/packages/firmware.scm (arm-trusted-firmware-sun50i-h616): Add
variable.

Change-Id: Idb43fdabac51b3301f3bea24fec72bfa29636489
---
gnu/bootloader/u-boot.scm | 6 ++++++
gnu/packages/bootloaders.scm | 18 ++++++++++++++++++
gnu/packages/firmware.scm | 3 +++
3 files changed, 27 insertions(+)

Toggle diff (69 lines)
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 9c7df3b40f..52527ab0db 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -42,6 +42,7 @@ (define-module (gnu bootloader u-boot)
u-boot-nintendo-nes-classic-edition-bootloader
u-boot-novena-bootloader
u-boot-orangepi-r1-plus-lts-rk3328-bootloader
+ u-boot-orangepi-zero2w-bootloader
u-boot-pine64-plus-bootloader
u-boot-pine64-lts-bootloader
u-boot-pinebook-bootloader
@@ -231,6 +232,11 @@ (define u-boot-orangepi-r1-plus-lts-rk3328-bootloader
(inherit u-boot-rockchip-bootloader)
(package u-boot-orangepi-r1-plus-lts-rk3328)))
+(define u-boot-orangepi-zero2w-bootloader
+ (bootloader
+ (inherit u-boot-allwinner-bootloader)
+ (package u-boot-orangepi-zero2w)))
+
(define u-boot-pine64-plus-bootloader
(bootloader
(inherit u-boot-allwinner64-bootloader)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index d946270317..b91ff00e28 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1204,6 +1204,24 @@ (define*-public (make-u-boot-sunxi64-package board triplet scp-firmware
(modify-inputs (package-inputs base)
(append arm-trusted-firmware-sun50i-a64))))))
+(define-public u-boot-orangepi-zero2w
+ (let ((base (make-u-boot-package
+ "orangepi_zero2w" "aarch64-linux-gnu")))
+ (package
+ (inherit base)
+ (arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'set-environment
+ (lambda* (#:key native-inputs inputs #:allow-other-keys)
+ (setenv "SCP" "/dev/null")
+ (setenv "BL31" (search-input-file inputs "bl31.bin"))))))))
+ (inputs
+ (modify-inputs (package-inputs base)
+ ;; The Zero 2W uses the slightly revised Allwinner H618.
+ (append arm-trusted-firmware-sun50i-h616))))))
+
(define-public u-boot-pine64-plus
(make-u-boot-sunxi64-package "pine64_plus" "aarch64-linux-gnu"
(delay crust-pine64-plus)))
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 868be8488c..d89b136c86 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -1168,6 +1168,9 @@ (define-public arm-trusted-firmware-sun50i-a64
(inherit base)
(name "arm-trusted-firmware-sun50i-a64"))))
+(define-public arm-trusted-firmware-sun50i-h616
+ (make-arm-trusted-firmware "sun50i_h616"))
+
(define-public arm-trusted-firmware-rk3328
(make-arm-trusted-firmware "rk3328"))
--
2.45.2
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 72987@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 72987
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch