From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43390) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fNVyT-0006pq-An for guix-patches@gnu.org; Tue, 29 May 2018 00:11:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fNVyQ-0002lk-32 for guix-patches@gnu.org; Tue, 29 May 2018 00:11:05 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:45069) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fNVyP-0002lf-T9 for guix-patches@gnu.org; Tue, 29 May 2018 00:11:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1fNVyP-0000SP-NJ for guix-patches@gnu.org; Tue, 29 May 2018 00:11:01 -0400 Subject: [bug#31599] [PATCH v2] system: Add u-boot-puma-rk3399. Resent-Message-ID: From: Vagrant Cascadian In-Reply-To: <20180526191202.268bd0e6@scratchpost.org> References: <878t87s71n.fsf@aikidev.net> <20180526091953.2e81f92f@scratchpost.org> <87603as6ur.fsf@aikidev.net> <20180526191202.268bd0e6@scratchpost.org> Date: Mon, 28 May 2018 21:10:15 -0700 Message-ID: <87sh6bqezc.fsf@aikidev.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Danny Milosavljevic Cc: 31599@debbugs.gnu.org --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Thanks for the review! I think the attached patch addresses the issues raised: * Fix several indentation and numerous whitespace issues. * u-boot-puma-rk3399: Drop use of u-boot-tools as an input, calling ./tools/mkimage directly. * arm-trusted-firmware-puma-rk3399: Use git-version to set version. * u-boot-puma-rk3399: Complete block using #t * u-boot-puma-rk3399: Use "apply invoke" to make system calls. live well, vagrant --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-system-Add-u-boot-puma-rk3399.patch Content-Transfer-Encoding: quoted-printable From=2023bcb1e653f771aae3781ce665728283c3076b76 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Mon, 28 May 2018 18:28:13 -0700 Subject: [PATCH 1/1] system: Add u-boot-puma-rk3399. * gnu/packages/bootloaders.scm (u-boot-puma-rk3399): New variable. (make-u-boot-package)[arguments]: Add '.rksd' files to the files installed during custom 'install phase. * gnu/bootloader/u-boot.scm (u-boot-puma-rk3399-bootloader): New exported variable. * gnu/system/install.scm (rk3399-puma-installation-os): New exported variable. * gnu/packages/firmware.scm (arm-trusted-firmware-puma-rk3399): New variabl= e. (rk3399-cortex-m0): New variable. =2D-- gnu/bootloader/u-boot.scm | 16 +++++++++++ gnu/packages/bootloaders.scm | 33 ++++++++++++++++++++++- gnu/packages/firmware.scm | 63 ++++++++++++++++++++++++++++++++++++++++= ++++ gnu/system/install.scm | 6 +++++ 4 files changed, 117 insertions(+), 1 deletion(-) diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm index ea0f67b3c..52b38dd1a 100644 =2D-- a/gnu/bootloader/u-boot.scm +++ b/gnu/bootloader/u-boot.scm @@ -37,6 +37,7 @@ u-boot-nintendo-nes-classic-edition-bootloader u-boot-novena-bootloader u-boot-pine64-plus-bootloader + u-boot-puma-rk3399-bootloader u-boot-wandboard-bootloader)) =20 (define install-u-boot @@ -84,6 +85,15 @@ (write-file-on-device u-boot (stat:size (stat u-boot)) device (* 69 1024))))) =20 +(define install-puma-rk3399-u-boot + #~(lambda (bootloader device mount-point) + (let ((spl (string-append bootloader "/libexec/u-boot-spl.rksd")) + (u-boot (string-append bootloader "/libexec/u-boot.itb"))) + (write-file-on-device spl (stat:size (stat spl)) + device (* 64 512)) + (write-file-on-device u-boot (stat:size (stat u-boot)) + device (* 512 512))))) + =20 ;;; @@ -162,3 +172,9 @@ (bootloader (inherit u-boot-allwinner64-bootloader) (package u-boot-pine64-plus))) + +(define u-boot-puma-rk3399-bootloader + (bootloader + (inherit u-boot-bootloader) + (package u-boot-puma-rk3399) + (installer install-puma-rk3399-u-boot))) diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 2dd530125..6ff26d0dc 100644 =2D-- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -489,7 +489,7 @@ board-independent tools."))) (let* ((out (assoc-ref outputs "out")) (libexec (string-append out "/libexec")) (uboot-files (append =2D (find-files "." ".*\\.(bin|efi|img|s= pl|itb|dtb)$") + (find-files "." ".*\\.(bin|efi|img|spl= |itb|dtb|rksd)$") (find-files "." "^(MLO|SPL)$")))) (mkdir-p libexec) (install-file ".config" libexec) @@ -560,6 +560,37 @@ board-independent tools."))) (define-public u-boot-cubieboard (make-u-boot-package "Cubieboard" "arm-linux-gnueabihf")) =20 +(define-public u-boot-puma-rk3399 + (let ((base (make-u-boot-package "puma-rk3399" "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 inputs #:allow-other-keys) + ;; Need to copy the firmware into u-boot build + ;; directory. + (copy-file (string-append (assoc-ref inputs "firmware") + "/bl31.bin") "bl31-rk3399.bin") + (copy-file (string-append (assoc-ref inputs "firmware-m0") + "/rk3399m0.bin") "rk3399m0.bin") + #t)) + (add-after 'build 'builditb + (lambda* (#:key make-flags #:allow-other-keys) + ;; The u-boot.itb is not built by default + (apply invoke "make" `(,@make-flags ,"u-boot.itb")))) + (add-after 'builditb 'buildrksd + (lambda* (#:key inputs #:allow-other-keys) + ;; Build rockchip SD card images. + (apply invoke "./tools/mkimage" + `(,"-T" ,"rksd" ,"-n" ,"rk3399" ,"-d" ,"spl= /u-boot-spl.bin" ,"u-boot-spl.rksd")))))))) + (native-inputs + `(("firmware" ,arm-trusted-firmware-puma-rk3399) + ("firmware-m0" ,rk3399-cortex-m0) + ,@(package-native-inputs base)))))) + (define-public vboot-utils (package (name "vboot-utils") diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 9e91ceca4..986e1d621 100644 =2D-- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -404,3 +404,66 @@ such as: (sha256 (base32 "0r4xnlq7v9khjfcg6gqp7nmrmnw4z1r8bipwdr07png1dcbb8214"))))))) + +(define-public arm-trusted-firmware-puma-rk3399 + (let ((base (make-arm-trusted-firmware "rk3399")) + ;; Vendor's arm trusted firmware branch hasn't been upstreamed yet. + (commit "d71e6d83612df896774ec4c03d49500312d2c324") + (revision "1")) + (package + (inherit base) + (name "arm-trusted-firmware-puma-rk3399") + (version (git-version "1.3" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.theobroma-systems.com/arm-trusted-firmw= are.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0vqhwqqh8h9qlkpybg2v94911091c1418bc4pnzq5fd7zf0fjkf8"))))))) + +(define-public rk3399-cortex-m0 + (package + (name "rk3399-cortex-m0") + (version "1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.theobroma-systems.com/rk3399-cortex-m0.git") + (commit (string-append "v" version)))) + (file-name (git-file-name "rk3399-cortex-m0" version)) + (sha256 + (base32 + "02wz1vkf4j3zc8rx289z76xhrf71jhb2p05lvmygky393a9gjh9w")))) + (home-page "https://git.theobroma-systems.com/rk3399-cortex-m0.git/abo= ut/") + (synopsis "PMU Cortex M0 firmware for RK3399 Q7 (Puma)") + (description + "Cortex-M0 firmware used with the RK3399 to implement +power-management functionality and helpers (e.g. DRAM frequency +switching support).\n") + (license license:bsd-3) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'check) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (mzerofiles (find-files "." "rk3399m0.(elf|bin)$"))) + (for-each + (lambda (file) + (install-file file out)) + mzerofiles)) + #t)) + (add-before 'build 'setenv + (lambda* (#:key inputs #:allow-other-keys) + (setenv "CROSS_COMPILE" "arm-none-eabi-") + #t))))) + (native-inputs `(("cross-gcc" ,(cross-gcc "arm-none-eabi" #:xgcc gcc-7= )) + ("cross-binutils" ,(cross-binutils "arm-none-eabi")))= ))) diff --git a/gnu/system/install.scm b/gnu/system/install.scm index acc9f15e0..35f4ba9c2 100644 =2D-- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -53,6 +53,7 @@ nintendo-nes-classic-edition-installation-os novena-installation-os pine64-plus-installation-os + rk3399-puma-installation-os wandboard-installation-os)) =20 ;;; Commentary: @@ -451,6 +452,11 @@ The bootloader BOOTLOADER is installed to BOOTLOADER-T= ARGET." "/dev/mmcblk0" ; SD card storage "ttyS0")) =20 +(define rk3399-puma-installation-os + (embedded-installation-os u-boot-puma-rk3399-bootloader + "/dev/mmcblk0" ; SD card storage + "ttyS0")) + (define wandboard-installation-os (embedded-installation-os u-boot-wandboard-bootloader "/dev/mmcblk0" ; SD card storage =2D-=20 2.11.0 --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEcDardHbDotegGFCHt4uC1IFLkbYFAlsM0qgACgkQt4uC1IFL kbYTLxAAmoogCagNWrry/8HNf9/4u91B5ZF9pUPPo9HqtuM2rmfquBKdhdUPxhGf GqW+NWXORDKQf8NwogWlxr/yh1zvTt4ARyasaS+z86rft12huxjXA4O6tnPnx5UQ ux83vjul3npYqC5qouGmG4CTxVuIE5ZHsqJ1tygw5wZeB3xyEqJ26edz6xAH8CZb WjeiNH6sdCRUwp3AeESSzTAtS+NrJI1MGU5rVNzry/JzCNNNkIj0Xlfg0wRu61eV AUfgJwpxO5kNzKtmsxid+lkB75GQfZn20OKCW8gZlpkU1Dckj5hijizojnU38R9W 5TxI9L/3k5grOQQCeJj22/ubEsHUlUtQcOCxEWZJ0tUYbhj3iO8GvQ4ZAYC5MeWd FjFVP8ayQoPMtjtb+A2zKyryamMmH0zKet8POt9nxey3o5Lc3St5M8BnSEM2imql 4T8caJ9+iODs7flJ8Ya+QIjfEMGhI7YiCcZF0R6C/C8sQ1GSs4/7uudlb8zn8hl/ vEFQ98MMgBZGyIbW6iD1EwNjGfthztGFaAC7k/JsfgOSlrDJf+103FKnna2x5tL0 IlnKiYJiNijIEel8p7fMdkudvTZ1/phyHyloPU+8ENVEkTrEavkWX7+FF6NmnEz4 LQt1mNbIlbHrldx19X8Su9zgBNoTDT0TcrN0PBjZ+3xonEXjx/U= =taOD -----END PGP SIGNATURE----- --==-=-=--