Mainline:Broadcom Kona/BCM590xx/PONKEY

Revision as of 11:56, 17 August 2025 by Knuxify (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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