mirror of
https://github.com/NixOS/nixos-hardware
synced 2024-11-26 21:09:42 +01:00
Add NXP i.MX8 SOC family support.
Currently there are two devices supported: * imx8qm-mek * imx8qxp-mek Signed-off-by: Ivan Nikolaenko <ivan.nikolaenko@unikie.com>
This commit is contained in:
parent
26c9dbdc92
commit
75b6ec4775
15 changed files with 544 additions and 0 deletions
|
@ -139,6 +139,7 @@
|
|||
microsoft-surface-pro-3 = import ./microsoft/surface-pro/3;
|
||||
msi-gs60 = import ./msi/gs60;
|
||||
msi-gl62 = import ./msi/gl62;
|
||||
nxp-imx8qm-mek = import ./nxp/imx8qm-mek;
|
||||
omen-en00015p = import ./omen/en00015p;
|
||||
onenetbook-4 = import ./onenetbook/4;
|
||||
pcengines-apu = import ./pcengines/apu;
|
||||
|
|
18
nxp/README.md
Normal file
18
nxp/README.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
# NXP i.MX8 SOC family support
|
||||
|
||||
## 1. Supported devices
|
||||
- [i.MX8QuadMax Multisensory Enablement Kit](https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-8quadmax-multisensory-enablement-kit-mek:MCIMX8QM-CPU) (**imx8qm-mek**) - device-specific U-boot and Linux kernel, nixos configuration example.
|
||||
- [i.MX8QuadXPlus Multisensory Enablement Kit](https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-8quadxplus-multisensory-enablement-kit-mek:MCIMX8QXP-CPU) (**imx8qxp-mek**) - device-specific U-Boot and Linux kernel.
|
||||
|
||||
## 2. How to use
|
||||
Currently this NXP overlay is used for generating EFI-bootable NixOS images. [Tow-Boot](https://tow-boot.org/) is used as a bootloader in our case, but U-Boot can also be used.
|
||||
|
||||
Code snippet example that enables imx8qm configuration:
|
||||
```
|
||||
{ nixos-hardware, }: {
|
||||
system = "aarch64-linux";
|
||||
modules = [
|
||||
nixos-hardware.nixosModules.imx8qm-mek
|
||||
];
|
||||
}
|
||||
```
|
22
nxp/common/bsp/imx-atf.nix
Normal file
22
nxp/common/bsp/imx-atf.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
buildArmTrustedFirmware ,
|
||||
targetBoard ,
|
||||
fetchgit ,
|
||||
}:
|
||||
|
||||
{
|
||||
armTrustedFirmwareiMX8 = buildArmTrustedFirmware rec {
|
||||
src = fetchgit {
|
||||
url = "https://source.codeaurora.org/external/imx/imx-atf";
|
||||
# tag: "lf_v2.6"
|
||||
rev = "c6a19b1a351308cc73443283f6aa56b2eff791b8";
|
||||
sha256 = "sha256-C046MrZBDFuzBdnjuPC2fAGtXzZjTWRrO8nYTf1rjeg=";
|
||||
};
|
||||
platform = targetBoard;
|
||||
enableParallelBuilding = true;
|
||||
# To build with tee.bin use extraMakeFlags = [ "bl31 SPD=opteed" ];
|
||||
extraMakeFlags = [ "PIE_LDFLAGS=--no-warn-rwx-segments LDFLAGS=--no-warn-rwx-segments" "bl31" ];
|
||||
extraMeta.platforms = ["aarch64-linux"];
|
||||
filesToInstall = ["build/${targetBoard}/release/bl31.bin"];
|
||||
};
|
||||
}
|
68
nxp/common/bsp/imx-firmware.nix
Normal file
68
nxp/common/bsp/imx-firmware.nix
Normal file
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
pkgs ,
|
||||
targetBoard,
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
imxurl = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO";
|
||||
|
||||
fwHdmiVersion = "8.16";
|
||||
fwScVersion = "1.13.0";
|
||||
fwSecoVersion = "3.8.6";
|
||||
|
||||
firmwareHdmi = pkgs.fetchurl rec {
|
||||
url = "${imxurl}/firmware-imx-${fwHdmiVersion}.bin";
|
||||
sha256 = "Bun+uxE5z7zvxnlRwI0vjowKFqY4CgKyiGjbZuilER0=";
|
||||
executable = true;
|
||||
};
|
||||
|
||||
firmwareSc = pkgs.fetchurl rec {
|
||||
url = "${imxurl}/imx-sc-firmware-${fwScVersion}.bin";
|
||||
sha256 = "YUaBIVCeOOTvifhiEIbKgyGsLZYufv5rs2isdSrw4dc=";
|
||||
executable = true;
|
||||
};
|
||||
|
||||
firmwareSeco = pkgs.fetchurl rec {
|
||||
url = "${imxurl}/imx-seco-${fwSecoVersion}.bin";
|
||||
sha256 = "eoG19xn283fsP2jP49hD4dIBRwEQqFQ9k3yVWOM8uKQ=";
|
||||
executable = true;
|
||||
};
|
||||
|
||||
in
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
|
||||
pname = "imx-firmware";
|
||||
version = "5.15.X_1.0.0-Yocto";
|
||||
|
||||
dontPatch = true;
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
unpackPhase = ''
|
||||
${firmwareHdmi} --auto-accept --force
|
||||
${firmwareSc} --auto-accept --force
|
||||
${firmwareSeco} --auto-accept --force
|
||||
'';
|
||||
|
||||
filesToInstall = [
|
||||
"firmware-imx-${fwHdmiVersion}/firmware/hdmi/cadence/dpfw.bin"
|
||||
"firmware-imx-${fwHdmiVersion}/firmware/hdmi/cadence/hdmi?xfw.bin"
|
||||
] ++ pkgs.lib.optional ( targetBoard == "imx8qm" )
|
||||
("imx-sc-firmware-${fwScVersion}/mx8qm-mek-scfw-tcm.bin" + " " +
|
||||
"imx-seco-${fwSecoVersion}/firmware/seco/mx8qmb0-ahab-container.img")
|
||||
++ pkgs.lib.optional ( targetBoard == "imx8qxp" )
|
||||
("imx-sc-firmware-${fwScVersion}/mx8qx-mek-scfw-tcm.bin" + " " +
|
||||
"imx-seco-${fwSecoVersion}/firmware/seco/mx8qxc0-ahab-container.img");
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp ${pkgs.lib.concatStringsSep " " filesToInstall} $out
|
||||
'';
|
||||
|
||||
meta = with pkgs.lib; {
|
||||
license = licenses.unfree;
|
||||
};
|
||||
}
|
31
nxp/common/bsp/imx-mkimage.nix
Normal file
31
nxp/common/bsp/imx-mkimage.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ pkgs }:
|
||||
|
||||
with pkgs;
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
pname = "imx-mkimage";
|
||||
version = "lf-5.15.32-2.0.0";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://source.codeaurora.org/external/imx/imx-mkimage.git";
|
||||
rev = version;
|
||||
sha256 = "sha256-31pib5DTDPVfiAAoOSzK8HWUlnuiNnfXQIsxbjneMCc=";
|
||||
leaveDotGit = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
git
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
git
|
||||
glibc.static
|
||||
];
|
||||
|
||||
makeFlags = [
|
||||
"bin"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
install -m 0755 mkimage_imx8 $out
|
||||
'';
|
||||
}
|
79
nxp/common/bsp/imx-optee-os.nix
Normal file
79
nxp/common/bsp/imx-optee-os.nix
Normal file
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
pkgs,
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
pkgsCross = import <nixpkgs> {
|
||||
crossSystem = {
|
||||
config = "aarch64-unknown-linux-gnu";
|
||||
};
|
||||
};
|
||||
|
||||
outdir = "out/arm-plat-imx/core";
|
||||
python3 = pkgs.buildPackages.python3;
|
||||
toolchain = pkgsCross.gcc9Stdenv.cc;
|
||||
binutils = pkgsCross.gcc9Stdenv.cc.bintools.bintools_bin;
|
||||
cpp = pkgs.buildPackages.gcc;
|
||||
|
||||
in
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
|
||||
pname = "imx-optee-os";
|
||||
version = "5.15.32_2.0.0";
|
||||
|
||||
buildInputs = [
|
||||
python3
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
pycryptodomex
|
||||
pyelftools
|
||||
cryptography
|
||||
];
|
||||
|
||||
src = fetchGit {
|
||||
url = "https://source.codeaurora.org/external/imx/imx-optee-os.git";
|
||||
ref = "lf-5.15.32_2.0.0";
|
||||
};
|
||||
|
||||
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"
|
||||
"PLATFORM_FLAVOR=mx8qmmek"
|
||||
"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 ${outdir}/tee-raw.bin $out/tee.bin
|
||||
'';
|
||||
}
|
63
nxp/common/bsp/imx-uboot.nix
Normal file
63
nxp/common/bsp/imx-uboot.nix
Normal file
|
@ -0,0 +1,63 @@
|
|||
{ pkgs ,
|
||||
targetBoard,
|
||||
}:
|
||||
|
||||
with pkgs; let
|
||||
inherit buildUBoot;
|
||||
|
||||
imx8qxp-attrs = {
|
||||
atf = "imx8qx";
|
||||
ahab = "mx8qxc0-ahab-container.img";
|
||||
scfw = "mx8qx-mek-scfw-tcm.bin";
|
||||
soc = "QX";
|
||||
patches = [ ../patches/0001-Add-UEFI-boot-for-imx8qxp.patch ];
|
||||
};
|
||||
|
||||
imx8qm-attrs = {
|
||||
atf = "imx8qm";
|
||||
ahab = "mx8qmb0-ahab-container.img";
|
||||
scfw = "mx8qm-mek-scfw-tcm.bin";
|
||||
soc = "QM";
|
||||
patches = [ ../patches/0001-Add-UEFI-boot-on-imx8qm_mek.patch ];
|
||||
};
|
||||
|
||||
imx8-attrs = if (targetBoard == "imx8qxp") then imx8qxp-attrs
|
||||
else if (targetBoard == "imx8qm") then imx8qm-attrs
|
||||
else {};
|
||||
|
||||
inherit (callPackage ./imx-atf.nix { inherit buildArmTrustedFirmware; targetBoard = imx8-attrs.atf; }) armTrustedFirmwareiMX8;
|
||||
imx-firmware = callPackage ./imx-firmware.nix { inherit pkgs targetBoard; };
|
||||
imx-mkimage = buildPackages.callPackage ./imx-mkimage.nix { inherit pkgs; };
|
||||
in {
|
||||
ubootImx8 = buildUBoot {
|
||||
version = "2022.04";
|
||||
src = fetchgit {
|
||||
url = "https://source.codeaurora.org/external/imx/uboot-imx.git";
|
||||
# tag: "lf_v2022.04"
|
||||
rev = "1c881f4da83cc05bee50f352fa183263d7e2622b";
|
||||
sha256 = "sha256-0TS6VH6wq6PwZUq6ekbuLaisZ9LrE0/haU9nseGdiE0=";
|
||||
};
|
||||
BL31 = "${armTrustedFirmwareiMX8}/bl31.bin";
|
||||
patches = imx8-attrs.patches;
|
||||
enableParallelBuilding = true;
|
||||
defconfig = "${targetBoard}_mek_defconfig";
|
||||
extraMeta.platforms = ["aarch64-linux"];
|
||||
preBuildPhases = [ "copyBinaries" ];
|
||||
|
||||
copyBinaries = ''
|
||||
install -m 0644 ${imx-firmware}/${imx8-attrs.ahab} ./ahab-container.img
|
||||
install -m 0644 ${imx-firmware}/${imx8-attrs.scfw} ./${imx8-attrs.scfw}
|
||||
install -m 0644 $BL31 ./u-boot-atf.bin
|
||||
'';
|
||||
postBuild = ''
|
||||
${imx-mkimage} -commit > head.hash
|
||||
cat u-boot.bin head.hash > u-boot-hash.bin
|
||||
dd if=u-boot-hash.bin of=u-boot-atf.bin bs=1K seek=128
|
||||
${imx-mkimage} -soc ${imx8-attrs.soc} -rev B0 -append ahab-container.img -c -scfw ${imx8-attrs.scfw} -ap u-boot-atf.bin a35 0x80000000 -out flash.bin
|
||||
'';
|
||||
filesToInstall = [ "flash.bin" ];
|
||||
};
|
||||
|
||||
inherit imx-firmware;
|
||||
}
|
||||
|
49
nxp/common/bsp/linux-imx8.nix
Normal file
49
nxp/common/bsp/linux-imx8.nix
Normal file
|
@ -0,0 +1,49 @@
|
|||
{ pkgs, ... } @ args:
|
||||
|
||||
with pkgs;
|
||||
|
||||
buildLinux (args // rec {
|
||||
version = "5.15.71";
|
||||
|
||||
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
|
||||
modDirVersion = version;
|
||||
|
||||
defconfig = "imx_v8_defconfig";
|
||||
|
||||
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: refs/tags/lf-5.15.71-2.2.0
|
||||
rev = "3313732e9984cb8a6b10a9085c7e18d58e770d56";
|
||||
sha256 = "sha256-PBRiSgjPOq4keiwPOfNOswf1Zzdbn6YOjpOgv4/Oscc=";
|
||||
};
|
||||
} // (args.argsOverride or { }))
|
18
nxp/common/modules.nix
Normal file
18
nxp/common/modules.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ pkgs, lib, ... }: {
|
||||
nixpkgs.overlays = [
|
||||
(import ./overlay.nix)
|
||||
];
|
||||
|
||||
nixpkgs.hostPlatform = "aarch64-linux";
|
||||
|
||||
boot = {
|
||||
kernelPackages = pkgs.linuxPackagesFor pkgs.linux_imx8;
|
||||
kernelParams = [ "console=ttyLP0,115200n8" ];
|
||||
loader.grub.enable = lib.mkDefault true;
|
||||
initrd.includeDefaultModules = lib.mkForce false;
|
||||
};
|
||||
|
||||
disabledModules = [ "profiles/all-hardware.nix" ];
|
||||
|
||||
hardware.deviceTree.enable = true;
|
||||
}
|
3
nxp/common/overlay.nix
Normal file
3
nxp/common/overlay.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
final: prev: {
|
||||
linux_imx8 = final.callPackage ./bsp/linux-imx8.nix { pkgs = final; };
|
||||
}
|
83
nxp/common/patches/0001-Add-UEFI-boot-for-imx8qm.patch
Normal file
83
nxp/common/patches/0001-Add-UEFI-boot-for-imx8qm.patch
Normal file
|
@ -0,0 +1,83 @@
|
|||
From c2535837ee018bb6336f7043394072aaadcace34 Mon Sep 17 00:00:00 2001
|
||||
From: Panu Finnila <panu.finnila@unikie.com>
|
||||
Date: Mon, 12 Sep 2022 16:33:16 +0300
|
||||
Subject: [PATCH] Add UEFI boot for imx8qm
|
||||
|
||||
Signed-off-by: Panu Finnila <panu.finnila@unikie.com>
|
||||
---
|
||||
configs/imx8qm_mek_defconfig | 9 ++++++++-
|
||||
include/configs/imx8qm_mek.h | 20 +++++++++++++++++++-
|
||||
2 files changed, 27 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/configs/imx8qm_mek_defconfig b/configs/imx8qm_mek_defconfig
|
||||
index 29e9d796a6..1ed6eeee57 100644
|
||||
--- a/configs/imx8qm_mek_defconfig
|
||||
+++ b/configs/imx8qm_mek_defconfig
|
||||
@@ -31,7 +31,7 @@ CONFIG_PANIC_HANG=y
|
||||
CONFIG_OF_SYSTEM_SETUP=y
|
||||
CONFIG_BOOTDELAY=3
|
||||
CONFIG_USE_BOOTCOMMAND=y
|
||||
-CONFIG_BOOTCOMMAND="mmc dev ${mmcdev}; if mmc rescan; then if run loadbootscript; then run bootscript; else if test ${sec_boot} = yes; then if run loadcntr; then run mmcboot; else run netboot; fi; else if run loadimage; then run mmcboot; else run netboot; fi; fi; fi; else booti ${loadaddr} - ${fdt_addr}; fi"
|
||||
+CONFIG_BOOTCOMMAND="run loadhdp; hdp load ${hdp_addr}; run distro_bootcmd;"
|
||||
CONFIG_LOG=y
|
||||
CONFIG_BOARD_EARLY_INIT_F=y
|
||||
CONFIG_SPL_BOARD_INIT=y
|
||||
@@ -196,3 +196,10 @@ CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||
CONFIG_CMD_BMP=y
|
||||
+CONFIG_DISTRO_DEFAULTS=y
|
||||
+CONFIG_CMD_BOOTEFI_SELFTEST=y
|
||||
+CONFIG_CMD_BOOTEFI=y
|
||||
+CONFIG_EFI_LOADER=y
|
||||
+CONFIG_BLK=y
|
||||
+CONFIG_PARTITIONS=y
|
||||
+CONFIG_DM_DEVICE_REMOVE=n
|
||||
diff --git a/include/configs/imx8qm_mek.h b/include/configs/imx8qm_mek.h
|
||||
index ed5c179fc7..ab5b58ec32 100644
|
||||
--- a/include/configs/imx8qm_mek.h
|
||||
+++ b/include/configs/imx8qm_mek.h
|
||||
@@ -138,6 +138,22 @@
|
||||
"m4boot_0=run loadm4image_0; dcache flush; bootaux ${loadaddr} 0\0" \
|
||||
"m4boot_1=run loadm4image_1; dcache flush; bootaux ${loadaddr} 1\0" \
|
||||
|
||||
+#ifdef CONFIG_DISTRO_DEFAULTS
|
||||
+#define BOOT_TARGET_DEVICES(func) \
|
||||
+ func(MMC, mmc, 1) \
|
||||
+ func(MMC, mmc, 0)
|
||||
+
|
||||
+#include <config_distro_bootcmd.h>
|
||||
+#else
|
||||
+#define BOOTENV
|
||||
+#endif
|
||||
+
|
||||
+#define MEM_LAYOUT_ENV_SETTINGS \
|
||||
+ "fdt_addr_r=0x83000000\0" \
|
||||
+ "kernel_addr_r=0x80200000\0" \
|
||||
+ "ramdisk_addr_r=0x83100000\0" \
|
||||
+ "scriptaddr=0x83200000\0" \
|
||||
+
|
||||
#ifdef CONFIG_NAND_BOOT
|
||||
#define MFG_NAND_PARTITION "mtdparts=gpmi-nand:128m(boot),32m(kernel),16m(dtb),8m(misc),-(rootfs) "
|
||||
#else
|
||||
@@ -166,6 +182,8 @@
|
||||
/* Initial environment variables */
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
CONFIG_MFG_ENV_SETTINGS \
|
||||
+ MEM_LAYOUT_ENV_SETTINGS \
|
||||
+ BOOTENV \
|
||||
M4_BOOT_ENV \
|
||||
XEN_BOOT_ENV \
|
||||
JAILHOUSE_ENV\
|
||||
@@ -179,7 +197,7 @@
|
||||
"cntr_addr=0x98000000\0" \
|
||||
"cntr_file=os_cntr_signed.bin\0" \
|
||||
"boot_fdt=try\0" \
|
||||
- FDT_FILE \
|
||||
+ "fdtfile=imx8qm-mek-hdmi.dtb\0" \
|
||||
"mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
|
||||
"mmcpart=1\0" \
|
||||
"mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
|
||||
--
|
||||
2.25.1
|
||||
|
83
nxp/common/patches/0001-Add-UEFI-boot-for-imx8qxp.patch
Normal file
83
nxp/common/patches/0001-Add-UEFI-boot-for-imx8qxp.patch
Normal file
|
@ -0,0 +1,83 @@
|
|||
From 884b162cabdc198121be36bb7ee40922f8689d77 Mon Sep 17 00:00:00 2001
|
||||
From: Grigoriy Romanov <grigoriy.romanov@unikie.com>
|
||||
Date: Tue, 20 Dec 2022 13:32:03 +0200
|
||||
Subject: [PATCH] Add UEFI boot for imx8qxp
|
||||
|
||||
Signed-off-by: Grigoriy Romanov <grigoriy.romanov@unikie.com>
|
||||
---
|
||||
configs/imx8qxp_mek_defconfig | 9 ++++++++-
|
||||
include/configs/imx8qxp_mek.h | 20 +++++++++++++++++++-
|
||||
2 files changed, 27 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/configs/imx8qxp_mek_defconfig b/configs/imx8qxp_mek_defconfig
|
||||
index eda9d2cc00..e498ca1d5b 100644
|
||||
--- a/configs/imx8qxp_mek_defconfig
|
||||
+++ b/configs/imx8qxp_mek_defconfig
|
||||
@@ -32,7 +32,7 @@ CONFIG_OF_BOARD_SETUP=y
|
||||
CONFIG_OF_SYSTEM_SETUP=y
|
||||
CONFIG_BOOTDELAY=3
|
||||
CONFIG_USE_BOOTCOMMAND=y
|
||||
-CONFIG_BOOTCOMMAND="mmc dev ${mmcdev}; if mmc rescan; then if run loadbootscript; then run bootscript; else if test ${sec_boot} = yes; then if run loadcntr; then run mmcboot; else run netboot; fi; else if run loadimage; then run mmcboot; else run netboot; fi; fi; fi; else booti ${loadaddr} - ${fdt_addr}; fi"
|
||||
+CONFIG_BOOTCOMMAND="run distro_bootcmd;"
|
||||
CONFIG_LOG=y
|
||||
CONFIG_BOARD_EARLY_INIT_F=y
|
||||
CONFIG_SPL_BOARD_INIT=y
|
||||
@@ -194,3 +194,10 @@ CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||
CONFIG_CMD_BMP=y
|
||||
+CONFIG_DISTRO_DEFAULTS=y
|
||||
+CONFIG_CMD_BOOTEFI_SELFTEST=y
|
||||
+CONFIG_CMD_BOOTEFI=y
|
||||
+CONFIG_EFI_LOADER=y
|
||||
+CONFIG_BLK=y
|
||||
+CONFIG_PARTITIONS=y
|
||||
+CONFIG_DM_DEVICE_REMOVE=n
|
||||
diff --git a/include/configs/imx8qxp_mek.h b/include/configs/imx8qxp_mek.h
|
||||
index 2886a3b99b..7cc89336b7 100644
|
||||
--- a/include/configs/imx8qxp_mek.h
|
||||
+++ b/include/configs/imx8qxp_mek.h
|
||||
@@ -52,6 +52,22 @@
|
||||
#define AHAB_ENV "sec_boot=no\0"
|
||||
#endif
|
||||
|
||||
+#ifdef CONFIG_DISTRO_DEFAULTS
|
||||
+#define BOOT_TARGET_DEVICES(func) \
|
||||
+ func(MMC, mmc, 1) \
|
||||
+ func(MMC, mmc, 0)
|
||||
+
|
||||
+#include <config_distro_bootcmd.h>
|
||||
+#else
|
||||
+#define BOOTENV
|
||||
+#endif
|
||||
+
|
||||
+#define MEM_LAYOUT_ENV_SETTINGS \
|
||||
+ "fdt_addr_r=0x83000000\0" \
|
||||
+ "kernel_addr_r=0x80200000\0" \
|
||||
+ "ramdisk_addr_r=0x83100000\0" \
|
||||
+ "scriptaddr=0x83200000\0" \
|
||||
+
|
||||
/* Boot M4 */
|
||||
#define M4_BOOT_ENV \
|
||||
"m4_0_image=m4_0.bin\0" \
|
||||
@@ -108,6 +124,8 @@
|
||||
/* Initial environment variables */
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
CONFIG_MFG_ENV_SETTINGS \
|
||||
+ MEM_LAYOUT_ENV_SETTINGS \
|
||||
+ BOOTENV \
|
||||
M4_BOOT_ENV \
|
||||
XEN_BOOT_ENV \
|
||||
JAILHOUSE_ENV\
|
||||
@@ -121,7 +139,7 @@
|
||||
"cntr_addr=0x98000000\0" \
|
||||
"cntr_file=os_cntr_signed.bin\0" \
|
||||
"boot_fdt=try\0" \
|
||||
- "fdt_file=undefined\0" \
|
||||
+ "fdtfile=imx8qxp-mek.dtb\0" \
|
||||
"mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
|
||||
"mmcpart=1\0" \
|
||||
"mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
|
||||
--
|
||||
2.34.1
|
||||
|
20
nxp/imx8qm-mek/default.nix
Normal file
20
nxp/imx8qm-mek/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
(import ./overlay.nix)
|
||||
];
|
||||
|
||||
imports = [
|
||||
../common/modules.nix
|
||||
];
|
||||
|
||||
boot.loader.grub.extraFiles = {
|
||||
"imx8qm-mek.dtb" = "${pkgs.linux_imx8}/dtbs/freescale/imx8qm-mek.dtb";
|
||||
};
|
||||
|
||||
hardware.deviceTree = {
|
||||
filter = "imx8qm-*.dtb";
|
||||
name = "imx8qm-mek.dtb";
|
||||
};
|
||||
}
|
3
nxp/imx8qm-mek/overlay.nix
Normal file
3
nxp/imx8qm-mek/overlay.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
final: _prev: {
|
||||
inherit ( final.callPackage ./bsp/u-boot/imx8/imx-uboot.nix { pkgs = final; targetBoard = "imx8qm"; }) ubootImx8 imx-firmware;
|
||||
}
|
3
nxp/imx8qxp-mek/overlay.nix
Normal file
3
nxp/imx8qxp-mek/overlay.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
final: prev: {
|
||||
inherit ( final.callPackage ./bsp/u-boot/imx8/imx-uboot.nix { pkgs = final; targetBoard = "imx8qxp"; }) ubootImx8 imx-firmware;
|
||||
}
|
Loading…
Reference in a new issue