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

Pull x86 platform drivers fixes from Hans de Goede:

- lenovo-ymc driver causes keyboard + touchpad to not work with >= 6.4
on some Thinkbook models, fix this

- A set of small fixes for mlx-platform

- Other small fixes and hw-id additions

* tag 'platform-drivers-x86-v6.5-4' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
platform/x86: lenovo-ymc: Only bind on machines with a convertible DMI chassis-type
platform: mellanox: Change register offset addresses
platform: mellanox: mlx-platform: Modify graceful shutdown callback and power down mask
platform: mellanox: mlx-platform: Fix signals polarity and latch mask
platform: mellanox: Fix order in exit flow
platform/x86: ISST: Reduce noise for missing numa information in logs
platform/x86: msi-ec: Fix the build
ACPI: scan: Create platform device for CS35L56
platform/x86/amd/pmf: Fix unsigned comparison with less than zero

+63 -23
+1
drivers/acpi/scan.c
··· 1714 1714 {"BSG1160", }, 1715 1715 {"BSG2150", }, 1716 1716 {"CSC3551", }, 1717 + {"CSC3556", }, 1717 1718 {"INT33FE", }, 1718 1719 {"INT3515", }, 1719 1720 /* Non-conforming _HID for Cirrus Logic already released */
+2 -1
drivers/platform/x86/amd/pmf/sps.c
··· 176 176 177 177 int amd_pmf_power_slider_update_event(struct amd_pmf_dev *dev) 178 178 { 179 - u8 mode, flag = 0; 179 + u8 flag = 0; 180 + int mode; 180 181 int src; 181 182 182 183 mode = amd_pmf_get_pprof_modes(dev);
+2 -2
drivers/platform/x86/intel/speed_select_if/isst_if_common.c
··· 335 335 336 336 node = dev_to_node(&_pci_dev->dev); 337 337 if (node == NUMA_NO_NODE) { 338 - pr_info("Fail to get numa node for CPU:%d bus:%d dev:%d fn:%d\n", 339 - cpu, bus_no, dev, fn); 338 + pr_info_once("Fail to get numa node for CPU:%d bus:%d dev:%d fn:%d\n", 339 + cpu, bus_no, dev, fn); 340 340 continue; 341 341 } 342 342
+25
drivers/platform/x86/lenovo-ymc.c
··· 24 24 module_param(ec_trigger, bool, 0444); 25 25 MODULE_PARM_DESC(ec_trigger, "Enable EC triggering work-around to force emitting tablet mode events"); 26 26 27 + static bool force; 28 + module_param(force, bool, 0444); 29 + MODULE_PARM_DESC(force, "Force loading on boards without a convertible DMI chassis-type"); 30 + 27 31 static const struct dmi_system_id ec_trigger_quirk_dmi_table[] = { 28 32 { 29 33 /* Lenovo Yoga 7 14ARB7 */ 30 34 .matches = { 31 35 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 32 36 DMI_MATCH(DMI_PRODUCT_NAME, "82QF"), 37 + }, 38 + }, 39 + { } 40 + }; 41 + 42 + static const struct dmi_system_id allowed_chasis_types_dmi_table[] = { 43 + { 44 + .matches = { 45 + DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "31" /* Convertible */), 46 + }, 47 + }, 48 + { 49 + .matches = { 50 + DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "32" /* Detachable */), 33 51 }, 34 52 }, 35 53 { } ··· 128 110 struct lenovo_ymc_private *priv; 129 111 struct input_dev *input_dev; 130 112 int err; 113 + 114 + if (!dmi_check_system(allowed_chasis_types_dmi_table)) { 115 + if (force) 116 + dev_info(&wdev->dev, "Force loading Lenovo YMC support\n"); 117 + else 118 + return -ENODEV; 119 + } 131 120 132 121 ec_trigger |= dmi_check_system(ec_trigger_quirk_dmi_table); 133 122
+11 -12
drivers/platform/x86/mlx-platform.c
··· 62 62 #define MLXPLAT_CPLD_LPC_REG_PWM_CONTROL_OFFSET 0x37 63 63 #define MLXPLAT_CPLD_LPC_REG_AGGR_OFFSET 0x3a 64 64 #define MLXPLAT_CPLD_LPC_REG_AGGR_MASK_OFFSET 0x3b 65 - #define MLXPLAT_CPLD_LPC_REG_DBG1_OFFSET 0x3c 66 - #define MLXPLAT_CPLD_LPC_REG_DBG2_OFFSET 0x3d 67 - #define MLXPLAT_CPLD_LPC_REG_DBG3_OFFSET 0x3e 68 - #define MLXPLAT_CPLD_LPC_REG_DBG4_OFFSET 0x3f 69 65 #define MLXPLAT_CPLD_LPC_REG_AGGRLO_OFFSET 0x40 70 66 #define MLXPLAT_CPLD_LPC_REG_AGGRLO_MASK_OFFSET 0x41 71 67 #define MLXPLAT_CPLD_LPC_REG_AGGRCO_OFFSET 0x42 ··· 122 126 #define MLXPLAT_CPLD_LPC_REG_LC_SD_EVENT_OFFSET 0xaa 123 127 #define MLXPLAT_CPLD_LPC_REG_LC_SD_MASK_OFFSET 0xab 124 128 #define MLXPLAT_CPLD_LPC_REG_LC_PWR_ON 0xb2 129 + #define MLXPLAT_CPLD_LPC_REG_DBG1_OFFSET 0xb6 130 + #define MLXPLAT_CPLD_LPC_REG_DBG2_OFFSET 0xb7 131 + #define MLXPLAT_CPLD_LPC_REG_DBG3_OFFSET 0xb8 132 + #define MLXPLAT_CPLD_LPC_REG_DBG4_OFFSET 0xb9 125 133 #define MLXPLAT_CPLD_LPC_REG_GP4_RO_OFFSET 0xc2 126 134 #define MLXPLAT_CPLD_LPC_REG_SPI_CHNL_SELECT 0xc3 127 135 #define MLXPLAT_CPLD_LPC_REG_WD_CLEAR_OFFSET 0xc7 ··· 222 222 MLXPLAT_CPLD_AGGR_MASK_LC_SDWN) 223 223 #define MLXPLAT_CPLD_LOW_AGGR_MASK_LOW 0xc1 224 224 #define MLXPLAT_CPLD_LOW_AGGR_MASK_ASIC2 BIT(2) 225 - #define MLXPLAT_CPLD_LOW_AGGR_MASK_PWR_BUT BIT(4) 225 + #define MLXPLAT_CPLD_LOW_AGGR_MASK_PWR_BUT GENMASK(5, 4) 226 226 #define MLXPLAT_CPLD_LOW_AGGR_MASK_I2C BIT(6) 227 227 #define MLXPLAT_CPLD_PSU_MASK GENMASK(1, 0) 228 228 #define MLXPLAT_CPLD_PWR_MASK GENMASK(1, 0) ··· 237 237 #define MLXPLAT_CPLD_GWP_MASK GENMASK(0, 0) 238 238 #define MLXPLAT_CPLD_EROT_MASK GENMASK(1, 0) 239 239 #define MLXPLAT_CPLD_PWR_BUTTON_MASK BIT(0) 240 - #define MLXPLAT_CPLD_LATCH_RST_MASK BIT(5) 240 + #define MLXPLAT_CPLD_LATCH_RST_MASK BIT(6) 241 241 #define MLXPLAT_CPLD_THERMAL1_PDB_MASK BIT(3) 242 242 #define MLXPLAT_CPLD_THERMAL2_PDB_MASK BIT(4) 243 243 #define MLXPLAT_CPLD_INTRUSION_MASK BIT(6) ··· 2356 2356 u8 action) 2357 2357 { 2358 2358 dev_info(&mlxplat_dev->dev, "System shutdown due to short press of power button"); 2359 - kernel_halt(); 2359 + kernel_power_off(); 2360 2360 return 0; 2361 2361 } 2362 2362 ··· 2475 2475 .reg = MLXPLAT_CPLD_LPC_REG_PWRB_OFFSET, 2476 2476 .mask = MLXPLAT_CPLD_PWR_BUTTON_MASK, 2477 2477 .count = ARRAY_SIZE(mlxplat_mlxcpld_l1_switch_pwr_events_items_data), 2478 - .inversed = 0, 2478 + .inversed = 1, 2479 2479 .health = false, 2480 2480 }, 2481 2481 { ··· 2484 2484 .reg = MLXPLAT_CPLD_LPC_REG_BRD_OFFSET, 2485 2485 .mask = MLXPLAT_CPLD_L1_CHA_HEALTH_MASK, 2486 2486 .count = ARRAY_SIZE(mlxplat_mlxcpld_l1_switch_health_events_items_data), 2487 - .inversed = 0, 2487 + .inversed = 1, 2488 2488 .health = false, 2489 2489 .ind = 8, 2490 2490 }, ··· 3677 3677 { 3678 3678 .label = "latch_reset", 3679 3679 .reg = MLXPLAT_CPLD_LPC_REG_GP1_OFFSET, 3680 - .mask = GENMASK(7, 0) & ~BIT(5), 3680 + .mask = GENMASK(7, 0) & ~BIT(6), 3681 3681 .mode = 0200, 3682 3682 }, 3683 3683 { ··· 6238 6238 if (priv->pdev_mux[i]) 6239 6239 platform_device_unregister(priv->pdev_mux[i]); 6240 6240 } 6241 - 6242 - mlxplat_post_exit(); 6243 6241 } 6244 6242 6245 6243 static int mlxplat_i2c_main_complition_notify(void *handle, int id) ··· 6367 6369 pm_power_off = NULL; 6368 6370 mlxplat_pre_exit(priv); 6369 6371 mlxplat_i2c_main_exit(priv); 6372 + mlxplat_post_exit(); 6370 6373 } 6371 6374 module_exit(mlxplat_exit); 6372 6375
+8 -8
drivers/platform/x86/msi-ec.c
··· 27 27 #include <linux/seq_file.h> 28 28 #include <linux/string.h> 29 29 30 - static const char *const SM_ECO_NAME = "eco"; 31 - static const char *const SM_COMFORT_NAME = "comfort"; 32 - static const char *const SM_SPORT_NAME = "sport"; 33 - static const char *const SM_TURBO_NAME = "turbo"; 30 + #define SM_ECO_NAME "eco" 31 + #define SM_COMFORT_NAME "comfort" 32 + #define SM_SPORT_NAME "sport" 33 + #define SM_TURBO_NAME "turbo" 34 34 35 - static const char *const FM_AUTO_NAME = "auto"; 36 - static const char *const FM_SILENT_NAME = "silent"; 37 - static const char *const FM_BASIC_NAME = "basic"; 38 - static const char *const FM_ADVANCED_NAME = "advanced"; 35 + #define FM_AUTO_NAME "auto" 36 + #define FM_SILENT_NAME "silent" 37 + #define FM_BASIC_NAME "basic" 38 + #define FM_ADVANCED_NAME "advanced" 39 39 40 40 static const char * const ALLOWED_FW_0[] __initconst = { 41 41 "14C1EMS1.012",
+14
drivers/platform/x86/serial-multi-instantiate.c
··· 329 329 .bus_type = SMI_AUTO_DETECT, 330 330 }; 331 331 332 + static const struct smi_node cs35l56_hda = { 333 + .instances = { 334 + { "cs35l56-hda", IRQ_RESOURCE_AUTO, 0 }, 335 + { "cs35l56-hda", IRQ_RESOURCE_AUTO, 0 }, 336 + { "cs35l56-hda", IRQ_RESOURCE_AUTO, 0 }, 337 + { "cs35l56-hda", IRQ_RESOURCE_AUTO, 0 }, 338 + /* a 5th entry is an alias address, not a real device */ 339 + { "cs35l56-hda_dummy_dev" }, 340 + {} 341 + }, 342 + .bus_type = SMI_AUTO_DETECT, 343 + }; 344 + 332 345 /* 333 346 * Note new device-ids must also be added to ignore_serial_bus_ids in 334 347 * drivers/acpi/scan.c: acpi_device_enumeration_by_parent(). ··· 350 337 { "BSG1160", (unsigned long)&bsg1160_data }, 351 338 { "BSG2150", (unsigned long)&bsg2150_data }, 352 339 { "CSC3551", (unsigned long)&cs35l41_hda }, 340 + { "CSC3556", (unsigned long)&cs35l56_hda }, 353 341 { "INT3515", (unsigned long)&int3515_data }, 354 342 /* Non-conforming _HID for Cirrus Logic already released */ 355 343 { "CLSA0100", (unsigned long)&cs35l41_hda },