Commit 3dcf1473 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'platform-drivers-x86-v6.5-4' of...

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
parents 7308e927 2b6aa661
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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 */
+2 −1
Original line number Diff line number Diff line
@@ -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);
+2 −2
Original line number Diff line number Diff line
@@ -335,7 +335,7 @@ 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",
			pr_info_once("Fail to get numa node for CPU:%d bus:%d dev:%d fn:%d\n",
				     cpu, bus_no, dev, fn);
			continue;
		}
+25 −0
Original line number Diff line number Diff line
@@ -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);
+11 −12
Original line number Diff line number Diff line
@@ -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);

Loading