summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/bootloader/u-boot.scm17
-rw-r--r--gnu/packages/bootloaders.scm35
-rw-r--r--gnu/system/install.scm6
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