Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c942804 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

Merge branches 'acpi-x86', 'acpi-bus', 'acpi-ec' and 'acpi-apei'

Merge ACPI x86-specific changes, core updates, EC driver updates and
APEI support updates for 4.19.

These add a special platform driver for handling multiple I2C devices
hooked up to the same device object in the ACPI tables, add some new
quirks and remove one that is not needed any more.

* acpi-x86:
  platform/x86: Add ACPI i2c-multi-instantiate pseudo driver
  ACPI / x86: utils: Remove status workaround from acpi_device_always_present()
  ACPI / x86: enable touchscreen on Dell Venue Pro 7139

* acpi-bus:
  ACPI: bus: Fix a pointer coding style issue
  Revert "ACPI / bus: Parse tables as term_list for Dell XPS 9570 and Precision M5530"

* acpi-ec:
  ACPI / EC: Add another entry for Thinkpad X1 Carbon 6th
  ACPI / EC: Use ec_no_wakeup on ThinkPad X1 Yoga 3rd

* acpi-apei:
  arm64 / ACPI: clean the additional checks before calling ghes_notify_sea()
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -367,6 +367,12 @@ L: linux-acpi@vger.kernel.org
S:	Maintained
F:	drivers/acpi/arm64

ACPI I2C MULTI INSTANTIATE DRIVER
M:	Hans de Goede <hdegoede@redhat.com>
L:	platform-driver-x86@vger.kernel.org
S:	Maintained
F:	drivers/platform/x86/i2c-multi-instantiate.c

ACPI PMIC DRIVERS
M:	"Rafael J. Wysocki" <rjw@rjwysocki.net>
M:	Len Brown <lenb@kernel.org>
+1 −6
Original line number Diff line number Diff line
@@ -727,12 +727,7 @@ static const struct fault_info fault_info[] = {

int handle_guest_sea(phys_addr_t addr, unsigned int esr)
{
	int ret = -ENOENT;

	if (IS_ENABLED(CONFIG_ACPI_APEI_SEA))
		ret = ghes_notify_sea();

	return ret;
	return ghes_notify_sea();
}

asmlinkage void __exception do_mem_abort(unsigned long addr, unsigned int esr,
+8 −32
Original line number Diff line number Diff line
@@ -66,37 +66,10 @@ static int set_copy_dsdt(const struct dmi_system_id *id)
	return 0;
}
#endif
static int set_gbl_term_list(const struct dmi_system_id *id)
{
	acpi_gbl_execute_tables_as_methods = 1;
	return 0;
}

static const struct dmi_system_id acpi_quirks_dmi_table[] __initconst = {
	/*
	 * Touchpad on Dell XPS 9570/Precision M5530 doesn't work under I2C
	 * mode.
	 * https://bugzilla.kernel.org/show_bug.cgi?id=198515
	 */
	{
		.callback = set_gbl_term_list,
		.ident = "Dell Precision M5530",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
			DMI_MATCH(DMI_PRODUCT_NAME, "Precision M5530"),
		},
	},
	{
		.callback = set_gbl_term_list,
		.ident = "Dell XPS 15 9570",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
			DMI_MATCH(DMI_PRODUCT_NAME, "XPS 15 9570"),
		},
	},
static const struct dmi_system_id dsdt_dmi_table[] __initconst = {
	/*
	 * Invoke DSDT corruption work-around on all Toshiba Satellite.
	 * DSDT will be copied to memory.
	 * https://bugzilla.kernel.org/show_bug.cgi?id=14679
	 */
	{
@@ -110,7 +83,7 @@ static const struct dmi_system_id acpi_quirks_dmi_table[] __initconst = {
	{}
};
#else
static const struct dmi_system_id acpi_quirks_dmi_table[] __initconst = {
static const struct dmi_system_id dsdt_dmi_table[] __initconst = {
	{}
};
#endif
@@ -1060,8 +1033,11 @@ void __init acpi_early_init(void)

	acpi_permanent_mmap = true;

	/* Check machine-specific quirks */
	dmi_check_system(acpi_quirks_dmi_table);
	/*
	 * If the machine falls into the DMI check table,
	 * DSDT will be copied to memory
	 */
	dmi_check_system(dsdt_dmi_table);

	status = acpi_reallocate_root_table();
	if (ACPI_FAILURE(status)) {
+14 −0
Original line number Diff line number Diff line
@@ -2045,6 +2045,20 @@ static const struct dmi_system_id acpi_ec_no_wakeup[] = {
			DMI_MATCH(DMI_PRODUCT_FAMILY, "Thinkpad X1 Carbon 6th"),
		},
	},
	{
		.ident = "ThinkPad X1 Carbon 6th",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
			DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad X1 Carbon 6th"),
		},
	},
	{
		.ident = "ThinkPad X1 Yoga 3rd",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
			DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad X1 Yoga 3rd"),
		},
	},
	{ },
};

+9 −13
Original line number Diff line number Diff line
@@ -62,14 +62,20 @@ static const struct always_present_id always_present_ids[] = {
	 */
	ENTRY("INT0002", "1", ICPU(INTEL_FAM6_ATOM_AIRMONT), {}),
	/*
	 * On the Dell Venue 11 Pro 7130 the DSDT hides the touchscreen ACPI
	 * device until a certain time after _SB.PCI0.GFX0.LCD.LCD1._ON gets
	 * called has passed *and* _STA has been called at least 3 times since.
	 * On the Dell Venue 11 Pro 7130 and 7139, the DSDT hides
	 * the touchscreen ACPI device until a certain time
	 * after _SB.PCI0.GFX0.LCD.LCD1._ON gets called has passed
	 * *and* _STA has been called at least 3 times since.
	 */
	ENTRY("SYNA7500", "1", ICPU(INTEL_FAM6_HASWELL_ULT), {
		DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
		DMI_MATCH(DMI_PRODUCT_NAME, "Venue 11 Pro 7130"),
	      }),
	ENTRY("SYNA7500", "1", ICPU(INTEL_FAM6_HASWELL_ULT), {
		DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
		DMI_MATCH(DMI_PRODUCT_NAME, "Venue 11 Pro 7139"),
	      }),

	/*
	 * The GPD win BIOS dated 20170221 has disabled the accelerometer, the
	 * drivers sometimes cause crashes under Windows and this is how the
@@ -103,13 +109,9 @@ static const struct always_present_id always_present_ids[] = {

bool acpi_device_always_present(struct acpi_device *adev)
{
	u32 *status = (u32 *)&adev->status;
	u32 old_status = *status;
	bool ret = false;
	unsigned int i;

	/* acpi_match_device_ids checks status, so set it to default */
	*status = ACPI_STA_DEFAULT;
	for (i = 0; i < ARRAY_SIZE(always_present_ids); i++) {
		if (acpi_match_device_ids(adev, always_present_ids[i].hid))
			continue;
@@ -125,15 +127,9 @@ bool acpi_device_always_present(struct acpi_device *adev)
		    !dmi_check_system(always_present_ids[i].dmi_ids))
			continue;

		if (old_status != ACPI_STA_DEFAULT) /* Log only once */
			dev_info(&adev->dev,
				 "Device [%s] is in always present list\n",
				 adev->pnp.bus_id);

		ret = true;
		break;
	}
	*status = old_status;

	return ret;
}
Loading