Mainline:Broadcom Kona/BCM590xx/PONKEY: Difference between revisions
Created page with "The BCM590XX PMU can handle a power-on key (the responsible section is nicknamed PONKEY). == Key press detection == When a key is pressed, the internal IRQ for a key press is raised; when it is released, the internal IRQ for a key release is raised. A driver can interpret these IRQs to toggle a key on/off (in downstream, it's wired up to <code>KEY_POWER</code> by default. === Debounce interval === A debounce interval can be configured independently for button press a..." |
|||
Line 3: | Line 3: | ||
== Key press detection == | == Key press detection == | ||
When a key is pressed, the internal IRQ for a key press is raised; when it is released, the internal IRQ for a key release is raised. A driver can interpret these IRQs to toggle a key on/off (in downstream, it's wired up to <code>KEY_POWER</code> by default. | When a key is pressed, the internal IRQ for a key press (BCM59054_IRQ_POK_PRESSED/BCM59056_IRQ_PONKEYB_F) is raised; when it is released, the internal IRQ for a key release (BCM59054_IRQ_POK_RELEASED/BCM59056_IRQ_PONKEYB_R) is raised. A driver can interpret these IRQs to toggle a key on/off (in downstream, it's wired up to <code>KEY_POWER</code> by default. | ||
=== Debounce interval === | === Debounce interval === |
Latest revision as of 10:17, 19 February 2025
The BCM590XX PMU can handle a power-on key (the responsible section is nicknamed PONKEY).
Key press detection
When a key is pressed, the internal IRQ for a key press (BCM59054_IRQ_POK_PRESSED/BCM59056_IRQ_PONKEYB_F) is raised; when it is released, the internal IRQ for a key release (BCM59054_IRQ_POK_RELEASED/BCM59056_IRQ_PONKEYB_R) is raised. A driver can interpret these IRQs to toggle a key on/off (in downstream, it's wired up to KEY_POWER
by default.
Debounce interval
A debounce interval can be configured independently for button press and release. The debounce values are 3 bits wide and stored in PONKEYCTRL1
.
For the BCM59054/BCM59056, the allowed values are 330ns, 1.2ms, 10ms, 50ms, 100ms, 500ms, 1000ms and 2000ms. For the BCM59039/BCM59042/BCM59055, the allowed values are undocumented, but different from BCM59054/56 - 3
is equal to 100ms (whereas it's 50ms on 54/56).
Timer
TODO. Seems like it might be possible to control long-press function using a timer (one of "poweroff", "restart" or "smart reset"). Relevant kernel sources, notably commented out.