mirror of
https://github.com/NixOS/nixos-hardware
synced 2024-06-02 11:03:33 +02:00
Merge branch 'master' into feature/add-msi-b550-a-pro
This commit is contained in:
commit
6fe4fde32a
|
@ -70,7 +70,7 @@ See [CONTRIBUTING.md](./CONTRIBUTING.md).
|
|||
See code for all available configurations.
|
||||
|
||||
| Model | Path |
|
||||
| ---------------------------------------------------------------------- | ------------------------------------------------------- |
|
||||
|------------------------------------------------------------------------|---------------------------------------------------------|
|
||||
| [Acer Aspire 4810T](acer/aspire/4810t) | `<nixos-hardware/acer/aspire/4810t>` |
|
||||
| [Airis N990](airis/n990) | `<nixos-hardware/airis/n990>` |
|
||||
| [Apple MacBook Air 3,X](apple/macbook-air/3) | `<nixos-hardware/apple/macbook-air/3>` |
|
||||
|
@ -131,6 +131,9 @@ See code for all available configurations.
|
|||
| [Dell XPS 15 9560, intel only](dell/xps/15-9560/intel) | `<nixos-hardware/dell/xps/15-9560/intel>` |
|
||||
| [Dell XPS 15 9560, nvidia only](dell/xps/15-9560/nvidia) | `<nixos-hardware/dell/xps/15-9560/nvidia>` |
|
||||
| [Dell XPS 15 9560](dell/xps/15-9560) | `<nixos-hardware/dell/xps/15-9560>` |
|
||||
| [Dell XPS 15 9570, intel only](dell/xps/15-9570/intel) | `<nixos-hardware/dell/xps/15-9570/intel>` |
|
||||
| [Dell XPS 15 9570, nvidia](dell/xps/15-9570/nvidia) | `<nixos-hardware/dell/xps/15-9570/nvidia>` |
|
||||
| [Dell XPS 15 9570](dell/xps/15-9570) | `<nixos-hardware/dell/xps/15-9570>` |
|
||||
| [Dell XPS 17 9700, intel](dell/xps/17-9700/intel) | `<nixos-hardware/dell/xps/17-9700/intel` |
|
||||
| [Dell XPS 17 9700, nvidia](dell/xps/17-9700/nvidia) | `<nixos-hardware/dell/xps/17-9700/nvidia>` |
|
||||
| [Dell XPS 17 9710, intel only](dell/xps/17-9710/intel) | `<nixos-hardware/dell/xps/17-9710/intel>` |
|
||||
|
@ -207,6 +210,7 @@ See code for all available configurations.
|
|||
| [Lenovo ThinkPad T520](lenovo/thinkpad/t520) | `<nixos-hardware/lenovo/thinkpad/t520>` |
|
||||
| [Lenovo ThinkPad T550](lenovo/thinkpad/t550) | `<nixos-hardware/lenovo/thinkpad/t550>` |
|
||||
| [Lenovo ThinkPad T590](lenovo/thinkpad/t590) | `<nixos-hardware/lenovo/thinkpad/t590>` |
|
||||
| [Lenovo ThinkPad W520](lenovo/thinkpad/w520) | `<nixos-hardware/lenovo/thinkpad/w520>` |
|
||||
| [Lenovo ThinkPad X1 Yoga](lenovo/thinkpad/x1/yoga) | `<nixos-hardware/lenovo/thinkpad/x1/yoga>` |
|
||||
| [Lenovo ThinkPad X1 Yoga Gen 7](lenovo/thinkpad/x1/yoga/7th-gen/) | `<nixos-hardware/lenovo/thinkpad/x1/yoga/7th-gen>` |
|
||||
| [Lenovo ThinkPad X1 (6th Gen)](lenovo/thinkpad/x1/6th-gen) | `<nixos-hardware/lenovo/thinkpad/x1/6th-gen>` |
|
||||
|
@ -245,6 +249,8 @@ See code for all available configurations.
|
|||
| [Microsoft Surface Range (Common Modules)](microsoft/surface/common) | `<nixos-hardware/microsoft/surface/common>` |
|
||||
| [Microsoft Surface Pro 3](microsoft/surface-pro/3) | `<nixos-hardware/microsoft/surface-pro/3>` |
|
||||
| [Morefine M600](morefine/m600) | `<nixos-hardware/morefine/m600>` |
|
||||
| [NXP iMX8 MPlus Evaluation Kit](nxp/imx8mp-evk) | `<nixos-hardware/nxp/imx8mp-evk>` |
|
||||
| [NXP iMX8 MQuad Evaluation Kit](nxp/imx8mq-evk) | `<nixos-hardware/nxp/imx8mq-evk>` |
|
||||
| [Hardkernel Odroid HC4](hardkernel/odroid-hc4/default.nix) | `<nixos-hardware/hardkernel/odroid-hc4>` |
|
||||
| [Hardkernel Odroid H3](hardkernel/odroid-h3/default.nix) | `<nixos-hardware/hardkernel/odroid-h3>` |
|
||||
| [Omen 15-en0010ca](omen/15-en0010ca) | `<nixos-hardware/omen/15-en0010ca>` |
|
||||
|
|
30
dell/xps/15-9570/README.wiki
Normal file
30
dell/xps/15-9570/README.wiki
Normal file
|
@ -0,0 +1,30 @@
|
|||
= Dell XPS 15 9570 =
|
||||
|
||||
== Tested Hardware ==
|
||||
|
||||
* CPU: Intel(R) Core(TM) i7-8750H CPU @ 4.10GHz
|
||||
* RAM: 32 GB
|
||||
* HDD: 512 GiB SSD
|
||||
* Screen: 15.6" FHD(1920x1080) non-touchscreen
|
||||
* Graphics: NVIDIA Corporation GTX1050 Ti Mobile 4GB GDDR5, with Intel Graphics too.
|
||||
* Input: trackpad, bluetooth mouse and keyboard
|
||||
|
||||
|
||||
== Firmware Configuration ==
|
||||
|
||||
Not much tweaking of NixOS itself was needed. But we currently cannot automate the firmware setup, so this must be done by hand.
|
||||
|
||||
== Installation ==
|
||||
|
||||
=== Before installation ===
|
||||
|
||||
These settings are needed both for booting the final install, and installer itself. Therefore, they must be done first.
|
||||
|
||||
* ''Disable Secure Boot (but keep UEFI Boot).'' Thankfully doing so is as easy as changing any other simple setting.
|
||||
|
||||
* ''Disable Intel hardware RAID and use AHCI instead.'' Intel doesn't seem to provide a working linux driver for this. (If you just have SSD it's pointless and just slows things down needlessly anyways.)
|
||||
|
||||
|
||||
=== After installation ===
|
||||
|
||||
* ''Add systemd-boot to UEFI boot list.'' The (uneditable anyways) settings mapping drive UUIDs to HD* work fine.
|
12
dell/xps/15-9570/default.nix
Normal file
12
dell/xps/15-9570/default.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
imports = [
|
||||
../../../common/cpu/intel
|
||||
../../../common/cpu/intel/kaby-lake
|
||||
../../../common/pc/laptop
|
||||
./xps-common.nix
|
||||
];
|
||||
|
||||
# Includes the Wi-Fi and Bluetooth firmware
|
||||
hardware.enableRedistributableFirmware = lib.mkDefault true;
|
||||
}
|
8
dell/xps/15-9570/intel/default.nix
Normal file
8
dell/xps/15-9570/intel/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
imports = [
|
||||
../../../../common/cpu/intel
|
||||
../../../../common/pc/laptop
|
||||
../../../../common/gpu/nvidia/disable.nix
|
||||
../xps-common.nix
|
||||
];
|
||||
}
|
22
dell/xps/15-9570/nvidia/default.nix
Normal file
22
dell/xps/15-9570/nvidia/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../../../common/cpu/intel
|
||||
../../../../common/gpu/nvidia/prime.nix
|
||||
../../../../common/pc/laptop
|
||||
../xps-common.nix
|
||||
];
|
||||
|
||||
|
||||
# This runs only nvidia, great for games or heavy use of render applications
|
||||
|
||||
##### disable intel, run nvidia only and as default
|
||||
hardware.nvidia.prime = {
|
||||
# Bus ID of the Intel GPU.
|
||||
intelBusId = "PCI:0:2:0";
|
||||
|
||||
# Bus ID of the NVIDIA GPU.
|
||||
nvidiaBusId = "PCI:1:0:0";
|
||||
};
|
||||
}
|
10
dell/xps/15-9570/xps-common.nix
Normal file
10
dell/xps/15-9570/xps-common.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ lib, ... }:
|
||||
|
||||
{
|
||||
# Solution to rcu_sched freezing
|
||||
boot.kernelParams = [ "acpi_rev_override" ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
|
||||
# This will save you money and possibly your life!
|
||||
services.thermald.enable = lib.mkDefault true;
|
||||
}
|
|
@ -65,6 +65,8 @@
|
|||
dell-xps-15-9560 = import ./dell/xps/15-9560;
|
||||
dell-xps-15-9560-intel = import ./dell/xps/15-9560/intel;
|
||||
dell-xps-15-9560-nvidia = import ./dell/xps/15-9560/nvidia;
|
||||
dell-xps-15-9570-intel = import ./dell/xps/15-9570/intel;
|
||||
dell-xps-15-9570-nvidia = import ./dell/xps/15-9570/nvidia;
|
||||
dell-xps-17-9700-intel = import ./dell/xps/17-9700/intel;
|
||||
dell-xps-17-9700-nvidia = import ./dell/xps/17-9700/nvidia;
|
||||
dell-xps-17-9710-intel = import ./dell/xps/17-9710/intel;
|
||||
|
@ -141,6 +143,7 @@
|
|||
lenovo-thinkpad-t490 = import ./lenovo/thinkpad/t490;
|
||||
lenovo-thinkpad-t495 = import ./lenovo/thinkpad/t495;
|
||||
lenovo-thinkpad-t520 = import ./lenovo/thinkpad/t520;
|
||||
lenovo-thinkpad-w520 = import ./lenovo/thinkpad/w520;
|
||||
lenovo-thinkpad-t550 = import ./lenovo/thinkpad/t550;
|
||||
lenovo-thinkpad-t590 = import ./lenovo/thinkpad/t590;
|
||||
lenovo-thinkpad-x1 = import ./lenovo/thinkpad/x1;
|
||||
|
@ -184,6 +187,8 @@
|
|||
msi-b550-a-pro = import ./msi/b550-a-pro;
|
||||
msi-gs60 = import ./msi/gs60;
|
||||
msi-gl62 = import ./msi/gl62;
|
||||
nxp-imx8mp-evk = import ./nxp/imx8mp-evk;
|
||||
nxp-imx8mq-evk = import ./nxp/imx8mq-evk;
|
||||
nxp-imx8qm-mek = import ./nxp/imx8qm-mek;
|
||||
hardkernel-odroid-hc4 = import ./hardkernel/odroid-hc4;
|
||||
hardkernel-odroid-h3 = import ./hardkernel/odroid-h3;
|
||||
|
|
8
lenovo/thinkpad/w520/default.nix
Normal file
8
lenovo/thinkpad/w520/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
imports = [
|
||||
../.
|
||||
../tp-smapi.nix
|
||||
../../../common/cpu/intel/sandy-bridge
|
||||
../../../common/pc/laptop/acpi_call.nix
|
||||
];
|
||||
}
|
|
@ -9,7 +9,7 @@ Currently this overlay is used for generating bootable NixOS SD images.
|
|||
Code snippet example that enables icicle-kit configuration:
|
||||
```
|
||||
{ nixos-hardware, }: {
|
||||
system = "aarch64-linux";
|
||||
system = "riscv64-linux";
|
||||
modules = [
|
||||
nixos-hardware.nixosModules.icicle-kit
|
||||
];
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
- [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
|
||||
|
||||
### 2.1 For imx8qm-mek
|
||||
Currently this NXP overlay is used for generating EFI-bootable NixOS images.
|
||||
I recommend to use [Tow-Boot](https://tow-boot.org/) as a bootloader, but U-Boot from this overlay can also be used.
|
||||
U-Boot was tested separately from NixOS.
|
||||
|
@ -18,3 +20,20 @@ Code snippet example that enables imx8qm configuration:
|
|||
];
|
||||
}
|
||||
```
|
||||
|
||||
### 2.2 For imx8mq-evk/imx8mp-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.
|
||||
|
||||
Code snippet example that enables 'imx8mp-evk/emx8mq-evk' configuration:
|
||||
|
||||
```
|
||||
{ nixos-hardware, }: {
|
||||
system = "aarch64-linux";
|
||||
modules = [
|
||||
nixos-hardware.nixosModules.imx8mp-evk #For imx8mp-evk
|
||||
#nixos-hardware.nixosModules.imx8mq-evk #For imx8mq-evk
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
|
|
34
nxp/imx8mp-evk/bsp/imx8mp-atf.nix
Normal file
34
nxp/imx8mp-evk/bsp/imx8mp-atf.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
buildArmTrustedFirmware,
|
||||
fetchgit,
|
||||
enable-tee,
|
||||
}:
|
||||
with pkgs; let
|
||||
opteedflag =
|
||||
if enable-tee
|
||||
then "SPD=opteed"
|
||||
else "";
|
||||
target-board = "imx8mp";
|
||||
in
|
||||
buildArmTrustedFirmware rec {
|
||||
pname = "imx8mp-atf";
|
||||
platform = target-board;
|
||||
enableParallelBuilding = true;
|
||||
extraMeta.platforms = ["aarch64-linux"];
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/nxp-imx/imx-atf.git";
|
||||
#lf6.1.55_2.2.0
|
||||
rev = "08e9d4eef2262c0dd072b4325e8919e06d349e02";
|
||||
sha256 = "sha256-96EddJXlFEkP/LIGVgNBvUP4IDI3BbDE/c9Yub22gnc=";
|
||||
};
|
||||
|
||||
extraMakeFlags = lib.concatLists [
|
||||
(lib.optional (lib.versionAtLeast pkgs.binutils.version "2.39") "LDFLAGS=--no-warn-rwx-segments")
|
||||
["PLAT=${platform}" "bl31" "${opteedflag}"]
|
||||
];
|
||||
|
||||
filesToInstall = ["build/${target-board}/release/bl31.bin"];
|
||||
}
|
80
nxp/imx8mp-evk/bsp/imx8mp-boot.nix
Normal file
80
nxp/imx8mp-evk/bsp/imx8mp-boot.nix
Normal file
|
@ -0,0 +1,80 @@
|
|||
{
|
||||
pkgs,
|
||||
enable-tee ? true,
|
||||
}:
|
||||
with pkgs; let
|
||||
fw-ver = "202006";
|
||||
cp-tee =
|
||||
if enable-tee
|
||||
then "install -m 0644 ${imx8mp-optee-os}/tee.bin ./iMX8M/tee.bin"
|
||||
else "";
|
||||
|
||||
imx8mp-atf = pkgs.callPackage ./imx8mp-atf.nix {
|
||||
inherit (pkgs) buildArmTrustedFirmware;
|
||||
inherit enable-tee;
|
||||
};
|
||||
imx8mp-firmware = pkgs.callPackage ./imx8mp-firmware.nix {};
|
||||
imx8mp-uboot = pkgs.callPackage ./imx8mp-uboot.nix {};
|
||||
imx8mp-optee-os = pkgs.callPackage ./imx8mp-optee-os.nix {};
|
||||
in {
|
||||
imx8m-boot = pkgs.stdenv.mkDerivation rec {
|
||||
name = "imx8mp-mkimage";
|
||||
version = "lf-6.1.55-2.2.0";
|
||||
src = pkgs.fetchgit {
|
||||
url = "https://github.com/nxp-imx/imx-mkimage.git";
|
||||
rev = "c4365450fb115d87f245df2864fee1604d97c06a";
|
||||
sha256 = "sha256-xycEaWKVM63BlDyBKNN0OefyK6iX/fQOTvv4fRVM55U=";
|
||||
leaveDotGit = true;
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace Makefile \
|
||||
--replace 'CC = gcc' 'CC = clang'
|
||||
patchShebangs scripts
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
clang
|
||||
git
|
||||
dtc
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
git
|
||||
glibc.static
|
||||
zlib
|
||||
zlib.static
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
make bin
|
||||
make SOC=iMX8MP mkimage_imx8
|
||||
|
||||
cp -v ${pkgs.ubootTools}/bin/mkimage ./iMX8M/mkimage_uboot
|
||||
|
||||
install -m 0644 ${imx8mp-uboot}/u-boot-spl.bin ./iMX8M/u-boot-spl.bin
|
||||
install -m 0644 ${imx8mp-uboot}/u-boot-nodtb.bin ./iMX8M/u-boot-nodtb.bin
|
||||
install -m 0644 ${imx8mp-uboot}/imx8mp-evk.dtb ./iMX8M/imx8mp-evk.dtb
|
||||
install -m 0644 ${imx8mp-firmware}/firmware/ddr/synopsys/lpddr4_pmu_train_1d_dmem_${fw-ver}.bin ./iMX8M/lpddr4_pmu_train_1d_dmem_${fw-ver}.bin
|
||||
install -m 0644 ${imx8mp-firmware}/firmware/ddr/synopsys/lpddr4_pmu_train_1d_imem_${fw-ver}.bin ./iMX8M/lpddr4_pmu_train_1d_imem_${fw-ver}.bin
|
||||
install -m 0644 ${imx8mp-firmware}/firmware/ddr/synopsys/lpddr4_pmu_train_2d_dmem_${fw-ver}.bin ./iMX8M/lpddr4_pmu_train_2d_dmem_${fw-ver}.bin
|
||||
install -m 0644 ${imx8mp-firmware}/firmware/ddr/synopsys/lpddr4_pmu_train_2d_imem_${fw-ver}.bin ./iMX8M/lpddr4_pmu_train_2d_imem_${fw-ver}.bin
|
||||
install -m 0644 ${imx8mp-firmware}/firmware/hdmi/cadence/signed_hdmi_imx8m.bin ./iMX8M/signed_hdmi_imx8m.bin
|
||||
install -m 0644 ${imx8mp-atf}/bl31.bin ./iMX8M/bl31.bin
|
||||
${cp-tee}
|
||||
|
||||
make SOC=iMX8MP flash_evk
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/image
|
||||
install -m 0644 ./iMX8M/flash.bin $out/image
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
}
|
19
nxp/imx8mp-evk/bsp/imx8mp-firmware.nix
Normal file
19
nxp/imx8mp-evk/bsp/imx8mp-firmware.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{pkgs, ...}:
|
||||
with pkgs;
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "imx8mp-firmware";
|
||||
version = "8.22";
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-${version}.bin";
|
||||
sha256 = "sha256-lMi86sVuxQPCMuYU931rvY4Xx9qnHU5lHqj9UDTDA1A=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
dontStrip = true;
|
||||
|
||||
installPhase = ''
|
||||
${pkgs.bash}/bin/bash $src --auto-accept --force
|
||||
mv firmware-imx-${version} $out
|
||||
'';
|
||||
}
|
50
nxp/imx8mp-evk/bsp/imx8mp-linux.nix
Normal file
50
nxp/imx8mp-evk/bsp/imx8mp-linux.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
{pkgs, ...} @ args:
|
||||
with pkgs;
|
||||
buildLinux (args
|
||||
// rec {
|
||||
version = "6.1.55";
|
||||
name = "imx8mp-linux";
|
||||
|
||||
# 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: lf-6.1.55-2.2.0
|
||||
rev = "770c5fe2c1d1529fae21b7043911cd50c6cf087e";
|
||||
sha256 = "sha256-tIWt75RUrjB6KmUuAYBVyAC1dmVGSUAgqV5ROJh3xU0=";
|
||||
};
|
||||
}
|
||||
// (args.argsOverride or {}))
|
66
nxp/imx8mp-evk/bsp/imx8mp-optee-os.nix
Normal file
66
nxp/imx8mp-evk/bsp/imx8mp-optee-os.nix
Normal file
|
@ -0,0 +1,66 @@
|
|||
{pkgs}: let
|
||||
python3 = pkgs.buildPackages.python3;
|
||||
toolchain = pkgs.gcc9Stdenv.cc;
|
||||
binutils = pkgs.gcc9Stdenv.cc.bintools.bintools_bin;
|
||||
cpp = pkgs.gcc;
|
||||
in
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
pname = "imx8mp-optee-os";
|
||||
version = "lf-6.1.55-2.2.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 = "a303fc80f7c4bd713315687a1fa1d6ed136e78ee";
|
||||
sha256 = "sha256-OpyG812DX0c06bRZPKWB2cNu6gtZCOvewDhsKgrGB+s=";
|
||||
};
|
||||
|
||||
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=mx8mpevk"
|
||||
"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
|
||||
'';
|
||||
}
|
41
nxp/imx8mp-evk/bsp/imx8mp-uboot.nix
Normal file
41
nxp/imx8mp-evk/bsp/imx8mp-uboot.nix
Normal file
|
@ -0,0 +1,41 @@
|
|||
{pkgs}:
|
||||
with pkgs; let
|
||||
inherit buildUBoot;
|
||||
in
|
||||
(buildUBoot {
|
||||
pname = "imx8mp-uboot";
|
||||
version = "2023.04";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/nxp-imx/uboot-imx.git";
|
||||
# tag: "lf-6.1.55-2.2.0"
|
||||
rev = "49b102d98881fc28af6e0a8af5ea2186c1d90a5f";
|
||||
sha256 = "sha256-1j6X82DqezEizeWoSS600XKPNwrQ4yT0vZuUImKAVVA=";
|
||||
};
|
||||
|
||||
extraConfig = ''
|
||||
CONFIG_USE_BOOTCOMMAND=y
|
||||
CONFIG_BOOTCOMMAND="setenv ramdisk_addr_r 0x45000000; setenv fdt_addr_r 0x44000000; 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
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
defconfig = "imx8mp_evk_defconfig";
|
||||
extraMeta.platforms = ["aarch64-linux"];
|
||||
|
||||
filesToInstall = [
|
||||
"./u-boot-nodtb.bin"
|
||||
"./spl/u-boot-spl.bin"
|
||||
"./arch/arm/dts/imx8mp-evk.dtb"
|
||||
".config"
|
||||
];
|
||||
})
|
||||
.overrideAttrs (old: {
|
||||
nativeBuildInputs = old.nativeBuildInputs ++ [pkgs.perl];
|
||||
})
|
18
nxp/imx8mp-evk/default.nix
Normal file
18
nxp/imx8mp-evk/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{pkgs, ...}: {
|
||||
nixpkgs.overlays = [
|
||||
(import ./overlay.nix)
|
||||
];
|
||||
|
||||
imports = [
|
||||
./modules.nix
|
||||
];
|
||||
|
||||
boot.loader.grub.extraFiles = {
|
||||
"imx8mp-evk.dtb" = "${pkgs.callPackage ./bsp/imx8mp-linux.nix {}}/dtbs/freescale/imx8mp-evk.dtb";
|
||||
};
|
||||
|
||||
hardware.deviceTree = {
|
||||
filter = "imx8mp-*.dtb";
|
||||
name = "imx8mp-evk.dtb";
|
||||
};
|
||||
}
|
16
nxp/imx8mp-evk/modules.nix
Normal file
16
nxp/imx8mp-evk/modules.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
nixpkgs.hostPlatform = "aarch64-linux";
|
||||
|
||||
boot = {
|
||||
kernelPackages = pkgs.linuxPackagesFor (pkgs.callPackage ./bsp/imx8mp-linux.nix {});
|
||||
initrd.includeDefaultModules = lib.mkForce false;
|
||||
};
|
||||
|
||||
disabledModules = ["profiles/all-hardware.nix"];
|
||||
|
||||
hardware.deviceTree.enable = true;
|
||||
}
|
3
nxp/imx8mp-evk/overlay.nix
Normal file
3
nxp/imx8mp-evk/overlay.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
final: prev: {
|
||||
inherit (final.callPackage ./bsp/imx8mp-boot.nix {pkgs = final;}) imx8m-boot;
|
||||
}
|
34
nxp/imx8mq-evk/bsp/imx8mq-atf.nix
Normal file
34
nxp/imx8mq-evk/bsp/imx8mq-atf.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
buildArmTrustedFirmware,
|
||||
fetchgit,
|
||||
enable-tee,
|
||||
}:
|
||||
with pkgs; let
|
||||
opteedflag =
|
||||
if enable-tee
|
||||
then "SPD=opteed"
|
||||
else "";
|
||||
target-board = "imx8mq";
|
||||
in
|
||||
buildArmTrustedFirmware rec {
|
||||
pname = "imx8mq-atf";
|
||||
platform = target-board;
|
||||
enableParallelBuilding = true;
|
||||
extraMeta.platforms = ["aarch64-linux"];
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/nxp-imx/imx-atf.git";
|
||||
#lf6.1.55_2.2.0
|
||||
rev = "08e9d4eef2262c0dd072b4325e8919e06d349e02";
|
||||
sha256 = "sha256-96EddJXlFEkP/LIGVgNBvUP4IDI3BbDE/c9Yub22gnc=";
|
||||
};
|
||||
|
||||
extraMakeFlags = lib.concatLists [
|
||||
(lib.optional (lib.versionAtLeast pkgs.binutils.version "2.39") "LDFLAGS=--no-warn-rwx-segments")
|
||||
["PLAT=${platform}" "bl31" "${opteedflag}"]
|
||||
];
|
||||
|
||||
filesToInstall = ["build/${target-board}/release/bl31.bin"];
|
||||
}
|
78
nxp/imx8mq-evk/bsp/imx8mq-boot.nix
Normal file
78
nxp/imx8mq-evk/bsp/imx8mq-boot.nix
Normal file
|
@ -0,0 +1,78 @@
|
|||
{
|
||||
pkgs,
|
||||
enable-tee ? false,
|
||||
}:
|
||||
with pkgs; let
|
||||
cp-tee =
|
||||
if enable-tee
|
||||
then "install -m 0644 ${imx8mq-optee-os}/tee.bin ./iMX8M/tee.bin"
|
||||
else "";
|
||||
|
||||
imx8mq-atf = pkgs.callPackage ./imx8mq-atf.nix {
|
||||
inherit (pkgs) buildArmTrustedFirmware;
|
||||
inherit enable-tee;
|
||||
};
|
||||
imx8mq-firmware = pkgs.callPackage ./imx8mq-firmware.nix {};
|
||||
imx8mq-uboot = pkgs.callPackage ./imx8mq-uboot.nix {};
|
||||
imx8mq-optee-os = pkgs.callPackage ./imx8mq-optee-os.nix {};
|
||||
in {
|
||||
imx8m-boot = pkgs.stdenv.mkDerivation rec {
|
||||
name = "imx8mq-mkimage";
|
||||
version = "lf-6.1.55-2.2.0";
|
||||
src = pkgs.fetchgit {
|
||||
url = "https://github.com/nxp-imx/imx-mkimage.git";
|
||||
rev = "c4365450fb115d87f245df2864fee1604d97c06a";
|
||||
sha256 = "sha256-xycEaWKVM63BlDyBKNN0OefyK6iX/fQOTvv4fRVM55U=";
|
||||
leaveDotGit = true;
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace Makefile \
|
||||
--replace 'CC = gcc' 'CC = clang'
|
||||
patchShebangs scripts
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
clang
|
||||
git
|
||||
dtc
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
git
|
||||
glibc.static
|
||||
zlib
|
||||
zlib.static
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
make bin
|
||||
make SOC=iMX8M mkimage_imx8
|
||||
cp -v ${pkgs.ubootTools}/bin/mkimage ./iMX8M/mkimage_uboot
|
||||
|
||||
install -m 0644 ${imx8mq-uboot}/u-boot-spl.bin ./iMX8M/u-boot-spl.bin
|
||||
install -m 0644 ${imx8mq-uboot}/u-boot-nodtb.bin ./iMX8M/u-boot-nodtb.bin
|
||||
install -m 0644 ${imx8mq-uboot}/imx8mq-evk.dtb ./iMX8M/imx8mq-evk.dtb
|
||||
install -m 0644 ${imx8mq-firmware}/firmware/ddr/synopsys/lpddr4_pmu_train_1d_dmem.bin ./iMX8M/lpddr4_pmu_train_1d_dmem.bin
|
||||
install -m 0644 ${imx8mq-firmware}/firmware/ddr/synopsys/lpddr4_pmu_train_1d_imem.bin ./iMX8M/lpddr4_pmu_train_1d_imem.bin
|
||||
install -m 0644 ${imx8mq-firmware}/firmware/ddr/synopsys/lpddr4_pmu_train_2d_dmem.bin ./iMX8M/lpddr4_pmu_train_2d_dmem.bin
|
||||
install -m 0644 ${imx8mq-firmware}/firmware/ddr/synopsys/lpddr4_pmu_train_2d_imem.bin ./iMX8M/lpddr4_pmu_train_2d_imem.bin
|
||||
install -m 0644 ${imx8mq-firmware}/firmware/hdmi/cadence/signed_hdmi_imx8m.bin ./iMX8M/signed_hdmi_imx8m.bin
|
||||
install -m 0644 ${imx8mq-atf}/bl31.bin ./iMX8M/bl31.bin
|
||||
${cp-tee}
|
||||
|
||||
make SOC=iMX8M flash_evk
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/image
|
||||
install -m 0644 ./iMX8M/flash.bin $out/image
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
}
|
19
nxp/imx8mq-evk/bsp/imx8mq-firmware.nix
Normal file
19
nxp/imx8mq-evk/bsp/imx8mq-firmware.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{pkgs, ...}:
|
||||
with pkgs;
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "imx8mq-firmware";
|
||||
version = "8.22";
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-${version}.bin";
|
||||
sha256 = "sha256-lMi86sVuxQPCMuYU931rvY4Xx9qnHU5lHqj9UDTDA1A=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
dontStrip = true;
|
||||
|
||||
installPhase = ''
|
||||
${pkgs.bash}/bin/bash $src --auto-accept --force
|
||||
mv firmware-imx-${version} $out
|
||||
'';
|
||||
}
|
50
nxp/imx8mq-evk/bsp/imx8mq-linux.nix
Normal file
50
nxp/imx8mq-evk/bsp/imx8mq-linux.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
{pkgs, ...} @ args:
|
||||
with pkgs;
|
||||
buildLinux (args
|
||||
// rec {
|
||||
version = "6.1.55";
|
||||
name = "imx8mq-linux";
|
||||
|
||||
# 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: lf-6.1.55-2.2.0
|
||||
rev = "770c5fe2c1d1529fae21b7043911cd50c6cf087e";
|
||||
sha256 = "sha256-tIWt75RUrjB6KmUuAYBVyAC1dmVGSUAgqV5ROJh3xU0=";
|
||||
};
|
||||
}
|
||||
// (args.argsOverride or {}))
|
66
nxp/imx8mq-evk/bsp/imx8mq-optee-os.nix
Normal file
66
nxp/imx8mq-evk/bsp/imx8mq-optee-os.nix
Normal file
|
@ -0,0 +1,66 @@
|
|||
{pkgs}: let
|
||||
python3 = pkgs.buildPackages.python3;
|
||||
toolchain = pkgs.gcc9Stdenv.cc;
|
||||
binutils = pkgs.gcc9Stdenv.cc.bintools.bintools_bin;
|
||||
cpp = pkgs.gcc;
|
||||
in
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
pname = "imx8mq-optee-os";
|
||||
version = "lf-6.1.55-2.2.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 = "a303fc80f7c4bd713315687a1fa1d6ed136e78ee";
|
||||
sha256 = "sha256-OpyG812DX0c06bRZPKWB2cNu6gtZCOvewDhsKgrGB+s=";
|
||||
};
|
||||
|
||||
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=mx8mqevk"
|
||||
"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
|
||||
'';
|
||||
}
|
41
nxp/imx8mq-evk/bsp/imx8mq-uboot.nix
Normal file
41
nxp/imx8mq-evk/bsp/imx8mq-uboot.nix
Normal file
|
@ -0,0 +1,41 @@
|
|||
{pkgs}:
|
||||
with pkgs; let
|
||||
inherit buildUBoot;
|
||||
in
|
||||
(buildUBoot {
|
||||
pname = "imx8mq-uboot";
|
||||
version = "2023.04";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/nxp-imx/uboot-imx.git";
|
||||
# tag: "lf-6.1.55-2.2.0"
|
||||
rev = "49b102d98881fc28af6e0a8af5ea2186c1d90a5f";
|
||||
sha256 = "sha256-1j6X82DqezEizeWoSS600XKPNwrQ4yT0vZuUImKAVVA=";
|
||||
};
|
||||
|
||||
extraConfig = ''
|
||||
CONFIG_USE_BOOTCOMMAND=y
|
||||
CONFIG_BOOTCOMMAND="setenv ramdisk_addr_r 0x45000000; setenv fdt_addr_r 0x44000000; 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
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
defconfig = "imx8mq_evk_defconfig";
|
||||
extraMeta.platforms = ["aarch64-linux"];
|
||||
|
||||
filesToInstall = [
|
||||
"./u-boot-nodtb.bin"
|
||||
"./spl/u-boot-spl.bin"
|
||||
"./arch/arm/dts/imx8mq-evk.dtb"
|
||||
".config"
|
||||
];
|
||||
})
|
||||
.overrideAttrs (old: {
|
||||
nativeBuildInputs = old.nativeBuildInputs ++ [pkgs.perl];
|
||||
})
|
18
nxp/imx8mq-evk/default.nix
Normal file
18
nxp/imx8mq-evk/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{pkgs, ...}: {
|
||||
nixpkgs.overlays = [
|
||||
(import ./overlay.nix)
|
||||
];
|
||||
|
||||
imports = [
|
||||
./modules.nix
|
||||
];
|
||||
|
||||
boot.loader.grub.extraFiles = {
|
||||
"imx8mq-evk.dtb" = "${pkgs.callPackage ./bsp/imx8mq-linux.nix {}}/dtbs/freescale/imx8mq-evk.dtb";
|
||||
};
|
||||
|
||||
hardware.deviceTree = {
|
||||
filter = "imx8mq-*.dtb";
|
||||
name = "imx8mq-evk.dtb";
|
||||
};
|
||||
}
|
16
nxp/imx8mq-evk/modules.nix
Normal file
16
nxp/imx8mq-evk/modules.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
nixpkgs.hostPlatform = "aarch64-linux";
|
||||
|
||||
boot = {
|
||||
kernelPackages = pkgs.linuxPackagesFor (pkgs.callPackage ./bsp/imx8mq-linux.nix {});
|
||||
initrd.includeDefaultModules = lib.mkForce false;
|
||||
};
|
||||
|
||||
disabledModules = ["profiles/all-hardware.nix"];
|
||||
|
||||
hardware.deviceTree.enable = true;
|
||||
}
|
3
nxp/imx8mq-evk/overlay.nix
Normal file
3
nxp/imx8mq-evk/overlay.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
final: prev: {
|
||||
inherit (final.callPackage ./bsp/imx8mq-boot.nix {pkgs = final;}) imx8m-boot;
|
||||
}
|
Loading…
Reference in New Issue
Block a user