diff --git a/flake.nix b/flake.nix index 274646d4..f6efb8e7 100644 --- a/flake.nix +++ b/flake.nix @@ -134,6 +134,7 @@ framework-13-7040-amd = import ./framework/13-inch/7040-amd; framework-amd-ai-300-series = import ./framework/13-inch/amd-ai-300-series; framework-16-7040-amd = import ./framework/16-inch/7040-amd; + framework-desktop-amd-ai-max-300-series = import ./framework/desktop/amd-ai-max-300-series; friendlyarm-nanopc-t4 = import ./friendlyarm/nanopc-t4; friendlyarm-nanopi-r5s = import ./friendlyarm/nanopi-r5s; focus-m2-gen1 = import ./focus/m2/gen1; diff --git a/framework/12-inch/13th-gen-intel/default.nix b/framework/12-inch/13th-gen-intel/default.nix index 6431338a..7a3e1de4 100644 --- a/framework/12-inch/13th-gen-intel/default.nix +++ b/framework/12-inch/13th-gen-intel/default.nix @@ -4,4 +4,10 @@ ../common ../../../common/cpu/intel ]; + + # If this module isn't built into the kernel, we need to make sure it loads + # before soc_button_array. Otherwise the tablet mode gpio doesn't work. + # If correctly loaded, dmesg should show + # input: gpio-keys as /devices/platform/INT33D3:00 + boot.initrd.kernelModules = [ "pinctrl_tigerlake" ]; } diff --git a/framework/13-inch/amd-ai-300-series/default.nix b/framework/13-inch/amd-ai-300-series/default.nix index 5eecb38b..0b59e780 100644 --- a/framework/13-inch/amd-ai-300-series/default.nix +++ b/framework/13-inch/amd-ai-300-series/default.nix @@ -10,6 +10,13 @@ ../common ../common/amd.nix ]; - config.hardware.framework.laptop13.audioEnhancement.rawDeviceName = - lib.mkDefault "alsa_output.pci-0000_c1_00.6.analog-stereo"; + config = { + hardware.framework.laptop13.audioEnhancement.rawDeviceName = + lib.mkDefault "alsa_output.pci-0000_c1_00.6.analog-stereo"; + + # suspend works with 6.15 + boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.15") ( + lib.mkDefault pkgs.linuxPackages_latest + ); + }; } diff --git a/framework/desktop/amd-ai-max-300-series/README.md b/framework/desktop/amd-ai-max-300-series/README.md new file mode 100644 index 00000000..e9c274e7 --- /dev/null +++ b/framework/desktop/amd-ai-max-300-series/README.md @@ -0,0 +1,23 @@ +# [Framework Desktop](https://frame.work/desktop) + +## Kernel version + +The recommended version is 6.15 or newer, it has good GPU and also EC firmware support (for sensors and ARGB). +The lowest recommended version is 6.14. It has good GPU support already. +The absolute lowest that runs okay on headless systems is 6.11, but the GPU is not fully supported yet. + +## Updating Firmware + +First put enable `fwupd` + +```nix +services.fwupd.enable = true; +``` + +Then run + +```sh + $ fwupdmgr update +``` + +- [Latest Update](https://fwupd.org/lvfs/devices/work.frame.Desktop.RyzenAIMax300.BIOS.firmware) diff --git a/framework/desktop/amd-ai-max-300-series/default.nix b/framework/desktop/amd-ai-max-300-series/default.nix new file mode 100644 index 00000000..60fc6216 --- /dev/null +++ b/framework/desktop/amd-ai-max-300-series/default.nix @@ -0,0 +1,20 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + imports = [ + ../../../common/cpu/amd + ../../../common/cpu/amd/pstate.nix + ../../../common/gpu/amd + ../../../common/pc/ssd + ../../framework-tool.nix + ]; + + # 6.14 and above have good GPU support + boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.14") ( + lib.mkDefault pkgs.linuxPackages_latest + ); +} diff --git a/microsoft/surface/common/kernel/6.12/patches.nix b/microsoft/surface/common/kernel/6.12/patches.nix index d5cc8ccc..fd48cb7e 100644 --- a/microsoft/surface/common/kernel/6.12/patches.nix +++ b/microsoft/surface/common/kernel/6.12/patches.nix @@ -9,7 +9,7 @@ { name = "microsoft-surface-patches-linux-${version}"; patch = null; - extraStructuredConfig = with kernel; { + structuredExtraConfig = with kernel; { STAGING_MEDIA = yes; ## diff --git a/microsoft/surface/common/kernel/6.15/patches.nix b/microsoft/surface/common/kernel/6.15/patches.nix index 6f685ee4..e4245046 100644 --- a/microsoft/surface/common/kernel/6.15/patches.nix +++ b/microsoft/surface/common/kernel/6.15/patches.nix @@ -9,7 +9,7 @@ { name = "microsoft-surface-patches-linux-${version}"; patch = null; - extraStructuredConfig = with kernel; { + structuredExtraConfig = with kernel; { STAGING_MEDIA = yes; ## ## Surface Aggregator Module