platform-drivers-x86 for v6.5-4
Highlights: - 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 The following is an automated git shortlog grouped by driver: ACPI: - scan: Create platform device for CS35L56 ISST: - Reduce noise for missing numa information in logs lenovo-ymc: - Only bind on machines with a convertible DMI chassis-type msi-ec: - Fix the build platform: - mellanox: Change register offset addresses - mellanox: mlx-platform: Modify graceful shutdown callback and power down mask - mellanox: mlx-platform: Fix signals polarity and latch mask - mellanox: Fix order in exit flow platform/x86/amd/pmf: - Fix unsigned comparison with less than zero -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEEuvA7XScYQRpenhd+kuxHeUQDJ9wFAmTY8C8UHGhkZWdvZWRl QHJlZGhhdC5jb20ACgkQkuxHeUQDJ9y+wQf/cPZjYmoP/vXbWwBuwmfU66hB8Ihh eraGayATU1hixLQGv0N9PbLLkGNzDAzLfhxolK3td+Qv1ZBxOlLKaoGGxtEHGQUd NvpbUAIS0oPxzs8georh3SaxvzJ34u3YKn2Tq/NBXtyb23IVdX2mWiGVhmp6sSs2 vePh4lVNxGpjXe9oQW+99ze1zlgZjlA/HHvm8a2CnerG8Tf9fSDWeQsLRTCukE8t J61myAuZURFoZTqgGwVXuA9kYJoifNlpD6+PtBYIVPtJizm34UmfJNzV7TIpDISI E7+OPppFIHrTYPQWlIROZmN3pRXisw4gCAbBd2f8ZjkcFgB5S0rnGwb6gg== =Hd1i -----END PGP SIGNATURE----- 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
This commit is contained in:
Коммит
3dcf1473c7
|
@ -1714,6 +1714,7 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
|
|||
{"BSG1160", },
|
||||
{"BSG2150", },
|
||||
{"CSC3551", },
|
||||
{"CSC3556", },
|
||||
{"INT33FE", },
|
||||
{"INT3515", },
|
||||
/* Non-conforming _HID for Cirrus Logic already released */
|
||||
|
|
|
@ -176,7 +176,8 @@ int amd_pmf_get_pprof_modes(struct amd_pmf_dev *pmf)
|
|||
|
||||
int amd_pmf_power_slider_update_event(struct amd_pmf_dev *dev)
|
||||
{
|
||||
u8 mode, flag = 0;
|
||||
u8 flag = 0;
|
||||
int mode;
|
||||
int src;
|
||||
|
||||
mode = amd_pmf_get_pprof_modes(dev);
|
||||
|
|
|
@ -335,8 +335,8 @@ static struct pci_dev *_isst_if_get_pci_dev(int cpu, int bus_no, int dev, int fn
|
|||
|
||||
node = dev_to_node(&_pci_dev->dev);
|
||||
if (node == NUMA_NO_NODE) {
|
||||
pr_info("Fail to get numa node for CPU:%d bus:%d dev:%d fn:%d\n",
|
||||
cpu, bus_no, dev, fn);
|
||||
pr_info_once("Fail to get numa node for CPU:%d bus:%d dev:%d fn:%d\n",
|
||||
cpu, bus_no, dev, fn);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,10 @@ static bool ec_trigger __read_mostly;
|
|||
module_param(ec_trigger, bool, 0444);
|
||||
MODULE_PARM_DESC(ec_trigger, "Enable EC triggering work-around to force emitting tablet mode events");
|
||||
|
||||
static bool force;
|
||||
module_param(force, bool, 0444);
|
||||
MODULE_PARM_DESC(force, "Force loading on boards without a convertible DMI chassis-type");
|
||||
|
||||
static const struct dmi_system_id ec_trigger_quirk_dmi_table[] = {
|
||||
{
|
||||
/* Lenovo Yoga 7 14ARB7 */
|
||||
|
@ -35,6 +39,20 @@ static const struct dmi_system_id ec_trigger_quirk_dmi_table[] = {
|
|||
{ }
|
||||
};
|
||||
|
||||
static const struct dmi_system_id allowed_chasis_types_dmi_table[] = {
|
||||
{
|
||||
.matches = {
|
||||
DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "31" /* Convertible */),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "32" /* Detachable */),
|
||||
},
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
struct lenovo_ymc_private {
|
||||
struct input_dev *input_dev;
|
||||
struct acpi_device *ec_acpi_dev;
|
||||
|
@ -111,6 +129,13 @@ static int lenovo_ymc_probe(struct wmi_device *wdev, const void *ctx)
|
|||
struct input_dev *input_dev;
|
||||
int err;
|
||||
|
||||
if (!dmi_check_system(allowed_chasis_types_dmi_table)) {
|
||||
if (force)
|
||||
dev_info(&wdev->dev, "Force loading Lenovo YMC support\n");
|
||||
else
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
ec_trigger |= dmi_check_system(ec_trigger_quirk_dmi_table);
|
||||
|
||||
priv = devm_kzalloc(&wdev->dev, sizeof(*priv), GFP_KERNEL);
|
||||
|
|
|
@ -62,10 +62,6 @@
|
|||
#define MLXPLAT_CPLD_LPC_REG_PWM_CONTROL_OFFSET 0x37
|
||||
#define MLXPLAT_CPLD_LPC_REG_AGGR_OFFSET 0x3a
|
||||
#define MLXPLAT_CPLD_LPC_REG_AGGR_MASK_OFFSET 0x3b
|
||||
#define MLXPLAT_CPLD_LPC_REG_DBG1_OFFSET 0x3c
|
||||
#define MLXPLAT_CPLD_LPC_REG_DBG2_OFFSET 0x3d
|
||||
#define MLXPLAT_CPLD_LPC_REG_DBG3_OFFSET 0x3e
|
||||
#define MLXPLAT_CPLD_LPC_REG_DBG4_OFFSET 0x3f
|
||||
#define MLXPLAT_CPLD_LPC_REG_AGGRLO_OFFSET 0x40
|
||||
#define MLXPLAT_CPLD_LPC_REG_AGGRLO_MASK_OFFSET 0x41
|
||||
#define MLXPLAT_CPLD_LPC_REG_AGGRCO_OFFSET 0x42
|
||||
|
@ -126,6 +122,10 @@
|
|||
#define MLXPLAT_CPLD_LPC_REG_LC_SD_EVENT_OFFSET 0xaa
|
||||
#define MLXPLAT_CPLD_LPC_REG_LC_SD_MASK_OFFSET 0xab
|
||||
#define MLXPLAT_CPLD_LPC_REG_LC_PWR_ON 0xb2
|
||||
#define MLXPLAT_CPLD_LPC_REG_DBG1_OFFSET 0xb6
|
||||
#define MLXPLAT_CPLD_LPC_REG_DBG2_OFFSET 0xb7
|
||||
#define MLXPLAT_CPLD_LPC_REG_DBG3_OFFSET 0xb8
|
||||
#define MLXPLAT_CPLD_LPC_REG_DBG4_OFFSET 0xb9
|
||||
#define MLXPLAT_CPLD_LPC_REG_GP4_RO_OFFSET 0xc2
|
||||
#define MLXPLAT_CPLD_LPC_REG_SPI_CHNL_SELECT 0xc3
|
||||
#define MLXPLAT_CPLD_LPC_REG_WD_CLEAR_OFFSET 0xc7
|
||||
|
@ -222,7 +222,7 @@
|
|||
MLXPLAT_CPLD_AGGR_MASK_LC_SDWN)
|
||||
#define MLXPLAT_CPLD_LOW_AGGR_MASK_LOW 0xc1
|
||||
#define MLXPLAT_CPLD_LOW_AGGR_MASK_ASIC2 BIT(2)
|
||||
#define MLXPLAT_CPLD_LOW_AGGR_MASK_PWR_BUT BIT(4)
|
||||
#define MLXPLAT_CPLD_LOW_AGGR_MASK_PWR_BUT GENMASK(5, 4)
|
||||
#define MLXPLAT_CPLD_LOW_AGGR_MASK_I2C BIT(6)
|
||||
#define MLXPLAT_CPLD_PSU_MASK GENMASK(1, 0)
|
||||
#define MLXPLAT_CPLD_PWR_MASK GENMASK(1, 0)
|
||||
|
@ -237,7 +237,7 @@
|
|||
#define MLXPLAT_CPLD_GWP_MASK GENMASK(0, 0)
|
||||
#define MLXPLAT_CPLD_EROT_MASK GENMASK(1, 0)
|
||||
#define MLXPLAT_CPLD_PWR_BUTTON_MASK BIT(0)
|
||||
#define MLXPLAT_CPLD_LATCH_RST_MASK BIT(5)
|
||||
#define MLXPLAT_CPLD_LATCH_RST_MASK BIT(6)
|
||||
#define MLXPLAT_CPLD_THERMAL1_PDB_MASK BIT(3)
|
||||
#define MLXPLAT_CPLD_THERMAL2_PDB_MASK BIT(4)
|
||||
#define MLXPLAT_CPLD_INTRUSION_MASK BIT(6)
|
||||
|
@ -2356,7 +2356,7 @@ mlxplat_mlxcpld_l1_switch_pwr_events_handler(void *handle, enum mlxreg_hotplug_k
|
|||
u8 action)
|
||||
{
|
||||
dev_info(&mlxplat_dev->dev, "System shutdown due to short press of power button");
|
||||
kernel_halt();
|
||||
kernel_power_off();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2475,7 +2475,7 @@ static struct mlxreg_core_item mlxplat_mlxcpld_l1_switch_events_items[] = {
|
|||
.reg = MLXPLAT_CPLD_LPC_REG_PWRB_OFFSET,
|
||||
.mask = MLXPLAT_CPLD_PWR_BUTTON_MASK,
|
||||
.count = ARRAY_SIZE(mlxplat_mlxcpld_l1_switch_pwr_events_items_data),
|
||||
.inversed = 0,
|
||||
.inversed = 1,
|
||||
.health = false,
|
||||
},
|
||||
{
|
||||
|
@ -2484,7 +2484,7 @@ static struct mlxreg_core_item mlxplat_mlxcpld_l1_switch_events_items[] = {
|
|||
.reg = MLXPLAT_CPLD_LPC_REG_BRD_OFFSET,
|
||||
.mask = MLXPLAT_CPLD_L1_CHA_HEALTH_MASK,
|
||||
.count = ARRAY_SIZE(mlxplat_mlxcpld_l1_switch_health_events_items_data),
|
||||
.inversed = 0,
|
||||
.inversed = 1,
|
||||
.health = false,
|
||||
.ind = 8,
|
||||
},
|
||||
|
@ -3677,7 +3677,7 @@ static struct mlxreg_core_data mlxplat_mlxcpld_default_ng_regs_io_data[] = {
|
|||
{
|
||||
.label = "latch_reset",
|
||||
.reg = MLXPLAT_CPLD_LPC_REG_GP1_OFFSET,
|
||||
.mask = GENMASK(7, 0) & ~BIT(5),
|
||||
.mask = GENMASK(7, 0) & ~BIT(6),
|
||||
.mode = 0200,
|
||||
},
|
||||
{
|
||||
|
@ -6238,8 +6238,6 @@ static void mlxplat_i2c_mux_topolgy_exit(struct mlxplat_priv *priv)
|
|||
if (priv->pdev_mux[i])
|
||||
platform_device_unregister(priv->pdev_mux[i]);
|
||||
}
|
||||
|
||||
mlxplat_post_exit();
|
||||
}
|
||||
|
||||
static int mlxplat_i2c_main_complition_notify(void *handle, int id)
|
||||
|
@ -6369,6 +6367,7 @@ static void __exit mlxplat_exit(void)
|
|||
pm_power_off = NULL;
|
||||
mlxplat_pre_exit(priv);
|
||||
mlxplat_i2c_main_exit(priv);
|
||||
mlxplat_post_exit();
|
||||
}
|
||||
module_exit(mlxplat_exit);
|
||||
|
||||
|
|
|
@ -27,15 +27,15 @@
|
|||
#include <linux/seq_file.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
static const char *const SM_ECO_NAME = "eco";
|
||||
static const char *const SM_COMFORT_NAME = "comfort";
|
||||
static const char *const SM_SPORT_NAME = "sport";
|
||||
static const char *const SM_TURBO_NAME = "turbo";
|
||||
#define SM_ECO_NAME "eco"
|
||||
#define SM_COMFORT_NAME "comfort"
|
||||
#define SM_SPORT_NAME "sport"
|
||||
#define SM_TURBO_NAME "turbo"
|
||||
|
||||
static const char *const FM_AUTO_NAME = "auto";
|
||||
static const char *const FM_SILENT_NAME = "silent";
|
||||
static const char *const FM_BASIC_NAME = "basic";
|
||||
static const char *const FM_ADVANCED_NAME = "advanced";
|
||||
#define FM_AUTO_NAME "auto"
|
||||
#define FM_SILENT_NAME "silent"
|
||||
#define FM_BASIC_NAME "basic"
|
||||
#define FM_ADVANCED_NAME "advanced"
|
||||
|
||||
static const char * const ALLOWED_FW_0[] __initconst = {
|
||||
"14C1EMS1.012",
|
||||
|
|
|
@ -329,6 +329,19 @@ static const struct smi_node cs35l41_hda = {
|
|||
.bus_type = SMI_AUTO_DETECT,
|
||||
};
|
||||
|
||||
static const struct smi_node cs35l56_hda = {
|
||||
.instances = {
|
||||
{ "cs35l56-hda", IRQ_RESOURCE_AUTO, 0 },
|
||||
{ "cs35l56-hda", IRQ_RESOURCE_AUTO, 0 },
|
||||
{ "cs35l56-hda", IRQ_RESOURCE_AUTO, 0 },
|
||||
{ "cs35l56-hda", IRQ_RESOURCE_AUTO, 0 },
|
||||
/* a 5th entry is an alias address, not a real device */
|
||||
{ "cs35l56-hda_dummy_dev" },
|
||||
{}
|
||||
},
|
||||
.bus_type = SMI_AUTO_DETECT,
|
||||
};
|
||||
|
||||
/*
|
||||
* Note new device-ids must also be added to ignore_serial_bus_ids in
|
||||
* drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
|
||||
|
@ -337,6 +350,7 @@ static const struct acpi_device_id smi_acpi_ids[] = {
|
|||
{ "BSG1160", (unsigned long)&bsg1160_data },
|
||||
{ "BSG2150", (unsigned long)&bsg2150_data },
|
||||
{ "CSC3551", (unsigned long)&cs35l41_hda },
|
||||
{ "CSC3556", (unsigned long)&cs35l56_hda },
|
||||
{ "INT3515", (unsigned long)&int3515_data },
|
||||
/* Non-conforming _HID for Cirrus Logic already released */
|
||||
{ "CLSA0100", (unsigned long)&cs35l41_hda },
|
||||
|
|
Загрузка…
Ссылка в новой задаче