Merge pull request #191538 from lorenz/rock64-uboot-improvements

u-boot: ROCK64 RAM init improvements

Changed files
+20 -24
pkgs
misc
arm-trusted-firmware
uboot
top-level
-1
pkgs/misc/arm-trusted-firmware/default.nix
···
platform = "rk3328";
extraMeta.platforms = ["aarch64-linux"];
filesToInstall = [ "build/${platform}/release/bl31/bl31.elf"];
-
platformCanUseHDCPBlob = true;
};
armTrustedFirmwareRK3399 = buildArmTrustedFirmware rec {
···
platform = "rk3328";
extraMeta.platforms = ["aarch64-linux"];
filesToInstall = [ "build/${platform}/release/bl31/bl31.elf"];
};
armTrustedFirmwareRK3399 = buildArmTrustedFirmware rec {
+19 -23
pkgs/misc/uboot/default.nix
···
filesToInstall = ["u-boot.bin"];
};
-
ubootRock64 = let
-
rkbin = fetchFromGitHub {
-
owner = "ayufan-rock64";
-
repo = "rkbin";
-
rev = "f79a708978232a2b6b06c2e4173c5314559e0d3a";
-
sha256 = "0h7xm4ck3p3380c6bqm5ixrkxwcx6z5vysqdwvfa7gcqx5d6x5zz";
-
};
-
in buildUBoot {
defconfig = "rock64-rk3328_defconfig";
-
extraMeta = {
-
platforms = [ "aarch64-linux" ];
-
license = lib.licenses.unfreeRedistributableFirmware;
-
};
BL31="${armTrustedFirmwareRK3328}/bl31.elf";
-
filesToInstall = [ "u-boot.itb" "idbloader.img"];
-
# Derive MAC address from cpuid
-
# Submitted upstream: https://patchwork.ozlabs.org/patch/1203686/
-
extraConfig = ''
-
CONFIG_MISC_INIT_R=y
-
'';
-
# Close to being blob free, but the U-Boot TPL causes random memory
-
# corruption
-
postBuild = ''
-
./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
'';
};
ubootRockPro64 = buildUBoot {
···
filesToInstall = ["u-boot.bin"];
};
+
ubootRock64 = buildUBoot {
defconfig = "rock64-rk3328_defconfig";
+
extraMeta.platforms = [ "aarch64-linux" ];
BL31="${armTrustedFirmwareRK3328}/bl31.elf";
+
filesToInstall = [ "u-boot.itb" "idbloader.img" "u-boot-rockchip.bin" ];
+
};
+
+
# A special build with much lower memory frequency (666 vs 1600 MT/s) which
+
# makes ROCK64 V2 boards stable. This is necessary because the DDR3 routing
+
# on that revision is marginal and not uncoditionally stable at the specified
+
# frequency. If your ROCK64 is unstable you can try this u-boot variant to
+
# see if it works better for you. The only disadvantage is lowered memory
+
# bandwidth.
+
ubootRock64v2 = buildUBoot {
+
prePatch = ''
+
substituteInPlace arch/arm/dts/rk3328-rock64-u-boot.dtsi \
+
--replace rk3328-sdram-lpddr3-1600.dtsi rk3328-sdram-lpddr3-666.dtsi
'';
+
defconfig = "rock64-rk3328_defconfig";
+
extraMeta.platforms = [ "aarch64-linux" ];
+
BL31="${armTrustedFirmwareRK3328}/bl31.elf";
+
filesToInstall = [ "u-boot.itb" "idbloader.img" "u-boot-rockchip.bin" ];
};
ubootRockPro64 = buildUBoot {
+1
pkgs/top-level/all-packages.nix
···
ubootRaspberryPi4_64bit
ubootRaspberryPiZero
ubootRock64
ubootRockPi4
ubootRockPro64
ubootROCPCRK3399
···
ubootRaspberryPi4_64bit
ubootRaspberryPiZero
ubootRock64
+
ubootRock64v2
ubootRockPi4
ubootRockPro64
ubootROCPCRK3399