diff options
-rw-r--r-- | gnu/bootloader/u-boot.scm | 17 | ||||
-rw-r--r-- | gnu/packages/bootloaders.scm | 35 | ||||
-rw-r--r-- | gnu/system/install.scm | 6 |
3 files changed, 58 insertions, 0 deletions
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm index 54abfe1c69..4f98be2483 100644 --- a/gnu/bootloader/u-boot.scm +++ b/gnu/bootloader/u-boot.scm @@ -34,6 +34,7 @@ u-boot-pine64-plus-bootloader u-boot-pinebook-bootloader u-boot-puma-rk3399-bootloader + u-boot-rockpro64-rk3399-bootloader u-boot-wandboard-bootloader)) (define install-u-boot @@ -90,6 +91,15 @@ (write-file-on-device u-boot (stat:size (stat u-boot)) device (* 512 512))))) +(define install-rockpro64-rk3399-u-boot + #~(lambda (bootloader device mount-point) + (let ((idb (string-append bootloader "/libexec/idbloader.img")) + (u-boot (string-append bootloader "/libexec/u-boot.itb"))) + (write-file-on-device idb (stat:size (stat idb)) + device (* 64 512)) + (write-file-on-device u-boot (stat:size (stat u-boot)) + device (* 16384 512))))) + ;;; @@ -179,3 +189,10 @@ (inherit u-boot-bootloader) (package u-boot-puma-rk3399) (installer install-puma-rk3399-u-boot))) + +(define u-boot-rockpro64-rk3399-bootloader + ;; SD and eMMC use the same format + (bootloader + (inherit u-boot-bootloader) + (package u-boot-rockpro64-rk3399) + (installer install-rockpro64-rk3399-u-boot))) diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 520728b52c..45e1b8fc1c 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -430,6 +430,19 @@ tree binary files. These are board description files used by Linux and BSD.") also initializes the boards (RAM etc).") (license license:gpl2+))) +(define u-boot-2019.10 + (package + (inherit u-boot) + (version "2019.10") + (source (origin + (method url-fetch) + (uri (string-append + "ftp://ftp.denx.de/pub/u-boot/" + "u-boot-" version ".tar.bz2")) + (sha256 + (base32 + "053hcrwwlacqh2niisn0zas95zkbffw5aw5sdhixs8lmfdq60vcd")))))) + (define-public u-boot-tools (package (inherit u-boot) @@ -746,6 +759,28 @@ to Novena upstream, does not load u-boot.img from the first partition.") ("firmware-m0" ,rk3399-cortex-m0) ,@(package-native-inputs base)))))) +(define-public u-boot-rockpro64-rk3399 + (let ((base (make-u-boot-package "rockpro64-rk3399" "aarch64-linux-gnu"))) + (package + (inherit base) + (version (package-version u-boot-2019.10)) + (source (package-source u-boot-2019.10)) + (arguments + (substitute-keyword-arguments (package-arguments base) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'set-environment + (lambda* (#:key inputs #:allow-other-keys) + (setenv "BL31" (string-append (assoc-ref inputs "firmware") + "/bl31.elf")) + #t)) + ;; Phases do not succeed on the bl31 ELF. + (delete 'strip) + (delete 'validate-runpath))))) + (native-inputs + `(("firmware" ,arm-trusted-firmware-rk3399) + ,@(package-native-inputs base)))))) + (define-public vboot-utils (package (name "vboot-utils") diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 912096027f..eab3649269 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -62,6 +62,7 @@ novena-installation-os pine64-plus-installation-os pinebook-installation-os + rockpro64-installation-os rk3399-puma-installation-os wandboard-installation-os os-with-u-boot)) @@ -583,6 +584,11 @@ The bootloader BOOTLOADER is installed to BOOTLOADER-TARGET." "/dev/mmcblk0" ; SD card storage "ttyS0")) +(define rockpro64-installation-os + (embedded-installation-os u-boot-rockpro64-rk3399-bootloader + "/dev/mmcblk0" ; SD card/eMMC (SD priority) storage + "ttyS2")) ; UART2 connected on the Pi2 bus + (define rk3399-puma-installation-os (embedded-installation-os u-boot-puma-rk3399-bootloader "/dev/mmcblk0" ; SD card storage |