public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH AUTOSEL 6.1 01/26] Input: soc_button_array - add invalid acpi_index DMI quirk handling
@ 2023-06-16 10:25 Sasha Levin
  2023-06-16 10:25 ` [PATCH AUTOSEL 6.1 02/26] arm64: dts: qcom: sc7280-idp: drop incorrect dai-cells from WCD938x SDW Sasha Levin
                   ` (24 more replies)
  0 siblings, 25 replies; 26+ messages in thread
From: Sasha Levin @ 2023-06-16 10:25 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Hans de Goede, Dmitry Torokhov, Sasha Levin, linux-input

From: Hans de Goede <hdegoede@redhat.com>

[ Upstream commit 20a99a291d564a559cc2fd013b4824a3bb3f1db7 ]

Some devices have a wrong entry in their button array which points to
a GPIO which is required in another driver, so soc_button_array must
not claim it.

A specific example of this is the Lenovo Yoga Book X90F / X90L,
where the PNP0C40 home button entry points to a GPIO which is not
a home button and which is required by the lenovo-yogabook driver.

Add a DMI quirk table which can specify an ACPI GPIO resource index which
should be skipped; and add an entry for the Lenovo Yoga Book X90F / X90L
to this new DMI quirk table.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20230414072116.4497-1-hdegoede@redhat.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/input/misc/soc_button_array.c | 30 +++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c
index 09489380afda7..e79f5497948b8 100644
--- a/drivers/input/misc/soc_button_array.c
+++ b/drivers/input/misc/soc_button_array.c
@@ -108,6 +108,27 @@ static const struct dmi_system_id dmi_use_low_level_irq[] = {
 	{} /* Terminating entry */
 };
 
+/*
+ * Some devices have a wrong entry which points to a GPIO which is
+ * required in another driver, so this driver must not claim it.
+ */
+static const struct dmi_system_id dmi_invalid_acpi_index[] = {
+	{
+		/*
+		 * Lenovo Yoga Book X90F / X90L, the PNP0C40 home button entry
+		 * points to a GPIO which is not a home button and which is
+		 * required by the lenovo-yogabook driver.
+		 */
+		.matches = {
+			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
+			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
+			DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "YETI-11"),
+		},
+		.driver_data = (void *)1l,
+	},
+	{} /* Terminating entry */
+};
+
 /*
  * Get the Nth GPIO number from the ACPI object.
  */
@@ -137,6 +158,8 @@ soc_button_device_create(struct platform_device *pdev,
 	struct platform_device *pd;
 	struct gpio_keys_button *gpio_keys;
 	struct gpio_keys_platform_data *gpio_keys_pdata;
+	const struct dmi_system_id *dmi_id;
+	int invalid_acpi_index = -1;
 	int error, gpio, irq;
 	int n_buttons = 0;
 
@@ -154,10 +177,17 @@ soc_button_device_create(struct platform_device *pdev,
 	gpio_keys = (void *)(gpio_keys_pdata + 1);
 	n_buttons = 0;
 
+	dmi_id = dmi_first_match(dmi_invalid_acpi_index);
+	if (dmi_id)
+		invalid_acpi_index = (long)dmi_id->driver_data;
+
 	for (info = button_info; info->name; info++) {
 		if (info->autorepeat != autorepeat)
 			continue;
 
+		if (info->acpi_index == invalid_acpi_index)
+			continue;
+
 		error = soc_button_lookup_gpio(&pdev->dev, info->acpi_index, &gpio, &irq);
 		if (error || irq < 0) {
 			/*
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2023-06-16 10:33 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-16 10:25 [PATCH AUTOSEL 6.1 01/26] Input: soc_button_array - add invalid acpi_index DMI quirk handling Sasha Levin
2023-06-16 10:25 ` [PATCH AUTOSEL 6.1 02/26] arm64: dts: qcom: sc7280-idp: drop incorrect dai-cells from WCD938x SDW Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 03/26] arm64: dts: qcom: sc7280-qcard: " Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 04/26] s390/cio: unregister device when the only path is gone Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 05/26] spi: lpspi: disable lpspi module irq in DMA mode Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 06/26] ASoC: codecs: wcd938x-sdw: do not set can_multi_write flag Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 07/26] ASoC: simple-card: Add missing of_node_put() in case of error Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 08/26] soundwire: dmi-quirks: add new mapping for HP Spectre x360 Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 09/26] soundwire: qcom: add proper error paths in qcom_swrm_startup() Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 10/26] ASoC: nau8824: Add quirk to active-high jack-detect Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 11/26] ASoC: amd: yc: Add Thinkpad Neo14 to quirks list for acp6x Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 12/26] drm/ast: Fix modeset failed on DisplayPort Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 13/26] gfs2: Don't get stuck writing page onto itself under direct I/O Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 14/26] s390/purgatory: disable branch profiling Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 15/26] ASoC: fsl_sai: Enable BCI bit if SAI works on synchronous mode with BYP asserted Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 16/26] ALSA: hda/realtek: Add "Intel Reference board" and "NUC 13" SSID in the ALC256 Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 17/26] i2c: mchp-pci1xxxx: Avoid cast to incompatible function type Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 18/26] ARM: dts: Fix erroneous ADS touchscreen polarities Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 19/26] null_blk: Fix: memory release when memory_backed=1 Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 20/26] drm/exynos: vidi: fix a wrong error return Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 21/26] drm/exynos: fix race condition UAF in exynos_g2d_exec_ioctl Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 22/26] drm/radeon: fix race condition UAF in radeon_gem_set_domain_ioctl Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 23/26] Revert "ext4: don't clear SB_RDONLY when remounting r/w until quota is re-enabled" Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 24/26] ext4: only check dquot_initialize_needed() when debugging Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 25/26] vhost_vdpa: tell vqs about the negotiated Sasha Levin
2023-06-16 10:26 ` [PATCH AUTOSEL 6.1 26/26] vhost_net: revert upend_idx only on retriable error Sasha Levin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox