Mainline:Broadcom Kona/BCM590xx/PONKEY: Difference between revisions
No edit summary |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{hatnote|Downstream driver: {{downstream|baffinlite|drivers/input/misc/bcmpmu59xxx_ponkey.c}}}} | |||
The BCM590XX PMU can handle a power-on key (the responsible section is nicknamed PONKEY). | The BCM590XX PMU can handle a power-on key (the responsible section is nicknamed PONKEY). | ||
Line 14: | Line 16: | ||
TODO. Seems like it might be possible to control long-press function using a timer (one of "poweroff", "restart" or "smart reset"). [https://github.com/knuxdroid/android_kernel_samsung_baffinlite/blob/cm-12.1/drivers/input/misc/bcmpmu59xxx_ponkey.c#L204-L277 Relevant kernel sources], notably commented out. | TODO. Seems like it might be possible to control long-press function using a timer (one of "poweroff", "restart" or "smart reset"). [https://github.com/knuxdroid/android_kernel_samsung_baffinlite/blob/cm-12.1/drivers/input/misc/bcmpmu59xxx_ponkey.c#L204-L277 Relevant kernel sources], notably commented out. | ||
== Registers (BCM59054) == | |||
{{hatnote|See {{downstream|baffinlite|include/linux/mfd/bcmpmu59054_reg.h}}.}} | |||
All of them are on MAP0. | |||
=== PONKEYCTRL1 (0x08) === | |||
{|class="wikitable bittable" | |||
!Name | |||
!Bit | |||
!Description | |||
|- | |||
| Reserved/unknown | |||
| 7 | |||
| Reserved/unknown | |||
|- | |||
| <code>RELEASE_DEB</code> | |||
| 5:3 | |||
| Represents the release debounce. | |||
|- | |||
| <code>PRESS_DEB</code> | |||
| 2:0 | |||
| Represents the press debounce. | |||
|} | |||
=== PONKEYCTRL2 (0x09) === | |||
{|class="wikitable bittable" | |||
!Name | |||
!Bit | |||
!Description | |||
|- | |||
| <code>TX1_ACTION</code> | |||
| 7:6 | |||
| TODO | |||
|- | |||
| <code>TX1_DLY</code> | |||
| 5:3 | |||
| TODO | |||
|- | |||
| <code>TX1_DEB</code> | |||
| 2:0 | |||
| TODO | |||
|} | |||
=== PONKEYCTRL3 (0x0A) === | |||
{|class="wikitable bittable" | |||
!Name | |||
!Bit | |||
!Description | |||
|- | |||
| <code>TX2_ACTION</code> | |||
| 7:6 | |||
| TODO | |||
|- | |||
| <code>TX2_DLY</code> | |||
| 5:3 | |||
| TODO | |||
|- | |||
| <code>TX2_DEB</code> | |||
| 2:0 | |||
| TODO | |||
|} | |||
=== PONKEYCTRL4 (0x0B) === | |||
{|class="wikitable bittable" | |||
!Name | |||
!Bit | |||
!Description | |||
|- | |||
| Reserved/unknown | |||
| 7 | |||
| Reserved/unknown | |||
|- | |||
| <code>KEY_PAD_LOCK_MODE</code> | |||
| 6 | |||
| TODO | |||
|- | |||
| <code>KEY_PAD_LOCK</code> | |||
| 5 | |||
| TODO | |||
|- | |||
| <code>POK_RESTART_EN</code> | |||
| 4 | |||
| TODO | |||
|- | |||
| Reserved/unknown | |||
| 3 | |||
| Reserved/unknown | |||
|- | |||
| <code>POK_WAKUP_DEB</code> | |||
| 2:0 | |||
| TODO | |||
|} | |||
=== PONKEYCTRL5 (0x0C) === | |||
{|class="wikitable bittable" | |||
!Name | |||
!Bit | |||
!Description | |||
|- | |||
| Reserved/unknown | |||
| 7:0 | |||
| Reserved/unknown | |||
|} | |||
=== PONKEYCTRL6 (0x0D) === | |||
{|class="wikitable bittable" | |||
!Name | |||
!Bit | |||
!Description | |||
|- | |||
| Reserved/unknown | |||
| 7:5 | |||
| Reserved/unknown | |||
|- | |||
| <code>SMART_RST_DLY</code> | |||
| 4:3 | |||
| TODO | |||
|- | |||
| <code>SMART_RST_STATUS</code> | |||
| 2 | |||
| TODO | |||
|- | |||
| <code>SMART_RST_PWR_EN</code> | |||
| 1 | |||
| TODO | |||
|- | |||
| <code>SMART_RST_EN</code> | |||
| 0 | |||
| TODO | |||
|} | |||
=== PONKEYCTRL7 (0x0E) === | |||
{|class="wikitable bittable" | |||
!Name | |||
!Bit | |||
!Description | |||
|- | |||
| Reserved/unknown | |||
| 7:0 | |||
| Reserved/unknown | |||
|} | |||
=== PONKEYCTRL8 (0x0F) === | |||
{|class="wikitable bittable" | |||
!Name | |||
!Bit | |||
!Description | |||
|- | |||
| <code>TX3_ACTION</code> | |||
| 7:6 | |||
| TODO | |||
|- | |||
| <code>TX3_DLY</code> | |||
| 5:3 | |||
| TODO | |||
|- | |||
| <code>TX3_DEB</code> | |||
| 2:0 | |||
| TODO | |||
|} |
Latest revision as of 11:56, 17 August 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.
Registers (BCM59054)
All of them are on MAP0.
PONKEYCTRL1 (0x08)
Name | Bit | Description |
---|---|---|
Reserved/unknown | 7 | Reserved/unknown |
RELEASE_DEB
|
5:3 | Represents the release debounce. |
PRESS_DEB
|
2:0 | Represents the press debounce. |
PONKEYCTRL2 (0x09)
Name | Bit | Description |
---|---|---|
TX1_ACTION
|
7:6 | TODO |
TX1_DLY
|
5:3 | TODO |
TX1_DEB
|
2:0 | TODO |
PONKEYCTRL3 (0x0A)
Name | Bit | Description |
---|---|---|
TX2_ACTION
|
7:6 | TODO |
TX2_DLY
|
5:3 | TODO |
TX2_DEB
|
2:0 | TODO |
PONKEYCTRL4 (0x0B)
Name | Bit | Description |
---|---|---|
Reserved/unknown | 7 | Reserved/unknown |
KEY_PAD_LOCK_MODE
|
6 | TODO |
KEY_PAD_LOCK
|
5 | TODO |
POK_RESTART_EN
|
4 | TODO |
Reserved/unknown | 3 | Reserved/unknown |
POK_WAKUP_DEB
|
2:0 | TODO |
PONKEYCTRL5 (0x0C)
Name | Bit | Description |
---|---|---|
Reserved/unknown | 7:0 | Reserved/unknown |
PONKEYCTRL6 (0x0D)
Name | Bit | Description |
---|---|---|
Reserved/unknown | 7:5 | Reserved/unknown |
SMART_RST_DLY
|
4:3 | TODO |
SMART_RST_STATUS
|
2 | TODO |
SMART_RST_PWR_EN
|
1 | TODO |
SMART_RST_EN
|
0 | TODO |
PONKEYCTRL7 (0x0E)
Name | Bit | Description |
---|---|---|
Reserved/unknown | 7:0 | Reserved/unknown |
PONKEYCTRL8 (0x0F)
Name | Bit | Description |
---|---|---|
TX3_ACTION
|
7:6 | TODO |
TX3_DLY
|
5:3 | TODO |
TX3_DEB
|
2:0 | TODO |