fix: pd-mapper can't read zstd firmware files

nixos unstable and 24.05 switched to zstd compression for firmware
files. Roll back to the previous setup of creating a package of the
qcom firmware uncompressed, and patching pd-mapper.

closes #14
This commit is contained in:
Adam Stephens 2024-05-27 12:11:12 -04:00
parent 3e183c4b98
commit 3a002c5a64
No known key found for this signature in database
4 changed files with 37 additions and 3 deletions

View file

@ -2,6 +2,7 @@
{ {
config, config,
lib, lib,
options,
pkgs, pkgs,
... ...
}: }:
@ -40,7 +41,14 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
environment.systemPackages = [ pkgs.efibootmgr ]; environment.systemPackages = [
pkgs.efibootmgr
(x13sPackages.uncompressed-firmware.override {
firmwareFilesList = lib.flatten options.hardware.firmware.definitions;
})
];
environment.pathsToLink = [ "/share/uncompressed-firmware" ];
hardware.enableAllFirmware = true; hardware.enableAllFirmware = true;
hardware.firmware = [ x13sPackages."x13s/extra-firmware" ]; hardware.firmware = [ x13sPackages."x13s/extra-firmware" ];

View file

@ -27,4 +27,6 @@ rec {
qrtr = pkgs.callPackage ./qrtr { }; qrtr = pkgs.callPackage ./qrtr { };
"x13s/extra-firmware" = pkgs.callPackage ./extra-firmware.nix { }; "x13s/extra-firmware" = pkgs.callPackage ./extra-firmware.nix { };
uncompressed-firmware = pkgs.callPackage ./uncompressed-firmware.nix { };
} }

View file

@ -4,10 +4,10 @@ index 65c4b80..669d9a0 100644
+++ b/pd-mapper.c +++ b/pd-mapper.c
@@ -194,7 +194,7 @@ static int pd_load_map(const char *file) @@ -194,7 +194,7 @@ static int pd_load_map(const char *file)
} }
#ifndef ANDROID #ifndef ANDROID
-#define FIRMWARE_BASE "/lib/firmware/" -#define FIRMWARE_BASE "/lib/firmware/"
+#define FIRMWARE_BASE "/run/current-system/firmware/" +#define FIRMWARE_BASE "/run/current-system/sw/share/uncompressed-firmware/"
#else #else
#define FIRMWARE_BASE "/vendor/firmware/" #define FIRMWARE_BASE "/vendor/firmware/"
#endif #endif

View file

@ -0,0 +1,24 @@
{
runCommand,
buildEnv,
firmwareFilesList ? [ ],
}:
runCommand "qcom-modem-uncompressed-firmware-share"
{
firmwareFiles = buildEnv {
name = "qcom-modem-uncompressed-firmware";
paths = firmwareFilesList;
pathsToLink = [
"/lib/firmware/rmtfs"
"/lib/firmware/qcom"
];
};
}
''
PS4=" $ "
(
set -x
mkdir -p $out/share/
ln -s $firmwareFiles/lib/firmware/ $out/share/uncompressed-firmware
)
''