Commit 3679d9d1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'platform-drivers-x86-v6.9-2' of...

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

Pull x86 platform driver fixes from Ilpo Järvinen:
 "Fixes:

   - intel/hid: Solve spurious hibernation aborts (power button release)

   - toshiba_acpi: Ignore 2 keys to avoid log noise during
     suspend/resume

   - intel-vbtn: Fix probe by restoring VBDL and VGBS evalutation order

   - lg-laptop: Fix W=1 %s null argument warning

  New HW Support:

   - acer-wmi: PH18-71 mode button and fan speed sensor

   - intel/hid: Lunar Lake and Arrow Lake HID IDs"

* tag 'platform-drivers-x86-v6.9-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
  platform/x86: lg-laptop: fix %s null argument warning
  platform/x86: intel-vbtn: Update tablet mode switch at end of probe
  platform/x86: intel-vbtn: Use acpi_has_method to check for switch
  platform/x86: toshiba_acpi: Silence logging for some events
  platform/x86/intel/hid: Add Lunar Lake and Arrow Lake support
  platform/x86/intel/hid: Don't wake on 5-button releases
  platform/x86: acer-wmi: Add support for Acer PH18-71
parents 2c71fdf0 e71c8481
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -597,6 +597,15 @@ static const struct dmi_system_id acer_quirks[] __initconst = {
		},
		.driver_data = &quirk_acer_predator_v4,
	},
	{
		.callback = dmi_matched,
		.ident = "Acer Predator PH18-71",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
			DMI_MATCH(DMI_PRODUCT_NAME, "Predator PH18-71"),
		},
		.driver_data = &quirk_acer_predator_v4,
	},
	{
		.callback = set_force_caps,
		.ident = "Acer Aspire Switch 10E SW3-016",
+8 −1
Original line number Diff line number Diff line
@@ -49,6 +49,8 @@ static const struct acpi_device_id intel_hid_ids[] = {
	{"INTC1076", 0},
	{"INTC1077", 0},
	{"INTC1078", 0},
	{"INTC107B", 0},
	{"INTC10CB", 0},
	{"", 0},
};
MODULE_DEVICE_TABLE(acpi, intel_hid_ids);
@@ -504,6 +506,7 @@ static void notify_handler(acpi_handle handle, u32 event, void *context)
	struct platform_device *device = context;
	struct intel_hid_priv *priv = dev_get_drvdata(&device->dev);
	unsigned long long ev_index;
	struct key_entry *ke;
	int err;

	/*
@@ -545,11 +548,15 @@ static void notify_handler(acpi_handle handle, u32 event, void *context)
		if (event == 0xc0 || !priv->array)
			return;

		if (!sparse_keymap_entry_from_scancode(priv->array, event)) {
		ke = sparse_keymap_entry_from_scancode(priv->array, event);
		if (!ke) {
			dev_info(&device->dev, "unknown event 0x%x\n", event);
			return;
		}

		if (ke->type == KE_IGNORE)
			return;

wakeup:
		pm_wakeup_hard_event(&device->dev);

+4 −7
Original line number Diff line number Diff line
@@ -136,8 +136,6 @@ static int intel_vbtn_input_setup(struct platform_device *device)
	priv->switches_dev->id.bustype = BUS_HOST;

	if (priv->has_switches) {
		detect_tablet_mode(&device->dev);

		ret = input_register_device(priv->switches_dev);
		if (ret)
			return ret;
@@ -258,9 +256,6 @@ static const struct dmi_system_id dmi_switches_allow_list[] = {

static bool intel_vbtn_has_switches(acpi_handle handle, bool dual_accel)
{
	unsigned long long vgbs;
	acpi_status status;

	/* See dual_accel_detect.h for more info */
	if (dual_accel)
		return false;
@@ -268,8 +263,7 @@ static bool intel_vbtn_has_switches(acpi_handle handle, bool dual_accel)
	if (!dmi_check_system(dmi_switches_allow_list))
		return false;

	status = acpi_evaluate_integer(handle, "VGBS", NULL, &vgbs);
	return ACPI_SUCCESS(status);
	return acpi_has_method(handle, "VGBS");
}

static int intel_vbtn_probe(struct platform_device *device)
@@ -316,6 +310,9 @@ static int intel_vbtn_probe(struct platform_device *device)
		if (ACPI_FAILURE(status))
			dev_err(&device->dev, "Error VBDL failed with ACPI status %d\n", status);
	}
	// Check switches after buttons since VBDL may have side effects.
	if (has_switches)
		detect_tablet_mode(&device->dev);

	device_init_wakeup(&device->dev, true);
	/*
+1 −1
Original line number Diff line number Diff line
@@ -736,7 +736,7 @@ static int acpi_add(struct acpi_device *device)
		default:
			year = 2019;
		}
	pr_info("product: %s  year: %d\n", product, year);
	pr_info("product: %s  year: %d\n", product ?: "unknown", year);

	if (year >= 2019)
		battery_limit_use_wmbb = 1;
+3 −1
Original line number Diff line number Diff line
@@ -264,6 +264,7 @@ static const struct key_entry toshiba_acpi_keymap[] = {
	{ KE_KEY, 0xb32, { KEY_NEXTSONG } },
	{ KE_KEY, 0xb33, { KEY_PLAYPAUSE } },
	{ KE_KEY, 0xb5a, { KEY_MEDIA } },
	{ KE_IGNORE, 0x0e00, { KEY_RESERVED } }, /* Wake from sleep */
	{ KE_IGNORE, 0x1430, { KEY_RESERVED } }, /* Wake from sleep */
	{ KE_IGNORE, 0x1501, { KEY_RESERVED } }, /* Output changed */
	{ KE_IGNORE, 0x1502, { KEY_RESERVED } }, /* HDMI plugged/unplugged */
@@ -3523,9 +3524,10 @@ static void toshiba_acpi_notify(struct acpi_device *acpi_dev, u32 event)
					(dev->kbd_mode == SCI_KBD_MODE_ON) ?
					LED_FULL : LED_OFF);
		break;
	case 0x8e: /* Power button pressed */
		break;
	case 0x85: /* Unknown */
	case 0x8d: /* Unknown */
	case 0x8e: /* Unknown */
	case 0x94: /* Unknown */
	case 0x95: /* Unknown */
	default: