diff options
Diffstat (limited to '0001-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-.patch')
-rw-r--r-- | 0001-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-.patch | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/0001-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-.patch b/0001-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-.patch deleted file mode 100644 index 9590e07d4a38..000000000000 --- a/0001-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-.patch +++ /dev/null @@ -1,150 +0,0 @@ -From 55426abb60d99efed912d8309498c0c365e8dcec Mon Sep 17 00:00:00 2001 -From: "Luke D. Jones" <luke@ljones.dev> -Date: Sun, 10 Mar 2024 15:14:37 +1300 -Subject: [PATCH 1/5] platform/x86: asus-wmi: add support for 2024 ROG Mini-LED - -Support the 2024 mini-led backlight and adjust the related functions -to select the relevant dev-id. Also add `available_mini_led_mode` to the -platform sysfs since the available mini-led levels can be different. - -Signed-off-by: Luke D. Jones <luke@ljones.dev> ---- - .../ABI/testing/sysfs-platform-asus-wmi | 8 ++++ - drivers/platform/x86/asus-wmi.c | 48 ++++++++++++++++--- - include/linux/platform_data/x86/asus-wmi.h | 1 + - 3 files changed, 51 insertions(+), 6 deletions(-) - -diff --git a/Documentation/ABI/testing/sysfs-platform-asus-wmi b/Documentation/ABI/testing/sysfs-platform-asus-wmi -index 8a7e25bde085..e32b4f0ae15f 100644 ---- a/Documentation/ABI/testing/sysfs-platform-asus-wmi -+++ b/Documentation/ABI/testing/sysfs-platform-asus-wmi -@@ -126,6 +126,14 @@ Description: - Change the mini-LED mode: - * 0 - Single-zone, - * 1 - Multi-zone -+ * 2 - Multi-zone strong (available on newer generation mini-led) -+ -+What: /sys/devices/platform/<platform>/avilable_mini_led_mode -+Date: Jun 2023 -+KernelVersion: 6.9 -+Contact: "Luke Jones" <luke@ljones.dev> -+Description: -+ List the available mini-led modes. - - What: /sys/devices/platform/<platform>/ppt_pl1_spl - Date: Jun 2023 -diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index 18be35fdb381..a56152ccfbe7 100644 ---- a/drivers/platform/x86/asus-wmi.c -+++ b/drivers/platform/x86/asus-wmi.c -@@ -297,6 +297,7 @@ struct asus_wmi { - - bool panel_overdrive_available; - bool mini_led_mode_available; -+ u32 mini_led_dev_id; - - struct hotplug_slot hotplug_slot; - struct mutex hotplug_lock; -@@ -2109,10 +2110,17 @@ static ssize_t mini_led_mode_show(struct device *dev, - struct asus_wmi *asus = dev_get_drvdata(dev); - int result; - -- result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_MINI_LED_MODE); -- if (result < 0) -- return result; -+ result = asus_wmi_get_devstate_simple(asus, asus->mini_led_dev_id); - -+ // Remap the mode values to match previous generation mini-led including -+ // if errored -19 since some of these bios return a bad result if set to "2" -+ // which is mini-led off -+ if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) { -+ if (result >= 0 || result == -19) -+ result = result == 1 ? 2 : result == 0 ? 1 : 0; -+ } else if (result < 0) { -+ return result; -+ } - return sysfs_emit(buf, "%d\n", result); - } - -@@ -2129,10 +2137,15 @@ static ssize_t mini_led_mode_store(struct device *dev, - if (result) - return result; - -- if (mode > 1) -+ if (mode > 1 && asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE) - return -EINVAL; -+ if (mode > 2 && asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) -+ return -EINVAL; -+ // Remap the mode values to match previous generation mini-led -+ if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) -+ mode = mode == 2 ? 1 : mode == 0 ? 2 : 0; - -- err = asus_wmi_set_devstate(ASUS_WMI_DEVID_MINI_LED_MODE, mode, &result); -+ err = asus_wmi_set_devstate(asus->mini_led_dev_id, mode, &result); - - if (err) { - pr_warn("Failed to set mini-LED: %d\n", err); -@@ -2150,6 +2163,21 @@ static ssize_t mini_led_mode_store(struct device *dev, - } - static DEVICE_ATTR_RW(mini_led_mode); - -+static ssize_t available_mini_led_mode_show(struct device *dev, -+ struct device_attribute *attr, char *buf) -+{ -+ struct asus_wmi *asus = dev_get_drvdata(dev); -+ -+ if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE) -+ return sysfs_emit(buf, "0 1\n"); -+ if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) -+ return sysfs_emit(buf, "0 1 2\n"); -+ -+ return sysfs_emit(buf, "0\n"); -+} -+ -+static DEVICE_ATTR_RO(available_mini_led_mode); -+ - /* Quirks *********************************************************************/ - - static void asus_wmi_set_xusb2pr(struct asus_wmi *asus) -@@ -4174,6 +4202,7 @@ static struct attribute *platform_attributes[] = { - &dev_attr_nv_temp_target.attr, - &dev_attr_panel_od.attr, - &dev_attr_mini_led_mode.attr, -+ &dev_attr_available_mini_led_mode.attr, - NULL - }; - -@@ -4496,10 +4525,17 @@ static int asus_wmi_add(struct platform_device *pdev) - asus->nv_dyn_boost_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_NV_DYN_BOOST); - asus->nv_temp_tgt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_NV_THERM_TARGET); - asus->panel_overdrive_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PANEL_OD); -- asus->mini_led_mode_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE); - asus->ally_mcu_usb_switch = acpi_has_method(NULL, ASUS_USB0_PWR_EC0_CSEE) - && dmi_match(DMI_BOARD_NAME, "RC71L"); - -+ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE)) { -+ asus->mini_led_mode_available = true; -+ asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE; -+ } else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE2)) { -+ asus->mini_led_mode_available = true; -+ asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE2; -+ } -+ - err = fan_boost_mode_check_present(asus); - if (err) - goto fail_fan_boost_mode; -diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h -index ab1c7deff118..9cadce10ad9a 100644 ---- a/include/linux/platform_data/x86/asus-wmi.h -+++ b/include/linux/platform_data/x86/asus-wmi.h -@@ -71,6 +71,7 @@ - #define ASUS_WMI_DEVID_LID_FLIP 0x00060062 - #define ASUS_WMI_DEVID_LID_FLIP_ROG 0x00060077 - #define ASUS_WMI_DEVID_MINI_LED_MODE 0x0005001E -+#define ASUS_WMI_DEVID_MINI_LED_MODE2 0x0005002E - - /* Storage */ - #define ASUS_WMI_DEVID_CARDREADER 0x00080013 --- -2.44.0 - |