* [PATCH 0/5] Input: aw86927 - add AW86937 support and fix the AW8693X layout
@ 2026-10-27 13:29 Qianhui Xu
2026-10-27 13:29 ` [PATCH 1/5] Input: aw86927 - fix the 7 V boost reference for AW86938 Qianhui Xu
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Qianhui Xu @ 2026-10-27 13:29 UTC (permalink / raw)
To: linux-input, Dmitry Torokhov
Cc: devicetree, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-kernel
This series adds the AW86937 variant and fixes three register-level
problems in the AW8693X family (AW86937/AW86938), all found while
bringing up a device with two of these actuators.
Patch 1 is an independent fix: AW86938_PLAYCFG1_BST_7000MV selects 9 V,
not the 7 V its name claims. Patches 2-3 wire up the AW86937; patches
4-5 make the already supported AW86938 work correctly (bit positions,
two-step stop) and power the part down across suspend/shutdown.
Testing: the device at hand (Lenovo Legion Y700 Gen4, SM8750) carries
parts from the AW86927/AW86938 family. AW86937 support is based on the
vendor driver and the register description; there is no AW86937 board
here, so patches 2-3 are compile-tested only. Patches 1, 4 and 5 were
exercised on the AW86938 in that device: rumble playback, stop, suspend
and shutdown.
Based on linux-next (2026-10-27).
Qianhui Xu (5):
Input: aw86927 - fix the 7 V boost reference for AW86938
dt-bindings: input: awinic,aw86927: document the AW86937 variant
Input: aw86927 - add support for Awinic AW86937
Input: aw86927 - handle the AW8693X play and boost register layout
Input: aw86927 - stop playback over suspend and on shutdown
.../bindings/input/awinic,aw86927.yaml | 1 +
drivers/input/misc/aw86927.c | 148 +++++++++++++++---
2 files changed, 126 insertions(+), 23 deletions(-)
--
2.53.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/5] Input: aw86927 - fix the 7 V boost reference for AW86938
2026-10-27 13:29 [PATCH 0/5] Input: aw86927 - add AW86937 support and fix the AW8693X layout Qianhui Xu
@ 2026-10-27 13:29 ` Qianhui Xu
2026-10-27 13:29 ` [PATCH 2/5] dt-bindings: input: awinic,aw86927: document the AW86937 variant Qianhui Xu
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Qianhui Xu @ 2026-10-27 13:29 UTC (permalink / raw)
To: linux-input, Dmitry Torokhov
Cc: devicetree, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-kernel
AW86938_PLAYCFG1_BST_7000MV names 7 V, but the register encodes the boost
voltage as ((mV - 6000) / 2 * 0x8313) >> 22 + 5, so the value used since
AW86938 support was added, 0x11, selects 9 V. Program 0x09 for 7 V, the
value the vendor driver uses for these actuators.
Found while adding the AW86937 variant, which shares the register layout
and the same wrong value.
Fixes: df53055c540f ("Input: aw86927 - add support for Awinic AW86938")
Signed-off-by: Qianhui Xu <xiaqinghuan@mail.ustc.edu.cn>
---
drivers/input/misc/aw86927.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/input/misc/aw86927.c b/drivers/input/misc/aw86927.c
index 1f73f0636..813f3591b 100644
--- a/drivers/input/misc/aw86927.c
+++ b/drivers/input/misc/aw86927.c
@@ -48,7 +48,7 @@
#define AW86938_PLAYCFG1_BST_MODE_MASK GENMASK(5, 5)
#define AW86938_PLAYCFG1_BST_MODE_BYPASS 0
#define AW86938_PLAYCFG1_BST_VOUT_VREFSET_MASK GENMASK(4, 0)
-#define AW86938_PLAYCFG1_BST_7000MV 0x11
+#define AW86938_PLAYCFG1_BST_7000MV 0x09
#define AW86927_PLAYCFG2_REG 0x07
--
2.53.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/5] dt-bindings: input: awinic,aw86927: document the AW86937 variant
2026-10-27 13:29 [PATCH 0/5] Input: aw86927 - add AW86937 support and fix the AW8693X layout Qianhui Xu
2026-10-27 13:29 ` [PATCH 1/5] Input: aw86927 - fix the 7 V boost reference for AW86938 Qianhui Xu
@ 2026-10-27 13:29 ` Qianhui Xu
2026-10-27 18:06 ` Krzysztof Kozlowski
2026-10-27 13:29 ` [PATCH 3/5] Input: aw86927 - add support for Awinic AW86937 Qianhui Xu
` (2 subsequent siblings)
4 siblings, 1 reply; 7+ messages in thread
From: Qianhui Xu @ 2026-10-27 13:29 UTC (permalink / raw)
To: linux-input, Dmitry Torokhov
Cc: devicetree, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-kernel
The AW86937 is a sibling of the AW86938 with the same register layout and
a distinct CHIPID. It is described the same way as the AW86938, with the
AW86927 compatible as fallback; software tells the parts apart by reading
the CHIPID registers.
Signed-off-by: Qianhui Xu <xiaqinghuan@mail.ustc.edu.cn>
---
Documentation/devicetree/bindings/input/awinic,aw86927.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/input/awinic,aw86927.yaml b/Documentation/devicetree/bindings/input/awinic,aw86927.yaml
index bd74b8148..42b8f5f9e 100644
--- a/Documentation/devicetree/bindings/input/awinic,aw86927.yaml
+++ b/Documentation/devicetree/bindings/input/awinic,aw86927.yaml
@@ -15,6 +15,7 @@ properties:
- const: awinic,aw86927
- items:
- enum:
+ - awinic,aw86937
- awinic,aw86938
- const: awinic,aw86927
--
2.53.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/5] Input: aw86927 - add support for Awinic AW86937
2026-10-27 13:29 [PATCH 0/5] Input: aw86927 - add AW86937 support and fix the AW8693X layout Qianhui Xu
2026-10-27 13:29 ` [PATCH 1/5] Input: aw86927 - fix the 7 V boost reference for AW86938 Qianhui Xu
2026-10-27 13:29 ` [PATCH 2/5] dt-bindings: input: awinic,aw86927: document the AW86937 variant Qianhui Xu
@ 2026-10-27 13:29 ` Qianhui Xu
2026-10-27 13:29 ` [PATCH 4/5] Input: aw86927 - handle the AW8693X play and boost register layout Qianhui Xu
2026-10-27 13:29 ` [PATCH 5/5] Input: aw86927 - stop playback over suspend and on shutdown Qianhui Xu
4 siblings, 0 replies; 7+ messages in thread
From: Qianhui Xu @ 2026-10-27 13:29 UTC (permalink / raw)
To: linux-input, Dmitry Torokhov
Cc: devicetree, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-kernel
The AW86937 reports CHIPID 0x9370 and is register compatible with the
AW86938 as far as the boost setup is concerned, so it joins that branch of
the haptic initialisation. Detection stays by CHIPID, so the existing
AW86927 compatible keeps working as fallback.
Signed-off-by: Qianhui Xu <xiaqinghuan@mail.ustc.edu.cn>
---
drivers/input/misc/aw86927.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/input/misc/aw86927.c b/drivers/input/misc/aw86927.c
index 813f3591b..42eb531c7 100644
--- a/drivers/input/misc/aw86927.c
+++ b/drivers/input/misc/aw86927.c
@@ -147,6 +147,7 @@
#define AW86927_CHIPIDH_REG 0x57
#define AW86927_CHIPIDL_REG 0x58
#define AW86927_CHIPID 0x9270
+#define AW86937_CHIPID 0x9370
#define AW86938_CHIPID 0x9380
#define AW86927_TMCFG_REG 0x5b
@@ -183,6 +184,7 @@ enum aw86927_work_mode {
enum aw86927_model {
AW86927,
+ AW86937,
AW86938,
};
@@ -589,6 +591,7 @@ static int aw86927_haptic_init(struct aw86927_data *haptics)
if (err)
return err;
break;
+ case AW86937:
case AW86938:
err = regmap_update_bits(haptics->regmap,
AW86938_PLAYCFG1_REG,
@@ -751,6 +754,9 @@ static int aw86927_detect(struct aw86927_data *haptics)
case AW86927_CHIPID:
haptics->model = AW86927;
break;
+ case AW86937_CHIPID:
+ haptics->model = AW86937;
+ break;
case AW86938_CHIPID:
haptics->model = AW86938;
break;
--
2.53.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 4/5] Input: aw86927 - handle the AW8693X play and boost register layout
2026-10-27 13:29 [PATCH 0/5] Input: aw86927 - add AW86937 support and fix the AW8693X layout Qianhui Xu
` (2 preceding siblings ...)
2026-10-27 13:29 ` [PATCH 3/5] Input: aw86927 - add support for Awinic AW86937 Qianhui Xu
@ 2026-10-27 13:29 ` Qianhui Xu
2026-10-27 13:29 ` [PATCH 5/5] Input: aw86927 - stop playback over suspend and on shutdown Qianhui Xu
4 siblings, 0 replies; 7+ messages in thread
From: Qianhui Xu @ 2026-10-27 13:29 UTC (permalink / raw)
To: linux-input, Dmitry Torokhov
Cc: devicetree, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-kernel
AW86937 and AW86938 keep the same register map as the AW86927 but move
two bits and invert the stop handshake:
- auto boost lives in bit 2 of PLAYCFG3 instead of bit 4, and the boost
mode in PLAYCFG1 is a two-bit field at bit 5 instead of bit 7;
- the VBAT mode bit taps the battery voltage instead of the software
tracked value;
- stopping is a two-step sequence: select PLAY_MODE_STOP in PLAYCFG3 and
then issue GO in PLAYCFG4, as the dedicated STOP bit does not exist
for these parts. A standby timeout after that is a real failure, so
return it instead of forcing the state machine.
Signed-off-by: Qianhui Xu <xiaqinghuan@mail.ustc.edu.cn>
---
drivers/input/misc/aw86927.c | 65 +++++++++++++++++++++++++++---------
1 file changed, 49 insertions(+), 16 deletions(-)
diff --git a/drivers/input/misc/aw86927.c b/drivers/input/misc/aw86927.c
index 42eb531c7..e8fd880ac 100644
--- a/drivers/input/misc/aw86927.c
+++ b/drivers/input/misc/aw86927.c
@@ -50,6 +50,14 @@
#define AW86938_PLAYCFG1_BST_VOUT_VREFSET_MASK GENMASK(4, 0)
#define AW86938_PLAYCFG1_BST_7000MV 0x09
+/*
+ * The AW8693x parts move auto-boost to bit 2 of PLAYCFG3 and stop playback
+ * by selecting the dedicated stop mode and then issuing a GO, unlike the
+ * AW86927 which has an explicit STOP bit in PLAYCFG4.
+ */
+#define AW8693X_PLAYCFG3_AUTO_BST_MASK BIT(2)
+#define AW8693X_PLAYCFG3_PLAY_MODE_STOP 3
+
#define AW86927_PLAYCFG2_REG 0x07
#define AW86927_PLAYCFG3_REG 0x08
@@ -291,9 +299,14 @@ static int aw86927_play_mode(struct aw86927_data *haptics, u8 play_mode)
err = regmap_update_bits(haptics->regmap,
AW86927_PLAYCFG1_REG,
- AW86927_PLAYCFG1_BST_MODE_MASK,
+ haptics->model == AW86927 ?
+ AW86927_PLAYCFG1_BST_MODE_MASK :
+ AW86938_PLAYCFG1_BST_MODE_MASK,
+ haptics->model == AW86927 ?
FIELD_PREP(AW86927_PLAYCFG1_BST_MODE_MASK,
- AW86927_PLAYCFG1_BST_MODE_BYPASS));
+ AW86927_PLAYCFG1_BST_MODE_BYPASS) :
+ FIELD_PREP(AW86938_PLAYCFG1_BST_MODE_MASK,
+ AW86938_PLAYCFG1_BST_MODE_BYPASS));
if (err)
return err;
@@ -301,7 +314,8 @@ static int aw86927_play_mode(struct aw86927_data *haptics, u8 play_mode)
AW86927_VBATCTRL_REG,
AW86927_VBATCTRL_VBAT_MODE_MASK,
FIELD_PREP(AW86927_VBATCTRL_VBAT_MODE_MASK,
- AW86927_VBATCTRL_VBAT_MODE_SW));
+ haptics->model == AW86927 ?
+ AW86927_VBATCTRL_VBAT_MODE_SW : 1));
if (err)
return err;
@@ -313,23 +327,38 @@ static int aw86927_play_mode(struct aw86927_data *haptics, u8 play_mode)
static int aw86927_stop(struct aw86927_data *haptics)
{
+ bool aw8693x = haptics->model != AW86927;
int err;
- err = regmap_write(haptics->regmap, AW86927_PLAYCFG4_REG, AW86927_PLAYCFG4_STOP);
+ if (aw8693x) {
+ err = regmap_update_bits(haptics->regmap, AW86927_PLAYCFG3_REG,
+ AW86927_PLAYCFG3_PLAY_MODE_MASK,
+ AW8693X_PLAYCFG3_PLAY_MODE_STOP);
+ if (err)
+ return err;
+ }
+
+ err = regmap_write(haptics->regmap, AW86927_PLAYCFG4_REG,
+ aw8693x ? AW86927_PLAYCFG4_GO : AW86927_PLAYCFG4_STOP);
if (err) {
dev_err(haptics->dev, "Failed to stop playback: %d\n", err);
return err;
}
err = aw86927_wait_enter_standby(haptics);
- if (err) {
- dev_err(haptics->dev, "Failed to enter standby, trying to force it\n");
- err = aw86927_play_mode(haptics, AW86927_STANDBY_MODE);
- if (err)
- return err;
- }
+ if (!err)
+ return 0;
- return 0;
+ /*
+ * The AW8693x reliably reaches standby through the stop mode above, so a
+ * timeout there is fatal; the AW86927 sometimes needs the nudge.
+ */
+ if (aw8693x)
+ return err;
+
+ dev_err(haptics->dev, "Failed to enter standby, trying to force it\n");
+
+ return aw86927_play_mode(haptics, AW86927_STANDBY_MODE);
}
static int aw86927_haptics_play(struct input_dev *dev, void *data, struct ff_effect *effect)
@@ -365,9 +394,13 @@ static int aw86927_play_sine(struct aw86927_data *haptics)
return err;
err = regmap_update_bits(haptics->regmap, AW86927_PLAYCFG3_REG,
- AW86927_PLAYCFG3_AUTO_BST_MASK,
+ haptics->model == AW86927 ?
+ AW86927_PLAYCFG3_AUTO_BST_MASK :
+ AW8693X_PLAYCFG3_AUTO_BST_MASK,
+ haptics->model == AW86927 ?
FIELD_PREP(AW86927_PLAYCFG3_AUTO_BST_MASK,
- AW86927_PLAYCFG3_AUTO_BST_ENABLE));
+ AW86927_PLAYCFG3_AUTO_BST_ENABLE) :
+ AW8693X_PLAYCFG3_AUTO_BST_MASK);
if (err)
return err;
@@ -605,9 +638,9 @@ static int aw86927_haptic_init(struct aw86927_data *haptics)
err = regmap_update_bits(haptics->regmap,
AW86927_PLAYCFG3_REG,
- AW86927_PLAYCFG3_AUTO_BST_MASK,
- FIELD_PREP(AW86927_PLAYCFG3_AUTO_BST_MASK,
- AW86927_PLAYCFG3_AUTO_BST_DISABLE));
+ haptics->model == AW86927 ?
+ AW86927_PLAYCFG3_AUTO_BST_MASK :
+ AW8693X_PLAYCFG3_AUTO_BST_MASK, 0);
if (err)
return err;
--
2.53.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 5/5] Input: aw86927 - stop playback over suspend and on shutdown
2026-10-27 13:29 [PATCH 0/5] Input: aw86927 - add AW86937 support and fix the AW8693X layout Qianhui Xu
` (3 preceding siblings ...)
2026-10-27 13:29 ` [PATCH 4/5] Input: aw86927 - handle the AW8693X play and boost register layout Qianhui Xu
@ 2026-10-27 13:29 ` Qianhui Xu
4 siblings, 0 replies; 7+ messages in thread
From: Qianhui Xu @ 2026-10-27 13:29 UTC (permalink / raw)
To: linux-input, Dmitry Torokhov
Cc: devicetree, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-kernel
The chip keeps playing whatever was programmed into it when the system
suspends or reboots, so the actuator can still be buzzing after the screen
is off. Stop playback, drain the work item and park the part in reset on
both paths.
Suspending also has to stop the memless effect timer from queueing new
work, otherwise a queued event re-arms playback after the stop. Use a
suspended flag protected by the input event lock for that, and take the
input mutex around the whole sequence so that open()/close() cannot race
the drain. The magnitude is read once per work run, so a concurrent
event cannot change it between the check and the register write.
Signed-off-by: Qianhui Xu <xiaqinghuan@mail.ustc.edu.cn>
---
drivers/input/misc/aw86927.c | 75 +++++++++++++++++++++++++++++++++---
1 file changed, 69 insertions(+), 6 deletions(-)
diff --git a/drivers/input/misc/aw86927.c b/drivers/input/misc/aw86927.c
index e8fd880ac..6d45c310a 100644
--- a/drivers/input/misc/aw86927.c
+++ b/drivers/input/misc/aw86927.c
@@ -15,6 +15,7 @@
#include <linux/interrupt.h>
#include <linux/input.h>
#include <linux/module.h>
+#include <linux/pm.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
#include <linux/types.h>
@@ -204,6 +205,7 @@ struct aw86927_data {
struct i2c_client *client;
struct regmap *regmap;
struct gpio_desc *reset_gpio;
+ bool suspended;
u16 level;
};
@@ -366,22 +368,26 @@ static int aw86927_haptics_play(struct input_dev *dev, void *data, struct ff_eff
struct aw86927_data *haptics = input_get_drvdata(dev);
int level;
+ /* The chip is powered down; a queued event would only fail. */
+ if (haptics->suspended)
+ return 0;
+
level = effect->u.rumble.strong_magnitude;
if (!level)
level = effect->u.rumble.weak_magnitude;
/* If level does not change, don't restart playback */
- if (haptics->level == level)
+ if (READ_ONCE(haptics->level) == level)
return 0;
- haptics->level = level;
+ WRITE_ONCE(haptics->level, level);
schedule_work(&haptics->play_work);
return 0;
}
-static int aw86927_play_sine(struct aw86927_data *haptics)
+static int aw86927_play_sine(struct aw86927_data *haptics, u16 level)
{
int err;
@@ -426,7 +432,8 @@ static int aw86927_play_sine(struct aw86927_data *haptics)
if (err)
return err;
- err = regmap_write(haptics->regmap, AW86927_PLAYCFG2_REG, haptics->level * 0x80 / 0xffff);
+ err = regmap_write(haptics->regmap, AW86927_PLAYCFG2_REG,
+ level * 0x80 / 0xffff);
if (err)
return err;
@@ -445,6 +452,7 @@ static void aw86927_close(struct input_dev *input)
int err;
cancel_work_sync(&haptics->play_work);
+ WRITE_ONCE(haptics->level, 0);
err = aw86927_stop(haptics);
if (err)
@@ -456,10 +464,11 @@ static void aw86927_haptics_play_work(struct work_struct *work)
struct aw86927_data *haptics =
container_of(work, struct aw86927_data, play_work);
struct device *dev = &haptics->client->dev;
+ u16 level = READ_ONCE(haptics->level);
int err;
- if (haptics->level)
- err = aw86927_play_sine(haptics);
+ if (level)
+ err = aw86927_play_sine(haptics, level);
else
err = aw86927_stop(haptics);
@@ -900,6 +909,58 @@ static int aw86927_probe(struct i2c_client *client)
return 0;
}
+static void aw86927_reset(void *data)
+{
+ struct aw86927_data *haptics = data;
+
+ gpiod_set_value_cansleep(haptics->reset_gpio, 1);
+}
+
+static void aw86927_shutdown(struct i2c_client *client)
+{
+ struct aw86927_data *haptics = i2c_get_clientdata(client);
+
+ disable_work_sync(&haptics->play_work);
+ aw86927_reset(haptics);
+}
+
+static int aw86927_suspend(struct device *dev)
+{
+ struct aw86927_data *haptics = dev_get_drvdata(dev);
+ int err;
+
+ guard(mutex)(&haptics->input_dev->mutex);
+
+ /* Block events from the memless effect timer before draining the work. */
+ scoped_guard(spinlock_irq, &haptics->input_dev->event_lock)
+ haptics->suspended = true;
+
+ cancel_work_sync(&haptics->play_work);
+ err = aw86927_stop(haptics);
+
+ scoped_guard(spinlock_irq, &haptics->input_dev->event_lock) {
+ if (err)
+ haptics->suspended = false;
+ else
+ WRITE_ONCE(haptics->level, 0);
+ }
+
+ return err;
+}
+
+static int aw86927_resume(struct device *dev)
+{
+ struct aw86927_data *haptics = dev_get_drvdata(dev);
+
+ guard(mutex)(&haptics->input_dev->mutex);
+ guard(spinlock_irq)(&haptics->input_dev->event_lock);
+ haptics->suspended = false;
+
+ return 0;
+}
+
+static DEFINE_SIMPLE_DEV_PM_OPS(aw86927_pm_ops, aw86927_suspend, aw86927_resume);
+
static const struct of_device_id aw86927_of_id[] = {
{ .compatible = "awinic,aw86927" },
{ /* sentinel */ }
@@ -911,8 +972,10 @@ static struct i2c_driver aw86927_driver = {
.driver = {
.name = "aw86927-haptics",
.of_match_table = aw86927_of_id,
+ .pm = pm_sleep_ptr(&aw86927_pm_ops),
},
.probe = aw86927_probe,
+ .shutdown = aw86927_shutdown,
};
module_i2c_driver(aw86927_driver);
--
2.53.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/5] dt-bindings: input: awinic,aw86927: document the AW86937 variant
2026-10-27 13:29 ` [PATCH 2/5] dt-bindings: input: awinic,aw86927: document the AW86937 variant Qianhui Xu
@ 2026-10-27 18:06 ` Krzysztof Kozlowski
0 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2026-10-27 18:06 UTC (permalink / raw)
To: Qianhui Xu, linux-input, Dmitry Torokhov
Cc: devicetree, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-kernel
On 27/10/2026 14:29, Qianhui Xu wrote:
> The AW86937 is a sibling of the AW86938 with the same register layout and
> a distinct CHIPID. It is described the same way as the AW86938, with the
> AW86927 compatible as fallback; software tells the parts apart by reading
> the CHIPID registers.
>
> Signed-off-by: Qianhui Xu <xiaqinghuan@mail.ustc.edu.cn>
> ---
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-10-27 18:06 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-27 13:29 [PATCH 0/5] Input: aw86927 - add AW86937 support and fix the AW8693X layout Qianhui Xu
2026-10-27 13:29 ` [PATCH 1/5] Input: aw86927 - fix the 7 V boost reference for AW86938 Qianhui Xu
2026-10-27 13:29 ` [PATCH 2/5] dt-bindings: input: awinic,aw86927: document the AW86937 variant Qianhui Xu
2026-10-27 18:06 ` Krzysztof Kozlowski
2026-10-27 13:29 ` [PATCH 3/5] Input: aw86927 - add support for Awinic AW86937 Qianhui Xu
2026-10-27 13:29 ` [PATCH 4/5] Input: aw86927 - handle the AW8693X play and boost register layout Qianhui Xu
2026-10-27 13:29 ` [PATCH 5/5] Input: aw86927 - stop playback over suspend and on shutdown Qianhui Xu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®