diff --git a/microsoft/surface/kernel/default.nix b/microsoft/surface/kernel/default.nix index 8468fcf..893f1bd 100644 --- a/microsoft/surface/kernel/default.nix +++ b/microsoft/surface/kernel/default.nix @@ -25,7 +25,7 @@ let in recurseIntoAttrs linuxPackagesFor'; linux-5_19_17 = linuxPackage ( - pkgs.callPackage ./linux-5.19.17 { inherit repos; }; + pkgs.callPackage ./linux-5.19.17.nix { inherit repos; } ); in { diff --git a/microsoft/surface/kernel/linux-5.16.11.nix b/microsoft/surface/kernel/linux-5.16.11.nix new file mode 100644 index 0000000..6083531 --- /dev/null +++ b/microsoft/surface/kernel/linux-5.16.11.nix @@ -0,0 +1,91 @@ +{ lib, + repos, +}: + +let + inherit (lib) kernel; + version = "5.16.11"; + +in { + inherit version; + modDirVersion = version; + branch = "5.16"; + src = repos.linux-surface-kernel { + # Kernel 5.16.11 from the linux-surface/kernel repo: + rev = "db94c89f56d6ceae03ca3802e11197f48e6c539f"; + sha256 = "0c58ri0i9gdb4w7l361pnkvq6ap17kmgnxngh0bcdmgn4dc88wx2"; + }; + kernelPatches = [{ + name = "microsoft-surface-patches-linux-${version}"; + patch = null; + structuredExtraConfig = with kernel; { + # + # Surface Aggregator Module + # + SURFACE_AGGREGATOR = module; + SURFACE_AGGREGATOR_ERROR_INJECTION = no; + SURFACE_AGGREGATOR_BUS = yes; + SURFACE_AGGREGATOR_CDEV = module; + SURFACE_AGGREGATOR_REGISTRY = module; + + SURFACE_ACPI_NOTIFY = module; + SURFACE_DTX = module; + SURFACE_PLATFORM_PROFILE = module; + + SURFACE_HID = module; + SURFACE_KBD = module; + + BATTERY_SURFACE = module; + CHARGER_SURFACE = module; + + # + # Surface laptop 1 keyboard + # + SERIAL_DEV_BUS = yes; + SERIAL_DEV_CTRL_TTYPORT = yes; + + # + # Surface Hotplug + # + SURFACE_HOTPLUG = module; + + # + # IPTS touchscreen + # + # This only enables the user interface for IPTS data. + # For the touchscreen to work, you need to install iptsd. + # + MISC_IPTS = module; + + # + # Cameras: IPU3 + # + VIDEO_IPU3_IMGU = module; + VIDEO_IPU3_CIO2 = module; + CIO2_BRIDGE = yes; + INTEL_SKL_INT3472 = module; + + # + # Cameras: Sensor drivers + # + VIDEO_OV5693 = module; + VIDEO_OV8865 = module; + + # + # ALS Sensor for Surface Book 3, Surface Laptop 3, Surface Pro 7 + # + APDS9960 = module; + + # + # Other Drivers + # + INPUT_SOC_BUTTON_ARRAY = module; + SURFACE_3_BUTTON = module; + SURFACE_3_POWER_OPREGION = module; + SURFACE_PRO3_BUTTON = module; + SURFACE_GPE = module; + SURFACE_BOOK1_DGPU_SWITCH = module; + }; + }]; +} + diff --git a/microsoft/surface/kernel/linux-5.19.17/default.nix b/microsoft/surface/kernel/linux-5.19.17.nix similarity index 69% rename from microsoft/surface/kernel/linux-5.19.17/default.nix rename to microsoft/surface/kernel/linux-5.19.17.nix index 1be2724..6093c9b 100644 --- a/microsoft/surface/kernel/linux-5.19.17/default.nix +++ b/microsoft/surface/kernel/linux-5.19.17.nix @@ -1,10 +1,25 @@ -{ config, lib, pkgs, ... }: +{ lib, + fetchurl, + repos, +}: + let - repos = (pkgs.callPackage ../../repos.nix { }); - patches = repos.linux-surface + "/patches"; - surface_kernelPatches = [ + inherit (lib) kernel; + version = "5.19.17"; + branch = "5.19"; + patches = repos.linux-surface + "/patches/${branch}"; + +in { + inherit version branch; + modDirVersion = version; + src = fetchurl { + url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz"; + sha256 = "sha256-yTuzhKl60fCk8Y5ELOApEkJyL3gCPspliyI0RUHwlIk="; + }; + + kernelPatches = [ { - name = "microsoft-surface-patches-linux-5.19.17"; + name = "microsoft-surface-patches-linux-${version}"; patch = null; structuredExtraConfig = with lib.kernel; { # @@ -25,7 +40,7 @@ let BATTERY_SURFACE = module; CHARGER_SURFACE = module; - + # # Surface laptop 1 keyboard # @@ -77,50 +92,47 @@ let } { name = "ms-surface/0001-surface3-oemb"; - patch = patches + "/5.19/0001-surface3-oemb.patch"; + patch = patches + "/0001-surface3-oemb.patch"; } { name = "ms-surface/0002-mwifiex"; - patch = patches + "/5.19/0002-mwifiex.patch"; + patch = patches + "/0002-mwifiex.patch"; } { name = "ms-surface/0003-ath10k"; - patch = patches + "/5.19/0003-ath10k.patch"; + patch = patches + "/0003-ath10k.patch"; } { name = "ms-surface/0004-ipts"; - patch = patches + "/5.19/0004-ipts.patch"; + patch = patches + "/0004-ipts.patch"; } { name = "ms-surface/0005-surface-sam"; - patch = patches + "/5.19/0005-surface-sam.patch"; + patch = patches + "/0005-surface-sam.patch"; } { name = "ms-surface/0006-surface-sam-over-hid"; - patch = patches + "/5.19/0006-surface-sam-over-hid.patch"; + patch = patches + "/0006-surface-sam-over-hid.patch"; } { name = "ms-surface/0007-surface-button"; - patch = patches + "/5.19/0007-surface-button.patch"; + patch = patches + "/0007-surface-button.patch"; } { name = "ms-surface/0008-surface-typecover"; - patch = patches + "/5.19/0008-surface-typecover.patch"; + patch = patches + "/0008-surface-typecover.patch"; } { name = "ms-surface/0009-surface-gpe"; - patch = patches + "/5.19/0009-surface-gpe.patch"; + patch = patches + "/0009-surface-gpe.patch"; } { name = "ms-surface/0010-cameras"; - patch = patches + "/5.19/0010-cameras.patch"; + patch = patches + "/0010-cameras.patch"; } { name = "ms-surface/0011-amd-gpio"; - patch = patches + "/5.19/0011-amd-gpio.patch"; + patch = patches + "/0011-amd-gpio.patch"; } ]; -in (with pkgs; - recurseIntoAttrs (linuxPackagesFor (callPackage ./linux-5.19.17.nix { - kernelPatches = surface_kernelPatches; - }))) +} diff --git a/microsoft/surface/kernel/linux-5.19.17/linux-5.19.17.nix b/microsoft/surface/kernel/linux-5.19.17/linux-5.19.17.nix deleted file mode 100644 index 6cc725e..0000000 --- a/microsoft/surface/kernel/linux-5.19.17/linux-5.19.17.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ lib, stdenv, buildPackages, fetchurl, perl, buildLinux -, modDirVersionArg ? null, ... }@args: - -with lib; - -buildLinux (args // rec { - version = "5.19.17"; - - # modDirVersion needs to be x.y.z, will automatically add .0 if needed - modDirVersion = if (modDirVersionArg == null) then - concatStringsSep "." (take 3 (splitVersion "${version}.0")) - else - modDirVersionArg; - - # branchVersion needs to be x.y - extraMeta.branch = versions.majorMinor version; - - src = fetchurl { - url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz"; - sha256 = "sha256-yTuzhKl60fCk8Y5ELOApEkJyL3gCPspliyI0RUHwlIk="; - }; -} // (args.argsOverride or { }))