diff options
author | Ben Wolsieffer <benwolsieffer@gmail.com> | 2018-02-23 21:46:39 -0500 |
---|---|---|
committer | Tuomas Tynkkynen <tuomas@tuxera.com> | 2018-03-18 18:53:12 +0200 |
commit | 0ab76c5a4ed28baba3e0bfcdf25a89b78c44e0d8 (patch) | |
tree | 157458f2511c730f9c4726dbb77c8ae3e5fbf7f3 /pkgs/misc/arm-trusted-firmware | |
parent | 0264c9bb4785b283f888418a53be223696c844fa (diff) |
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.
Diffstat (limited to 'pkgs/misc/arm-trusted-firmware')
-rw-r--r-- | pkgs/misc/arm-trusted-firmware/default.nix | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/pkgs/misc/arm-trusted-firmware/default.nix b/pkgs/misc/arm-trusted-firmware/default.nix new file mode 100644 index 000000000000..fdaf109ebffe --- /dev/null +++ b/pkgs/misc/arm-trusted-firmware/default.nix @@ -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"]; + }; +} |