diff --git a/framework/13-inch/7040-amd/README.md b/framework/13-inch/7040-amd/README.md index 63608d1..be3293e 100644 --- a/framework/13-inch/7040-amd/README.md +++ b/framework/13-inch/7040-amd/README.md @@ -15,3 +15,15 @@ Then run ``` - [Latest Update](https://fwupd.org/lvfs/devices/work.frame.Laptop.Ryzen7040.BIOS.firmware) + +## Suspend/wake workaround + +As of firmware v03.03, a bug in the EC causes the system to wake if AC is connected _despite_ the lid being closed. The following works around this, with the trade-off that keyboard presses also no longer wake the system. + +```nix +{ + hardware.framework.amd-7040.preventWakeOnAC = true; +} +``` + +See [Framework AMD Ryzen 7040 Series lid wakeup behavior feedback](https://community.frame.work/t/tracking-framework-amd-ryzen-7040-series-lid-wakeup-behavior-feedback/39128/45). diff --git a/framework/13-inch/7040-amd/default.nix b/framework/13-inch/7040-amd/default.nix index 991221a..9f31c6b 100644 --- a/framework/13-inch/7040-amd/default.nix +++ b/framework/13-inch/7040-amd/default.nix @@ -1,11 +1,38 @@ -{ lib, pkgs, ... }: { +{ config, lib, pkgs, ... }: + +let + cfg = config.hardware.framework.amd-7040; +in +{ imports = [ ../common ../common/amd.nix ]; - # Newer kernel is better for amdgpu driver updates - # Requires at least 5.16 for working wi-fi and bluetooth (RZ616, kmod mt7922): - # https://wireless.wiki.kernel.org/en/users/drivers/mediatek - boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.1") (lib.mkDefault pkgs.linuxPackages_latest); + options = { + hardware.framework.amd-7040.preventWakeOnAC = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Stop the system waking from suspend when the AC is plugged + in. The catch: it also disables waking from the keyboard. + + See: + https://community.frame.work/t/tracking-framework-amd-ryzen-7040-series-lid-wakeup-behavior-feedback/39128/45 + ''; + }; + }; + + config = { + # Newer kernel is better for amdgpu driver updates + # Requires at least 5.16 for working wi-fi and bluetooth (RZ616, kmod mt7922): + # https://wireless.wiki.kernel.org/en/users/drivers/mediatek + boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.1") (lib.mkDefault pkgs.linuxPackages_latest); + + services.udev.extraRules = lib.optionalString cfg.preventWakeOnAC '' + # Prevent wake when plugging in AC during suspend. Trade-off: keyboard wake disabled. See: + # https://community.frame.work/t/tracking-framework-amd-ryzen-7040-series-lid-wakeup-behavior-feedback/39128/45 + ACTION=="add", SUBSYSTEM=="serio", DRIVERS=="atkbd", ATTR{power/wakeup}="disabled" + ''; + }; }