History

Merge tag 'platform-drivers-x86-v6.18-4' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86

Pull x86 platform driver fixes from Ilpo Järvinen: "This one has lots of new HW entries which adds to the size in diffstat but the individual changes are simple. Fixes - acer-wmi: Ignore backlight event - alienware-wmi-wmax: Fix quirk match table order & drop redundant entries - amd/pmc: - Add Xbox Ally to spurious 8042 quirk list - Quirk list Lenovo Legion Go 2 NVMe resume - msi-wmi-platform: - Correct GUID to uppercase - GUID is uncleverly copy-pasted from an example so add a DMI whitelist - intel/speed_select_if: PCIBIOS_* return code conversion - intel-uncore-freq & ISST: Fix kernel doc warnings New HW support - alienware-wmi-wmax: - Alienware 16 Aurora support - Alienware M support - Alienware X support - Dell G support - amd/pmc: - ROG Xbox Ally (non-X) support - huaway-wmi: HONOR MagicBoox X16/X14 PrintScreen & YOYO keys - hp-wmi: - Omen 16-wf1xxx fan support - Omen MAX 16-ah0xx fan + thermal profile support - Victus 16-r0 and 16-s0 fan + thermal profile support - intel/hid: Intel Nova Lake support - intel-uncore-freq: - Intel Panther Lake support - Intel Wildcat Lake support - Intel Nova Lake support" * tag 'platform-drivers-x86-v6.18-4' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (21 commits) platform/x86: intel-uncore-freq: fix all header kernel-doc warnings platform/x86: acer-wmi: Ignore backlight event platform/x86/intel/speed_select_if: Convert PCIBIOS_* return codes to errnos platform/x86/intel/hid: Add Nova Lake support platform/x86: alienware-wmi-wmax: Add AWCC support to Alienware 16 Aurora platform/x86: hp-wmi: Add Omen MAX 16-ah0xx fan support and thermal profile platform/x86: msi-wmi-platform: Fix typo in WMI GUID platform/x86: msi-wmi-platform: Only load on MSI devices platform/x86/amd: pmc: Add Lenovo Legion Go 2 to pmc quirk list platform/x86/amd/pmc: Add spurious_8042 to Xbox Ally platform/x86/amd/pmc: Add support for Van Gogh SoC platform/x86: alienware-wmi-wmax: Add support for the whole "G" family platform/x86: alienware-wmi-wmax: Add support for the whole "X" family platform/x86: alienware-wmi-wmax: Add support for the whole "M" family platform/x86: alienware-wmi-wmax: Drop redundant DMI entries platform/x86: alienware-wmi-wmax: Fix "Alienware m16 R1 AMD" quirk order platform/x86: ISST: isst_if.h: fix all kernel-doc warnings platform/x86: intel-uncore-freq: Add additional client processors platform/x86: hp-wmi: Add Omen 16-wf1xxx fan support platform/x86: huawei-wmi: add keys for HONOR models ...

Linus Torvalds committed 11 months ago

Commit 6ba3bb32 parents 8e621c9 db3023315 files · +148 −114Browse files

Unified · Split

15 files
  1. Documentation/wmi/driver-development-guide.rst +1 −0
  2. drivers/platform/x86/Kconfig +1 −0
  3. drivers/platform/x86/acer-wmi.c +4 −0
  4. drivers/platform/x86/amd/pmc/pmc-quirks.c +25 −0
  5. drivers/platform/x86/amd/pmc/pmc.c +3 −0
  6. drivers/platform/x86/amd/pmc/pmc.h +1 −0
  7. drivers/platform/x86/dell/alienware-wmi-wmax.c +25 −81
  8. drivers/platform/x86/hp/hp-wmi.c +4 −2
  9. drivers/platform/x86/huawei-wmi.c +4 −0
  10. drivers/platform/x86/intel/hid.c +1 −0
  11. drivers/platform/x86/intel/speed_select_if/isst_if_mmio.c +2 −2
  12. drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.h +5 −4
  13. drivers/platform/x86/intel/uncore-frequency/uncore-frequency.c +4 −0
  14. drivers/platform/x86/msi-wmi-platform.c +41 −2
  15. include/uapi/linux/isst_if.h +27 −23
Documentation/wmi/driver-development-guide.rst+1−0
@@ -54,6 +54,7 @@ to matching WMI devices using a struct wmi_device_id table: · 53 unmodified lines
54::54::
55 55
56 static const struct wmi_device_id foo_id_table[] = {56 static const struct wmi_device_id foo_id_table[] = {
57 /* Only use uppercase letters! */
57 { "936DA01F-9ABD-4D9D-80C7-02AF85C822A8", NULL },58 { "936DA01F-9ABD-4D9D-80C7-02AF85C822A8", NULL },
58 { }59 { }
59 };60 };
drivers/platform/x86/Kconfig+1−0
@@ -545,6 +545,7 @@ config MSI_WMI · 544 unmodified lines
545config MSI_WMI_PLATFORM545config MSI_WMI_PLATFORM
546 tristate "MSI WMI Platform features"546 tristate "MSI WMI Platform features"
547 depends on ACPI_WMI547 depends on ACPI_WMI
548 depends on DMI
548 depends on HWMON549 depends on HWMON
549 help550 help
550 Say Y here if you want to have support for WMI-based platform features551 Say Y here if you want to have support for WMI-based platform features
drivers/platform/x86/acer-wmi.c+4−0
@@ -102,6 +102,7 @@ MODULE_ALIAS("wmi:676AA15E-6A47-4D9F-A2CC-1E6D18D14026"); · 101 unmodified lines
102 102
103enum acer_wmi_event_ids {103enum acer_wmi_event_ids {
104 WMID_HOTKEY_EVENT = 0x1,104 WMID_HOTKEY_EVENT = 0x1,
105 WMID_BACKLIGHT_EVENT = 0x4,
105 WMID_ACCEL_OR_KBD_DOCK_EVENT = 0x5,106 WMID_ACCEL_OR_KBD_DOCK_EVENT = 0x5,
106 WMID_GAMING_TURBO_KEY_EVENT = 0x7,107 WMID_GAMING_TURBO_KEY_EVENT = 0x7,
107 WMID_AC_EVENT = 0x8,108 WMID_AC_EVENT = 0x8,
@@ -2369,6 +2370,9 @@ static void acer_wmi_notify(union acpi_object *obj, void *context) · 2261 unmodified lines
2369 sparse_keymap_report_event(acer_wmi_input_dev, scancode, 1, true);2370 sparse_keymap_report_event(acer_wmi_input_dev, scancode, 1, true);
2370 }2371 }
2371 break;2372 break;
2373 case WMID_BACKLIGHT_EVENT:
2374 /* Already handled by acpi-video */
2375 break;
2372 case WMID_ACCEL_OR_KBD_DOCK_EVENT:2376 case WMID_ACCEL_OR_KBD_DOCK_EVENT:
2373 acer_gsensor_event();2377 acer_gsensor_event();
2374 acer_kbd_dock_event(&return_value);2378 acer_kbd_dock_event(&return_value);
drivers/platform/x86/amd/pmc/pmc-quirks.c+25−0
@@ -122,6 +122,14 @@ static const struct dmi_system_id fwbug_list[] = { · 121 unmodified lines
122 DMI_MATCH(DMI_PRODUCT_NAME, "21A1"),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 /* https://bugzilla.kernel.org/show_bug.cgi?id=218024 */133 /* https://bugzilla.kernel.org/show_bug.cgi?id=218024 */
126 {134 {
127 .ident = "V14 G4 AMN",135 .ident = "V14 G4 AMN",
@@ -204,6 +212,23 @@ static const struct dmi_system_id fwbug_list[] = { · 76 unmodified lines
204 DMI_MATCH(DMI_PRODUCT_NAME, "82ND"),212 DMI_MATCH(DMI_PRODUCT_NAME, "82ND"),
205 }213 }
206 },214 },
215 /* https://gitlab.freedesktop.org/drm/amd/-/issues/4618 */
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, "83N0"),
222 }
223 },
224 {
225 .ident = "Lenovo Legion Go 2",
226 .driver_data = &quirk_s2idle_bug,
227 .matches = {
228 DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
229 DMI_MATCH(DMI_PRODUCT_NAME, "83N1"),
230 }
231 },
207 /* https://gitlab.freedesktop.org/drm/amd/-/issues/2684 */232 /* https://gitlab.freedesktop.org/drm/amd/-/issues/2684 */
208 {233 {
209 .ident = "HP Laptop 15s-eq2xxx",234 .ident = "HP Laptop 15s-eq2xxx",
drivers/platform/x86/amd/pmc/pmc.c+3−0
@@ -106,6 +106,7 @@ static void amd_pmc_get_ip_info(struct amd_pmc_dev *dev) · 105 unmodified lines
106 switch (dev->cpu_id) {106 switch (dev->cpu_id) {
107 case AMD_CPU_ID_PCO:107 case AMD_CPU_ID_PCO:
108 case AMD_CPU_ID_RN:108 case AMD_CPU_ID_RN:
109 case AMD_CPU_ID_VG:
109 case AMD_CPU_ID_YC:110 case AMD_CPU_ID_YC:
110 case AMD_CPU_ID_CB:111 case AMD_CPU_ID_CB:
111 dev->num_ips = 12;112 dev->num_ips = 12;
@@ -517,6 +518,7 @@ static int amd_pmc_get_os_hint(struct amd_pmc_dev *dev) · 405 unmodified lines
517 case AMD_CPU_ID_PCO:518 case AMD_CPU_ID_PCO:
518 return MSG_OS_HINT_PCO;519 return MSG_OS_HINT_PCO;
519 case AMD_CPU_ID_RN:520 case AMD_CPU_ID_RN:
521 case AMD_CPU_ID_VG:
520 case AMD_CPU_ID_YC:522 case AMD_CPU_ID_YC:
521 case AMD_CPU_ID_CB:523 case AMD_CPU_ID_CB:
522 case AMD_CPU_ID_PS:524 case AMD_CPU_ID_PS:
@@ -717,6 +719,7 @@ static const struct pci_device_id pmc_pci_ids[] = { · 194 unmodified lines
717 { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_RV) },719 { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_RV) },
718 { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_SP) },720 { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_SP) },
719 { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_SHP) },721 { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_SHP) },
722 { PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_VG) },
720 { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_ROOT) },723 { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_ROOT) },
721 { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_ROOT) },724 { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_ROOT) },
722 { }725 { }
drivers/platform/x86/amd/pmc/pmc.h+1−0
@@ -156,6 +156,7 @@ void amd_mp2_stb_deinit(struct amd_pmc_dev *dev); · 155 unmodified lines
156#define AMD_CPU_ID_RN 0x1630156#define AMD_CPU_ID_RN 0x1630
157#define AMD_CPU_ID_PCO AMD_CPU_ID_RV157#define AMD_CPU_ID_PCO AMD_CPU_ID_RV
158#define AMD_CPU_ID_CZN AMD_CPU_ID_RN158#define AMD_CPU_ID_CZN AMD_CPU_ID_RN
159#define AMD_CPU_ID_VG 0x1645
159#define AMD_CPU_ID_YC 0x14B5160#define AMD_CPU_ID_YC 0x14B5
160#define AMD_CPU_ID_CB 0x14D8161#define AMD_CPU_ID_CB 0x14D8
161#define AMD_CPU_ID_PS 0x14E8162#define AMD_CPU_ID_PS 0x14E8
drivers/platform/x86/dell/alienware-wmi-wmax.c+25−81
@@ -90,34 +90,34 @@ static struct awcc_quirks empty_quirks; · 89 unmodified lines
90 90
91static const struct dmi_system_id awcc_dmi_table[] __initconst = {91static const struct dmi_system_id awcc_dmi_table[] __initconst = {
92 {92 {
93 .ident = "Alienware Area-51m",93 .ident = "Alienware 16 Aurora",
94 .matches = {94 .matches = {
95 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),95 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
96 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware Area-51m"),96 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware 16 Aurora"),
97 },97 },
98 .driver_data = &generic_quirks,98 .driver_data = &g_series_quirks,
99 },99 },
100 {100 {
101 .ident = "Alienware Area-51m R2",101 .ident = "Alienware Area-51m",
102 .matches = {102 .matches = {
103 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),103 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
104 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware Area-51m R2"),104 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware Area-51m"),
105 },105 },
106 .driver_data = &generic_quirks,106 .driver_data = &generic_quirks,
107 },107 },
108 {108 {
109 .ident = "Alienware m15 R5",109 .ident = "Alienware m15",
110 .matches = {110 .matches = {
111 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),111 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
112 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m15 R5"),112 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m15"),
113 },113 },
114 .driver_data = &generic_quirks,114 .driver_data = &generic_quirks,
115 },115 },
116 {116 {
117 .ident = "Alienware m15 R7",117 .ident = "Alienware m16 R1 AMD",
118 .matches = {118 .matches = {
119 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),119 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
120 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m15 R7"),120 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m16 R1 AMD"),
121 },121 },
122 .driver_data = &generic_quirks,122 .driver_data = &generic_quirks,
123 },123 },
@@ -129,14 +129,6 @@ static const struct dmi_system_id awcc_dmi_table[] __initconst = { · 5 unmodified lines
129 },129 },
130 .driver_data = &g_series_quirks,130 .driver_data = &g_series_quirks,
131 },131 },
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 {132 {
141 .ident = "Alienware m16 R2",133 .ident = "Alienware m16 R2",
142 .matches = {134 .matches = {
@@ -146,114 +138,66 @@ static const struct dmi_system_id awcc_dmi_table[] __initconst = { · 3 unmodified lines
146 .driver_data = &generic_quirks,138 .driver_data = &generic_quirks,
147 },139 },
148 {140 {
149 .ident = "Alienware m17 R5",141 .ident = "Alienware m17",
150 .matches = {142 .matches = {
151 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),143 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
152 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m17 R5 AMD"),144 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m17"),
153 },145 },
154 .driver_data = &generic_quirks,146 .driver_data = &generic_quirks,
155 },147 },
156 {148 {
157 .ident = "Alienware m18 R2",149 .ident = "Alienware m18",
158 .matches = {150 .matches = {
159 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),151 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
160 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m18 R2"),152 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m18"),
161 },153 },
162 .driver_data = &generic_quirks,154 .driver_data = &generic_quirks,
163 },155 },
164 {156 {
165 .ident = "Alienware x15 R1",157 .ident = "Alienware x15",
166 .matches = {158 .matches = {
167 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),159 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
168 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x15 R1"),160 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x15"),
169 },161 },
170 .driver_data = &generic_quirks,162 .driver_data = &generic_quirks,
171 },163 },
172 {164 {
173 .ident = "Alienware x15 R2",165 .ident = "Alienware x17",
174 .matches = {166 .matches = {
175 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),167 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
176 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x15 R2"),168 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x17"),
177 },169 },
178 .driver_data = &generic_quirks,170 .driver_data = &generic_quirks,
179 },171 },
180 {172 {
181 .ident = "Alienware x17 R2",173 .ident = "Dell Inc. G15",
182 .matches = {
183 DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
184 DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x17 R2"),
185 },
186 .driver_data = &generic_quirks,
187 },
188 {
189 .ident = "Dell Inc. G15 5510",
190 .matches = {
191 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
192 DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5510"),
193 },
194 .driver_data = &g_series_quirks,
195 },
196 {
197 .ident = "Dell Inc. G15 5511",
198 .matches = {
199 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
200 DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5511"),
201 },
202 .driver_data = &g_series_quirks,
203 },
204 {
205 .ident = "Dell Inc. G15 5515",
206 .matches = {
207 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
208 DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5515"),
209 },
210 .driver_data = &g_series_quirks,
211 },
212 {
213 .ident = "Dell Inc. G15 5530",
214 .matches = {
215 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
216 DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5530"),
217 },
218 .driver_data = &g_series_quirks,
219 },
220 {
221 .ident = "Dell Inc. G16 7630",
222 .matches = {
223 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
224 DMI_MATCH(DMI_PRODUCT_NAME, "Dell G16 7630"),
225 },
226 .driver_data = &g_series_quirks,
227 },
228 {
229 .ident = "Dell Inc. G3 3500",
230 .matches = {174 .matches = {
231 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),175 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
232 DMI_MATCH(DMI_PRODUCT_NAME, "G3 3500"),176 DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15"),
233 },177 },
234 .driver_data = &g_series_quirks,178 .driver_data = &g_series_quirks,
235 },179 },
236 {180 {
237 .ident = "Dell Inc. G3 3590",181 .ident = "Dell Inc. G16",
238 .matches = {182 .matches = {
239 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),183 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
240 DMI_MATCH(DMI_PRODUCT_NAME, "G3 3590"),184 DMI_MATCH(DMI_PRODUCT_NAME, "Dell G16"),
241 },185 },
242 .driver_data = &g_series_quirks,186 .driver_data = &g_series_quirks,
243 },187 },
244 {188 {
245 .ident = "Dell Inc. G5 5500",189 .ident = "Dell Inc. G3",
246 .matches = {190 .matches = {
247 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),191 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
248 DMI_MATCH(DMI_PRODUCT_NAME, "G5 5500"),192 DMI_MATCH(DMI_PRODUCT_NAME, "G3"),
249 },193 },
250 .driver_data = &g_series_quirks,194 .driver_data = &g_series_quirks,
251 },195 },
252 {196 {
253 .ident = "Dell Inc. G5 5505",197 .ident = "Dell Inc. G5",
254 .matches = {198 .matches = {
255 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),199 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
256 DMI_MATCH(DMI_PRODUCT_NAME, "G5 5505"),200 DMI_MATCH(DMI_PRODUCT_NAME, "G5"),
257 },201 },
258 .driver_data = &g_series_quirks,202 .driver_data = &g_series_quirks,
259 },203 },
drivers/platform/x86/hp/hp-wmi.c+4−2
@@ -92,9 +92,11 @@ static const char * const victus_thermal_profile_boards[] = { · 91 unmodified lines
92 "8A25"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 */
96static const char * const victus_s_thermal_profile_boards[] = {96static 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
100enum hp_wmi_radio {102enum hp_wmi_radio {
drivers/platform/x86/huawei-wmi.c+4−0
@@ -81,6 +81,10 @@ static const struct key_entry huawei_wmi_keymap[] = { · 80 unmodified lines
81 { KE_KEY, 0x289, { KEY_WLAN } },81 { KE_KEY, 0x289, { KEY_WLAN } },
82 // Huawei |M| key82 // Huawei |M| key
83 { KE_KEY, 0x28a, { KEY_CONFIG } },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 // Keyboard backlit88 // Keyboard backlit
85 { KE_IGNORE, 0x293, { KEY_KBDILLUMTOGGLE } },89 { KE_IGNORE, 0x293, { KEY_KBDILLUMTOGGLE } },
86 { KE_IGNORE, 0x294, { KEY_KBDILLUMUP } },90 { KE_IGNORE, 0x294, { KEY_KBDILLUMUP } },
drivers/platform/x86/intel/hid.c+1−0
@@ -55,6 +55,7 @@ static const struct acpi_device_id intel_hid_ids[] = { · 54 unmodified lines
55 { "INTC10CB" },55 { "INTC10CB" },
56 { "INTC10CC" },56 { "INTC10CC" },
57 { "INTC10F1" },57 { "INTC10F1" },
58 { "INTC10F2" },
58 { }59 { }
59};60};
60MODULE_DEVICE_TABLE(acpi, intel_hid_ids);61MODULE_DEVICE_TABLE(acpi, intel_hid_ids);
drivers/platform/x86/intel/speed_select_if/isst_if_mmio.c+2−2
@@ -108,11 +108,11 @@ static int isst_if_probe(struct pci_dev *pdev, const struct pci_device_id *ent) · 107 unmodified lines
108 108
109 ret = pci_read_config_dword(pdev, 0xD0, &mmio_base);109 ret = pci_read_config_dword(pdev, 0xD0, &mmio_base);
110 if (ret)110 if (ret)
111 return ret;111 return pcibios_err_to_errno(ret);
112 112
113 ret = pci_read_config_dword(pdev, 0xFC, &pcu_base);113 ret = pci_read_config_dword(pdev, 0xFC, &pcu_base);
114 if (ret)114 if (ret)
115 return ret;115 return pcibios_err_to_errno(ret);
116 116
117 pcu_base &= GENMASK(10, 0);117 pcu_base &= GENMASK(10, 0);
118 base_addr = (u64)mmio_base << 23 | (u64) pcu_base << 12;118 base_addr = (u64)mmio_base << 23 | (u64) pcu_base << 12;
drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.h+5−4
@@ -40,7 +40,7 @@ · 39 unmodified lines
40 * @agent_type_mask: Bit mask of all hardware agents for this domain40 * @agent_type_mask: Bit mask of all hardware agents for this domain
41 * @uncore_attr_group: Attribute group storage41 * @uncore_attr_group: Attribute group storage
42 * @max_freq_khz_kobj_attr: Storage for kobject attribute max_freq_khz42 * @max_freq_khz_kobj_attr: Storage for kobject attribute max_freq_khz
43 * @mix_freq_khz_kobj_attr: Storage for kobject attribute min_freq_khz43 * @min_freq_khz_kobj_attr: Storage for kobject attribute min_freq_khz
44 * @initial_max_freq_khz_kobj_attr: Storage for kobject attribute initial_max_freq_khz44 * @initial_max_freq_khz_kobj_attr: Storage for kobject attribute initial_max_freq_khz
45 * @initial_min_freq_khz_kobj_attr: Storage for kobject attribute initial_min_freq_khz45 * @initial_min_freq_khz_kobj_attr: Storage for kobject attribute initial_min_freq_khz
46 * @current_freq_khz_kobj_attr: Storage for kobject attribute current_freq_khz46 * @current_freq_khz_kobj_attr: Storage for kobject attribute current_freq_khz
@@ -48,13 +48,14 @@ · 1 unmodified line
48 * @fabric_cluster_id_kobj_attr: Storage for kobject attribute fabric_cluster_id48 * @fabric_cluster_id_kobj_attr: Storage for kobject attribute fabric_cluster_id
49 * @package_id_kobj_attr: Storage for kobject attribute package_id49 * @package_id_kobj_attr: Storage for kobject attribute package_id
50 * @elc_low_threshold_percent_kobj_attr:50 * @elc_low_threshold_percent_kobj_attr:
51 Storage for kobject attribute elc_low_threshold_percent51 * Storage for kobject attribute elc_low_threshold_percent
52 * @elc_high_threshold_percent_kobj_attr:52 * @elc_high_threshold_percent_kobj_attr:
53 Storage for kobject attribute elc_high_threshold_percent53 * Storage for kobject attribute elc_high_threshold_percent
54 * @elc_high_threshold_enable_kobj_attr:54 * @elc_high_threshold_enable_kobj_attr:
55 Storage for kobject attribute elc_high_threshold_enable55 * Storage for kobject attribute elc_high_threshold_enable
56 * @elc_floor_freq_khz_kobj_attr: Storage for kobject attribute elc_floor_freq_khz56 * @elc_floor_freq_khz_kobj_attr: Storage for kobject attribute elc_floor_freq_khz
57 * @agent_types_kobj_attr: Storage for kobject attribute agent_type57 * @agent_types_kobj_attr: Storage for kobject attribute agent_type
58 * @die_id_kobj_attr: Attribute storage for die_id information
58 * @uncore_attrs: Attribute storage for group creation59 * @uncore_attrs: Attribute storage for group creation
59 *60 *
60 * This structure is used to encapsulate all data related to uncore sysfs61 * This structure is used to encapsulate all data related to uncore sysfs
drivers/platform/x86/intel/uncore-frequency/uncore-frequency.c+4−0
@@ -256,6 +256,10 @@ static const struct x86_cpu_id intel_uncore_cpu_ids[] = { · 255 unmodified lines
256 X86_MATCH_VFM(INTEL_ARROWLAKE, NULL),256 X86_MATCH_VFM(INTEL_ARROWLAKE, NULL),
257 X86_MATCH_VFM(INTEL_ARROWLAKE_H, NULL),257 X86_MATCH_VFM(INTEL_ARROWLAKE_H, NULL),
258 X86_MATCH_VFM(INTEL_LUNARLAKE_M, NULL),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};
261MODULE_DEVICE_TABLE(x86cpu, intel_uncore_cpu_ids);265MODULE_DEVICE_TABLE(x86cpu, intel_uncore_cpu_ids);
drivers/platform/x86/msi-wmi-platform.c+41−2
@@ -14,6 +14,7 @@ · 13 unmodified lines
14#include <linux/debugfs.h>14#include <linux/debugfs.h>
15#include <linux/device.h>15#include <linux/device.h>
16#include <linux/device/driver.h>16#include <linux/device/driver.h>
17#include <linux/dmi.h>
17#include <linux/errno.h>18#include <linux/errno.h>
18#include <linux/hwmon.h>19#include <linux/hwmon.h>
19#include <linux/kernel.h>20#include <linux/kernel.h>
@@ -28,7 +29,7 @@ · 8 unmodified lines
28 29
29#define DRIVER_NAME "msi-wmi-platform"30#define DRIVER_NAME "msi-wmi-platform"
30 31
31#define MSI_PLATFORM_GUID "ABBC0F6E-8EA1-11d1-00A0-C90629100000"32#define MSI_PLATFORM_GUID "ABBC0F6E-8EA1-11D1-00A0-C90629100000"
32 33
33#define MSI_WMI_PLATFORM_INTERFACE_VERSION 234#define MSI_WMI_PLATFORM_INTERFACE_VERSION 2
34 35
@@ -448,7 +449,45 @@ static struct wmi_driver msi_wmi_platform_driver = { · 413 unmodified lines
448 .probe = msi_wmi_platform_probe,449 .probe = msi_wmi_platform_probe,
449 .no_singleton = true,450 .no_singleton = true,
450};451};
451module_wmi_driver(msi_wmi_platform_driver);452
453/*
454 * MSI reused the WMI GUID from the WMI-ACPI sample code provided by Microsoft,
455 * so other manufacturers might use it as well for their WMI-ACPI implementations.
456 */
457static const struct dmi_system_id msi_wmi_platform_whitelist[] __initconst = {
458 {
459 .matches = {
460 DMI_MATCH(DMI_SYS_VENDOR, "MICRO-STAR INT"),
461 },
462 },
463 {
464 .matches = {
465 DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"),
466 },
467 },
468 { }
469};
470
471static int __init msi_wmi_platform_module_init(void)
472{
473 if (!dmi_check_system(msi_wmi_platform_whitelist)) {
474 if (!force)
475 return -ENODEV;
476
477 pr_warn("Ignoring DMI whitelist\n");
478 }
479
480 return wmi_driver_register(&msi_wmi_platform_driver);
481}
482
483static void __exit msi_wmi_platform_module_exit(void)
484{
485 wmi_driver_unregister(&msi_wmi_platform_driver);
486}
487
488module_init(msi_wmi_platform_module_init);
489module_exit(msi_wmi_platform_module_exit);
490
452 491
453MODULE_AUTHOR("Armin Wolf <W_Armin@gmx.de>");492MODULE_AUTHOR("Armin Wolf <W_Armin@gmx.de>");
454MODULE_DESCRIPTION("MSI WMI platform features");493MODULE_DESCRIPTION("MSI WMI platform features");
include/uapi/linux/isst_if.h+27−23
@@ -52,7 +52,7 @@ struct isst_if_cpu_map { · 51 unmodified lines
52/**52/**
53 * struct isst_if_cpu_maps - structure for CPU map IOCTL53 * struct isst_if_cpu_maps - structure for CPU map IOCTL
54 * @cmd_count: Number of CPU mapping command in cpu_map[]54 * @cmd_count: Number of CPU mapping command in cpu_map[]
55 * @cpu_map[]: Holds one or more CPU map data structure55 * @cpu_map: Holds one or more CPU map data structure
56 *56 *
57 * This structure used with ioctl ISST_IF_GET_PHY_ID to send57 * This structure used with ioctl ISST_IF_GET_PHY_ID to send
58 * one or more CPU mapping commands. Here IOCTL return value indicates58 * one or more CPU mapping commands. Here IOCTL return value indicates
@@ -82,8 +82,8 @@ struct isst_if_io_reg { · 23 unmodified lines
82 82
83/**83/**
84 * struct isst_if_io_regs - structure for IO register commands84 * struct isst_if_io_regs - structure for IO register commands
85 * @cmd_count: Number of io reg commands in io_reg[]85 * @req_count: Number of io reg commands in io_reg[]
86 * @io_reg[]: Holds one or more io_reg command structure86 * @io_reg: Holds one or more io_reg command structure
87 *87 *
88 * This structure used with ioctl ISST_IF_IO_CMD to send88 * This structure used with ioctl ISST_IF_IO_CMD to send
89 * one or more read/write commands to PUNIT. Here IOCTL return value89 * one or more read/write commands to PUNIT. Here IOCTL return value
@@ -120,7 +120,7 @@ struct isst_if_mbox_cmd { · 30 unmodified lines
120/**120/**
121 * struct isst_if_mbox_cmds - structure for mailbox commands121 * struct isst_if_mbox_cmds - structure for mailbox commands
122 * @cmd_count: Number of mailbox commands in mbox_cmd[]122 * @cmd_count: Number of mailbox commands in mbox_cmd[]
123 * @mbox_cmd[]: Holds one or more mbox commands123 * @mbox_cmd: Holds one or more mbox commands
124 *124 *
125 * This structure used with ioctl ISST_IF_MBOX_COMMAND to send125 * This structure used with ioctl ISST_IF_MBOX_COMMAND to send
126 * one or more mailbox commands to PUNIT. Here IOCTL return value126 * one or more mailbox commands to PUNIT. Here IOCTL return value
@@ -152,7 +152,7 @@ struct isst_if_msr_cmd { · 25 unmodified lines
152/**152/**
153 * struct isst_if_msr_cmds - structure for msr commands153 * struct isst_if_msr_cmds - structure for msr commands
154 * @cmd_count: Number of mailbox commands in msr_cmd[]154 * @cmd_count: Number of mailbox commands in msr_cmd[]
155 * @msr_cmd[]: Holds one or more msr commands155 * @msr_cmd: Holds one or more msr commands
156 *156 *
157 * This structure used with ioctl ISST_IF_MSR_COMMAND to send157 * This structure used with ioctl ISST_IF_MSR_COMMAND to send
158 * one or more MSR commands. IOCTL return value indicates number of158 * one or more MSR commands. IOCTL return value indicates number of
@@ -167,8 +167,9 @@ struct isst_if_msr_cmds { · 8 unmodified lines
167 * struct isst_core_power - Structure to get/set core_power feature167 * struct isst_core_power - Structure to get/set core_power feature
168 * @get_set: 0: Get, 1: Set168 * @get_set: 0: Get, 1: Set
169 * @socket_id: Socket/package id169 * @socket_id: Socket/package id
170 * @power_domain: Power Domain id170 * @power_domain_id: Power Domain id
171 * @enable: Feature enable status171 * @enable: Feature enable status
172 * @supported: Power domain supports SST_CP interface
172 * @priority_type: Priority type for the feature (ordered/proportional)173 * @priority_type: Priority type for the feature (ordered/proportional)
173 *174 *
174 * Structure to get/set core_power feature state using IOCTL175 * Structure to get/set core_power feature state using IOCTL
@@ -187,11 +188,11 @@ struct isst_core_power { · 12 unmodified lines
187 * struct isst_clos_param - Structure to get/set clos praram188 * struct isst_clos_param - Structure to get/set clos praram
188 * @get_set: 0: Get, 1: Set189 * @get_set: 0: Get, 1: Set
189 * @socket_id: Socket/package id190 * @socket_id: Socket/package id
190 * @power_domain: Power Domain id191 * @power_domain_id: Power Domain id
191 * clos: Clos ID for the parameters192 * @clos: Clos ID for the parameters
192 * min_freq_mhz: Minimum frequency in MHz193 * @min_freq_mhz: Minimum frequency in MHz
193 * max_freq_mhz: Maximum frequency in MHz194 * @max_freq_mhz: Maximum frequency in MHz
194 * prop_prio: Proportional priority from 0-15195 * @prop_prio: Proportional priority from 0-15
195 *196 *
196 * Structure to get/set per clos property using IOCTL197 * Structure to get/set per clos property using IOCTL
197 * ISST_IF_CLOS_PARAM.198 * ISST_IF_CLOS_PARAM.
@@ -209,7 +210,7 @@ struct isst_clos_param { · 11 unmodified lines
209/**210/**
210 * struct isst_if_clos_assoc - Structure to assign clos to a CPU211 * struct isst_if_clos_assoc - Structure to assign clos to a CPU
211 * @socket_id: Socket/package id212 * @socket_id: Socket/package id
212 * @power_domain: Power Domain id213 * @power_domain_id: Power Domain id
213 * @logical_cpu: CPU number214 * @logical_cpu: CPU number
214 * @clos: Clos ID to assign to the logical CPU215 * @clos: Clos ID to assign to the logical CPU
215 *216 *
@@ -228,6 +229,7 @@ struct isst_if_clos_assoc { · 12 unmodified lines
228 * @get_set: Request is for get or set229 * @get_set: Request is for get or set
229 * @punit_cpu_map: Set to 1 if the CPU number is punit numbering not230 * @punit_cpu_map: Set to 1 if the CPU number is punit numbering not
230 * Linux CPU number231 * Linux CPU number
232 * @assoc_info: CLOS data for this CPU
231 *233 *
232 * Structure used to get/set associate CPUs to clos using IOCTL234 * Structure used to get/set associate CPUs to clos using IOCTL
233 * ISST_IF_CLOS_ASSOC.235 * ISST_IF_CLOS_ASSOC.
@@ -257,7 +259,7 @@ struct isst_tpmi_instance_count { · 23 unmodified lines
257/**259/**
258 * struct isst_perf_level_info - Structure to get information on SST-PP levels260 * struct isst_perf_level_info - Structure to get information on SST-PP levels
259 * @socket_id: Socket/package id261 * @socket_id: Socket/package id
260 * @power_domain: Power Domain id262 * @power_domain_id: Power Domain id
261 * @logical_cpu: CPU number263 * @logical_cpu: CPU number
262 * @clos: Clos ID to assign to the logical CPU264 * @clos: Clos ID to assign to the logical CPU
263 * @max_level: Maximum performance level supported by the platform265 * @max_level: Maximum performance level supported by the platform
@@ -267,8 +269,8 @@ struct isst_tpmi_instance_count { · 3 unmodified lines
267 * @feature_state: SST-BF and SST-TF (enabled/disabled) status at current level269 * @feature_state: SST-BF and SST-TF (enabled/disabled) status at current level
268 * @locked: SST-PP performance level change is locked/unlocked270 * @locked: SST-PP performance level change is locked/unlocked
269 * @enabled: SST-PP feature is enabled or not271 * @enabled: SST-PP feature is enabled or not
270 * @sst-tf_support: SST-TF support status at this level272 * @sst_tf_support: SST-TF support status at this level
271 * @sst-bf_support: SST-BF support status at this level273 * @sst_bf_support: SST-BF support status at this level
272 *274 *
273 * Structure to get SST-PP details using IOCTL ISST_IF_PERF_LEVELS.275 * Structure to get SST-PP details using IOCTL ISST_IF_PERF_LEVELS.
274 */276 */
@@ -289,7 +291,7 @@ struct isst_perf_level_info { · 14 unmodified lines
289/**291/**
290 * struct isst_perf_level_control - Structure to set SST-PP level292 * struct isst_perf_level_control - Structure to set SST-PP level
291 * @socket_id: Socket/package id293 * @socket_id: Socket/package id
292 * @power_domain: Power Domain id294 * @power_domain_id: Power Domain id
293 * @level: level to set295 * @level: level to set
294 *296 *
295 * Structure used change SST-PP level using IOCTL ISST_IF_PERF_SET_LEVEL.297 * Structure used change SST-PP level using IOCTL ISST_IF_PERF_SET_LEVEL.
@@ -303,7 +305,7 @@ struct isst_perf_level_control { · 7 unmodified lines
303/**305/**
304 * struct isst_perf_feature_control - Structure to activate SST-BF/SST-TF306 * struct isst_perf_feature_control - Structure to activate SST-BF/SST-TF
305 * @socket_id: Socket/package id307 * @socket_id: Socket/package id
306 * @power_domain: Power Domain id308 * @power_domain_id: Power Domain id
307 * @feature: bit 0 = SST-BF state, bit 1 = SST-TF state309 * @feature: bit 0 = SST-BF state, bit 1 = SST-TF state
308 *310 *
309 * Structure used to enable SST-BF/SST-TF using IOCTL ISST_IF_PERF_SET_FEATURE.311 * Structure used to enable SST-BF/SST-TF using IOCTL ISST_IF_PERF_SET_FEATURE.
@@ -320,7 +322,7 @@ struct isst_perf_feature_control { · 10 unmodified lines
320/**322/**
321 * struct isst_perf_level_data_info - Structure to get SST-PP level details323 * struct isst_perf_level_data_info - Structure to get SST-PP level details
322 * @socket_id: Socket/package id324 * @socket_id: Socket/package id
323 * @power_domain: Power Domain id325 * @power_domain_id: Power Domain id
324 * @level: SST-PP level for which caller wants to get information326 * @level: SST-PP level for which caller wants to get information
325 * @tdp_ratio: TDP Ratio327 * @tdp_ratio: TDP Ratio
326 * @base_freq_mhz: Base frequency in MHz328 * @base_freq_mhz: Base frequency in MHz
@@ -341,8 +343,8 @@ struct isst_perf_feature_control { · 14 unmodified lines
341 * @pm_fabric_freq_mhz: Fabric (Uncore) minimum frequency343 * @pm_fabric_freq_mhz: Fabric (Uncore) minimum frequency
342 * @max_buckets: Maximum trl buckets344 * @max_buckets: Maximum trl buckets
343 * @max_trl_levels: Maximum trl levels345 * @max_trl_levels: Maximum trl levels
344 * @bucket_core_counts[TRL_MAX_BUCKETS]: Number of cores per bucket346 * @bucket_core_counts: Number of cores per bucket
345 * @trl_freq_mhz[TRL_MAX_LEVELS][TRL_MAX_BUCKETS]: maximum frequency347 * @trl_freq_mhz: maximum frequency
346 * for a bucket and trl level348 * for a bucket and trl level
347 *349 *
348 * Structure used to get information on frequencies and TDP for a SST-PP350 * Structure used to get information on frequencies and TDP for a SST-PP
@@ -402,7 +404,7 @@ struct isst_perf_level_fabric_info { · 53 unmodified lines
402/**404/**
403 * struct isst_perf_level_cpu_mask - Structure to get SST-PP level CPU mask405 * struct isst_perf_level_cpu_mask - Structure to get SST-PP level CPU mask
404 * @socket_id: Socket/package id406 * @socket_id: Socket/package id
405 * @power_domain: Power Domain id407 * @power_domain_id: Power Domain id
406 * @level: SST-PP level for which caller wants to get information408 * @level: SST-PP level for which caller wants to get information
407 * @punit_cpu_map: Set to 1 if the CPU number is punit numbering not409 * @punit_cpu_map: Set to 1 if the CPU number is punit numbering not
408 * Linux CPU number. If 0 CPU buffer is copied to user space410 * Linux CPU number. If 0 CPU buffer is copied to user space
@@ -430,7 +432,7 @@ struct isst_perf_level_cpu_mask { · 21 unmodified lines
430/**432/**
431 * struct isst_base_freq_info - Structure to get SST-BF frequencies433 * struct isst_base_freq_info - Structure to get SST-BF frequencies
432 * @socket_id: Socket/package id434 * @socket_id: Socket/package id
433 * @power_domain: Power Domain id435 * @power_domain_id: Power Domain id
434 * @level: SST-PP level for which caller wants to get information436 * @level: SST-PP level for which caller wants to get information
435 * @high_base_freq_mhz: High priority CPU base frequency437 * @high_base_freq_mhz: High priority CPU base frequency
436 * @low_base_freq_mhz: Low priority CPU base frequency438 * @low_base_freq_mhz: Low priority CPU base frequency
@@ -453,9 +455,11 @@ struct isst_base_freq_info { · 16 unmodified lines
453/**455/**
454 * struct isst_turbo_freq_info - Structure to get SST-TF frequencies456 * struct isst_turbo_freq_info - Structure to get SST-TF frequencies
455 * @socket_id: Socket/package id457 * @socket_id: Socket/package id
456 * @power_domain: Power Domain id458 * @power_domain_id: Power Domain id
457 * @level: SST-PP level for which caller wants to get information459 * @level: SST-PP level for which caller wants to get information
458 * @max_clip_freqs: Maximum number of low priority core clipping frequencies460 * @max_clip_freqs: Maximum number of low priority core clipping frequencies
461 * @max_buckets: Maximum trl buckets
462 * @max_trl_levels: Maximum trl levels
459 * @lp_clip_freq_mhz: Clip frequencies per trl level463 * @lp_clip_freq_mhz: Clip frequencies per trl level
460 * @bucket_core_counts: Maximum number of cores for a bucket464 * @bucket_core_counts: Maximum number of cores for a bucket
461 * @trl_freq_mhz: Frequencies per trl level for each bucket465 * @trl_freq_mhz: Frequencies per trl level for each bucket