From cc35ac70c6b43344f639fe01f2bf439f2ce2ff4d Mon Sep 17 00:00:00 2001 From: Ben Wolsieffer Date: Sun, 30 Dec 2018 17:27:41 -0500 Subject: [PATCH 1/8] rkdeveloptool: init at 1.3 --- pkgs/misc/rkdeveloptool/default.nix | 24 ++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 26 insertions(+) create mode 100644 pkgs/misc/rkdeveloptool/default.nix diff --git a/pkgs/misc/rkdeveloptool/default.nix b/pkgs/misc/rkdeveloptool/default.nix new file mode 100644 index 00000000000..e877629bcb0 --- /dev/null +++ b/pkgs/misc/rkdeveloptool/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, libusb1 }: + +stdenv.mkDerivation { + pname = "rkdeveloptool"; + version = "1.3"; + + src = fetchFromGitHub { + owner = "rockchip-linux"; + repo = "rkdeveloptool"; + rev = "081d237ad5bf8f03170c9d60bd94ceefa0352aaf"; + sha256 = "05hh7j3xgb8l1k1v2lis3nvlc0gp87ihzg6jci7m5lkkm5qgv3ji"; + }; + + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + + buildInputs = [ libusb1 ]; + + meta = with stdenv.lib; { + homepage = https://github.com/rockchip-linux/rkdeveloptool; + description = "A tool from Rockchip to communicate with Rockusb devices"; + license = licenses.gpl2; + maintainers = [ maintainers.lopsided98 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 25c0457c247..22147e4eb88 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19093,6 +19093,8 @@ in rkt = callPackage ../applications/virtualization/rkt { }; + rkdeveloptool = callPackage ../misc/rkdeveloptool { }; + rofi-unwrapped = callPackage ../applications/misc/rofi { }; rofi = callPackage ../applications/misc/rofi/wrapper.nix { }; From 8a816723ce25a5160f20aeefbd36aead6870a458 Mon Sep 17 00:00:00 2001 From: Ben Wolsieffer Date: Sun, 30 Dec 2018 17:35:22 -0500 Subject: [PATCH 2/8] arm-trusted-firmware: 1.5 -> 2.0 --- pkgs/misc/arm-trusted-firmware/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/misc/arm-trusted-firmware/default.nix b/pkgs/misc/arm-trusted-firmware/default.nix index 6bfaa2a2f27..4cb137b8535 100644 --- a/pkgs/misc/arm-trusted-firmware/default.nix +++ b/pkgs/misc/arm-trusted-firmware/default.nix @@ -6,7 +6,7 @@ let , platform , extraMakeFlags ? [] , extraMeta ? {} - , version ? "1.5" + , version ? "2.0" , ... } @ args: stdenv.mkDerivation (rec { @@ -17,7 +17,7 @@ let owner = "ARM-software"; repo = "arm-trusted-firmware"; rev = "refs/tags/v${version}"; - sha256 = "1gm0bn2llzfzz9bfsz11fhwxj5lxvyrq7bc13fjj033nljzxn7k8"; + sha256 = "087pkwa6slxff0aiz3v42gww007nww97bl1p96fvvs7rr1y14gjx"; }; depsBuildBuild = [ buildPackages.stdenv.cc ]; From 7edd0389e142d3c7f19551d4ca45e2324ca0af12 Mon Sep 17 00:00:00 2001 From: Ben Wolsieffer Date: Sun, 30 Dec 2018 17:39:29 -0500 Subject: [PATCH 3/8] arm-trusted-firmware: add RK3399 --- pkgs/misc/arm-trusted-firmware/default.nix | 12 +++++++++++- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/pkgs/misc/arm-trusted-firmware/default.nix b/pkgs/misc/arm-trusted-firmware/default.nix index 4cb137b8535..73e2a96d0cd 100644 --- a/pkgs/misc/arm-trusted-firmware/default.nix +++ b/pkgs/misc/arm-trusted-firmware/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, buildPackages }: +{ stdenv, fetchFromGitHub, pkgsCross, buildPackages }: let buildArmTrustedFirmware = { filesToInstall @@ -22,6 +22,9 @@ let depsBuildBuild = [ buildPackages.stdenv.cc ]; + # For Cortex-M0 firmware in RK3399 + nativeBuildInputs = [ pkgsCross.arm-embedded.stdenv.cc ]; + makeFlags = [ "CROSS_COMPILE=${stdenv.cc.targetPrefix}" "PLAT=${platform}" @@ -83,4 +86,11 @@ in rec { extraMeta.platforms = ["aarch64-linux"]; filesToInstall = [ "build/${platform}/release/bl31/bl31.elf"]; }; + + armTrustedFirmwareRK3399 = buildArmTrustedFirmware rec { + extraMakeFlags = [ "bl31" ]; + platform = "rk3399"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = [ "build/${platform}/release/bl31/bl31.elf"]; + }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 22147e4eb88..48af0d7d881 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14254,6 +14254,7 @@ in armTrustedFirmwareAllwinner armTrustedFirmwareQemu armTrustedFirmwareRK3328 + armTrustedFirmwareRK3399 ; microcodeAmd = callPackage ../os-specific/linux/microcode/amd.nix { }; From bb72c0668d9481da8a11bce3f69fbfff5f89252e Mon Sep 17 00:00:00 2001 From: Ben Wolsieffer Date: Sun, 30 Dec 2018 18:37:44 -0500 Subject: [PATCH 4/8] pythonPackages.libfdt: init libfdt is a Python library included in the dtc package. --- pkgs/top-level/python-packages.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 657e1cb4330..14c083202a2 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1551,6 +1551,10 @@ in { libais = callPackage ../development/python-modules/libais { }; + libfdt = disabledIf isPy3k (toPythonModule (pkgs.dtc.override { + python2 = python; + })); + libtmux = callPackage ../development/python-modules/libtmux { }; libusb1 = callPackage ../development/python-modules/libusb1 { inherit (pkgs) libusb1; }; From e245086709ebc3b8cef01ffc4f35748a55839cf2 Mon Sep 17 00:00:00 2001 From: Ben Wolsieffer Date: Sun, 30 Dec 2018 18:44:03 -0500 Subject: [PATCH 5/8] uboot: add RockPro64, fix Rock64 build Switch the Rock64 build from a newer, less maintained U-Boot tree, to an older but more maintained and featureful version. --- pkgs/misc/uboot/default.nix | 24 ++++++++++++--------- pkgs/misc/uboot/rock64.nix | 14 ++++++------- pkgs/misc/uboot/rockpro64.nix | 37 +++++++++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 4 files changed, 60 insertions(+), 17 deletions(-) create mode 100644 pkgs/misc/uboot/rockpro64.nix diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index ac77df8d7cd..44d2bfc4400 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fetchpatch, bc, bison, dtc, flex, openssl, python2, swig +{ stdenv, lib, fetchurl, fetchpatch, bc, bison, dtc, flex, openssl, python2, swig , armTrustedFirmwareAllwinner , buildPackages }: @@ -14,7 +14,7 @@ let stdenv.mkDerivation (rec { name = "uboot-${defconfig}-${version}"; - version = "2018.09"; + version = args.version or "2018.09"; src = fetchurl { url = "ftp://ftp.denx.de/pub/u-boot/u-boot-${version}.tar.bz2"; @@ -22,10 +22,6 @@ let }; patches = [ - (fetchpatch { - url = https://github.com/dezgeg/u-boot/commit/pythonpath-2018-07.patch; - sha256 = "096zqrlr8m9lxjma0iv7y6x78qswfs3q1w2irjkbmcvniz1azbs8"; - }) (fetchpatch { url = https://github.com/dezgeg/u-boot/commit/extlinux-path-length-2018-03.patch; sha256 = "07jafdnxvqv8lz256qy29agjc2k1zj5ad4k28r1w5qkhwj4ixmf8"; @@ -36,7 +32,15 @@ let patchShebangs tools ''; - nativeBuildInputs = [ bc bison dtc flex openssl python2 swig ]; + nativeBuildInputs = [ + bc + bison + dtc + flex + openssl + (buildPackages.python2.withPackages (p: [ p.libfdt ])) + swig + ]; depsBuildBuild = [ buildPackages.stdenv.cc ]; hardeningDisable = [ "all" ]; @@ -58,7 +62,7 @@ let runHook preInstall mkdir -p ${installDir} - cp ${stdenv.lib.concatStringsSep " " filesToInstall} ${installDir} + cp ${lib.concatStringsSep " " filesToInstall} ${installDir} runHook postInstall ''; @@ -68,7 +72,7 @@ let dontStrip = true; - meta = with stdenv.lib; { + meta = with lib; { homepage = http://www.denx.de/wiki/U-Boot/; description = "Boot loader for embedded systems"; license = licenses.gpl2; @@ -84,7 +88,7 @@ in rec { installDir = "$out/bin"; hardeningDisable = []; dontStrip = false; - extraMeta.platforms = stdenv.lib.platforms.linux; + extraMeta.platforms = lib.platforms.linux; extraMakeFlags = [ "HOST_TOOLS_ALL=y" "CROSS_BUILD_TOOLS=1" "NO_SDL=1" "tools" ]; postConfigure = '' sed -i '/CONFIG_SYS_TEXT_BASE/c\CONFIG_SYS_TEXT_BASE=0x00000000' .config diff --git a/pkgs/misc/uboot/rock64.nix b/pkgs/misc/uboot/rock64.nix index 623c6015534..2037036f53d 100644 --- a/pkgs/misc/uboot/rock64.nix +++ b/pkgs/misc/uboot/rock64.nix @@ -2,25 +2,25 @@ rkbin = fetchFromGitHub { owner = "ayufan-rock64"; repo = "rkbin"; - rev = "d8b90685b3d93c358936babdd854f1018bc6d35e"; - sha256 = "0wrh3xa968sdp0j9n692jnv3071ymab719zc56vllba0aaabiaxr"; + rev = "af17d09dee19b41f4f01e1722eaf6911fb296245"; + sha256 = "189f7h6wj2yrcc5ga103jnyysykf9j3j9p1vcy7791bxwxqxnggf"; }; in buildUBoot rec { name = "uboot-${defconfig}-${version}"; - version = "2018.01"; + version = "2017.09"; src = fetchFromGitHub { owner = "ayufan-rock64"; repo = "linux-u-boot"; - rev = "19e31fac0dee3c4f6b2ea4371e4321f79db0f495"; - sha256 = "1vmv7q9yafsc0zivd0qdfmf930dvhzkf4a3j6apxxgx9g10wgwrg"; + rev = "d646df03ace3bd191e24361944ce1c7ef3c8744c"; + sha256 = "0gclcd034qfhfbabrdqmky08i0hlwmn63n0zg6mndplms5qpcx75"; }; extraMakeFlags = [ "BL31=${armTrustedFirmwareRK3328}/bl31.elf" "u-boot.itb" "all" ]; - # So close to being blob free... But U-Boot TPL causes the kernel to hang + # Close to being blob free, but the U-Boot TPL causes the kernel to hang after a few minutes postBuild = '' - ./tools/mkimage -n rk3328 -T rksd -d ${rkbin}/rk33/rk3328_ddr_786MHz_v1.06.bin idbloader.img + ./tools/mkimage -n rk3328 -T rksd -d ${rkbin}/rk33/rk3328_ddr_786MHz_v1.13.bin idbloader.img cat spl/u-boot-spl.bin >> idbloader.img dd if=u-boot.itb of=idbloader.img seek=448 conv=notrunc ''; diff --git a/pkgs/misc/uboot/rockpro64.nix b/pkgs/misc/uboot/rockpro64.nix new file mode 100644 index 00000000000..f885fc37a22 --- /dev/null +++ b/pkgs/misc/uboot/rockpro64.nix @@ -0,0 +1,37 @@ +{ lib, buildUBoot, fetchFromGitHub }: let + rkbin = fetchFromGitHub { + owner = "ayufan-rock64"; + repo = "rkbin"; + rev = "af17d09dee19b41f4f01e1722eaf6911fb296245"; + sha256 = "189f7h6wj2yrcc5ga103jnyysykf9j3j9p1vcy7791bxwxqxnggf"; + }; +in buildUBoot rec { + name = "uboot-${defconfig}-${version}"; + version = "2017.09"; + + src = fetchFromGitHub { + owner = "ayufan-rock64"; + repo = "linux-u-boot"; + rev = "d646df03ace3bd191e24361944ce1c7ef3c8744c"; + sha256 = "0gclcd034qfhfbabrdqmky08i0hlwmn63n0zg6mndplms5qpcx75"; + }; + + # Upstream ATF hangs in SPL + extraMakeFlags = [ "BL31=${rkbin}/rk33/rk3399_bl31_v1.17.elf" "u-boot.itb" "all" ]; + + postBuild = '' + ./tools/mkimage -n rk3399 -T rksd -d ${rkbin}/rk33/rk3399_ddr_933MHz_v1.13.bin idbloader.img + cat spl/u-boot-spl.bin >> idbloader.img + dd if=u-boot.itb of=idbloader.img seek=448 conv=notrunc + ''; + + defconfig = "rockpro64-rk3399_defconfig"; + filesToInstall = [ "spl/u-boot-spl.bin" "u-boot.itb" "idbloader.img"]; + + extraMeta = with lib; { + maintainers = [ maintainers.lopsided98 ]; + platforms = ["aarch64-linux"]; + # Because of the TPL and ATF (BL31) blobs + license = licenses.unfreeRedistributableFirmware; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 48af0d7d881..d9af76373d9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15304,6 +15304,8 @@ in ubootRock64 = callPackage ../misc/uboot/rock64.nix { }; + ubootRockPro64 = callPackage ../misc/uboot/rockpro64.nix { }; + uclibc = callPackage ../os-specific/linux/uclibc { }; uclibcCross = callPackage ../os-specific/linux/uclibc { From 26079c4da73172f4d51ceca2ef9a641bcc1e0777 Mon Sep 17 00:00:00 2001 From: Ben Wolsieffer Date: Tue, 1 Jan 2019 01:05:36 -0500 Subject: [PATCH 6/8] uboot: buildUBoot: add extraConfig parameter --- pkgs/misc/uboot/default.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index 44d2bfc4400..5affd93279c 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -7,6 +7,7 @@ let buildUBoot = { filesToInstall , installDir ? "$out" , defconfig + , extraConfig ? "" , extraPatches ? [] , extraMakeFlags ? [] , extraMeta ? {} @@ -50,11 +51,15 @@ let "CROSS_COMPILE=${stdenv.cc.targetPrefix}" ] ++ extraMakeFlags; + passAsFile = [ "extraConfig" ]; + configurePhase = '' runHook preConfigure make ${defconfig} + cat $extraConfigPath >> .config + runHook postConfigure ''; @@ -242,10 +247,8 @@ in rec { extraMeta.platforms = ["armv7l-linux"]; filesToInstall = ["u-boot-with-nand-spl.imx"]; buildFlags = "u-boot-with-nand-spl.imx"; - postConfigure = '' - cat >> .config << EOF + extraConfig = '' CONFIG_CMD_SETEXPR=y - EOF ''; # sata init; load sata 0 $loadaddr u-boot-with-nand-spl.imx # sf probe; sf update $loadaddr 0 80000 From 404773e33673e0bf0ca31ae04f33ea75de76b133 Mon Sep 17 00:00:00 2001 From: Ben Wolsieffer Date: Sat, 5 Jan 2019 16:10:10 -0500 Subject: [PATCH 7/8] uboot: use pname and cleanup version specification --- pkgs/misc/uboot/default.nix | 7 ++++--- pkgs/misc/uboot/rock64.nix | 1 - pkgs/misc/uboot/rockpro64.nix | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index 5affd93279c..a8e46671cae 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -4,7 +4,8 @@ }: let - buildUBoot = { filesToInstall + buildUBoot = { version ? "2018.09" + , filesToInstall , installDir ? "$out" , defconfig , extraConfig ? "" @@ -14,8 +15,8 @@ let , ... } @ args: stdenv.mkDerivation (rec { - name = "uboot-${defconfig}-${version}"; - version = args.version or "2018.09"; + pname = "uboot-${defconfig}"; + inherit version; src = fetchurl { url = "ftp://ftp.denx.de/pub/u-boot/u-boot-${version}.tar.bz2"; diff --git a/pkgs/misc/uboot/rock64.nix b/pkgs/misc/uboot/rock64.nix index 2037036f53d..af8d044387a 100644 --- a/pkgs/misc/uboot/rock64.nix +++ b/pkgs/misc/uboot/rock64.nix @@ -6,7 +6,6 @@ sha256 = "189f7h6wj2yrcc5ga103jnyysykf9j3j9p1vcy7791bxwxqxnggf"; }; in buildUBoot rec { - name = "uboot-${defconfig}-${version}"; version = "2017.09"; src = fetchFromGitHub { diff --git a/pkgs/misc/uboot/rockpro64.nix b/pkgs/misc/uboot/rockpro64.nix index f885fc37a22..d8802e6d5f5 100644 --- a/pkgs/misc/uboot/rockpro64.nix +++ b/pkgs/misc/uboot/rockpro64.nix @@ -6,7 +6,6 @@ sha256 = "189f7h6wj2yrcc5ga103jnyysykf9j3j9p1vcy7791bxwxqxnggf"; }; in buildUBoot rec { - name = "uboot-${defconfig}-${version}"; version = "2017.09"; src = fetchFromGitHub { From 414c42a697b567c0e711b276cc1342418418aa77 Mon Sep 17 00:00:00 2001 From: Ben Wolsieffer Date: Fri, 18 Jan 2019 21:00:58 -0500 Subject: [PATCH 8/8] ubootRock64, ubootRockPro64: use dtc 1.4.5 --- pkgs/development/compilers/dtc/default.nix | 2 +- pkgs/misc/uboot/default.nix | 2 +- pkgs/top-level/all-packages.nix | 30 ++++++++++++++++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/pkgs/development/compilers/dtc/default.nix b/pkgs/development/compilers/dtc/default.nix index 09ef27fc301..9cc60003201 100644 --- a/pkgs/development/compilers/dtc/default.nix +++ b/pkgs/development/compilers/dtc/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchgit, fetchpatch, flex, bison, pkgconfig, python2, swig, which }: stdenv.mkDerivation rec { - name = "dtc-${version}"; + pname = "dtc"; version = "1.4.7"; src = fetchgit { diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index a8e46671cae..084cb33a7a2 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, fetchpatch, bc, bison, dtc, flex, openssl, python2, swig +{ stdenv, lib, fetchurl, fetchpatch, bc, bison, dtc, flex, openssl, swig , armTrustedFirmwareAllwinner , buildPackages }: diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d9af76373d9..41b92763209 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15302,9 +15302,35 @@ in # Non-upstream U-Boots: ubootNanonote = callPackage ../misc/uboot/nanonote.nix { }; - ubootRock64 = callPackage ../misc/uboot/rock64.nix { }; + inherit (let + dtc = buildPackages.dtc.overrideAttrs (old: rec { + version = "1.4.5"; + src = fetchgit { + url = "https://git.kernel.org/pub/scm/utils/dtc/dtc.git"; + rev = "refs/tags/v${version}"; + sha256 = "10y5pbkcj5gkijcgnlvrh6q2prpnvsgihb9asz3zfp66mcjwzsy3"; + }; + }); + # Newer dtc versions are incompatible with U-Boot 2017.09 + inherit (callPackage ../misc/uboot { + inherit dtc; + buildPackages = buildPackages // { + python2 = buildPackages.python2.override (old: { + packageOverrides = pySelf: pySuper: { + libfdt = pySelf.toPythonModule dtc; + }; + }); + }; + }) buildUBoot; + in { + ubootRock64 = callPackage ../misc/uboot/rock64.nix { + inherit buildUBoot; + }; - ubootRockPro64 = callPackage ../misc/uboot/rockpro64.nix { }; + ubootRockPro64 = callPackage ../misc/uboot/rockpro64.nix { + inherit buildUBoot; + }; + }) ubootRock64 ubootRockPro64; uclibc = callPackage ../os-specific/linux/uclibc { };