From nobody Thu Apr 2 01:54:04 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C4CF839F19A for ; Mon, 16 Mar 2026 15:34:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773675266; cv=none; b=fc2hqdW2SFoaD69skALA0+7H8hMUvZRAhY0MehRyMqxAOidj3dZO+dgoXwud8mlLKCvHnAYWHCjoVcbRCCshqEKYdQDwlfUaFTuc7+iS1TOUC7b+DJpUWmbieARndR5fyshN5glE1fLwpbjJeQHaZPF6jHgKjcOCwwuhRM8jpms= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773675266; c=relaxed/simple; bh=LLhiZ5FX8IIzUP55FXN9kMQNcPa8k1lZx7Q++ivYoEc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YJ6AlLUl3Rclw5JcckB07aig2nV1KUsjibFuhX49DWwuyq5+62oQQqogPH75jVdim2eFJfx/UW6BJOuDxwgnX83A2Az1+UtzoMZ2UOSSAV0/zeUqdniOb5J3Vf5nVGr72ktwJvLwxDkmfjfj5A5fHgT7B+o4zZsJBk2eLElhph0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Qpj94jU+; arc=none smtp.client-ip=209.85.216.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Qpj94jU+" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-35b905e9dc0so1058788a91.3 for ; Mon, 16 Mar 2026 08:34:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773675264; x=1774280064; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SjMa+jqjA5+TcVEkQU5jdnLuBqhO1REK2DuRHZyX1uY=; b=Qpj94jU+u9DOtwfmnRBnUc16yq/+cX0tNd+r1g4WZdp51voI/H4r+0DEPard+ui+2N xKZlgJz3QCRVct/VxZ3D4Z/Jxcj64eBjey74qWk+n6V/duZ5VoxbNrN8+85Mhi16H9Os /+hIDGQ1u0RJ8x6TCjKonp2uoIsa8ODSkNmkHIM9O2BH9FdkwfbL2eMZIXRpQRsOr9jJ D4d42iIIU5jHsf9wSkJm0OjqO0ZwwLJyqLf0MytBub4kW8pbq0OhGHFHFPTXXh3xkixZ 8IKHe7hXHwWx7ty71G/x4/m4AmmJfMQGIDX2zjxghAFBNgnPiqBbZtMD7UuBmOSRyeyv 0HbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773675264; x=1774280064; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=SjMa+jqjA5+TcVEkQU5jdnLuBqhO1REK2DuRHZyX1uY=; b=Q9K/xoc9MPluSOgqUCVo97y9ZgsXfhSbu/Vj1I20QDO57BcGjE9sK4TZ7v0RqLI4sE lGXspCyGJngb+h2d0LEotimjfqy57vb2v+v5FfW8wXNdjYwsa6/ZJ1mnXTomt2/u47wB QSsj59UotiABEy7nMQAA6OFhbufvYm8eBtRSlJVEoznm7sEITNOrZeKcW7Y0QZe91hFR 0ZC4QbsGdJaGC08BXdqJwEtBs/A6obHLl4WZ0CBgG/h8w/1O1UQbDwV6TxZQ1Z+Touje YIQZoNXk5T0qzRoLu/QAtqlmsCGg0h3RBlTuSYQxvaXGdXXW0I+TZHWahuZDxOV5z9P/ NOKQ== X-Forwarded-Encrypted: i=1; AJvYcCVaAD90rsvADs9oE5xJ2j/vz2ILUNLqoqFQoT8xC4LAh4zCQkFyiu9eQO4U4/Am5TVgBpDsyTKu2Zte0R8=@vger.kernel.org X-Gm-Message-State: AOJu0YxIPMQ8pgMRZCPXvOzwzcw+l4wsv4h5drlMiFYGTiUmHQ+8I008 wt/pTZBEqNpuen3FRxUoNGcPH1OFBYk9dgviTfK4eFriqUve1jZ0u2w= X-Gm-Gg: ATEYQzxQXCzbMtG9c+0KZs+3kSjzB8hZpj1UsM5ONCdAGwBRWudIL5H483256cvzabr pnZIZeR8cS7sni+e3Eg7uRhZIJotft2WG9JWOo038wgy9T/AVxNS9RqUHTWBuMtrsPY7+2CO6sm kx7OJO5ZvgcE82U93lbHOCPLQ9Xi5rodxNoISSbeLEwLZ2xob49G0eAmhrIHFa3jc9niZvdg+ZR gvp8CDaUpuynuF4V9WWG/OhUH4HVuz2TmYOIgf1+ueESv5TrpkjeAN9bhnRL8LDAYwKjg+8KBmF SBgM2P2gpqiIAmJBxBPeP0y2uzRuZEDFbgzrOdt/Rs1+KhDKiwMqC+ix/MYZvx0Smi+7YI/SZR5 38zH1yYOSo/2bq/ZpZqHVJVGev2eTwEsED8AbdVT4XU2YqFi6rmURr1WNQLnU2mRpe4Zx7HBKtg pD58hxKWLibev1XflAU/ug/b3F1PT2WFhMTHJzRTqqTeLZSaeOLkxP3mTYqGenLOs= X-Received: by 2002:a17:90b:3943:b0:359:915b:81f8 with SMTP id 98e67ed59e1d1-35a21fdd4fcmr12294858a91.18.1773675263998; Mon, 16 Mar 2026 08:34:23 -0700 (PDT) Received: from at-Standard-PC-Q35-ICH9-2009.. ([171.61.163.197]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-35badb906c6sm2685a91.9.2026.03.16.08.34.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Mar 2026 08:34:22 -0700 (PDT) From: Atharva Tiwari To: Cc: Atharva Tiwari , Lukas Wunner , Ard Biesheuvel , Hans de Goede , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, platform-driver-x86@vger.kernel.org Subject: [PATCH v4 1/2] efi: Save Brightness using EFI on Macs Date: Mon, 16 Mar 2026 21:03:46 +0530 Message-ID: <20260316153407.1781-2-atharvatiwarilinuxdev@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260316153407.1781-1-atharvatiwarilinuxdev@gmail.com> References: <20260316153407.1781-1-atharvatiwarilinuxdev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Currently when a Mac reboots, the brightness is not the same as the previous boot instead its the same as the last time the Mac booted macOS. We can fix this issue by saving the brightness level to the efivar backlight-level. (tested on iMac20,1) Suggested-by: Lukas Wunner Signed-off-by: Atharva Tiwari --- drivers/firmware/efi/Kconfig | 10 +++ drivers/firmware/efi/Makefile | 1 + drivers/firmware/efi/apple-brightness.c | 67 +++++++++++++++++++ .../linux/platform_data/apple-brightness.h | 20 ++++++ 4 files changed, 98 insertions(+) create mode 100644 drivers/firmware/efi/apple-brightness.c create mode 100644 include/linux/platform_data/apple-brightness.h diff --git a/drivers/firmware/efi/Kconfig b/drivers/firmware/efi/Kconfig index 29e0729299f5..243499a5d7b7 100644 --- a/drivers/firmware/efi/Kconfig +++ b/drivers/firmware/efi/Kconfig @@ -167,6 +167,16 @@ config APPLE_PROPERTIES =20 If unsure, say Y if you have a Mac. Otherwise N. =20 +config APPLE_BRIGHTNESS + bool "Apple Backlight control for EFI" + depends on X86 + help + This will save the brightness level to EFI, so brightness + level is preserved across reboots and shutdowns. allowing + for improved support of Apple hardware. + + If unsure, say Y if you have a Mac, otherwise N. + config RESET_ATTACK_MITIGATION bool "Reset memory attack mitigation" depends on EFI_STUB diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile index 8efbcf699e4f..1f5705cc87a2 100644 --- a/drivers/firmware/efi/Makefile +++ b/drivers/firmware/efi/Makefile @@ -26,6 +26,7 @@ obj-$(CONFIG_EFI_BOOTLOADER_CONTROL) +=3D efibc.o obj-$(CONFIG_EFI_TEST) +=3D test/ obj-$(CONFIG_EFI_DEV_PATH_PARSER) +=3D dev-path-parser.o obj-$(CONFIG_APPLE_PROPERTIES) +=3D apple-properties.o +obj-$(CONFIG_APPLE_BRIGHTNESS) +=3D apple-brightness.o obj-$(CONFIG_EFI_RCI2_TABLE) +=3D rci2-table.o obj-$(CONFIG_EFI_EMBEDDED_FIRMWARE) +=3D embedded-firmware.o obj-$(CONFIG_LOAD_UEFI_KEYS) +=3D mokvar-table.o diff --git a/drivers/firmware/efi/apple-brightness.c b/drivers/firmware/efi= /apple-brightness.c new file mode 100644 index 000000000000..b060861b0795 --- /dev/null +++ b/drivers/firmware/efi/apple-brightness.c @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * apple-brightness.c - EFI brightness saver on Macs + * Copyright (C) 2026 Atharva Tiwari + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +static u32 efi_attr; +static u16 last_saved_level; + +static int (*get_brightness)(struct backlight_device *bl); +static struct backlight_device *bl_dev; + +void apple_brightness_shutdown(void) +{ + u16 level; + efi_status_t status; + + level =3D (u16)get_brightness(bl_dev); + + if (level =3D=3D last_saved_level) + return; + + status =3D efivar_set_variable(APPLE_BRIGHTNESS_NAME, &APPLE_BRIGHTNESS_G= UID, + efi_attr, sizeof(level), &level); + if (status !=3D EFI_SUCCESS) + pr_debug("Unable to set brightness: 0x%lx\n", status); +} +EXPORT_SYMBOL(apple_brightness_shutdown); + +int apple_brightness_probe(struct backlight_device *bl, + int (*get_brightnessfn)(struct backlight_device *bl)) +{ + efi_status_t status; + unsigned long size =3D sizeof(last_saved_level); + int ret; + + bl_dev =3D bl; + get_brightness =3D get_brightnessfn; + + if (!efi_rt_services_supported(EFI_RT_SUPPORTED_SET_VARIABLE)) + return -ENODEV; + + ret =3D efivar_lock(); + if (ret) + return ret; + + status =3D efivar_get_variable(APPLE_BRIGHTNESS_NAME, &APPLE_BRIGHTNESS_G= UID, + &efi_attr, &size, &last_saved_level); + + efivar_unlock(); + + if (status !=3D EFI_SUCCESS) + return -ENODEV; + + return 0; +} +EXPORT_SYMBOL(apple_brightness_probe); + +MODULE_AUTHOR("Atharva Tiwari "); +MODULE_DESCRIPTION("EFI Brightness saver for Macs"); +MODULE_LICENSE("Dual MIT/GPL"); diff --git a/include/linux/platform_data/apple-brightness.h b/include/linux= /platform_data/apple-brightness.h new file mode 100644 index 000000000000..54e3f3f8aa1c --- /dev/null +++ b/include/linux/platform_data/apple-brightness.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR MIT */ +/* + * apple-brightness.h - EFI brightness saver for Macs + * Copyright (C) 2026 Atharva Tiwari + */ + +#ifndef _APPLE_BL_H_ +#define _APPLE_BL_H_ + +#include +#include + +#define APPLE_BRIGHTNESS_NAME L"backlight-level" +#define APPLE_BRIGHTNESS_GUID EFI_GUID(0x7c436110, 0xab2a, 0x4bb= b, 0xa8, 0x80, 0xfe, 0x41, 0x99, 0x5c, 0x9f, 0x82) + +int apple_brightness_probe(struct backlight_device *bl, + int (*get_brightnessfn)(struct backlight_device *bl)); + +void apple_brightness_shutdown(void); +#endif /* _APPLE_BL_H */ --=20 2.43.0 From nobody Thu Apr 2 01:54:04 2026 Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A6D283A1A3D for ; Mon, 16 Mar 2026 15:34:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773675273; cv=none; b=K75RObX76+ervNbWZi9G4XWedXuHHenQ2/nXPz5PTVzPIG+OoaFjdPaTwDvYNse0UsfXYQgxD8Cgt18Pdx9GZ0Peb4YOklTXbhQhJLm3Jb/5FjrJVkzhoKXYtiduyJJ/oyscy5NDbiqIL0YvmGBGvBktdNIRI/LQpwjK8AVf8Cc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773675273; c=relaxed/simple; bh=0jF/Skpappl8e6rE9BFwQF2Uw2riMyYj60IKPk3xg88=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=K2X0Cw26KS8YyvruhWtyHzFCwTU18HuvecByBBNE33SXSYSJrDVNdf1TIZCpTzUvBNQ6vSDkpdigy2+ymtWKRc3rlYce2u/E67/FRmGq6g5ovaPXL7fsZy7CIfsgbyV8cQQVdXP/KST/vRryjI6n7/HNKevgntM+vKrbcklf9TI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mw+LfReC; arc=none smtp.client-ip=209.85.216.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mw+LfReC" Received: by mail-pj1-f45.google.com with SMTP id 98e67ed59e1d1-35ba2ae4df3so663000a91.2 for ; Mon, 16 Mar 2026 08:34:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773675272; x=1774280072; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=D3HNVJWbjalr4X65+4J0/1uR1SNrklyVdLh0q57Y2MA=; b=mw+LfReCM1NkM1ZStYqvyX6Cju5EHMOnR3HZqoLOrxmRcvimxpy/0oRtOgaZZxxgNM EnFJDex88yUACc5vKaxgl+FD5pcNjuOW6R/3/ubiAaIIl9z29uaeKA4yO0YjH/psU26a nB1HTjzjDgUxa/TpoJ9hBiA72rJ+Owh0jZlITtPOFLYq/tOcoEIvkCuqFI3pSrzd4oTd 31JdgmHV+F/kQGa7RWOFOy8iHBHLIj9emvsG+FS5xeOqQUk7g1cWl2khnLuF6p/uynuY Tgxwt6i7pYo8WtIjHOIsVOqXlB1I63/mgDCPTQx7YF+tDciQ7L3KNKXajFiM181j8OJf Ct3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773675272; x=1774280072; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=D3HNVJWbjalr4X65+4J0/1uR1SNrklyVdLh0q57Y2MA=; b=P5NZu01FhuxpmNI/4t/KV3b8G/sQA6B9VheOoLOvKq0AIw/sqzRNX4oTlufxy4a6sY LxD+T18PTx09h/AJa/+bmYMQADDU8GifQZFsT1lOCUwzdZtEFsjzPKp9z+9VadjAjepG 7KU24x590i4AeY+KkwmghYq4VzOpThyoc9xyIiAxHhvUhXy41lOxWExZsZlbn2uKpe4W OaA+OA+3/5rnMXk52MeDLrURUnnk8bL1Fq637rO5mSukoVbjvEnLRB+lMbepqzcUzH8g 3Ut2nrV/mScDdcQ5a9uSz0LTkL0NSOubviS4MSk9OkiYZ+YeDkZm6UrrEpMYrjNQKGp2 W6cQ== X-Forwarded-Encrypted: i=1; AJvYcCXoK1onmGl3x9HbgCB8mOEUpuK8qLTS1YBRBiR5nydLkO8PmPS0g601t19dFGmkG1HfYi2e5qBl0YHAo4I=@vger.kernel.org X-Gm-Message-State: AOJu0YzJYNO2xzejTuhYcbHuVrkosq8cGyoNqpWEwwa3C4TkItH44TYL WenIzrOb08bSgPNQZb33tGch7XrlQfzIHwN1Hc80M6idQfTcSAQ8gBg= X-Gm-Gg: ATEYQzxAT48O4TL5XOHqSsT7k5v4hcPca1McUUgZKrzfpypSIcpcbQSXwQKsVJ1rjCr Jc410n/CnxM94eExVtHm9nVDodUHvhwIDaaxCKCGCW5qsoYOALPMHB3Y06j0y4U/zIYbsGFJOEU f3x5Np3qlxT9nI2Alq8vGh7ziQ7qmcRVdvnLHFCQFaOmRWx4fSg1Jgv22Nc6zJGgX+cdBqAufU3 3+3KoPphQbipjVXK0kY3nnWD+CYqyXnDIw7HNyuIY8Ypb8nah7PfbtgLRMBE57y+TvQDrMcyxOy qNOUIYym44lXuJVEUQxiDc/K8EjKy/7hkHischN6zpcOii/5rII+92JjgdlqWCy90Tmd+WkaKSw BSisNO32os8E3NGLbCgat/aW5tczJhAFpdYAG6PEq+AK6YZI0Bv4ygaszMZV/UEv8preK5c9dC+ /9CZ1zCOkNCSjnpHFyLlfQhkehn7s2WUAsa7YOmMnKB9hkmJGJTFHDszzpJwuNFG8= X-Received: by 2002:a17:90b:1d88:b0:35b:9c13:30cc with SMTP id 98e67ed59e1d1-35b9c133309mr4190158a91.23.1773675271990; Mon, 16 Mar 2026 08:34:31 -0700 (PDT) Received: from at-Standard-PC-Q35-ICH9-2009.. ([171.61.163.197]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-35badb906c6sm2685a91.9.2026.03.16.08.34.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Mar 2026 08:34:31 -0700 (PDT) From: Atharva Tiwari To: Cc: Atharva Tiwari , Ard Biesheuvel , Hans de Goede , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, platform-driver-x86@vger.kernel.org Subject: [PATCH v4 2/2] platform/apple-gmux: use apple_brightness to save brightness to EFI Date: Mon, 16 Mar 2026 21:03:47 +0530 Message-ID: <20260316153407.1781-3-atharvatiwarilinuxdev@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260316153407.1781-1-atharvatiwarilinuxdev@gmail.com> References: <20260316153407.1781-1-atharvatiwarilinuxdev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" use apple_brightness to save brightness to EFI. (tested on iMac20,1) Signed-off-by: Atharva Tiwari --- drivers/platform/x86/apple-gmux.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/platform/x86/apple-gmux.c b/drivers/platform/x86/apple= -gmux.c index 1417e230edbd..cab3122c1a86 100644 --- a/drivers/platform/x86/apple-gmux.c +++ b/drivers/platform/x86/apple-gmux.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include =20 @@ -78,6 +79,8 @@ struct apple_gmux_data { /* debugfs data */ u8 selected_port; struct dentry *debug_dentry; + + bool save_efi; }; =20 static struct apple_gmux_data *apple_gmux_data; @@ -960,6 +963,13 @@ static int gmux_probe(struct pnp_dev *pnp, const struc= t pnp_device_id *id) } =20 gmux_init_debugfs(gmux_data); + if (IS_ENABLED(CONFIG_APPLE_BRIGHTNESS)) { + ret =3D apple_brightness_probe(gmux_data->bdev, &gmux_get_brightness); + if (ret) + pr_warn("Unable to Enable EFI brightness save: %d\n", ret); + else + gmux_data->save_efi =3D true; + } return 0; =20 err_register_handler: @@ -1012,6 +1022,16 @@ static void gmux_remove(struct pnp_dev *pnp) kfree(gmux_data); } =20 +static void gmux_shutdown(struct pnp_dev *pnp) +{ + struct apple_gmux_data *gmux_data =3D pnp_get_drvdata(pnp); + + if (IS_ENABLED(CONFIG_APPLE_BRIGHTNESS) && gmux_data->save_efi) + apple_brightness_shutdown(); + + gmux_remove(pnp); +} + static const struct pnp_device_id gmux_device_ids[] =3D { {GMUX_ACPI_HID, 0}, {"", 0} @@ -1026,6 +1046,7 @@ static struct pnp_driver gmux_pnp_driver =3D { .name =3D "apple-gmux", .probe =3D gmux_probe, .remove =3D gmux_remove, + .shutdown =3D gmux_shutdown, .id_table =3D gmux_device_ids, .driver =3D { .pm =3D &gmux_dev_pm_ops, --=20 2.43.0