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:
parent
0264c9bb47
commit
0ab76c5a4e
63
pkgs/misc/arm-trusted-firmware/default.nix
Normal file
63
pkgs/misc/arm-trusted-firmware/default.nix
Normal 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"];
|
||||
};
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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 { };
|
||||
|
|
Loading…
Reference in a new issue