ucm-imx95: firmware: fetch firmware files from NXP release

Fetch AHAB container, M7 firmware, and DDR PHY firmware binaries
from the NXP release packages. The derivation extracts the correct
LPDDR5 PHY images and selects the appropriate AHAB container for
A0 or B0 silicon revisions.

Signed-off-by: Govind Singh <govind.singh@tii.ae>
This commit is contained in:
Govind Singh 2025-10-30 16:08:04 +04:00 committed by Jörg Thalheim
parent a3576f0f3c
commit 11ea8b8477
8 changed files with 76 additions and 30 deletions

View file

@ -1,6 +1,6 @@
{ {
lib, lib,
fetchgit, fetchFromGitHub,
stdenv, stdenv,
buildPackages, buildPackages,
pkgsCross, pkgsCross,
@ -16,8 +16,9 @@ stdenv.mkDerivation rec {
platform = target-board; platform = target-board;
enableParallelBuilding = true; enableParallelBuilding = true;
src = fetchgit { src = fetchFromGitHub {
url = "https://github.com/nxp-imx/imx-atf.git"; owner = "nxp-imx";
repo = "imx-atf";
rev = "28affcae957cb8194917b5246276630f9e6343e1"; rev = "28affcae957cb8194917b5246276630f9e6343e1";
sha256 = "sha256-a8F+Lf8pwML+tCwawS0N/mrSXWPmFhlUeOg0MCRK3VE="; sha256 = "sha256-a8F+Lf8pwML+tCwawS0N/mrSXWPmFhlUeOg0MCRK3VE=";
}; };

View file

@ -11,8 +11,9 @@ let
imx95-sm-fw = pkgs.callPackage ./ucm-imx95-sm-fw.nix { }; imx95-sm-fw = pkgs.callPackage ./ucm-imx95-sm-fw.nix { };
imx95-oei-ddr = pkgs.callPackage ./ucm-imx95-oei-ddr.nix { }; imx95-oei-ddr = pkgs.callPackage ./ucm-imx95-oei-ddr.nix { };
imx95-oei-tcm = pkgs.callPackage ./ucm-imx95-oei-tcm.nix { }; imx95-oei-tcm = pkgs.callPackage ./ucm-imx95-oei-tcm.nix { };
src = pkgs.fetchgit { src = pkgs.fetchFromGitHub {
url = "https://github.com/nxp-imx/imx-mkimage.git"; owner = "nxp-imx";
repo = "imx-mkimage";
#tag: lf-6.6.36 #tag: lf-6.6.36
rev = "4622115cbc037f79039c4522faeced4aabea986b"; rev = "4622115cbc037f79039c4522faeced4aabea986b";
sha256 = "sha256-2gz0GxlB3jwy8PC6+cP3+MpyUzqE1vDTw8nuxK6vo3g="; sha256 = "sha256-2gz0GxlB3jwy8PC6+cP3+MpyUzqE1vDTw8nuxK6vo3g=";
@ -68,9 +69,9 @@ in
install -m 0644 ${imx95-sm-fw}/m33_image.bin ./iMX95/m33_image.bin install -m 0644 ${imx95-sm-fw}/m33_image.bin ./iMX95/m33_image.bin
install -m 0644 ${imx95-oei-ddr}/oei-m33-ddr.bin ./iMX95/oei-m33-ddr.bin install -m 0644 ${imx95-oei-ddr}/oei-m33-ddr.bin ./iMX95/oei-m33-ddr.bin
install -m 0644 ${imx95-oei-tcm}/oei-m33-tcm.bin ./iMX95/oei-m33-tcm.bin install -m 0644 ${imx95-oei-tcm}/oei-m33-tcm.bin ./iMX95/oei-m33-tcm.bin
install -m 0644 ${imx95-firmware}/ucm-imx95/lpddr5* ./iMX95/ install -m 0644 ${imx95-firmware}/ddr/lpddr5* ./iMX95/
install -m 0644 ${imx95-firmware}/ucm-imx95/mx95a0-ahab-container.img ./iMX95/ install -m 0644 ${imx95-firmware}/ahab/mx95a0-ahab-container.img ./iMX95/
install -m 0644 ${imx95-firmware}/ucm-imx95/m7_image.bin ./iMX95/ install -m 0644 ${imx95-firmware}/m7_image.bin ./iMX95/
make SOC=iMX95 REV=A0 OEI=YES LPDDR_TYPE=lpddr5 flash_all make SOC=iMX95 REV=A0 OEI=YES LPDDR_TYPE=lpddr5 flash_all

View file

@ -1,24 +1,63 @@
{ pkgs, ... }: {
pkgs,
silicon ? "A0",
...
}:
with pkgs; with pkgs;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "comms-sbc-firmware"; pname = "nxp-firmware-imx95";
version = "v0_6.36"; version = "nxp-firmware-8.28-994fa14";
src = builtins.fetchGit { m7Firmware = fetchurl {
url = "git@github.com:tiiuae/comms-sbc-firmware.git"; url = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/imx95-m7-demo-25.09.00.bin";
rev = "06394d6d983955734257fdc7f719e454a3ce07f4"; sha256 = "sha256-3nA6uka6WPtXH5aZhaaKHKRM0tJ0pxHQdPEupNic1Ks=";
};
ddrFirmware = fetchurl {
url = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.28-994fa14.bin";
sha256 = "sha256-VZlvNA6HglaFoAzTCZARiQZuyVRe5gdzT5QsPN5Nadw=";
};
ahabFirmware = fetchurl {
url = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-ele-imx-2.0.2-89161a8.bin";
sha256 = "sha256-LSnwpN42YroV9qfZBpcC1OrtQV2WoX8p1bEn8sb91jQ=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
pkgs.rsync coreutils
pkgs.coreutils bash
]; ];
dontUnpack = true; dontUnpack = true;
dontStrip = true; dontStrip = true;
installPhase = '' installPhase = ''
mkdir -p $out mkdir -p $out
# copy everything except .git export SILICON=${silicon}
rsync -a --exclude='.git' $src/ $out/
# M7 firmware
echo "Copying M7 firmware..."
cp ${m7Firmware} $out/m7_image.bin
# DDR firmware
cp ${ddrFirmware} ./firmware-imx-8.28-994fa14.bin
chmod +x firmware-imx-8.28-994fa14.bin
./firmware-imx-8.28-994fa14.bin --auto-accept
mkdir -p $out/ddr
cp firmware-imx-8.28-994fa14/firmware/ddr/synopsys/lpddr5*v202409.bin $out/ddr/
# AHAB container
cp ${ahabFirmware} ./firmware-ele-imx-2.0.2-89161a8.bin
chmod +x firmware-ele-imx-2.0.2-89161a8.bin
./firmware-ele-imx-2.0.2-89161a8.bin --auto-accept
mkdir -p $out/ahab
if [ "$SILICON" = "A0" ]; then
cp firmware-ele-imx-2.0.2-89161a8/mx95a0-ahab-container.img $out/ahab/
else
cp firmware-ele-imx-2.0.2-89161a8/mx95b0-ahab-container.img $out/ahab/
fi
''; '';
} }

View file

@ -11,8 +11,9 @@ pkgs.stdenv.mkDerivation rec {
pkgs.gcc-arm-embedded pkgs.gcc-arm-embedded
]; ];
src = pkgs.fetchgit { src = pkgs.fetchFromGitHub {
url = "https://github.com/nxp-imx/imx-oei.git"; owner = "nxp-imx";
repo = "imx-oei";
rev = "5fca9f47544d03c52ca371eadfffbfd2454e6925"; rev = "5fca9f47544d03c52ca371eadfffbfd2454e6925";
sha256 = "sha256-Sb6u1NlhJpDCOKBu3HqUb4BLEy0F8LYVnJE0tRSvzWc="; sha256 = "sha256-Sb6u1NlhJpDCOKBu3HqUb4BLEy0F8LYVnJE0tRSvzWc=";
}; };

View file

@ -11,8 +11,9 @@ pkgs.stdenv.mkDerivation rec {
pkgs.gcc-arm-embedded pkgs.gcc-arm-embedded
]; ];
src = pkgs.fetchgit { src = pkgs.fetchFromGitHub {
url = "https://github.com/nxp-imx/imx-oei.git"; owner = "nxp-imx";
repo = "imx-oei";
rev = "5fca9f47544d03c52ca371eadfffbfd2454e6925"; rev = "5fca9f47544d03c52ca371eadfffbfd2454e6925";
sha256 = "sha256-Sb6u1NlhJpDCOKBu3HqUb4BLEy0F8LYVnJE0tRSvzWc="; sha256 = "sha256-Sb6u1NlhJpDCOKBu3HqUb4BLEy0F8LYVnJE0tRSvzWc=";
}; };

View file

@ -24,10 +24,11 @@ pkgs.stdenv.mkDerivation rec {
cryptography cryptography
]; ];
src = pkgs.fetchgit { src = pkgs.fetchFromGitHub {
url = "https://github.com/nxp-imx/imx-optee-os.git"; owner = "nxp-imx";
repo = "imx-optee-os";
rev = "612bc5a642a4608d282abeee2349d86de996d7ee"; rev = "612bc5a642a4608d282abeee2349d86de996d7ee";
sha256 = "sha256-A7p3KPijwipivs9Qw9Mr62RWwaMBGTz7J8WP5JYoSOs="; sha256 = "sha256-l8GKkrlBs5kgw6jrzGLT9WAeTSDqo8XWZDFT2+Fisv4=";
}; };
meta = with lib; { meta = with lib; {
homepage = "https://github.com/nxp-imx/imx-optee-os"; homepage = "https://github.com/nxp-imx/imx-optee-os";

View file

@ -17,8 +17,9 @@ pkgs.stdenv.mkDerivation rec {
cryptography cryptography
]; ];
src = pkgs.fetchgit { src = pkgs.fetchFromGitHub {
url = "https://github.com/nxp-imx/imx-sm.git"; owner = "nxp-imx";
repo = "imx-sm";
rev = "709deccd9338399eb39b5cf99a60eab4fa60d539"; rev = "709deccd9338399eb39b5cf99a60eab4fa60d539";
sha256 = "sha256-02Cl+XhWGSFswspdBJ/4B/mBm4XTs/qKotx0BXMQpJk="; sha256 = "sha256-02Cl+XhWGSFswspdBJ/4B/mBm4XTs/qKotx0BXMQpJk=";
}; };

View file

@ -3,7 +3,7 @@
lib, lib,
bison, bison,
dtc, dtc,
fetchgit, fetchFromGitHub,
flex, flex,
gnutls, gnutls,
libuuid, libuuid,
@ -15,8 +15,9 @@
efitools, efitools,
}: }:
let let
ubsrc = fetchgit { ubsrc = fetchFromGitHub {
url = "https://github.com/compulab-yokneam/u-boot-compulab.git"; owner = "compulab-yokneam";
repo = "u-boot-compulab";
# tag: lf_v2024.04 # tag: lf_v2024.04
rev = "824401fe487d7d3cbcf251bd60270bd7fe8d21d0"; rev = "824401fe487d7d3cbcf251bd60270bd7fe8d21d0";
sha256 = "sha256-m+YW7+XF/jcNKfyb5533LXGyOWvStqY+MCczAdcNGZI="; sha256 = "sha256-m+YW7+XF/jcNKfyb5533LXGyOWvStqY+MCczAdcNGZI=";