wip-pinebook-pro/u-boot/default.nix

122 lines
3.3 KiB
Nix

{ buildUBoot
, lib
, python
, armTrustedFirmwareRK3399
, fetchpatch
, fetchFromGitLab
, fetchFromGitHub
, externalFirst ? false
, runCommandNoCC
}:
let
pw = id: sha256: fetchpatch {
inherit sha256;
name = "${id}.patch";
url = "https://patchwork.ozlabs.org/patch/${id}/raw/";
};
# The version number for our opinionated firmware.
firmwareVersion = "004";
logo = runCommandNoCC "pbp-logo" {} ''
mkdir -p $out
cp ${../artwork/nixos+pine-rle.bmp} $out/logo.bmp
(cd $out; gzip -k logo.bmp)
'';
atf = armTrustedFirmwareRK3399.overrideAttrs(oldAttrs: {
src = fetchFromGitHub {
owner = "ARM-software";
repo = "arm-trusted-firmware";
rev = "9935047b2086faa3bf3ccf0b95a76510eb5a160b";
sha256 = "1a6pm0nbgm5r3a41nwlkrli90l2blcijb02li7h75xcri6rb7frk";
};
version = "2020-06-17";
});
in
(buildUBoot {
defconfig = "pinebook-pro-rk3399_defconfig";
extraMeta.platforms = ["aarch64-linux"];
BL31 = "${atf}/bl31.elf";
filesToInstall = [
"idbloader.img"
"u-boot.itb"
".config"
];
extraPatches = [
# Upstream upcoming patches
# -------------------------
#
# https://patchwork.ozlabs.org/project/uboot/list/?series=182073
#
# RNG
# https://patchwork.ozlabs.org/patch/1305440/
(pw "1305440" "1w4vvj3la34rsdf5snlvjl9yxnxrybczjz8m73891x1r6lvr1agk")
# USB
# https://patchwork.ozlabs.org/patch/1305441/
(pw "1305441" "1my6vz2j7dp6k9qdyf4kzyfy2fgvj4bhxq0xnjkdvsasiz7rq2x9")
# SPI has been skipped as it seemed to cause issues.
# Upcoming patches
# ----------------
#
# These are not yet available on Patchwork. They are of *beta* quality.
# http://people.hupstream.com/~rtp/pbp/20200706/patches/series
#
# I have been authorised to distribute.
#
./0001-display-support.patch
# Dhivael patchset
# ----------------
#
# Origin: https://git.eno.space/pbp-uboot.git/
# Forward ported to 2020.07
./0001-rk3399-light-pinebook-power-and-standby-leds-during-.patch
./0002-reduce-pinebook_pro-bootdelay-to-1.patch
./0005-support-SPI-flash-boot.patch
# samueldr's patchset
# -------------------
./0001-opinionated-boot.patch
] ++ lib.optionals (externalFirst) [
# Origin: https://git.eno.space/pbp-uboot.git/
# Forward ported to 2020.07
./0003-rockchip-move-mmc1-before-mmc0-in-default-boot-order.patch
./0004-rockchip-move-usb0-after-mmc1-in-default-boot-order.patch
];
extraConfig = ''
CONFIG_IDENT_STRING=" (samueldr-pbp) v${firmwareVersion}"
'';
})
.overrideAttrs(oldAttrs: {
nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [
python
];
postPatch = oldAttrs.postPatch + ''
patchShebangs arch/arm/mach-rockchip/
'';
postInstall = ''
tools/mkimage -n rk3399 -T rkspi -d tpl/u-boot-tpl-dtb.bin:spl/u-boot-spl-dtb.bin spl.bin
cat <(dd if=spl.bin bs=512K conv=sync) u-boot.itb > $out/u-boot.spiflash.bin
'';
makeFlags = oldAttrs.makeFlags ++ [
"LOGO_BMP=${logo}/logo.bmp"
];
src = fetchFromGitLab {
domain = "gitlab.denx.de";
owner = "u-boot";
repo = "u-boot";
sha256 = "11154cxycw81dnmxfl10n2mgyass18jhjpwygqp7w1vjk9hgi4lw";
rev = "v2020.07";
};
})