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 tag 'platform-drivers-x86-v6.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86

Pull x86 platform driver fixes from Hans de Goede:
"Nothing special to report just various small fixes:

- thinkpad_acpi: Fix profile (performance/bal/low-power) regression
on T490

- misc other small fixes / hw-id additions"

* tag 'platform-drivers-x86-v6.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
platform/mellanox: fix potential race in mlxbf-tmfifo driver
platform/x86: touchscreen_dmi: Add info for the Dexp Ursus KX210i
platform/x86: touchscreen_dmi: Add upside-down quirk for GDIX1002 ts on the Juno Tablet
platform/x86: thinkpad_acpi: Add profile force ability
platform/x86: thinkpad_acpi: Fix platform profiles on T490
platform/x86: hp-wmi: add micmute to hp_wmi_keymap struct
platform/x86/intel-uncore-freq: Return error on write frequency
platform/x86: intel_scu_pcidrv: Add back PCI ID for Medfield

+76 -8
+9 -2
drivers/platform/mellanox/mlxbf-tmfifo.c
··· 784 784 fifo = vring->fifo; 785 785 786 786 /* Return if vdev is not ready. */ 787 - if (!fifo->vdev[devid]) 787 + if (!fifo || !fifo->vdev[devid]) 788 788 return; 789 789 790 790 /* Return if another vring is running. */ ··· 980 980 981 981 vq->num_max = vring->num; 982 982 983 + vq->priv = vring; 984 + 985 + /* Make vq update visible before using it. */ 986 + virtio_mb(false); 987 + 983 988 vqs[i] = vq; 984 989 vring->vq = vq; 985 - vq->priv = vring; 986 990 } 987 991 988 992 return 0; ··· 1305 1301 goto fail; 1306 1302 1307 1303 mod_timer(&fifo->timer, jiffies + MLXBF_TMFIFO_TIMER_INTERVAL); 1304 + 1305 + /* Make all updates visible before setting the 'is_ready' flag. */ 1306 + virtio_mb(false); 1308 1307 1309 1308 fifo->is_ready = true; 1310 1309 return 0;
+1
drivers/platform/x86/hp/hp-wmi.c
··· 211 211 static const struct key_entry hp_wmi_keymap[] = { 212 212 { KE_KEY, 0x02, { KEY_BRIGHTNESSUP } }, 213 213 { KE_KEY, 0x03, { KEY_BRIGHTNESSDOWN } }, 214 + { KE_KEY, 0x270, { KEY_MICMUTE } }, 214 215 { KE_KEY, 0x20e6, { KEY_PROG1 } }, 215 216 { KE_KEY, 0x20e8, { KEY_MEDIA } }, 216 217 { KE_KEY, 0x2142, { KEY_MEDIA } },
+5 -1
drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.c
··· 44 44 int min_max) 45 45 { 46 46 unsigned int input; 47 + int ret; 47 48 48 49 if (kstrtouint(buf, 10, &input)) 49 50 return -EINVAL; 50 51 51 52 mutex_lock(&uncore_lock); 52 - uncore_write(data, input, min_max); 53 + ret = uncore_write(data, input, min_max); 53 54 mutex_unlock(&uncore_lock); 55 + 56 + if (ret) 57 + return ret; 54 58 55 59 return count; 56 60 }
+1
drivers/platform/x86/intel_scu_pcidrv.c
··· 34 34 35 35 static const struct pci_device_id pci_ids[] = { 36 36 { PCI_VDEVICE(INTEL, 0x080e) }, 37 + { PCI_VDEVICE(INTEL, 0x082a) }, 37 38 { PCI_VDEVICE(INTEL, 0x08ea) }, 38 39 { PCI_VDEVICE(INTEL, 0x0a94) }, 39 40 { PCI_VDEVICE(INTEL, 0x11a0) },
+19 -5
drivers/platform/x86/thinkpad_acpi.c
··· 10318 10318 static DEFINE_MUTEX(dytc_mutex); 10319 10319 static int dytc_capabilities; 10320 10320 static bool dytc_mmc_get_available; 10321 + static int profile_force; 10321 10322 10322 10323 static int convert_dytc_to_profile(int funcmode, int dytcmode, 10323 10324 enum platform_profile_option *profile) ··· 10581 10580 if (err) 10582 10581 return err; 10583 10582 10583 + /* Check if user wants to override the profile selection */ 10584 + if (profile_force) { 10585 + switch (profile_force) { 10586 + case -1: 10587 + dytc_capabilities = 0; 10588 + break; 10589 + case 1: 10590 + dytc_capabilities = BIT(DYTC_FC_MMC); 10591 + break; 10592 + case 2: 10593 + dytc_capabilities = BIT(DYTC_FC_PSC); 10594 + break; 10595 + } 10596 + pr_debug("Profile selection forced: 0x%x\n", dytc_capabilities); 10597 + } 10584 10598 if (dytc_capabilities & BIT(DYTC_FC_MMC)) { /* MMC MODE */ 10585 10599 pr_debug("MMC is supported\n"); 10586 10600 /* ··· 10609 10593 dytc_mmc_get_available = true; 10610 10594 } 10611 10595 } else if (dytc_capabilities & BIT(DYTC_FC_PSC)) { /* PSC MODE */ 10612 - /* Support for this only works on AMD platforms */ 10613 - if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) { 10614 - dbg_printk(TPACPI_DBG_INIT, "PSC not support on Intel platforms\n"); 10615 - return -ENODEV; 10616 - } 10617 10596 pr_debug("PSC is supported\n"); 10618 10597 } else { 10619 10598 dbg_printk(TPACPI_DBG_INIT, "No DYTC support available\n"); ··· 11656 11645 MODULE_PARM_DESC(uwb_state, 11657 11646 "Initial state of the emulated UWB switch"); 11658 11647 #endif 11648 + 11649 + module_param(profile_force, int, 0444); 11650 + MODULE_PARM_DESC(profile_force, "Force profile mode. -1=off, 1=MMC, 2=PSC"); 11659 11651 11660 11652 static void thinkpad_acpi_module_exit(void) 11661 11653 {
+41
drivers/platform/x86/touchscreen_dmi.c
··· 336 336 .properties = dexp_ursus_7w_props, 337 337 }; 338 338 339 + static const struct property_entry dexp_ursus_kx210i_props[] = { 340 + PROPERTY_ENTRY_U32("touchscreen-min-x", 5), 341 + PROPERTY_ENTRY_U32("touchscreen-min-y", 2), 342 + PROPERTY_ENTRY_U32("touchscreen-size-x", 1720), 343 + PROPERTY_ENTRY_U32("touchscreen-size-y", 1137), 344 + PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-dexp-ursus-kx210i.fw"), 345 + PROPERTY_ENTRY_U32("silead,max-fingers", 10), 346 + PROPERTY_ENTRY_BOOL("silead,home-button"), 347 + { } 348 + }; 349 + 350 + static const struct ts_dmi_data dexp_ursus_kx210i_data = { 351 + .acpi_name = "MSSL1680:00", 352 + .properties = dexp_ursus_kx210i_props, 353 + }; 354 + 339 355 static const struct property_entry digma_citi_e200_props[] = { 340 356 PROPERTY_ENTRY_U32("touchscreen-size-x", 1980), 341 357 PROPERTY_ENTRY_U32("touchscreen-size-y", 1500), ··· 391 375 392 376 static const struct ts_dmi_data gdix1001_01_upside_down_data = { 393 377 .acpi_name = "GDIX1001:01", 378 + .properties = gdix1001_upside_down_props, 379 + }; 380 + 381 + static const struct ts_dmi_data gdix1002_00_upside_down_data = { 382 + .acpi_name = "GDIX1002:00", 394 383 .properties = gdix1001_upside_down_props, 395 384 }; 396 385 ··· 1207 1186 }, 1208 1187 }, 1209 1188 { 1189 + /* DEXP Ursus KX210i */ 1190 + .driver_data = (void *)&dexp_ursus_kx210i_data, 1191 + .matches = { 1192 + DMI_MATCH(DMI_SYS_VENDOR, "INSYDE Corp."), 1193 + DMI_MATCH(DMI_PRODUCT_NAME, "S107I"), 1194 + }, 1195 + }, 1196 + { 1210 1197 /* Digma Citi E200 */ 1211 1198 .driver_data = (void *)&digma_citi_e200_data, 1212 1199 .matches = { ··· 1322 1293 DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 1323 1294 /* jumperx.T87.KFBNEEA02 with the version-nr dropped */ 1324 1295 DMI_MATCH(DMI_BIOS_VERSION, "jumperx.T87.KFBNEEA"), 1296 + }, 1297 + }, 1298 + { 1299 + /* Juno Tablet */ 1300 + .driver_data = (void *)&gdix1002_00_upside_down_data, 1301 + .matches = { 1302 + DMI_MATCH(DMI_SYS_VENDOR, "Default string"), 1303 + /* Both product- and board-name being "Default string" is somewhat rare */ 1304 + DMI_MATCH(DMI_PRODUCT_NAME, "Default string"), 1305 + DMI_MATCH(DMI_BOARD_NAME, "Default string"), 1306 + /* Above matches are too generic, add partial bios-version match */ 1307 + DMI_MATCH(DMI_BIOS_VERSION, "JP2V1."), 1325 1308 }, 1326 1309 }, 1327 1310 {