Commit 7febef5
Jan Baisch
Input: soc_button_array: defer MSHW0040 probe until GPIO is ready
MSHW0040 Surface devices use GPIO index 0 for the physical power
button. On the Surface Pro 12 for Business Intel, soc_button_array
can probe before the Panther Lake GPIO provider is ready. On affected
boots, the GPIO lookups for the power and volume buttons return
-EPROBE_DEFER.
Reloading the unchanged soc_button_array driver after the GPIO provider
has initialized makes the driver bind and all three buttons work.
The generic button creation path deliberately ignores -EPROBE_DEFER
because some Intel platforms expose virtual GPIO resources which never
acquire a GPIO provider. Propagating that error from the generic path
has previously caused severe deferred-probe loops on such systems.
Instead, check the known real MSHW0040 power-button GPIO before
creating any child devices and propagate only -EPROBE_DEFER. Keep all
other lookup errors and the generic virtual-GPIO handling unchanged.
This follows the direction already considered during the original
MSHW0040 Surface button support discussion, while avoiding the generic
error propagation that was later reverted.
The Surface Pro 12 Intel provides a reliable reproducer with both
CONFIG_INPUT_SOC_BUTTON_ARRAY and CONFIG_PINCTRL_INTEL_PLATFORM built
as modules.
Link: linux-surface/linux-surface#2144 (comment)
Link: linux-surface/linux-surface#61
Link: https://lore.kernel.org/all/20190516142523.117978-3-luzmaximilian@gmail.com/
Link: https://lore.kernel.org/all/65b265d2-f7a8-bcd7-e63f-f8efb7349324@gmail.com/
Signed-off-by: Jan Baisch <jan.baisch@protonmail.com>1 parent 7d3b315 commit 7febef5
1 file changed
Lines changed: 15 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
553 | 553 | | |
554 | 554 | | |
555 | 555 | | |
| 556 | + | |
556 | 557 | | |
557 | 558 | | |
558 | 559 | | |
559 | 560 | | |
560 | 561 | | |
| 562 | + | |
| 563 | + | |
561 | 564 | | |
562 | | - | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
563 | 577 | | |
564 | 578 | | |
565 | 579 | | |
| |||
0 commit comments