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

View File

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

View File

@@ -1,24 +1,63 @@
{ pkgs, ... }:
{
pkgs,
silicon ? "A0",
...
}:
with pkgs;
stdenv.mkDerivation rec {
pname = "comms-sbc-firmware";
version = "v0_6.36";
pname = "nxp-firmware-imx95";
version = "nxp-firmware-8.28-994fa14";
src = builtins.fetchGit {
url = "git@github.com:tiiuae/comms-sbc-firmware.git";
rev = "06394d6d983955734257fdc7f719e454a3ce07f4";
m7Firmware = fetchurl {
url = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/imx95-m7-demo-25.09.00.bin";
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 = [
pkgs.rsync
pkgs.coreutils
coreutils
bash
];
dontUnpack = true;
dontStrip = true;
installPhase = ''
mkdir -p $out
# copy everything except .git
rsync -a --exclude='.git' $src/ $out/
export SILICON=${silicon}
# 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
];
src = pkgs.fetchgit {
url = "https://github.com/nxp-imx/imx-oei.git";
src = pkgs.fetchFromGitHub {
owner = "nxp-imx";
repo = "imx-oei";
rev = "5fca9f47544d03c52ca371eadfffbfd2454e6925";
sha256 = "sha256-Sb6u1NlhJpDCOKBu3HqUb4BLEy0F8LYVnJE0tRSvzWc=";
};

View File

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

View File

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

View File

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

View File

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