Subject: bug#49550: Enable to boot from emmc on rockpro64

From: Pierre Langlois <[email-masked]>
Date: Tue, 13 Jul 2021 20:36:28 +0100

Hi guix!

I'm afraid since commit 3a851d45576e046d696fcf35b34d57b2cd28ea49 [0]
I've not been able to boot from eMMC on the rockpro64 board, it freezes
before loading the kernel. Re-introducing the work-around fixed the
issue for me (see patch attached).

Did we mean to remove the work-around? I'm wondering if there's
something I'm missing, or if I should instead boot from a USB device.

I've also updated u-boot to 2021.07 but I'm seeing the same boot issue
so it doesn't appear to be fixed upstream :-/

Anybody know of any other work around? If not, are you happy with the
patch attached?

Thanks,
Pierre

>From f3c647bb447706f465a3fb4b8d6e09cd089dbed9 Mon Sep 17 00:00:00 2001
From: Pierre Langlois <[email-masked]>
Date: Sat, 8 May 2021 16:19:23 +0100
Subject: [PATCH 1/3] gnu: u-boot-rockpro64-rk3399: Disable USB boot.

* gnu/packages/bootloaders.scm (u-boot-rockpro64-rk3399)[arguments]: Add
'patch-rockpro64-config phase.
---
 gnu/packages/bootloaders.scm | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 742992a119..75705a27c1 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2019 Mathieu Othacehe <[email-masked]>
 ;;; Copyright © 2020 Björn Höfling <[email-masked]>
 ;;; Copyright © 2018, 2019, 2020 Vagrant Cascadian <[email-masked]>
-;;; Copyright © 2020 Pierre Langlois <[email-masked]>
+;;; Copyright © 2020, 2021 Pierre Langlois <[email-masked]>
 ;;; Copyright © 2021 Vincent Legoll <[email-masked]>
 ;;; Copyright © 2021 Brice Waegeneire <[email-masked]>
 ;;;
@@ -931,11 +931,16 @@ to Novena upstream, does not load u-boot.img from the first partition.")
         (substitute-keyword-arguments (package-arguments base)
           ((#:phases phases)
            `(modify-phases ,phases
+              (add-after 'unpack 'patch-rockpro64-config
+                ;; 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
+                (lambda _
+                  (substitute* "configs/rockpro64-rk3399_defconfig"
+                    (("CONFIG_USE_PREBOOT=y") "CONFIG_USE_PREBOOT=n"))))
               (add-after 'patch-rockpro64-config 'set-environment
                 (lambda* (#:key inputs #:allow-other-keys)
                   (setenv "BL31" (string-append (assoc-ref inputs "firmware")
-                                                "/bl31.elf"))
-                  #t))
+                                                "/bl31.elf"))))
               ;; Phases do not succeed on the bl31 ELF.
               (delete 'strip)
               (delete 'validate-runpath)))))
-- 
2.32.0

[0]: https://lists.gnu.org/archive/html/guix-commits/2021-05/msg00085.html