mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 17:27:14 +08:00 
			
		
		
		
	rockchip: support generic firmware installation
This commit is contained in:
		
				
					committed by
					
						
						mergify[bot]
					
				
			
			
				
	
			
			
			
						parent
						
							ab84bd93a3
						
					
				
				
					commit
					0b2e2fe9b3
				
			@@ -74,8 +74,8 @@ Below is an annoated flake example to create the initial boot image.
 | 
			
		||||
            # Override the default bootloader with a cross built one.
 | 
			
		||||
            # Use this if you do not have binfmt configured on your system.
 | 
			
		||||
            # For NixOS, please add `boot.binfmt.emulatedSystems = [ "aarch64-linux" ];` to your system configuration.
 | 
			
		||||
            # Update the system and the firmware package according to your device.
 | 
			
		||||
            # hardware.radxa.rock-4c-plus.platformFirmware = nixpkgs-unfree.legacyPackages.x86_64-linux.pkgsCross.aarch64-multiplatform.ubootRock4CPlus;
 | 
			
		||||
            # Read the device module to see how it was configured.
 | 
			
		||||
            # hardware.rockchip.platformFirmware = nixpkgs-unfree.legacyPackages.x86_64-linux.pkgsCross.aarch64-multiplatform.ubootRock4CPlus;
 | 
			
		||||
 | 
			
		||||
            users.users.radxa = {
 | 
			
		||||
              isNormalUser = true;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,29 +2,18 @@
 | 
			
		||||
, pkgs
 | 
			
		||||
, config
 | 
			
		||||
, ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.hardware.radxa.rock-4c-plus;
 | 
			
		||||
  rkCfg = config.hardware.rockchip;
 | 
			
		||||
in {
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ../.
 | 
			
		||||
    ../../rockchip
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.hardware.radxa.rock-4c-plus = {
 | 
			
		||||
    platformFirmware = lib.mkPackageOption pkgs "ubootRock4CPlus" { };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = {
 | 
			
		||||
    hardware = {
 | 
			
		||||
      radxa.enable = true;
 | 
			
		||||
      rockchip = {
 | 
			
		||||
        rk3399.enable = true;
 | 
			
		||||
        diskoExtraPostVM = ''
 | 
			
		||||
          dd conv=notrunc,fsync if=${cfg.platformFirmware}/idbloader.img of=$out/${rkCfg.diskoImageName} bs=512 seek=64
 | 
			
		||||
          dd conv=notrunc,fsync if=${cfg.platformFirmware}/u-boot.itb of=$out/${rkCfg.diskoImageName} bs=512 seek=16384
 | 
			
		||||
        '';
 | 
			
		||||
        platformFirmware = pkgs.ubootRock4CPlus;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 
 | 
			
		||||
@@ -2,29 +2,18 @@
 | 
			
		||||
, pkgs
 | 
			
		||||
, config
 | 
			
		||||
, ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.hardware.radxa.rock-5b;
 | 
			
		||||
  rkCfg = config.hardware.rockchip;
 | 
			
		||||
in {
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ../.
 | 
			
		||||
    ../../rockchip
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.hardware.radxa.rock-5b = {
 | 
			
		||||
    platformFirmware = lib.mkPackageOption pkgs "ubootRock5ModelB" { };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = {
 | 
			
		||||
    hardware = {
 | 
			
		||||
      radxa.enable = true;
 | 
			
		||||
      rockchip = {
 | 
			
		||||
        rk3588.enable = true;
 | 
			
		||||
        diskoExtraPostVM = ''
 | 
			
		||||
          dd conv=notrunc,fsync if=${cfg.platformFirmware}/idbloader.img of=$out/${rkCfg.diskoImageName} bs=512 seek=64
 | 
			
		||||
          dd conv=notrunc,fsync if=${cfg.platformFirmware}/u-boot.itb of=$out/${rkCfg.diskoImageName} bs=512 seek=16384
 | 
			
		||||
        '';
 | 
			
		||||
        platformFirmware = pkgs.ubootRock5ModelB;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 
 | 
			
		||||
@@ -2,29 +2,18 @@
 | 
			
		||||
, pkgs
 | 
			
		||||
, config
 | 
			
		||||
, ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.hardware.radxa.rock-pi-4;
 | 
			
		||||
  rkCfg = config.hardware.rockchip;
 | 
			
		||||
in {
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ../.
 | 
			
		||||
    ../../rockchip
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.hardware.radxa.rock-pi-4 = {
 | 
			
		||||
    platformFirmware = lib.mkPackageOption pkgs "ubootRockPi4" { };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = {
 | 
			
		||||
    hardware = {
 | 
			
		||||
      radxa.enable = true;
 | 
			
		||||
      rockchip = {
 | 
			
		||||
        rk3399.enable = true;
 | 
			
		||||
        diskoExtraPostVM = ''
 | 
			
		||||
          dd conv=notrunc,fsync if=${cfg.platformFirmware}/idbloader.img of=$out/${rkCfg.diskoImageName} bs=512 seek=64
 | 
			
		||||
          dd conv=notrunc,fsync if=${cfg.platformFirmware}/u-boot.itb of=$out/${rkCfg.diskoImageName} bs=512 seek=16384
 | 
			
		||||
        '';
 | 
			
		||||
        platformFirmware = pkgs.ubootRockPi4;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 
 | 
			
		||||
@@ -17,12 +17,26 @@ in {
 | 
			
		||||
      type = lib.types.str;
 | 
			
		||||
      default = "main.raw";
 | 
			
		||||
      description = ''
 | 
			
		||||
        The output image name for Disko.
 | 
			
		||||
        Can be used by diskoExtraPostVM.
 | 
			
		||||
        The output image name of Disko.
 | 
			
		||||
        You need to match this value with the real image name. Setting it alone
 | 
			
		||||
        won't change the output image name, as it is controlled by Disko module.
 | 
			
		||||
 | 
			
		||||
        Can be used in diskoExtraPostVM.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
    platformFirmware = lib.mkPackageOption pkgs "platform firmware" {
 | 
			
		||||
      default = null;
 | 
			
		||||
    };
 | 
			
		||||
    diskoExtraPostVM = lib.mkOption {
 | 
			
		||||
      type = lib.types.str;
 | 
			
		||||
      default = ''
 | 
			
		||||
        ${lib.getExe' pkgs.coreutils "dd"} conv=notrunc,fsync if=${config.hardware.rockchip.platformFirmware}/idbloader.img of=$out/${config.hardware.rockchip.diskoImageName} bs=512 seek=64
 | 
			
		||||
        ${lib.getExe' pkgs.coreutils "dd"} conv=notrunc,fsync if=${config.hardware.rockchip.platformFirmware}/u-boot.itb of=$out/${config.hardware.rockchip.diskoImageName} bs=512 seek=16384
 | 
			
		||||
      '';
 | 
			
		||||
      defaultText = lib.literalExpression ''
 | 
			
		||||
        ${lib.getExe' pkgs.coreutils "dd"} conv=notrunc,fsync if=${config.hardware.rockchip.platformFirmware}/idbloader.img of=$out/${config.hardware.rockchip.diskoImageName} bs=512 seek=64
 | 
			
		||||
        ${lib.getExe' pkgs.coreutils "dd"} conv=notrunc,fsync if=${config.hardware.rockchip.platformFirmware}/u-boot.itb of=$out/${config.hardware.rockchip.diskoImageName} bs=512 seek=16384
 | 
			
		||||
      '';
 | 
			
		||||
      description = ''
 | 
			
		||||
        The post VM hook for Disko's Image Builder.
 | 
			
		||||
        Can be used to install platform firmware like U-Boot.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user