Skip to content

Commit 602cb14

Browse files
stephan-ghlinusw
authored andcommitted
pinctrl: qcom: x1e80100: Bypass PDC wakeup parent for now
On X1E80100, GPIO interrupts for wakeup-capable pins have been broken since the introduction of the pinctrl driver. This prevents keyboard and touchpad from working on most of the X1E laptops. So far we have worked around this by manually building a kernel with the "wakeup-parent" removed from the pinctrl node in the device tree, but we cannot expect all users to do that. Implement a similar workaround in the driver by clearing the wakeirq_map for X1E80100. This avoids using the PDC wakeup parent for all GPIOs and handles the interrupts directly in the pinctrl driver instead. The PDC driver needs additional changes to support X1E80100 properly. Adding a workaround separately first allows to land the necessary PDC changes through the normal release cycle, while still solving the more critical problem with keyboard and touchpad on the current stable kernel versions. Bypassing the PDC is enough for now, because we have not yet enabled the deep idle states where using the PDC becomes necessary. Cc: [email protected] Fixes: 05e4941 ("pinctrl: qcom: Add X1E80100 pinctrl driver") Signed-off-by: Stephan Gerhold <[email protected]> Reviewed-by: Johan Hovold <[email protected]> Tested-by: Johan Hovold <[email protected]> Reviewed-by: Konrad Dybcio <[email protected]> Reviewed-by: Abel Vesa <[email protected]> Link: https://lore.kernel.org/[email protected] Signed-off-by: Linus Walleij <[email protected]>
1 parent 431c164 commit 602cb14

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

drivers/pinctrl/qcom/pinctrl-x1e80100.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1839,7 +1839,9 @@ static const struct msm_pinctrl_soc_data x1e80100_pinctrl = {
18391839
.ngroups = ARRAY_SIZE(x1e80100_groups),
18401840
.ngpios = 239,
18411841
.wakeirq_map = x1e80100_pdc_map,
1842-
.nwakeirq_map = ARRAY_SIZE(x1e80100_pdc_map),
1842+
/* TODO: Enabling PDC currently breaks GPIO interrupts */
1843+
.nwakeirq_map = 0,
1844+
/* .nwakeirq_map = ARRAY_SIZE(x1e80100_pdc_map), */
18431845
.egpio_func = 9,
18441846
};
18451847

0 commit comments

Comments
 (0)