Skip to content

Commit 5f9efb6

Browse files
Julien Massotdtor
authored andcommitted
Input: mtk-pmic-keys - MT6359 has a specific release irq
Support for MT6359 PMIC keys has been added recently. However, the key release event is not properly handled: only key press events are generated, leaving key states stuck in "pressed". This patch ensures that both key press and key release events are properly emitted by handling the release logic correctly. Introduce a 'key_release_irq' member to the 'mtk_pmic_regs' to identify the devices that have a separate irq for the release event. Fixes: bc25e6b ("Input: mtk-pmic-keys - add support for MT6359 PMIC keys") Signed-off-by: Julien Massot <[email protected]> Link: https://lore.kernel.org/r/[email protected] Cc: [email protected] Signed-off-by: Dmitry Torokhov <[email protected]>
1 parent 1939a9f commit 5f9efb6

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

drivers/input/keyboard/mtk-pmic-keys.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ struct mtk_pmic_regs {
5555
const struct mtk_pmic_keys_regs keys_regs[MTK_PMIC_MAX_KEY_COUNT];
5656
u32 pmic_rst_reg;
5757
u32 rst_lprst_mask; /* Long-press reset timeout bitmask */
58+
bool key_release_irq;
5859
};
5960

6061
static const struct mtk_pmic_regs mt6397_regs = {
@@ -116,6 +117,7 @@ static const struct mtk_pmic_regs mt6358_regs = {
116117
MTK_PMIC_HOMEKEY_RST),
117118
.pmic_rst_reg = MT6358_TOP_RST_MISC,
118119
.rst_lprst_mask = MTK_PMIC_RST_DU_MASK,
120+
.key_release_irq = true,
119121
};
120122

121123
static const struct mtk_pmic_regs mt6359_regs = {
@@ -129,6 +131,7 @@ static const struct mtk_pmic_regs mt6359_regs = {
129131
MTK_PMIC_HOMEKEY_RST),
130132
.pmic_rst_reg = MT6359_TOP_RST_MISC,
131133
.rst_lprst_mask = MTK_PMIC_RST_DU_MASK,
134+
.key_release_irq = true,
132135
};
133136

134137
struct mtk_pmic_keys_info {
@@ -368,7 +371,7 @@ static int mtk_pmic_keys_probe(struct platform_device *pdev)
368371
if (keys->keys[index].irq < 0)
369372
return keys->keys[index].irq;
370373

371-
if (of_device_is_compatible(node, "mediatek,mt6358-keys")) {
374+
if (mtk_pmic_regs->key_release_irq) {
372375
keys->keys[index].irq_r = platform_get_irq_byname(pdev,
373376
irqnames_r[index]);
374377

0 commit comments

Comments
 (0)