mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 17:27:14 +08:00 
			
		
		
		
	Add support for i.MX93-EVK platform
The i.MX93 EVK provides a platform for comprehensive evaluation of the i.MX93 application processors. This change adds support in NixOS hardware to provide a template for customized i.MX93-based platforms. Signed-off-by: Govind Singh <govind.singh@tii.ae>
This commit is contained in:
		
				
					committed by
					
						
						Jörg Thalheim
					
				
			
			
				
	
			
			
			
						parent
						
							46f9982c9b
						
					
				
				
					commit
					34b7229b95
				
			@@ -331,6 +331,7 @@
 | 
			
		||||
          nxp-imx8mp-evk = import ./nxp/imx8mp-evk;
 | 
			
		||||
          nxp-imx8mq-evk = import ./nxp/imx8mq-evk;
 | 
			
		||||
          nxp-imx8qm-mek = import ./nxp/imx8qm-mek;
 | 
			
		||||
          nxp-imx93-evk = import ./nxp/imx93-evk;
 | 
			
		||||
          hardkernel-odroid-hc4 = import ./hardkernel/odroid-hc4;
 | 
			
		||||
          hardkernel-odroid-h3 = import ./hardkernel/odroid-h3;
 | 
			
		||||
          hardkernel-odroid-h4 = import ./hardkernel/odroid-h4;
 | 
			
		||||
 
 | 
			
		||||
@@ -21,17 +21,18 @@ Code snippet example that enables imx8qm configuration:
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 2.2 For imx8mq-evk/imx8mp-evk
 | 
			
		||||
### 2.2 For imx8mq-evk/imx8mp-evk/imx93-evk
 | 
			
		||||
This NXP overlay is used for generating sdimage.
 | 
			
		||||
Current configuration uses uboot as a bootloader. It provides an options to use optee-os which is currently disabled. It can be enabled using `enable-tee` boolean argument avalable in `imx8m<q/p>-boot.nix`, which is `false` by default.  
 | 
			
		||||
Current configuration uses uboot as a bootloader. It provides an options to use optee-os which is currently disabled. It can be enabled using `enable-tee` boolean argument avalable in `imx8m<q/p>-boot.nix`, which is `false` by default in imx8m platform.
 | 
			
		||||
 | 
			
		||||
Code snippet example that enables 'imx8mp-evk/emx8mq-evk' configuration:
 | 
			
		||||
Code snippet example that enables 'imx8mp-evk/imx8mq-evk/imx93-evk' configuration:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
{ nixos-hardware, }: {
 | 
			
		||||
  system = "aarch64-linux";
 | 
			
		||||
  modules = [
 | 
			
		||||
    nixos-hardware.nixosModules.imx8mp-evk  #For imx8mp-evk
 | 
			
		||||
    #nixos-hardware.nixosModules.imx93-evk  #For imx93-evk
 | 
			
		||||
    #nixos-hardware.nixosModules.imx8mq-evk  #For imx8mq-evk
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										50
									
								
								nxp/imx93-evk/bsp/imx93-atf.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								nxp/imx93-evk/bsp/imx93-atf.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
			
		||||
{ lib, fetchgit, stdenv, buildPackages, pkgsCross, openssl }:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
  target-board = "imx93";
 | 
			
		||||
in stdenv.mkDerivation rec {
 | 
			
		||||
  pname = "imx93-atf";
 | 
			
		||||
  version = "2.10.0";
 | 
			
		||||
  platform = target-board;
 | 
			
		||||
  enableParallelBuilding = true;
 | 
			
		||||
 | 
			
		||||
  src = fetchgit {
 | 
			
		||||
    url = "https://github.com/nxp-imx/imx-atf.git";
 | 
			
		||||
    rev = "28affcae957cb8194917b5246276630f9e6343e1";
 | 
			
		||||
    sha256 = "sha256-a8F+Lf8pwML+tCwawS0N/mrSXWPmFhlUeOg0MCRK3VE=";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Compiler dependencies
 | 
			
		||||
  depsBuildBuild = [ buildPackages.stdenv.cc ];
 | 
			
		||||
  nativeBuildInputs = [ pkgsCross.aarch64-embedded.stdenv.cc ];
 | 
			
		||||
 | 
			
		||||
  buildInputs = [ openssl ];
 | 
			
		||||
 | 
			
		||||
  makeFlags = [
 | 
			
		||||
    "HOSTCC=$(CC_FOR_BUILD)"
 | 
			
		||||
    "CROSS_COMPILE=${pkgsCross.aarch64-embedded.stdenv.cc.targetPrefix}"
 | 
			
		||||
    "PLAT=${platform}"
 | 
			
		||||
    "SPD=opteed"
 | 
			
		||||
    "bl31"
 | 
			
		||||
    "LDFLAGS=-no-warn-rwx-segments"
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
    runHook preInstall
 | 
			
		||||
    mkdir -p $out
 | 
			
		||||
    cp build/${target-board}/release/bl31.bin $out
 | 
			
		||||
    runHook postInstall
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  hardeningDisable = [ "all" ];
 | 
			
		||||
  dontStrip = true;
 | 
			
		||||
 | 
			
		||||
  meta = with lib; {
 | 
			
		||||
    homepage = "https://github.com/nxp-imx/imx-atf";
 | 
			
		||||
    description = "Reference implementation of secure world software for ARMv8-A";
 | 
			
		||||
    license = [ licenses.bsd3 ];
 | 
			
		||||
    maintainers = with maintainers; [ govindsi ];
 | 
			
		||||
    platforms = [ "aarch64-linux" ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										85
									
								
								nxp/imx93-evk/bsp/imx93-boot.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								nxp/imx93-evk/bsp/imx93-boot.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
}:
 | 
			
		||||
with pkgs;
 | 
			
		||||
let
 | 
			
		||||
  fw-ver = "202406";
 | 
			
		||||
 | 
			
		||||
  imx93-atf = pkgs.callPackage ./imx93-atf.nix { };
 | 
			
		||||
  imx93-firmware = pkgs.callPackage ./imx93-firmware.nix { };
 | 
			
		||||
  imx93-uboot = pkgs.callPackage ./imx93-uboot.nix { };
 | 
			
		||||
  imx93-optee-os = pkgs.callPackage ./imx93-optee-os.nix { };
 | 
			
		||||
  src = pkgs.fetchgit {
 | 
			
		||||
    url = "https://github.com/nxp-imx/imx-mkimage.git";
 | 
			
		||||
    #tag: lf-6.12.3
 | 
			
		||||
    rev = "4622115cbc037f79039c4522faeced4aabea986b";
 | 
			
		||||
    sha256 = "sha256-2gz0GxlB3jwy8PC6+cP3+MpyUzqE1vDTw8nuxK6vo3g=";
 | 
			
		||||
  };
 | 
			
		||||
  shortRev = builtins.substring 0 8 src.rev;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  imx93-boot = pkgs.stdenv.mkDerivation rec {
 | 
			
		||||
    inherit src;
 | 
			
		||||
    name = "imx93-mkimage";
 | 
			
		||||
    version = "lf-6.12.3";
 | 
			
		||||
 | 
			
		||||
    postPatch = ''
 | 
			
		||||
      substituteInPlace Makefile \
 | 
			
		||||
          --replace 'git rev-parse --short=8 HEAD' 'echo ${shortRev}'
 | 
			
		||||
      substituteInPlace Makefile \
 | 
			
		||||
          --replace 'CC = gcc' 'CC = clang'
 | 
			
		||||
      substituteInPlace iMX93/soc.mak \
 | 
			
		||||
        --replace 'xxd' "${pkgs.vim.xxd}/bin/xxd"
 | 
			
		||||
      substituteInPlace scripts/fspi_fcb_gen.sh \
 | 
			
		||||
        --replace 'xxd' "${pkgs.vim.xxd}/bin/xxd"
 | 
			
		||||
      substituteInPlace scripts/fspi_packer.sh \
 | 
			
		||||
        --replace 'xxd' "${pkgs.vim.xxd}/bin/xxd"
 | 
			
		||||
      patchShebangs scripts
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    nativeBuildInputs = [
 | 
			
		||||
      clang
 | 
			
		||||
      git
 | 
			
		||||
      dtc
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    buildInputs = [
 | 
			
		||||
      git
 | 
			
		||||
      glibc.static
 | 
			
		||||
      zlib
 | 
			
		||||
      zlib.static
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    buildPhase = ''
 | 
			
		||||
      runHook preBuild
 | 
			
		||||
 | 
			
		||||
      make bin
 | 
			
		||||
      # mkimage is common across imx8 and imx9
 | 
			
		||||
      make SOC=iMX8M mkimage_imx8
 | 
			
		||||
 | 
			
		||||
      if [ -f ${imx93-uboot}/u-boot.bin ]; then
 | 
			
		||||
        install -m 0644 ${imx93-uboot}/u-boot.bin ./iMX93/u-boot.bin
 | 
			
		||||
      else
 | 
			
		||||
       cat ${imx93-uboot}/u-boot-nodtb.bin ${imx93-uboot}/imx93-11x11-evk.dtb > ./iMX93/u-boot.bin
 | 
			
		||||
      fi
 | 
			
		||||
      install -m 0644 ${imx93-uboot}/u-boot-spl.bin ./iMX93/u-boot-spl.bin
 | 
			
		||||
      install -m 0644 ${imx93-uboot}/u-boot-nodtb.bin ./iMX93/u-boot-nodtb.bin
 | 
			
		||||
      install -m 0644 ${imx93-uboot}/imx93-11x11-evk.dtb ./iMX93/imx93-11x11-evk.dtb
 | 
			
		||||
      install -m 0644 ${imx93-optee-os}/tee.bin ./iMX93/tee.bin
 | 
			
		||||
      install -m 0644 ${imx93-atf}/bl31.bin ./iMX93/bl31.bin
 | 
			
		||||
      install -m 0644 ${imx93-firmware}/ddr/lpddr4* ./iMX93/
 | 
			
		||||
      install -m 0644 ${imx93-firmware}/ahab/mx93a1-ahab-container.img ./iMX93/
 | 
			
		||||
 | 
			
		||||
      make SOC=iMX9 flash_singleboot
 | 
			
		||||
 | 
			
		||||
      runHook postBuild
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    installPhase = ''
 | 
			
		||||
      runHook preInstall
 | 
			
		||||
      mkdir -p $out/image
 | 
			
		||||
      install -m 0644 ./iMX93/flash.bin $out/image
 | 
			
		||||
      runHook postInstall
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										47
									
								
								nxp/imx93-evk/bsp/imx93-firmware.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								nxp/imx93-evk/bsp/imx93-firmware.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
{ pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
with pkgs;
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  pname = "nxp-firmware";
 | 
			
		||||
  version = "nxp-firmware-8.21-0.11";
 | 
			
		||||
 | 
			
		||||
  # Fetch the two firmware installers from NXP
 | 
			
		||||
  ddrFirmware = fetchurl {
 | 
			
		||||
    url = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.21.bin";
 | 
			
		||||
    sha256 = "sha256-w0R/D4E0FczqncLvEggMs6yLvAxnOSp0/H1ZIF61pnI=";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  ahabFirmware = fetchurl {
 | 
			
		||||
    url = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-sentinel-0.11.bin";
 | 
			
		||||
    sha256 = "sha256-JpSAQXqK6apMxBAauUcof8M0VakxAh29xNm621ISvOs=";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ coreutils bash ];
 | 
			
		||||
 | 
			
		||||
  dontUnpack = true;
 | 
			
		||||
  dontStrip = true;
 | 
			
		||||
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
    mkdir -p $out
 | 
			
		||||
 | 
			
		||||
    echo "Extracting DDR firmware..."
 | 
			
		||||
    cp ${ddrFirmware} ./firmware-imx-8.21.bin
 | 
			
		||||
    chmod +x firmware-imx-8.21.bin
 | 
			
		||||
    ./firmware-imx-8.21.bin --auto-accept
 | 
			
		||||
 | 
			
		||||
    echo "Extracting AHAB firmware..."
 | 
			
		||||
    cp ${ahabFirmware} ./firmware-sentinel-0.11.bin
 | 
			
		||||
    chmod +x firmware-sentinel-0.11.bin
 | 
			
		||||
    ./firmware-sentinel-0.11.bin --auto-accept
 | 
			
		||||
 | 
			
		||||
    echo "Copying DDR .bin files..."
 | 
			
		||||
    mkdir -p $out/ddr
 | 
			
		||||
    cp firmware-imx-8.21/firmware/ddr/synopsys/lpddr4*.bin $out/ddr/
 | 
			
		||||
 | 
			
		||||
    echo "Copying AHAB container image..."
 | 
			
		||||
    mkdir -p $out/ahab
 | 
			
		||||
    cp firmware-sentinel-0.11/mx93a1-ahab-container.img $out/ahab/
 | 
			
		||||
 | 
			
		||||
  '';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										62
									
								
								nxp/imx93-evk/bsp/imx93-linux.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								nxp/imx93-evk/bsp/imx93-linux.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
{ lib, pkgs, ... }@args:
 | 
			
		||||
with pkgs;
 | 
			
		||||
buildLinux (
 | 
			
		||||
  args
 | 
			
		||||
  // rec {
 | 
			
		||||
    version = "6.12.3";
 | 
			
		||||
    name = "imx93-linux";
 | 
			
		||||
 | 
			
		||||
    # modDirVersion needs to be x.y.z, will automatically add .0 if needed
 | 
			
		||||
    modDirVersion = version;
 | 
			
		||||
 | 
			
		||||
    defconfig = "imx_v8_defconfig";
 | 
			
		||||
 | 
			
		||||
    # https://github.com/NixOS/nixpkgs/pull/366004
 | 
			
		||||
    # introduced a breaking change that if a module is declared but it is not being used it will faill.
 | 
			
		||||
    ignoreConfigErrors = true;
 | 
			
		||||
 | 
			
		||||
    kernelPatches = [
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    autoModules = false;
 | 
			
		||||
 | 
			
		||||
    extraConfig = ''
 | 
			
		||||
      CRYPTO_TLS m
 | 
			
		||||
      TLS y
 | 
			
		||||
      MD_RAID0 m
 | 
			
		||||
      MD_RAID1 m
 | 
			
		||||
      MD_RAID10 m
 | 
			
		||||
      MD_RAID456 m
 | 
			
		||||
      DM_VERITY m
 | 
			
		||||
      LOGO y
 | 
			
		||||
      FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER n
 | 
			
		||||
      FB_EFI n
 | 
			
		||||
      EFI_STUB y
 | 
			
		||||
      EFI y
 | 
			
		||||
      VIRTIO y
 | 
			
		||||
      VIRTIO_PCI y
 | 
			
		||||
      VIRTIO_BLK y
 | 
			
		||||
      DRM_VIRTIO_GPU y
 | 
			
		||||
      EXT4_FS y
 | 
			
		||||
      USBIP_CORE m
 | 
			
		||||
      USBIP_VHCI_HCD m
 | 
			
		||||
      USBIP_HOST m
 | 
			
		||||
      USBIP_VUDC m
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    src = fetchFromGitHub {
 | 
			
		||||
      owner = "nxp-imx";
 | 
			
		||||
      repo = "linux-imx";
 | 
			
		||||
      # tag: lf-6.12.3
 | 
			
		||||
      rev = "37d02f4dcbbe6677dc9f5fc17f386c05d6a7bd7a";
 | 
			
		||||
      sha256 = "sha256-1oJMbHR8Ho0zNritEJ+TMOAyYHCW0vwhPkDfLctrZa8=";
 | 
			
		||||
    };
 | 
			
		||||
   meta = with lib; {
 | 
			
		||||
    homepage = "https://github.com/nxp-imx/linux-imx";
 | 
			
		||||
    license = [ licenses.gpl2Only ];
 | 
			
		||||
    maintainers = with maintainers; [ govindsi ];
 | 
			
		||||
    platforms = [ "aarch64-linux" ];
 | 
			
		||||
  };
 | 
			
		||||
 }
 | 
			
		||||
  // (args.argsOverride or { })
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										75
									
								
								nxp/imx93-evk/bsp/imx93-optee-os.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								nxp/imx93-evk/bsp/imx93-optee-os.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,75 @@
 | 
			
		||||
{ 
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  inherit (pkgs.buildPackages) python3;
 | 
			
		||||
  toolchain = pkgs.gccStdenv.cc;
 | 
			
		||||
  binutils = pkgs.gccStdenv.cc.bintools.bintools_bin;
 | 
			
		||||
  cpp = pkgs.gcc;
 | 
			
		||||
in
 | 
			
		||||
pkgs.stdenv.mkDerivation rec {
 | 
			
		||||
  pname = "imx93-optee-os";
 | 
			
		||||
  version = "lf-6.12.3_1.0.0";
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [
 | 
			
		||||
    python3
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  enableParallelBuilding = true;
 | 
			
		||||
 | 
			
		||||
  propagatedBuildInputs = with python3.pkgs; [
 | 
			
		||||
    pycryptodomex
 | 
			
		||||
    pyelftools
 | 
			
		||||
    cryptography
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  src = pkgs.fetchgit {
 | 
			
		||||
    url = "https://github.com/nxp-imx/imx-optee-os.git";
 | 
			
		||||
    rev = "8dd180b6d149c1e1314b5869697179f665bd9ca3";
 | 
			
		||||
    sha256 = "sha256-PoolRscdyeGevrOa5YymPTQ36edVvReMM5WshRTz+uk=";
 | 
			
		||||
  };
 | 
			
		||||
  meta = with lib; {
 | 
			
		||||
    homepage = "https://github.com/nxp-imx/imx-optee-os";
 | 
			
		||||
    license = [ licenses.bsd2 ];
 | 
			
		||||
    maintainers = with maintainers; [ govindsi ];
 | 
			
		||||
    platforms = [ "aarch64-linux" ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  postPatch = ''
 | 
			
		||||
    substituteInPlace scripts/arm32_sysreg.py \
 | 
			
		||||
      --replace '/usr/bin/env python3' '${python3}/bin/python'
 | 
			
		||||
    substituteInPlace scripts/gen_tee_bin.py \
 | 
			
		||||
      --replace '/usr/bin/env python3' '${python3}/bin/python'
 | 
			
		||||
    substituteInPlace scripts/pem_to_pub_c.py \
 | 
			
		||||
      --replace '/usr/bin/env python3' '${python3}/bin/python'
 | 
			
		||||
    substituteInPlace ta/pkcs11/scripts/verify-helpers.sh \
 | 
			
		||||
      --replace '/bin/bash' '${pkgs.bash}/bin/bash'
 | 
			
		||||
    substituteInPlace mk/gcc.mk \
 | 
			
		||||
      --replace "\$(CROSS_COMPILE_\$(sm))objcopy" ${binutils}/bin/${toolchain.targetPrefix}objcopy
 | 
			
		||||
    substituteInPlace mk/gcc.mk \
 | 
			
		||||
      --replace "\$(CROSS_COMPILE_\$(sm))objdump" ${binutils}/bin/${toolchain.targetPrefix}objdump
 | 
			
		||||
    substituteInPlace mk/gcc.mk \
 | 
			
		||||
      --replace "\$(CROSS_COMPILE_\$(sm))nm" ${binutils}/bin/${toolchain.targetPrefix}nm
 | 
			
		||||
    substituteInPlace mk/gcc.mk \
 | 
			
		||||
      --replace "\$(CROSS_COMPILE_\$(sm))readelf" ${binutils}/bin/${toolchain.targetPrefix}readelf
 | 
			
		||||
    substituteInPlace mk/gcc.mk \
 | 
			
		||||
      --replace "\$(CROSS_COMPILE_\$(sm))ar" ${binutils}/bin/${toolchain.targetPrefix}ar
 | 
			
		||||
    substituteInPlace mk/gcc.mk \
 | 
			
		||||
      --replace "\$(CROSS_COMPILE_\$(sm))cpp" ${cpp}/bin/cpp
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
  makeFlags = [
 | 
			
		||||
    "PLATFORM=imx-mx93evk"
 | 
			
		||||
    "CFG_ARM64_core=y"
 | 
			
		||||
    "CFG_TEE_TA_LOG_LEVEL=0"
 | 
			
		||||
    "CFG_TEE_CORE_LOG_LEVEL=0"
 | 
			
		||||
    "CROSS_COMPILE=${toolchain}/bin/${toolchain.targetPrefix}"
 | 
			
		||||
    "CROSS_COMPILE64=${toolchain}/bin/${toolchain.targetPrefix}"
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
    mkdir -p $out
 | 
			
		||||
    cp ./out/arm-plat-imx/core/tee-raw.bin $out/tee.bin
 | 
			
		||||
  '';
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										99
									
								
								nxp/imx93-evk/bsp/imx93-uboot.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								nxp/imx93-evk/bsp/imx93-uboot.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,99 @@
 | 
			
		||||
{
 | 
			
		||||
  stdenv,
 | 
			
		||||
  lib,
 | 
			
		||||
  bison,
 | 
			
		||||
  dtc,
 | 
			
		||||
  fetchgit,
 | 
			
		||||
  flex,
 | 
			
		||||
  gnutls,
 | 
			
		||||
  libuuid,
 | 
			
		||||
  ncurses,
 | 
			
		||||
  openssl,
 | 
			
		||||
  which,
 | 
			
		||||
  perl,
 | 
			
		||||
  buildPackages,
 | 
			
		||||
  efitools,
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  ubsrc = fetchgit {
 | 
			
		||||
    url = "https://github.com/nxp-imx/uboot-imx.git";
 | 
			
		||||
    #lf_v2024.04
 | 
			
		||||
    rev = "e3219a5a73445219df605d1492687918d488055c";
 | 
			
		||||
    sha256 = "sha256-6pXwgNzq4/XUUEmJ6sGC5pII4J5uMvlDPE9QJxjJJbQ=";
 | 
			
		||||
  };
 | 
			
		||||
  meta = with lib; {
 | 
			
		||||
    homepage = "https://github.com/nxp-imx/uboot-imx";
 | 
			
		||||
    license = [ licenses.gpl2Only ];
 | 
			
		||||
    maintainers = with maintainers; [ govindsi ];
 | 
			
		||||
    platforms = [ "aarch64-linux" ];
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
stdenv.mkDerivation {
 | 
			
		||||
  pname = "imx93-uboot";
 | 
			
		||||
  version = "2024.04";
 | 
			
		||||
  src = ubsrc;
 | 
			
		||||
 | 
			
		||||
  postPatch = ''
 | 
			
		||||
    patchShebangs tools
 | 
			
		||||
    patchShebangs scripts
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [
 | 
			
		||||
    bison
 | 
			
		||||
    flex
 | 
			
		||||
    openssl
 | 
			
		||||
    which
 | 
			
		||||
    ncurses
 | 
			
		||||
    libuuid
 | 
			
		||||
    gnutls
 | 
			
		||||
    openssl
 | 
			
		||||
    perl
 | 
			
		||||
    efitools
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  depsBuildBuild = [ buildPackages.stdenv.cc ];
 | 
			
		||||
  hardeningDisable = [ "all" ];
 | 
			
		||||
  enableParallelBuilding = true;
 | 
			
		||||
 | 
			
		||||
  makeFlags = [
 | 
			
		||||
    "DTC=${lib.getExe buildPackages.dtc}"
 | 
			
		||||
    "CROSS_COMPILE=${stdenv.cc.targetPrefix}"
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  extraConfig = ''
 | 
			
		||||
    CONFIG_USE_BOOTCOMMAND=y
 | 
			
		||||
    CONFIG_BOOTCOMMAND="setenv ramdisk_addr_r 0x85000000; setenv fdt_addr_r 0x84000000; run distro_bootcmd; "
 | 
			
		||||
    CONFIG_CMD_BOOTEFI_SELFTEST=y
 | 
			
		||||
    CONFIG_CMD_BOOTEFI=y
 | 
			
		||||
    CONFIG_EFI_LOADER=y
 | 
			
		||||
    CONFIG_BLK=y
 | 
			
		||||
    CONFIG_PARTITIONS=y
 | 
			
		||||
    CONFIG_DM_DEVICE_REMOVE=n
 | 
			
		||||
    CONFIG_CMD_CACHE=y
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  passAsFile = [ "extraConfig" ];
 | 
			
		||||
 | 
			
		||||
  configurePhase = ''
 | 
			
		||||
    runHook preConfigure
 | 
			
		||||
 | 
			
		||||
    make imx93_11x11_evk_defconfig
 | 
			
		||||
    cat $extraConfigPath >> .config
 | 
			
		||||
 | 
			
		||||
    runHook postConfigure
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
    runHook preInstall
 | 
			
		||||
 | 
			
		||||
    mkdir -p $out
 | 
			
		||||
    cp ./u-boot-nodtb.bin $out
 | 
			
		||||
    cp ./spl/u-boot-spl.bin $out
 | 
			
		||||
    cp ./arch/arm/dts/imx93-11x11-evk.dtb $out
 | 
			
		||||
    cp .config  $out
 | 
			
		||||
 | 
			
		||||
    runHook postInstall
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  dontStrip = true;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								nxp/imx93-evk/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								nxp/imx93-evk/default.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
{ pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  nixpkgs.overlays = [
 | 
			
		||||
    (import ./overlay.nix)
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./modules.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  boot.loader.grub.extraFiles = {
 | 
			
		||||
    "imx93-11x11-evk.dtb" = "${pkgs.callPackage ./bsp/imx93-linux.nix { }}/dtbs/freescale/imx93-11x11-evk.dtb";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  hardware.deviceTree = {
 | 
			
		||||
    filter = "imx93-*.dtb";
 | 
			
		||||
    name = "imx93-11x11-evk.dtb";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								nxp/imx93-evk/modules.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								nxp/imx93-evk/modules.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
  nixpkgs.hostPlatform = "aarch64-linux";
 | 
			
		||||
 | 
			
		||||
  boot = {
 | 
			
		||||
    kernelPackages = pkgs.linuxPackagesFor (pkgs.callPackage ./bsp/imx93-linux.nix { });
 | 
			
		||||
    initrd.includeDefaultModules = lib.mkForce false;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  disabledModules = [ "profiles/all-hardware.nix" ];
 | 
			
		||||
 | 
			
		||||
  hardware.deviceTree.enable = true;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								nxp/imx93-evk/overlay.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								nxp/imx93-evk/overlay.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
final: _prev: {
 | 
			
		||||
  inherit (final.callPackage ./bsp/imx93-boot.nix { pkgs = final; }) imx93-boot;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user