platform-driver-x86.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] platform: arm64: thinkpad-t14s-ec: fixes and suspend support
@ 2025-11-05 23:22 Sebastian Reichel
  2025-11-05 23:22 ` [PATCH 1/4] platform: arm64: thinkpad-t14s-ec: fix IRQ race condition Sebastian Reichel
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Sebastian Reichel @ 2025-11-05 23:22 UTC (permalink / raw)
  To: Sebastian Reichel, Hans de Goede, Ilpo Järvinen,
	Bryan O'Donoghue
  Cc: platform-driver-x86, linux-kernel

I have a two fixes for the T14s Gen6 Snapdragon EC driver as well as
improved system suspend support. I've been using my Thinkpad with these
patches for a few weeks as daily driver doing regular system suspend and
things seem to run well.

If there is enough time after review the fixes are probably good
material for the 6.18 release cycle.

Signed-off-by: Sebastian Reichel <sre@kernel.org>
---
Sebastian Reichel (4):
      platform: arm64: thinkpad-t14s-ec: fix IRQ race condition
      platform: arm64: thinkpad-t14s-ec: sleep after EC access
      platform: arm64: thinkpad-t14s-ec: add system PM hooks
      platform: arm64: thinkpad-t14s-ec: add suspend handler for keyboard backlight

 drivers/platform/arm64/lenovo-thinkpad-t14s.c | 73 ++++++++++++++++++++++-----
 1 file changed, 59 insertions(+), 14 deletions(-)
---
base-commit: 6146a0f1dfae5d37442a9ddcba012add260bceb0
change-id: 20251105-thinkpad-t14s-ec-improvements-44d4c38fef71

Best regards,
-- 
Sebastian Reichel <sebastian.reichel@collabora.com>


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

* [PATCH 1/4] platform: arm64: thinkpad-t14s-ec: fix IRQ race condition
  2025-11-05 23:22 [PATCH 0/4] platform: arm64: thinkpad-t14s-ec: fixes and suspend support Sebastian Reichel
@ 2025-11-05 23:22 ` Sebastian Reichel
  2025-11-06  1:40   ` Bryan O'Donoghue
  2025-11-05 23:22 ` [PATCH 2/4] platform: arm64: thinkpad-t14s-ec: sleep after EC access Sebastian Reichel
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Sebastian Reichel @ 2025-11-05 23:22 UTC (permalink / raw)
  To: Sebastian Reichel, Hans de Goede, Ilpo Järvinen,
	Bryan O'Donoghue
  Cc: platform-driver-x86, linux-kernel

Fix a race condition, that an input key related interrupt might be
triggered before the input handler has been registered, which results
in a NULL pointer dereference. This can happen if the user enables
the keyboard backlight shortly before the driver is being probed.

Fixes: 60b7ab6ce030 ("platform: arm64: thinkpad-t14s-ec: new driver")
Signed-off-by: Sebastian Reichel <sre@kernel.org>
---
 drivers/platform/arm64/lenovo-thinkpad-t14s.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/platform/arm64/lenovo-thinkpad-t14s.c b/drivers/platform/arm64/lenovo-thinkpad-t14s.c
index 1d5d11adaf32..c1c01b977f2b 100644
--- a/drivers/platform/arm64/lenovo-thinkpad-t14s.c
+++ b/drivers/platform/arm64/lenovo-thinkpad-t14s.c
@@ -557,12 +557,6 @@ static int t14s_ec_probe(struct i2c_client *client)
 		return dev_err_probe(dev, PTR_ERR(ec->regmap),
 				     "Failed to init regmap\n");
 
-	ret = devm_request_threaded_irq(dev, client->irq, NULL,
-					t14s_ec_irq_handler,
-					IRQF_ONESHOT, dev_name(dev), ec);
-	if (ret < 0)
-		return dev_err_probe(dev, ret, "Failed to get IRQ\n");
-
 	ret = t14s_leds_probe(ec);
 	if (ret < 0)
 		return ret;
@@ -579,6 +573,12 @@ static int t14s_ec_probe(struct i2c_client *client)
 	if (ret < 0)
 		return ret;
 
+	ret = devm_request_threaded_irq(dev, client->irq, NULL,
+					t14s_ec_irq_handler,
+					IRQF_ONESHOT, dev_name(dev), ec);
+	if (ret < 0)
+		return dev_err_probe(dev, ret, "Failed to get IRQ\n");
+
 	/*
 	 * Disable wakeup support by default, because the driver currently does
 	 * not support masking any events and the laptop should not wake up when

-- 
2.51.0


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

* [PATCH 2/4] platform: arm64: thinkpad-t14s-ec: sleep after EC access
  2025-11-05 23:22 [PATCH 0/4] platform: arm64: thinkpad-t14s-ec: fixes and suspend support Sebastian Reichel
  2025-11-05 23:22 ` [PATCH 1/4] platform: arm64: thinkpad-t14s-ec: fix IRQ race condition Sebastian Reichel
@ 2025-11-05 23:22 ` Sebastian Reichel
  2025-11-05 23:22 ` [PATCH 3/4] platform: arm64: thinkpad-t14s-ec: add system PM hooks Sebastian Reichel
  2025-11-05 23:22 ` [PATCH 4/4] platform: arm64: thinkpad-t14s-ec: add suspend handler for keyboard backlight Sebastian Reichel
  3 siblings, 0 replies; 7+ messages in thread
From: Sebastian Reichel @ 2025-11-05 23:22 UTC (permalink / raw)
  To: Sebastian Reichel, Hans de Goede, Ilpo Järvinen,
	Bryan O'Donoghue
  Cc: platform-driver-x86, linux-kernel

The ACPI ECRD and ECWR functions have a 10ms sleep at the end. It turns
out, that this is sometimes needed to avoid I2C transmission failures,
especially for functions doing regmap_update_bits (and thus read + write
shortly after each other). This fixes problems like the following
appearing in the kernel log:

leds platform::micmute: Setting an LED's brightness failed (-6)
leds platform::kbd_backlight: Setting an LED's brightness failed (-6)

The ACPI QEVT function used to read the interrupt status register also
has a 10ms sleep at the end. Without that there are problems with
reading multiple events following directly after each other resulting
in the following error message being logged:

thinkpad-t14s-ec 4-0028: Failed to read event

Fixes: 60b7ab6ce030 ("platform: arm64: thinkpad-t14s-ec: new driver")
Signed-off-by: Sebastian Reichel <sre@kernel.org>
---
 drivers/platform/arm64/lenovo-thinkpad-t14s.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/platform/arm64/lenovo-thinkpad-t14s.c b/drivers/platform/arm64/lenovo-thinkpad-t14s.c
index c1c01b977f2b..cf6a1d3b2617 100644
--- a/drivers/platform/arm64/lenovo-thinkpad-t14s.c
+++ b/drivers/platform/arm64/lenovo-thinkpad-t14s.c
@@ -120,6 +120,7 @@ static int t14s_ec_write(void *context, unsigned int reg,
 	if (ret < 0)
 		return ret;
 
+	fsleep(10000);
 	return 0;
 }
 
@@ -157,6 +158,7 @@ static int t14s_ec_read(void *context, unsigned int reg,
 
 out:
 	i2c_unlock_bus(client->adapter, I2C_LOCK_SEGMENT);
+	fsleep(10000);
 	return ret;
 }
 
@@ -191,6 +193,8 @@ static int t14s_ec_read_evt(struct t14s_ec *ec, u8 *val)
 	if (ret < 0)
 		goto out;
 
+	fsleep(10000);
+
 	ret = 0;
 
 out:

-- 
2.51.0


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

* [PATCH 3/4] platform: arm64: thinkpad-t14s-ec: add system PM hooks
  2025-11-05 23:22 [PATCH 0/4] platform: arm64: thinkpad-t14s-ec: fixes and suspend support Sebastian Reichel
  2025-11-05 23:22 ` [PATCH 1/4] platform: arm64: thinkpad-t14s-ec: fix IRQ race condition Sebastian Reichel
  2025-11-05 23:22 ` [PATCH 2/4] platform: arm64: thinkpad-t14s-ec: sleep after EC access Sebastian Reichel
@ 2025-11-05 23:22 ` Sebastian Reichel
  2025-11-06 12:07   ` Ilpo Järvinen
  2025-11-05 23:22 ` [PATCH 4/4] platform: arm64: thinkpad-t14s-ec: add suspend handler for keyboard backlight Sebastian Reichel
  3 siblings, 1 reply; 7+ messages in thread
From: Sebastian Reichel @ 2025-11-05 23:22 UTC (permalink / raw)
  To: Sebastian Reichel, Hans de Goede, Ilpo Järvinen,
	Bryan O'Donoghue
  Cc: platform-driver-x86, linux-kernel

Improve support for system suspend. The register information has been
extracted from the ACPI DSDT code handling Windows Modern Standby. In
addition to writing to the 0xE0 register, the ACPI function also does
some changes to the thermal configuration. This part is not implemented.

After this patch the laptop's power and LID LEDs will switch into the
typical breathing animation when the system is suspended and enabled
normally again after resuming.

Signed-off-by: Sebastian Reichel <sre@kernel.org>
---
 drivers/platform/arm64/lenovo-thinkpad-t14s.c | 53 +++++++++++++++++++++++----
 1 file changed, 45 insertions(+), 8 deletions(-)

diff --git a/drivers/platform/arm64/lenovo-thinkpad-t14s.c b/drivers/platform/arm64/lenovo-thinkpad-t14s.c
index cf6a1d3b2617..066074a1314b 100644
--- a/drivers/platform/arm64/lenovo-thinkpad-t14s.c
+++ b/drivers/platform/arm64/lenovo-thinkpad-t14s.c
@@ -25,14 +25,17 @@
 #define T14S_EC_CMD_ECWR	0x03
 #define T14S_EC_CMD_EVT		0xf0
 
-#define T14S_EC_REG_LED		0x0c
-#define T14S_EC_REG_KBD_BL1	0x0d
-#define T14S_EC_REG_KBD_BL2	0xe1
-#define T14S_EC_KBD_BL1_MASK	GENMASK_U8(7, 6)
-#define T14S_EC_KBD_BL2_MASK	GENMASK_U8(3, 2)
-#define T14S_EC_REG_AUD		0x30
-#define T14S_EC_MIC_MUTE_LED	BIT(5)
-#define T14S_EC_SPK_MUTE_LED	BIT(6)
+#define T14S_EC_REG_LED				0x0c
+#define T14S_EC_REG_KBD_BL1			0x0d
+#define T14S_EC_REG_MODERN_STANDBY		0xe0
+#define T14S_EC_MODERN_STANDBY_ENTRY		BIT(1)
+#define T14S_EC_MODERN_STANDBY_EXIT		BIT(0)
+#define T14S_EC_REG_KBD_BL2			0xe1
+#define T14S_EC_KBD_BL1_MASK			GENMASK_U8(7, 6)
+#define T14S_EC_KBD_BL2_MASK			GENMASK_U8(3, 2)
+#define T14S_EC_REG_AUD				0x30
+#define T14S_EC_MIC_MUTE_LED			BIT(5)
+#define T14S_EC_SPK_MUTE_LED			BIT(6)
 
 #define T14S_EC_EVT_NONE			0x00
 #define T14S_EC_EVT_KEY_FN_4			0x13
@@ -202,6 +205,14 @@ static int t14s_ec_read_evt(struct t14s_ec *ec, u8 *val)
 	return ret;
 }
 
+static void t14s_ec_write_sequence(struct t14s_ec *ec, u8 reg, u8 val, u8 cnt)
+{
+	int i;
+
+	for (i = 0; i < cnt; i++)
+		regmap_write(ec->regmap, reg, val);
+}
+
 static int t14s_led_set_status(struct t14s_ec *ec,
 			       struct t14s_ec_led_classdev *led,
 			       const enum t14s_ec_led_status_t ledstatus)
@@ -554,6 +565,7 @@ static int t14s_ec_probe(struct i2c_client *client)
 		return -ENOMEM;
 
 	ec->dev = dev;
+	i2c_set_clientdata(client, ec);
 
 	ec->regmap = devm_regmap_init(dev, &t14s_ec_regmap_bus,
 				      ec, &t14s_ec_regmap_config);
@@ -593,6 +605,26 @@ static int t14s_ec_probe(struct i2c_client *client)
 	return 0;
 }
 
+static int t14s_ec_suspend(struct device *dev)
+{
+	struct t14s_ec *ec = dev_get_drvdata(dev);
+
+	t14s_ec_write_sequence(ec, T14S_EC_REG_MODERN_STANDBY,
+			       T14S_EC_MODERN_STANDBY_ENTRY, 3);
+
+	return 0;
+}
+
+static int t14s_ec_resume(struct device *dev)
+{
+	struct t14s_ec *ec = dev_get_drvdata(dev);
+
+	t14s_ec_write_sequence(ec, T14S_EC_REG_MODERN_STANDBY,
+			       T14S_EC_MODERN_STANDBY_EXIT, 3);
+
+	return 0;
+}
+
 static const struct of_device_id t14s_ec_of_match[] = {
 	{ .compatible = "lenovo,thinkpad-t14s-ec" },
 	{}
@@ -605,10 +637,15 @@ static const struct i2c_device_id t14s_ec_i2c_id_table[] = {
 };
 MODULE_DEVICE_TABLE(i2c, t14s_ec_i2c_id_table);
 
+static const struct dev_pm_ops t14s_ec_pm_ops = {
+	SYSTEM_SLEEP_PM_OPS(t14s_ec_suspend, t14s_ec_resume)
+};
+
 static struct i2c_driver t14s_ec_i2c_driver = {
 	.driver = {
 		.name = "thinkpad-t14s-ec",
 		.of_match_table = t14s_ec_of_match,
+		.pm = &t14s_ec_pm_ops,
 	},
 	.probe = t14s_ec_probe,
 	.id_table = t14s_ec_i2c_id_table,

-- 
2.51.0


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

* [PATCH 4/4] platform: arm64: thinkpad-t14s-ec: add suspend handler for keyboard backlight
  2025-11-05 23:22 [PATCH 0/4] platform: arm64: thinkpad-t14s-ec: fixes and suspend support Sebastian Reichel
                   ` (2 preceding siblings ...)
  2025-11-05 23:22 ` [PATCH 3/4] platform: arm64: thinkpad-t14s-ec: add system PM hooks Sebastian Reichel
@ 2025-11-05 23:22 ` Sebastian Reichel
  3 siblings, 0 replies; 7+ messages in thread
From: Sebastian Reichel @ 2025-11-05 23:22 UTC (permalink / raw)
  To: Sebastian Reichel, Hans de Goede, Ilpo Järvinen,
	Bryan O'Donoghue
  Cc: platform-driver-x86, linux-kernel

This ensures that the keyboard backlight state is restored after
a suspend-resume cycle. Otherwise the keyboard is automatically
disabled during suspend and then stays disabled after resume.

Signed-off-by: Sebastian Reichel <sre@kernel.org>
---
 drivers/platform/arm64/lenovo-thinkpad-t14s.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/platform/arm64/lenovo-thinkpad-t14s.c b/drivers/platform/arm64/lenovo-thinkpad-t14s.c
index 066074a1314b..82c3ad6b3ee3 100644
--- a/drivers/platform/arm64/lenovo-thinkpad-t14s.c
+++ b/drivers/platform/arm64/lenovo-thinkpad-t14s.c
@@ -609,6 +609,8 @@ static int t14s_ec_suspend(struct device *dev)
 {
 	struct t14s_ec *ec = dev_get_drvdata(dev);
 
+	led_classdev_suspend(&ec->kbd_backlight);
+
 	t14s_ec_write_sequence(ec, T14S_EC_REG_MODERN_STANDBY,
 			       T14S_EC_MODERN_STANDBY_ENTRY, 3);
 
@@ -622,6 +624,8 @@ static int t14s_ec_resume(struct device *dev)
 	t14s_ec_write_sequence(ec, T14S_EC_REG_MODERN_STANDBY,
 			       T14S_EC_MODERN_STANDBY_EXIT, 3);
 
+	led_classdev_resume(&ec->kbd_backlight);
+
 	return 0;
 }
 

-- 
2.51.0


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

* Re: [PATCH 1/4] platform: arm64: thinkpad-t14s-ec: fix IRQ race condition
  2025-11-05 23:22 ` [PATCH 1/4] platform: arm64: thinkpad-t14s-ec: fix IRQ race condition Sebastian Reichel
@ 2025-11-06  1:40   ` Bryan O'Donoghue
  0 siblings, 0 replies; 7+ messages in thread
From: Bryan O'Donoghue @ 2025-11-06  1:40 UTC (permalink / raw)
  To: Sebastian Reichel, Hans de Goede, Ilpo Järvinen
  Cc: platform-driver-x86, linux-kernel

On 05/11/2025 23:22, Sebastian Reichel wrote:
> Fix a race condition, that an input key related interrupt might be
> triggered before the input handler has been registered, which results
> in a NULL pointer dereference. This can happen if the user enables
> the keyboard backlight shortly before the driver is being probed.
> 
> Fixes: 60b7ab6ce030 ("platform: arm64: thinkpad-t14s-ec: new driver")
> Signed-off-by: Sebastian Reichel <sre@kernel.org>
> ---
Enabling interrupts late in probe seems like a bit of a no-brainer.

One thing though is the commit log might productively contain the 
backtrace so that people can match bug fixes to specific backtraces.

Reviewed-by: Bryan O'Donoghue <bod@kernel.org>

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

* Re: [PATCH 3/4] platform: arm64: thinkpad-t14s-ec: add system PM hooks
  2025-11-05 23:22 ` [PATCH 3/4] platform: arm64: thinkpad-t14s-ec: add system PM hooks Sebastian Reichel
@ 2025-11-06 12:07   ` Ilpo Järvinen
  0 siblings, 0 replies; 7+ messages in thread
From: Ilpo Järvinen @ 2025-11-06 12:07 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Hans de Goede, Bryan O'Donoghue, platform-driver-x86, LKML

On Thu, 6 Nov 2025, Sebastian Reichel wrote:

> Improve support for system suspend. The register information has been
> extracted from the ACPI DSDT code handling Windows Modern Standby. In
> addition to writing to the 0xE0 register, the ACPI function also does
> some changes to the thermal configuration. This part is not implemented.

This doesn't cover why you do that repeated writing, please include 
explanation for it.

> After this patch the laptop's power and LID LEDs will switch into the
> typical breathing animation when the system is suspended and enabled
> normally again after resuming.
> 
> Signed-off-by: Sebastian Reichel <sre@kernel.org>
> ---
>  drivers/platform/arm64/lenovo-thinkpad-t14s.c | 53 +++++++++++++++++++++++----
>  1 file changed, 45 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/platform/arm64/lenovo-thinkpad-t14s.c b/drivers/platform/arm64/lenovo-thinkpad-t14s.c
> index cf6a1d3b2617..066074a1314b 100644
> --- a/drivers/platform/arm64/lenovo-thinkpad-t14s.c
> +++ b/drivers/platform/arm64/lenovo-thinkpad-t14s.c
> @@ -25,14 +25,17 @@
>  #define T14S_EC_CMD_ECWR	0x03
>  #define T14S_EC_CMD_EVT		0xf0
>  
> -#define T14S_EC_REG_LED		0x0c
> -#define T14S_EC_REG_KBD_BL1	0x0d
> -#define T14S_EC_REG_KBD_BL2	0xe1
> -#define T14S_EC_KBD_BL1_MASK	GENMASK_U8(7, 6)
> -#define T14S_EC_KBD_BL2_MASK	GENMASK_U8(3, 2)
> -#define T14S_EC_REG_AUD		0x30
> -#define T14S_EC_MIC_MUTE_LED	BIT(5)
> -#define T14S_EC_SPK_MUTE_LED	BIT(6)
> +#define T14S_EC_REG_LED				0x0c
> +#define T14S_EC_REG_KBD_BL1			0x0d
> +#define T14S_EC_REG_MODERN_STANDBY		0xe0
> +#define T14S_EC_MODERN_STANDBY_ENTRY		BIT(1)
> +#define T14S_EC_MODERN_STANDBY_EXIT		BIT(0)
> +#define T14S_EC_REG_KBD_BL2			0xe1
> +#define T14S_EC_KBD_BL1_MASK			GENMASK_U8(7, 6)
> +#define T14S_EC_KBD_BL2_MASK			GENMASK_U8(3, 2)
> +#define T14S_EC_REG_AUD				0x30
> +#define T14S_EC_MIC_MUTE_LED			BIT(5)
> +#define T14S_EC_SPK_MUTE_LED			BIT(6)
>  
>  #define T14S_EC_EVT_NONE			0x00
>  #define T14S_EC_EVT_KEY_FN_4			0x13
> @@ -202,6 +205,14 @@ static int t14s_ec_read_evt(struct t14s_ec *ec, u8 *val)
>  	return ret;
>  }
>  
> +static void t14s_ec_write_sequence(struct t14s_ec *ec, u8 reg, u8 val, u8 cnt)
> +{
> +	int i;
> +
> +	for (i = 0; i < cnt; i++)
> +		regmap_write(ec->regmap, reg, val);
> +}
> +
>  static int t14s_led_set_status(struct t14s_ec *ec,
>  			       struct t14s_ec_led_classdev *led,
>  			       const enum t14s_ec_led_status_t ledstatus)
> @@ -554,6 +565,7 @@ static int t14s_ec_probe(struct i2c_client *client)
>  		return -ENOMEM;
>  
>  	ec->dev = dev;
> +	i2c_set_clientdata(client, ec);
>  
>  	ec->regmap = devm_regmap_init(dev, &t14s_ec_regmap_bus,
>  				      ec, &t14s_ec_regmap_config);
> @@ -593,6 +605,26 @@ static int t14s_ec_probe(struct i2c_client *client)
>  	return 0;
>  }
>  
> +static int t14s_ec_suspend(struct device *dev)
> +{
> +	struct t14s_ec *ec = dev_get_drvdata(dev);
> +
> +	t14s_ec_write_sequence(ec, T14S_EC_REG_MODERN_STANDBY,
> +			       T14S_EC_MODERN_STANDBY_ENTRY, 3);
> +
> +	return 0;
> +}
> +
> +static int t14s_ec_resume(struct device *dev)
> +{
> +	struct t14s_ec *ec = dev_get_drvdata(dev);
> +
> +	t14s_ec_write_sequence(ec, T14S_EC_REG_MODERN_STANDBY,
> +			       T14S_EC_MODERN_STANDBY_EXIT, 3);
> +
> +	return 0;
> +}
> +
>  static const struct of_device_id t14s_ec_of_match[] = {
>  	{ .compatible = "lenovo,thinkpad-t14s-ec" },
>  	{}
> @@ -605,10 +637,15 @@ static const struct i2c_device_id t14s_ec_i2c_id_table[] = {
>  };
>  MODULE_DEVICE_TABLE(i2c, t14s_ec_i2c_id_table);
>  
> +static const struct dev_pm_ops t14s_ec_pm_ops = {
> +	SYSTEM_SLEEP_PM_OPS(t14s_ec_suspend, t14s_ec_resume)

Add #include for the struct and macro.

-- 
 i.


> +};
> +
>  static struct i2c_driver t14s_ec_i2c_driver = {
>  	.driver = {
>  		.name = "thinkpad-t14s-ec",
>  		.of_match_table = t14s_ec_of_match,
> +		.pm = &t14s_ec_pm_ops,
>  	},
>  	.probe = t14s_ec_probe,
>  	.id_table = t14s_ec_i2c_id_table,
> 
> 

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

end of thread, other threads:[~2025-11-06 12:07 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-05 23:22 [PATCH 0/4] platform: arm64: thinkpad-t14s-ec: fixes and suspend support Sebastian Reichel
2025-11-05 23:22 ` [PATCH 1/4] platform: arm64: thinkpad-t14s-ec: fix IRQ race condition Sebastian Reichel
2025-11-06  1:40   ` Bryan O'Donoghue
2025-11-05 23:22 ` [PATCH 2/4] platform: arm64: thinkpad-t14s-ec: sleep after EC access Sebastian Reichel
2025-11-05 23:22 ` [PATCH 3/4] platform: arm64: thinkpad-t14s-ec: add system PM hooks Sebastian Reichel
2025-11-06 12:07   ` Ilpo Järvinen
2025-11-05 23:22 ` [PATCH 4/4] platform: arm64: thinkpad-t14s-ec: add suspend handler for keyboard backlight Sebastian Reichel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).