;; SPDX-FileCopyrightText: 2022 Hilton Chain ;; ;; SPDX-License-Identifier: GPL-3.0-or-later (define-module (rosenthal bootloader u-boot) #:use-module (ice-9 format) #:use-module (guix gexp) #:use-module (gnu bootloader) #:use-module (gnu bootloader u-boot) #:use-module (rosenthal packages bootloaders) #:export (u-boot-rpi4-arm64-bootloader)) (define %rpi4-arm64-boot-config (plain-file "config.txt" (format #f "~ enable_uart=1 avoid_warnings=1 arm_64bit=1 kernel=u-boot.bin "))) ;; https://www.raspberrypi.com/documentation/computers/configuration.html#the-boot-folder (define install-rpi4-arm64-bootloader #~(lambda (bootloader device mount-point) (let ((u-boot (string-append bootloader "/libexec/u-boot.bin")) (install-dir (string-append mount-point "/boot"))) ;; Autoload Nonguix*, so we only have a soft dependency. ;; * (module-autoload! (current-module) '(nongnu packages linux) '(raspberrypi-firmware)) ;; Install raspberrypi-firmware (for-each (lambda (file) (install-file (string-append raspberrypi-firmware "/" file) install-dir)) '(;; VideoCore firmwares "start4.elf" ;basic "start4x.elf" ;camera drivers and codec "start4cd.elf" ;cut-down "start4db.elf" ;debug ;; Linker files "fixup4.dat" "fixup4x.dat" "fixup4cd.dat" "fixup4db.dat" ;; Device Tree Overlays (for Raspberry Pi's bootloader) "bcm2711-rpi-4-b.dtb")) ;; Install u-boot (install-file u-boot install-dir) ;; Raspberry Pi's bootloader configuration (copy-file #$%rpi4-arm64-boot-config (string-append install-dir "/config.txt"))))) (define u-boot-rpi4-arm64-bootloader (bootloader (inherit u-boot-bootloader) (package u-boot-rpi-arm64) (installer install-rpi4-arm64-bootloader)))