3
0
Fork 0
forked from mirrors/nixpkgs

arm-trusted-firmware: init

ARM trusted firmware is required as part of the boot process on some ARMv8-A
boards. Currently, only the RK3328 is supported in nixpkgs.

This makes the Rock64 u-boot image bootable.
This commit is contained in:
Ben Wolsieffer 2018-02-23 21:46:39 -05:00 committed by Tuomas Tynkkynen
parent 0264c9bb47
commit 0ab76c5a4e
3 changed files with 70 additions and 2 deletions

View file

@ -0,0 +1,63 @@
{ stdenv, fetchFromGitHub, buildPackages }:
let
buildArmTrustedFirmware = { targetPlatforms
, filesToInstall
, installDir ? "$out"
, platform
, extraMakeFlags ? []
, extraMeta ? {}
, ... } @ args:
stdenv.mkDerivation (rec {
name = "arm-trusted-firmware-${platform}-${version}";
version = "1.4";
src = fetchFromGitHub {
owner = "ARM-software";
repo = "arm-trusted-firmware";
rev = "b762fc7481c66b64eb98b6ff694d569e66253973";
sha256 = "15m10dfgqkgw6rmzgfg1xzp1si9d5jwzyrcb7cp3y9ckj6mvp3i3";
};
depsBuildBuild = [ buildPackages.stdenv.cc ];
makeFlags = [
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
"PLAT=${platform}"
] ++ extraMakeFlags;
installPhase = ''
runHook preInstall
mkdir -p ${installDir}
cp ${stdenv.lib.concatStringsSep " " filesToInstall} ${installDir}
runHook postInstall
'';
hardeningDisable = [ "all" ];
dontStrip = true;
enableParallelBuilding = true;
meta = with stdenv.lib; {
homepage = https://github.com/ARM-software/arm-trusted-firmware;
description = "A reference implementation of secure world software for ARMv8-A";
license = licenses.bsd3;
maintainers = [ maintainers.lopsided98 ];
# TODO: Fix when #34444 is merged
# platforms = targetPlatforms;
} // extraMeta;
} // builtins.removeAttrs args [ "extraMeta" ]);
in rec {
inherit buildArmTrustedFirmware;
armTrustedFirmwareRK3328 = buildArmTrustedFirmware rec {
extraMakeFlags = [ "bl31" ];
platform = "rk3328";
targetPlatforms = ["aarch64-linux"];
filesToInstall = [ "build/${platform}/release/bl31/bl31.elf"];
};
}

View file

@ -1,4 +1,4 @@
{ buildUBoot, fetchFromGitHub }: buildUBoot rec {
{ lib, buildUBoot, fetchFromGitHub, armTrustedFirmwareRK3328 }: buildUBoot rec {
name = "uboot-${defconfig}-${version}";
version = "2018.01";
@ -9,7 +9,7 @@
sha256 = "1vmv7q9yafsc0zivd0qdfmf930dvhzkf4a3j6apxxgx9g10wgwrg";
};
extraMakeFlags = [ "u-boot.itb" "all" ];
extraMakeFlags = [ "BL31=${armTrustedFirmwareRK3328}/bl31.elf" "u-boot.itb" "all" ];
postBuild = ''
./tools/mkimage -n rk3328 -T rksd -d tpl/u-boot-tpl.bin idbloader.img
cat spl/u-boot-spl.bin >> idbloader.img

View file

@ -12874,6 +12874,11 @@ with pkgs;
alsaOss = callPackage ../os-specific/linux/alsa-oss { };
alsaTools = callPackage ../os-specific/linux/alsa-tools { };
inherit (callPackage ../misc/arm-trusted-firmware {})
buildArmTrustedFirmware
armTrustedFirmwareRK3328
;
microcodeAmd = callPackage ../os-specific/linux/microcode/amd.nix { };
microcodeIntel = callPackage ../os-specific/linux/microcode/intel.nix { };