Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'fixes' of into for-next

The current set of DMI board IDs from the fixes branch is required to
reorder them in the for-next branch.

+194 -125
+1
Documentation/wmi/driver-development-guide.rst
··· 54 54 :: 55 55 56 56 static const struct wmi_device_id foo_id_table[] = { 57 + /* Only use uppercase letters! */ 57 58 { "936DA01F-9ABD-4D9D-80C7-02AF85C822A8", NULL }, 58 59 { } 59 60 };
+3 -1
MAINTAINERS
··· 3841 3841 ASUS NOTEBOOKS AND EEEPC ACPI/WMI EXTRAS DRIVERS 3842 3842 M: Corentin Chary <corentin.chary@gmail.com> 3843 3843 M: Luke D. Jones <luke@ljones.dev> 3844 + M: Denis Benato <benato.denis96@gmail.com> 3844 3845 L: platform-driver-x86@vger.kernel.org 3845 3846 S: Maintained 3846 3847 W: https://asus-linux.org/ ··· 12863 12862 K: \bSGX_ 12864 12863 12865 12864 INTEL SKYLAKE INT3472 ACPI DEVICE DRIVER 12866 - M: Daniel Scally <djrscally@gmail.com> 12865 + M: Daniel Scally <dan.scally@ideasonboard.com> 12866 + M: Sakari Ailus <sakari.ailus@linux.intel.com> 12867 12867 S: Maintained 12868 12868 F: drivers/platform/x86/intel/int3472/ 12869 12869 F: include/linux/platform_data/x86/int3472.h
+10 -6
drivers/platform/arm64/lenovo-thinkpad-t14s.c
··· 124 124 if (ret < 0) 125 125 return ret; 126 126 127 + fsleep(10000); 127 128 return 0; 128 129 } 129 130 ··· 162 161 163 162 out: 164 163 i2c_unlock_bus(client->adapter, I2C_LOCK_SEGMENT); 164 + fsleep(10000); 165 165 return ret; 166 166 } 167 167 ··· 196 194 ret = __i2c_transfer(client->adapter, &response, 1); 197 195 if (ret < 0) 198 196 goto out; 197 + 198 + fsleep(10000); 199 199 200 200 ret = 0; 201 201 ··· 574 570 return dev_err_probe(dev, PTR_ERR(ec->regmap), 575 571 "Failed to init regmap\n"); 576 572 577 - ret = devm_request_threaded_irq(dev, client->irq, NULL, 578 - t14s_ec_irq_handler, 579 - IRQF_ONESHOT, dev_name(dev), ec); 580 - if (ret < 0) 581 - return dev_err_probe(dev, ret, "Failed to get IRQ\n"); 582 - 583 573 ret = t14s_leds_probe(ec); 584 574 if (ret < 0) 585 575 return ret; ··· 589 591 ret = t14s_input_probe(ec); 590 592 if (ret < 0) 591 593 return ret; 594 + 595 + ret = devm_request_threaded_irq(dev, client->irq, NULL, 596 + t14s_ec_irq_handler, 597 + IRQF_ONESHOT, dev_name(dev), ec); 598 + if (ret < 0) 599 + return dev_err_probe(dev, ret, "Failed to get IRQ\n"); 592 600 593 601 /* 594 602 * Disable wakeup support by default, because the driver currently does
+1
drivers/platform/mellanox/mlxbf-pmc.c
··· 2015 2015 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) { 2016 2016 /* Program crspace counters to count clock cycles using "count_clock" sysfs */ 2017 2017 attr = &pmc->block[blk_num].attr_count_clock; 2018 + sysfs_attr_init(&attr->dev_attr.attr); 2018 2019 attr->dev_attr.attr.mode = 0644; 2019 2020 attr->dev_attr.show = mlxbf_pmc_count_clock_show; 2020 2021 attr->dev_attr.store = mlxbf_pmc_count_clock_store;
+2 -1
drivers/platform/x86/Kconfig
··· 440 440 depends on INPUT 441 441 help 442 442 This driver provides supports for the wireless buttons found on some AMD, 443 - HP, & Xioami laptops. 443 + HP, & Xiaomi laptops. 444 444 On such systems the driver should load automatically (via ACPI alias). 445 445 446 446 To compile this driver as a module, choose M here: the module will ··· 553 553 config MSI_WMI_PLATFORM 554 554 tristate "MSI WMI Platform features" 555 555 depends on ACPI_WMI 556 + depends on DMI 556 557 depends on HWMON 557 558 help 558 559 Say Y here if you want to have support for WMI-based platform features
+4
drivers/platform/x86/acer-wmi.c
··· 121 121 122 122 enum acer_wmi_event_ids { 123 123 WMID_HOTKEY_EVENT = 0x1, 124 + WMID_BACKLIGHT_EVENT = 0x4, 124 125 WMID_ACCEL_OR_KBD_DOCK_EVENT = 0x5, 125 126 WMID_GAMING_TURBO_KEY_EVENT = 0x7, 126 127 WMID_AC_EVENT = 0x8, ··· 2512 2511 } 2513 2512 sparse_keymap_report_event(acer_wmi_input_dev, scancode, 1, true); 2514 2513 } 2514 + break; 2515 + case WMID_BACKLIGHT_EVENT: 2516 + /* Already handled by acpi-video */ 2515 2517 break; 2516 2518 case WMID_ACCEL_OR_KBD_DOCK_EVENT: 2517 2519 acer_gsensor_event();
+25
drivers/platform/x86/amd/pmc/pmc-quirks.c
··· 122 122 DMI_MATCH(DMI_PRODUCT_NAME, "21A1"), 123 123 } 124 124 }, 125 + { 126 + .ident = "ROG Xbox Ally RC73YA", 127 + .driver_data = &quirk_spurious_8042, 128 + .matches = { 129 + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."), 130 + DMI_MATCH(DMI_BOARD_NAME, "RC73YA"), 131 + } 132 + }, 125 133 /* https://bugzilla.kernel.org/show_bug.cgi?id=218024 */ 126 134 { 127 135 .ident = "V14 G4 AMN", ··· 210 202 .matches = { 211 203 DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), 212 204 DMI_MATCH(DMI_PRODUCT_NAME, "82ND"), 205 + } 206 + }, 207 + /* https://gitlab.freedesktop.org/drm/amd/-/issues/4618 */ 208 + { 209 + .ident = "Lenovo Legion Go 2", 210 + .driver_data = &quirk_s2idle_bug, 211 + .matches = { 212 + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), 213 + DMI_MATCH(DMI_PRODUCT_NAME, "83N0"), 214 + } 215 + }, 216 + { 217 + .ident = "Lenovo Legion Go 2", 218 + .driver_data = &quirk_s2idle_bug, 219 + .matches = { 220 + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), 221 + DMI_MATCH(DMI_PRODUCT_NAME, "83N1"), 213 222 } 214 223 }, 215 224 /* https://gitlab.freedesktop.org/drm/amd/-/issues/2684 */
+3
drivers/platform/x86/amd/pmc/pmc.c
··· 106 106 switch (dev->cpu_id) { 107 107 case AMD_CPU_ID_PCO: 108 108 case AMD_CPU_ID_RN: 109 + case AMD_CPU_ID_VG: 109 110 case AMD_CPU_ID_YC: 110 111 case AMD_CPU_ID_CB: 111 112 dev->num_ips = 12; ··· 518 517 case AMD_CPU_ID_PCO: 519 518 return MSG_OS_HINT_PCO; 520 519 case AMD_CPU_ID_RN: 520 + case AMD_CPU_ID_VG: 521 521 case AMD_CPU_ID_YC: 522 522 case AMD_CPU_ID_CB: 523 523 case AMD_CPU_ID_PS: ··· 719 717 { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_RV) }, 720 718 { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_SP) }, 721 719 { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_SHP) }, 720 + { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_VG) }, 722 721 { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_ROOT) }, 723 722 { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_ROOT) }, 724 723 { }
+1
drivers/platform/x86/amd/pmc/pmc.h
··· 156 156 #define AMD_CPU_ID_RN 0x1630 157 157 #define AMD_CPU_ID_PCO AMD_CPU_ID_RV 158 158 #define AMD_CPU_ID_CZN AMD_CPU_ID_RN 159 + #define AMD_CPU_ID_VG 0x1645 159 160 #define AMD_CPU_ID_YC 0x14B5 160 161 #define AMD_CPU_ID_CB 0x14D8 161 162 #define AMD_CPU_ID_PS 0x14E8
+30 -78
drivers/platform/x86/dell/alienware-wmi-wmax.c
··· 90 90 91 91 static const struct dmi_system_id awcc_dmi_table[] __initconst = { 92 92 { 93 + .ident = "Alienware 16 Aurora", 94 + .matches = { 95 + DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), 96 + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware 16 Aurora"), 97 + }, 98 + .driver_data = &g_series_quirks, 99 + }, 100 + { 93 101 .ident = "Alienware Area-51m", 94 102 .matches = { 95 103 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), ··· 106 98 .driver_data = &generic_quirks, 107 99 }, 108 100 { 109 - .ident = "Alienware Area-51m R2", 101 + .ident = "Alienware m15", 110 102 .matches = { 111 103 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), 112 - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware Area-51m R2"), 104 + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m15"), 113 105 }, 114 106 .driver_data = &generic_quirks, 115 107 }, 116 108 { 117 - .ident = "Alienware m15 R5", 109 + .ident = "Alienware m16 R1 AMD", 118 110 .matches = { 119 111 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), 120 - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m15 R5"), 121 - }, 122 - .driver_data = &generic_quirks, 123 - }, 124 - { 125 - .ident = "Alienware m15 R7", 126 - .matches = { 127 - DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), 128 - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m15 R7"), 112 + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m16 R1 AMD"), 129 113 }, 130 114 .driver_data = &generic_quirks, 131 115 }, ··· 130 130 .driver_data = &g_series_quirks, 131 131 }, 132 132 { 133 - .ident = "Alienware m16 R1 AMD", 134 - .matches = { 135 - DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), 136 - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m16 R1 AMD"), 137 - }, 138 - .driver_data = &generic_quirks, 139 - }, 140 - { 141 133 .ident = "Alienware m16 R2", 142 134 .matches = { 143 135 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), ··· 138 146 .driver_data = &generic_quirks, 139 147 }, 140 148 { 141 - .ident = "Alienware m17 R5", 149 + .ident = "Alienware m17", 142 150 .matches = { 143 151 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), 144 - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m17 R5 AMD"), 152 + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m17"), 145 153 }, 146 154 .driver_data = &generic_quirks, 147 155 }, 148 156 { 149 - .ident = "Alienware m18 R2", 157 + .ident = "Alienware m18", 150 158 .matches = { 151 159 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), 152 - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m18 R2"), 160 + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m18"), 153 161 }, 154 162 .driver_data = &generic_quirks, 155 163 }, 156 164 { 157 - .ident = "Alienware x15 R1", 165 + .ident = "Alienware x15", 158 166 .matches = { 159 167 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), 160 - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x15 R1"), 168 + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x15"), 161 169 }, 162 170 .driver_data = &generic_quirks, 163 171 }, 164 172 { 165 - .ident = "Alienware x15 R2", 173 + .ident = "Alienware x17", 166 174 .matches = { 167 175 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), 168 - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x15 R2"), 176 + DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x17"), 169 177 }, 170 178 .driver_data = &generic_quirks, 171 179 }, 172 180 { 173 - .ident = "Alienware x17 R2", 174 - .matches = { 175 - DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), 176 - DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x17 R2"), 177 - }, 178 - .driver_data = &generic_quirks, 179 - }, 180 - { 181 - .ident = "Dell Inc. G15 5510", 181 + .ident = "Dell Inc. G15", 182 182 .matches = { 183 183 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 184 - DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5510"), 184 + DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15"), 185 185 }, 186 186 .driver_data = &g_series_quirks, 187 187 }, 188 188 { 189 - .ident = "Dell Inc. G15 5511", 189 + .ident = "Dell Inc. G16", 190 190 .matches = { 191 191 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 192 - DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5511"), 192 + DMI_MATCH(DMI_PRODUCT_NAME, "Dell G16"), 193 193 }, 194 194 .driver_data = &g_series_quirks, 195 195 }, 196 196 { 197 - .ident = "Dell Inc. G15 5515", 197 + .ident = "Dell Inc. G3", 198 198 .matches = { 199 199 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 200 - DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5515"), 200 + DMI_MATCH(DMI_PRODUCT_NAME, "G3"), 201 201 }, 202 202 .driver_data = &g_series_quirks, 203 203 }, 204 204 { 205 - .ident = "Dell Inc. G16 7630", 205 + .ident = "Dell Inc. G5", 206 206 .matches = { 207 207 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 208 - DMI_MATCH(DMI_PRODUCT_NAME, "Dell G16 7630"), 209 - }, 210 - .driver_data = &g_series_quirks, 211 - }, 212 - { 213 - .ident = "Dell Inc. G3 3500", 214 - .matches = { 215 - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 216 - DMI_MATCH(DMI_PRODUCT_NAME, "G3 3500"), 217 - }, 218 - .driver_data = &g_series_quirks, 219 - }, 220 - { 221 - .ident = "Dell Inc. G3 3590", 222 - .matches = { 223 - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 224 - DMI_MATCH(DMI_PRODUCT_NAME, "G3 3590"), 225 - }, 226 - .driver_data = &g_series_quirks, 227 - }, 228 - { 229 - .ident = "Dell Inc. G5 5500", 230 - .matches = { 231 - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 232 - DMI_MATCH(DMI_PRODUCT_NAME, "G5 5500"), 233 - }, 234 - .driver_data = &g_series_quirks, 235 - }, 236 - { 237 - .ident = "Dell Inc. G5 5505", 238 - .matches = { 239 - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 240 - DMI_MATCH(DMI_PRODUCT_NAME, "G5 5505"), 208 + DMI_MATCH(DMI_PRODUCT_NAME, "G5"), 241 209 }, 242 210 .driver_data = &g_series_quirks, 243 211 }, ··· 1581 1629 1582 1630 static int wmax_wmi_suspend(struct device *dev) 1583 1631 { 1584 - if (awcc->hwmon) 1632 + if (awcc && awcc->hwmon) 1585 1633 awcc_hwmon_suspend(dev); 1586 1634 1587 1635 return 0; ··· 1589 1637 1590 1638 static int wmax_wmi_resume(struct device *dev) 1591 1639 { 1592 - if (awcc->hwmon) 1640 + if (awcc && awcc->hwmon) 1593 1641 awcc_hwmon_resume(dev); 1594 1642 1595 1643 return 0;
+12
drivers/platform/x86/dell/dell-wmi-base.c
··· 365 365 /* Backlight brightness change event */ 366 366 { KE_IGNORE, 0x0003, { KEY_RESERVED } }, 367 367 368 + /* 369 + * Electronic privacy screen toggled, extended data gives state, 370 + * separate entries for on/off see handling in dell_wmi_process_key(). 371 + */ 372 + { KE_KEY, 0x000c, { KEY_EPRIVACY_SCREEN_OFF } }, 373 + { KE_KEY, 0x000c, { KEY_EPRIVACY_SCREEN_ON } }, 374 + 368 375 /* Ultra-performance mode switch request */ 369 376 { KE_IGNORE, 0x000d, { KEY_RESERVED } }, 370 377 ··· 442 435 "Dell tablet mode switch", 443 436 SW_TABLET_MODE, !buffer[0]); 444 437 return 1; 438 + } else if (type == 0x0012 && code == 0x000c && remaining > 0) { 439 + /* Eprivacy toggle, switch to "on" key entry for on events */ 440 + if (buffer[0] == 2) 441 + key++; 442 + used = 1; 445 443 } else if (type == 0x0012 && code == 0x000d && remaining > 0) { 446 444 value = (buffer[2] == 2); 447 445 used = 1;
+4 -2
drivers/platform/x86/hp/hp-wmi.c
··· 92 92 "8A25" 93 93 }; 94 94 95 - /* DMI Board names of Victus 16-r1000 and Victus 16-s1000 laptops */ 95 + /* DMI Board names of Victus 16-r and Victus 16-s laptops */ 96 96 static const char * const victus_s_thermal_profile_boards[] = { 97 - "8C99", "8C9C" 97 + "8BBE", "8BD4", "8BD5", 98 + "8C78", "8C99", "8C9C", 99 + "8D41", 98 100 }; 99 101 100 102 enum hp_wmi_radio {
+4
drivers/platform/x86/huawei-wmi.c
··· 81 81 { KE_KEY, 0x289, { KEY_WLAN } }, 82 82 // Huawei |M| key 83 83 { KE_KEY, 0x28a, { KEY_CONFIG } }, 84 + // HONOR YOYO key 85 + { KE_KEY, 0x28b, { KEY_NOTIFICATION_CENTER } }, 86 + // HONOR print screen 87 + { KE_KEY, 0x28e, { KEY_PRINT } }, 84 88 // Keyboard backlit 85 89 { KE_IGNORE, 0x293, { KEY_KBDILLUMTOGGLE } }, 86 90 { KE_IGNORE, 0x294, { KEY_KBDILLUMUP } },
+1
drivers/platform/x86/intel/hid.c
··· 55 55 { "INTC10CB" }, 56 56 { "INTC10CC" }, 57 57 { "INTC10F1" }, 58 + { "INTC10F2" }, 58 59 { } 59 60 }; 60 61 MODULE_DEVICE_TABLE(acpi, intel_hid_ids);
+1 -4
drivers/platform/x86/intel/int3472/clk_and_regulator.c
··· 245 245 if (IS_ERR(regulator->rdev)) 246 246 return PTR_ERR(regulator->rdev); 247 247 248 - int3472->regulators[int3472->n_regulator_gpios].ena_gpio = gpio; 249 248 int3472->n_regulator_gpios++; 250 249 return 0; 251 250 } 252 251 253 252 void skl_int3472_unregister_regulator(struct int3472_discrete_device *int3472) 254 253 { 255 - for (int i = 0; i < int3472->n_regulator_gpios; i++) { 254 + for (int i = 0; i < int3472->n_regulator_gpios; i++) 256 255 regulator_unregister(int3472->regulators[i].rdev); 257 - gpiod_put(int3472->regulators[i].ena_gpio); 258 - } 259 256 }
+1 -1
drivers/platform/x86/intel/punit_ipc.c
··· 250 250 } else { 251 251 ret = devm_request_irq(&pdev->dev, irq, intel_punit_ioc, 252 252 IRQF_NO_SUSPEND, "intel_punit_ipc", 253 - &punit_ipcdev); 253 + punit_ipcdev); 254 254 if (ret) { 255 255 dev_err(&pdev->dev, "Failed to request irq: %d\n", irq); 256 256 return ret;
+2 -2
drivers/platform/x86/intel/speed_select_if/isst_if_mmio.c
··· 108 108 109 109 ret = pci_read_config_dword(pdev, 0xD0, &mmio_base); 110 110 if (ret) 111 - return ret; 111 + return pcibios_err_to_errno(ret); 112 112 113 113 ret = pci_read_config_dword(pdev, 0xFC, &pcu_base); 114 114 if (ret) 115 - return ret; 115 + return pcibios_err_to_errno(ret); 116 116 117 117 pcu_base &= GENMASK(10, 0); 118 118 base_addr = (u64)mmio_base << 23 | (u64) pcu_base << 12;
+5 -4
drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.h
··· 40 40 * @agent_type_mask: Bit mask of all hardware agents for this domain 41 41 * @uncore_attr_group: Attribute group storage 42 42 * @max_freq_khz_kobj_attr: Storage for kobject attribute max_freq_khz 43 - * @mix_freq_khz_kobj_attr: Storage for kobject attribute min_freq_khz 43 + * @min_freq_khz_kobj_attr: Storage for kobject attribute min_freq_khz 44 44 * @initial_max_freq_khz_kobj_attr: Storage for kobject attribute initial_max_freq_khz 45 45 * @initial_min_freq_khz_kobj_attr: Storage for kobject attribute initial_min_freq_khz 46 46 * @current_freq_khz_kobj_attr: Storage for kobject attribute current_freq_khz ··· 48 48 * @fabric_cluster_id_kobj_attr: Storage for kobject attribute fabric_cluster_id 49 49 * @package_id_kobj_attr: Storage for kobject attribute package_id 50 50 * @elc_low_threshold_percent_kobj_attr: 51 - Storage for kobject attribute elc_low_threshold_percent 51 + * Storage for kobject attribute elc_low_threshold_percent 52 52 * @elc_high_threshold_percent_kobj_attr: 53 - Storage for kobject attribute elc_high_threshold_percent 53 + * Storage for kobject attribute elc_high_threshold_percent 54 54 * @elc_high_threshold_enable_kobj_attr: 55 - Storage for kobject attribute elc_high_threshold_enable 55 + * Storage for kobject attribute elc_high_threshold_enable 56 56 * @elc_floor_freq_khz_kobj_attr: Storage for kobject attribute elc_floor_freq_khz 57 57 * @agent_types_kobj_attr: Storage for kobject attribute agent_type 58 + * @die_id_kobj_attr: Attribute storage for die_id information 58 59 * @uncore_attrs: Attribute storage for group creation 59 60 * 60 61 * This structure is used to encapsulate all data related to uncore sysfs
+4
drivers/platform/x86/intel/uncore-frequency/uncore-frequency.c
··· 256 256 X86_MATCH_VFM(INTEL_ARROWLAKE, NULL), 257 257 X86_MATCH_VFM(INTEL_ARROWLAKE_H, NULL), 258 258 X86_MATCH_VFM(INTEL_LUNARLAKE_M, NULL), 259 + X86_MATCH_VFM(INTEL_PANTHERLAKE_L, NULL), 260 + X86_MATCH_VFM(INTEL_WILDCATLAKE_L, NULL), 261 + X86_MATCH_VFM(INTEL_NOVALAKE, NULL), 262 + X86_MATCH_VFM(INTEL_NOVALAKE_L, NULL), 259 263 {} 260 264 }; 261 265 MODULE_DEVICE_TABLE(x86cpu, intel_uncore_cpu_ids);
+41 -2
drivers/platform/x86/msi-wmi-platform.c
··· 14 14 #include <linux/debugfs.h> 15 15 #include <linux/device.h> 16 16 #include <linux/device/driver.h> 17 + #include <linux/dmi.h> 17 18 #include <linux/errno.h> 18 19 #include <linux/hwmon.h> 19 20 #include <linux/kernel.h> ··· 29 28 30 29 #define DRIVER_NAME "msi-wmi-platform" 31 30 32 - #define MSI_PLATFORM_GUID "ABBC0F6E-8EA1-11d1-00A0-C90629100000" 31 + #define MSI_PLATFORM_GUID "ABBC0F6E-8EA1-11D1-00A0-C90629100000" 33 32 34 33 #define MSI_WMI_PLATFORM_INTERFACE_VERSION 2 35 34 ··· 449 448 .probe = msi_wmi_platform_probe, 450 449 .no_singleton = true, 451 450 }; 452 - module_wmi_driver(msi_wmi_platform_driver); 451 + 452 + /* 453 + * MSI reused the WMI GUID from the WMI-ACPI sample code provided by Microsoft, 454 + * so other manufacturers might use it as well for their WMI-ACPI implementations. 455 + */ 456 + static const struct dmi_system_id msi_wmi_platform_whitelist[] __initconst = { 457 + { 458 + .matches = { 459 + DMI_MATCH(DMI_SYS_VENDOR, "MICRO-STAR INT"), 460 + }, 461 + }, 462 + { 463 + .matches = { 464 + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), 465 + }, 466 + }, 467 + { } 468 + }; 469 + 470 + static int __init msi_wmi_platform_module_init(void) 471 + { 472 + if (!dmi_check_system(msi_wmi_platform_whitelist)) { 473 + if (!force) 474 + return -ENODEV; 475 + 476 + pr_warn("Ignoring DMI whitelist\n"); 477 + } 478 + 479 + return wmi_driver_register(&msi_wmi_platform_driver); 480 + } 481 + 482 + static void __exit msi_wmi_platform_module_exit(void) 483 + { 484 + wmi_driver_unregister(&msi_wmi_platform_driver); 485 + } 486 + 487 + module_init(msi_wmi_platform_module_init); 488 + module_exit(msi_wmi_platform_module_exit); 489 + 453 490 454 491 MODULE_AUTHOR("Armin Wolf <W_Armin@gmx.de>"); 455 492 MODULE_DESCRIPTION("MSI WMI platform features");
-1
include/linux/platform_data/x86/int3472.h
··· 100 100 struct regulator_consumer_supply supply_map[GPIO_REGULATOR_SUPPLY_MAP_COUNT * 2]; 101 101 char supply_name_upper[GPIO_SUPPLY_NAME_LENGTH]; 102 102 char regulator_name[GPIO_REGULATOR_NAME_LENGTH]; 103 - struct gpio_desc *ena_gpio; 104 103 struct regulator_dev *rdev; 105 104 struct regulator_desc rdesc; 106 105 };
+12
include/uapi/linux/input-event-codes.h
··· 631 631 #define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */ 632 632 #define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */ 633 633 634 + /* 635 + * Keycodes for hotkeys toggling the electronic privacy screen found on some 636 + * laptops on/off. Note when the embedded-controller turns on/off the eprivacy 637 + * screen itself then the state should be reported through drm connecter props: 638 + * https://www.kernel.org/doc/html/latest/gpu/drm-kms.html#standard-connector-properties 639 + * Except when implementing the drm connecter properties API is not possible 640 + * because e.g. the firmware does not allow querying the presence and/or status 641 + * of the eprivacy screen at boot. 642 + */ 643 + #define KEY_EPRIVACY_SCREEN_ON 0x252 644 + #define KEY_EPRIVACY_SCREEN_OFF 0x253 645 + 634 646 #define KEY_KBDINPUTASSIST_PREV 0x260 635 647 #define KEY_KBDINPUTASSIST_NEXT 0x261 636 648 #define KEY_KBDINPUTASSIST_PREVGROUP 0x262
+27 -23
include/uapi/linux/isst_if.h
··· 52 52 /** 53 53 * struct isst_if_cpu_maps - structure for CPU map IOCTL 54 54 * @cmd_count: Number of CPU mapping command in cpu_map[] 55 - * @cpu_map[]: Holds one or more CPU map data structure 55 + * @cpu_map: Holds one or more CPU map data structure 56 56 * 57 57 * This structure used with ioctl ISST_IF_GET_PHY_ID to send 58 58 * one or more CPU mapping commands. Here IOCTL return value indicates ··· 82 82 83 83 /** 84 84 * struct isst_if_io_regs - structure for IO register commands 85 - * @cmd_count: Number of io reg commands in io_reg[] 86 - * @io_reg[]: Holds one or more io_reg command structure 85 + * @req_count: Number of io reg commands in io_reg[] 86 + * @io_reg: Holds one or more io_reg command structure 87 87 * 88 88 * This structure used with ioctl ISST_IF_IO_CMD to send 89 89 * one or more read/write commands to PUNIT. Here IOCTL return value ··· 120 120 /** 121 121 * struct isst_if_mbox_cmds - structure for mailbox commands 122 122 * @cmd_count: Number of mailbox commands in mbox_cmd[] 123 - * @mbox_cmd[]: Holds one or more mbox commands 123 + * @mbox_cmd: Holds one or more mbox commands 124 124 * 125 125 * This structure used with ioctl ISST_IF_MBOX_COMMAND to send 126 126 * one or more mailbox commands to PUNIT. Here IOCTL return value ··· 152 152 /** 153 153 * struct isst_if_msr_cmds - structure for msr commands 154 154 * @cmd_count: Number of mailbox commands in msr_cmd[] 155 - * @msr_cmd[]: Holds one or more msr commands 155 + * @msr_cmd: Holds one or more msr commands 156 156 * 157 157 * This structure used with ioctl ISST_IF_MSR_COMMAND to send 158 158 * one or more MSR commands. IOCTL return value indicates number of ··· 167 167 * struct isst_core_power - Structure to get/set core_power feature 168 168 * @get_set: 0: Get, 1: Set 169 169 * @socket_id: Socket/package id 170 - * @power_domain: Power Domain id 170 + * @power_domain_id: Power Domain id 171 171 * @enable: Feature enable status 172 + * @supported: Power domain supports SST_CP interface 172 173 * @priority_type: Priority type for the feature (ordered/proportional) 173 174 * 174 175 * Structure to get/set core_power feature state using IOCTL ··· 188 187 * struct isst_clos_param - Structure to get/set clos praram 189 188 * @get_set: 0: Get, 1: Set 190 189 * @socket_id: Socket/package id 191 - * @power_domain: Power Domain id 192 - * clos: Clos ID for the parameters 193 - * min_freq_mhz: Minimum frequency in MHz 194 - * max_freq_mhz: Maximum frequency in MHz 195 - * prop_prio: Proportional priority from 0-15 190 + * @power_domain_id: Power Domain id 191 + * @clos: Clos ID for the parameters 192 + * @min_freq_mhz: Minimum frequency in MHz 193 + * @max_freq_mhz: Maximum frequency in MHz 194 + * @prop_prio: Proportional priority from 0-15 196 195 * 197 196 * Structure to get/set per clos property using IOCTL 198 197 * ISST_IF_CLOS_PARAM. ··· 210 209 /** 211 210 * struct isst_if_clos_assoc - Structure to assign clos to a CPU 212 211 * @socket_id: Socket/package id 213 - * @power_domain: Power Domain id 212 + * @power_domain_id: Power Domain id 214 213 * @logical_cpu: CPU number 215 214 * @clos: Clos ID to assign to the logical CPU 216 215 * ··· 229 228 * @get_set: Request is for get or set 230 229 * @punit_cpu_map: Set to 1 if the CPU number is punit numbering not 231 230 * Linux CPU number 231 + * @assoc_info: CLOS data for this CPU 232 232 * 233 233 * Structure used to get/set associate CPUs to clos using IOCTL 234 234 * ISST_IF_CLOS_ASSOC. ··· 259 257 /** 260 258 * struct isst_perf_level_info - Structure to get information on SST-PP levels 261 259 * @socket_id: Socket/package id 262 - * @power_domain: Power Domain id 260 + * @power_domain_id: Power Domain id 263 261 * @logical_cpu: CPU number 264 262 * @clos: Clos ID to assign to the logical CPU 265 263 * @max_level: Maximum performance level supported by the platform ··· 269 267 * @feature_state: SST-BF and SST-TF (enabled/disabled) status at current level 270 268 * @locked: SST-PP performance level change is locked/unlocked 271 269 * @enabled: SST-PP feature is enabled or not 272 - * @sst-tf_support: SST-TF support status at this level 273 - * @sst-bf_support: SST-BF support status at this level 270 + * @sst_tf_support: SST-TF support status at this level 271 + * @sst_bf_support: SST-BF support status at this level 274 272 * 275 273 * Structure to get SST-PP details using IOCTL ISST_IF_PERF_LEVELS. 276 274 */ ··· 291 289 /** 292 290 * struct isst_perf_level_control - Structure to set SST-PP level 293 291 * @socket_id: Socket/package id 294 - * @power_domain: Power Domain id 292 + * @power_domain_id: Power Domain id 295 293 * @level: level to set 296 294 * 297 295 * Structure used change SST-PP level using IOCTL ISST_IF_PERF_SET_LEVEL. ··· 305 303 /** 306 304 * struct isst_perf_feature_control - Structure to activate SST-BF/SST-TF 307 305 * @socket_id: Socket/package id 308 - * @power_domain: Power Domain id 306 + * @power_domain_id: Power Domain id 309 307 * @feature: bit 0 = SST-BF state, bit 1 = SST-TF state 310 308 * 311 309 * Structure used to enable SST-BF/SST-TF using IOCTL ISST_IF_PERF_SET_FEATURE. ··· 322 320 /** 323 321 * struct isst_perf_level_data_info - Structure to get SST-PP level details 324 322 * @socket_id: Socket/package id 325 - * @power_domain: Power Domain id 323 + * @power_domain_id: Power Domain id 326 324 * @level: SST-PP level for which caller wants to get information 327 325 * @tdp_ratio: TDP Ratio 328 326 * @base_freq_mhz: Base frequency in MHz ··· 343 341 * @pm_fabric_freq_mhz: Fabric (Uncore) minimum frequency 344 342 * @max_buckets: Maximum trl buckets 345 343 * @max_trl_levels: Maximum trl levels 346 - * @bucket_core_counts[TRL_MAX_BUCKETS]: Number of cores per bucket 347 - * @trl_freq_mhz[TRL_MAX_LEVELS][TRL_MAX_BUCKETS]: maximum frequency 344 + * @bucket_core_counts: Number of cores per bucket 345 + * @trl_freq_mhz: maximum frequency 348 346 * for a bucket and trl level 349 347 * 350 348 * Structure used to get information on frequencies and TDP for a SST-PP ··· 404 402 /** 405 403 * struct isst_perf_level_cpu_mask - Structure to get SST-PP level CPU mask 406 404 * @socket_id: Socket/package id 407 - * @power_domain: Power Domain id 405 + * @power_domain_id: Power Domain id 408 406 * @level: SST-PP level for which caller wants to get information 409 407 * @punit_cpu_map: Set to 1 if the CPU number is punit numbering not 410 408 * Linux CPU number. If 0 CPU buffer is copied to user space ··· 432 430 /** 433 431 * struct isst_base_freq_info - Structure to get SST-BF frequencies 434 432 * @socket_id: Socket/package id 435 - * @power_domain: Power Domain id 433 + * @power_domain_id: Power Domain id 436 434 * @level: SST-PP level for which caller wants to get information 437 435 * @high_base_freq_mhz: High priority CPU base frequency 438 436 * @low_base_freq_mhz: Low priority CPU base frequency ··· 455 453 /** 456 454 * struct isst_turbo_freq_info - Structure to get SST-TF frequencies 457 455 * @socket_id: Socket/package id 458 - * @power_domain: Power Domain id 456 + * @power_domain_id: Power Domain id 459 457 * @level: SST-PP level for which caller wants to get information 460 458 * @max_clip_freqs: Maximum number of low priority core clipping frequencies 459 + * @max_buckets: Maximum trl buckets 460 + * @max_trl_levels: Maximum trl levels 461 461 * @lp_clip_freq_mhz: Clip frequencies per trl level 462 462 * @bucket_core_counts: Maximum number of cores for a bucket 463 463 * @trl_freq_mhz: Frequencies per trl level for each bucket