Name |
Offset |
Length |
Description |
sysrst_ctrl.INTR_STATE |
0x0 |
4 |
Interrupt State Register |
sysrst_ctrl.INTR_ENABLE |
0x4 |
4 |
Interrupt Enable Register |
sysrst_ctrl.INTR_TEST |
0x8 |
4 |
Interrupt Test Register |
sysrst_ctrl.ALERT_TEST |
0xc |
4 |
Alert Test Register |
sysrst_ctrl.REGWEN |
0x10 |
4 |
Configuration write enable control register |
sysrst_ctrl.EC_RST_CTL |
0x14 |
4 |
EC reset control register |
sysrst_ctrl.ULP_AC_DEBOUNCE_CTL |
0x18 |
4 |
Ultra low power AC debounce control register |
sysrst_ctrl.ULP_LID_DEBOUNCE_CTL |
0x1c |
4 |
Ultra low power lid debounce control register |
sysrst_ctrl.ULP_PWRB_DEBOUNCE_CTL |
0x20 |
4 |
Ultra low power pwrb debounce control register |
sysrst_ctrl.ULP_CTL |
0x24 |
4 |
Ultra low power control register |
sysrst_ctrl.ULP_STATUS |
0x28 |
4 |
Ultra low power status |
sysrst_ctrl.WKUP_STATUS |
0x2c |
4 |
wakeup status |
sysrst_ctrl.KEY_INVERT_CTL |
0x30 |
4 |
configure key input output invert property |
sysrst_ctrl.PIN_ALLOWED_CTL |
0x34 |
4 |
This register determines which override values are allowed for a given output. |
sysrst_ctrl.PIN_OUT_CTL |
0x38 |
4 |
Enables the override function for a specific pin. |
sysrst_ctrl.PIN_OUT_VALUE |
0x3c |
4 |
Sets the pin override value. Note that only the values |
sysrst_ctrl.PIN_IN_VALUE |
0x40 |
4 |
For SW to read the sysrst_ctrl inputs like GPIO |
sysrst_ctrl.KEY_INTR_CTL |
0x44 |
4 |
Define the keys or inputs that can trigger the interrupt |
sysrst_ctrl.KEY_INTR_DEBOUNCE_CTL |
0x48 |
4 |
Debounce timer control register for key-triggered interrupt |
sysrst_ctrl.AUTO_BLOCK_DEBOUNCE_CTL |
0x4c |
4 |
Debounce timer control register for pwrb_in H2L transition |
sysrst_ctrl.AUTO_BLOCK_OUT_CTL |
0x50 |
4 |
configure the key outputs to auto-override and their value |
sysrst_ctrl.COM_PRE_SEL_CTL_0 |
0x54 |
4 |
To define the keys that define the pre-condition of the combo |
sysrst_ctrl.COM_PRE_SEL_CTL_1 |
0x58 |
4 |
To define the keys that define the pre-condition of the combo |
sysrst_ctrl.COM_PRE_SEL_CTL_2 |
0x5c |
4 |
To define the keys that define the pre-condition of the combo |
sysrst_ctrl.COM_PRE_SEL_CTL_3 |
0x60 |
4 |
To define the keys that define the pre-condition of the combo |
sysrst_ctrl.COM_PRE_DET_CTL_0 |
0x64 |
4 |
To define the duration that the combo pre-condition should be pressed |
sysrst_ctrl.COM_PRE_DET_CTL_1 |
0x68 |
4 |
To define the duration that the combo pre-condition should be pressed |
sysrst_ctrl.COM_PRE_DET_CTL_2 |
0x6c |
4 |
To define the duration that the combo pre-condition should be pressed |
sysrst_ctrl.COM_PRE_DET_CTL_3 |
0x70 |
4 |
To define the duration that the combo pre-condition should be pressed |
sysrst_ctrl.COM_SEL_CTL_0 |
0x74 |
4 |
To define the keys that trigger the combo |
sysrst_ctrl.COM_SEL_CTL_1 |
0x78 |
4 |
To define the keys that trigger the combo |
sysrst_ctrl.COM_SEL_CTL_2 |
0x7c |
4 |
To define the keys that trigger the combo |
sysrst_ctrl.COM_SEL_CTL_3 |
0x80 |
4 |
To define the keys that trigger the combo |
sysrst_ctrl.COM_DET_CTL_0 |
0x84 |
4 |
To define the duration that the combo should be pressed |
sysrst_ctrl.COM_DET_CTL_1 |
0x88 |
4 |
To define the duration that the combo should be pressed |
sysrst_ctrl.COM_DET_CTL_2 |
0x8c |
4 |
To define the duration that the combo should be pressed |
sysrst_ctrl.COM_DET_CTL_3 |
0x90 |
4 |
To define the duration that the combo should be pressed |
sysrst_ctrl.COM_OUT_CTL_0 |
0x94 |
4 |
To define the actions once the combo is detected |
sysrst_ctrl.COM_OUT_CTL_1 |
0x98 |
4 |
To define the actions once the combo is detected |
sysrst_ctrl.COM_OUT_CTL_2 |
0x9c |
4 |
To define the actions once the combo is detected |
sysrst_ctrl.COM_OUT_CTL_3 |
0xa0 |
4 |
To define the actions once the combo is detected |
sysrst_ctrl.COMBO_INTR_STATUS |
0xa4 |
4 |
Combo interrupt source. These registers will only be set if the |
sysrst_ctrl.KEY_INTR_STATUS |
0xa8 |
4 |
key interrupt source |
Interrupt State Register
- Offset:
0x0
- Reset default:
0x0
- Reset mask:
0x1
{"reg": [{"name": "event_detected", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 160}}
Bits |
Type |
Reset |
Name |
Description |
31:1 |
|
|
|
Reserved |
0 |
ro |
0x0 |
event_detected |
Common interrupt triggered by combo or keyboard events. |
Interrupt Enable Register
- Offset:
0x4
- Reset default:
0x0
- Reset mask:
0x1
{"reg": [{"name": "event_detected", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 160}}
Bits |
Type |
Reset |
Name |
Description |
31:1 |
|
|
|
Reserved |
0 |
rw |
0x0 |
event_detected |
Enable interrupt when INTR_STATE.event_detected is set. |
Interrupt Test Register
- Offset:
0x8
- Reset default:
0x0
- Reset mask:
0x1
{"reg": [{"name": "event_detected", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 160}}
Alert Test Register
- Offset:
0xc
- Reset default:
0x0
- Reset mask:
0x1
{"reg": [{"name": "fatal_fault", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
Bits |
Type |
Reset |
Name |
Description |
31:1 |
|
|
|
Reserved |
0 |
wo |
0x0 |
fatal_fault |
Write 1 to trigger one alert event of this kind. |
Configuration write enable control register
- Offset:
0x10
- Reset default:
0x1
- Reset mask:
0x1
{"reg": [{"name": "write_en", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 100}}
Bits |
Type |
Reset |
Name |
Description |
31:1 |
|
|
|
Reserved |
0 |
rw0c |
0x1 |
write_en |
config write enable. 0: cfg is locked(not writable); 1: cfg is not locked(writable) |
EC reset control register
- Offset:
0x14
- Reset default:
0x7d0
- Reset mask:
0xffff
- Register enable:
REGWEN
{"reg": [{"name": "ec_rst_pulse", "bits": 16, "attr": ["rw"], "rotate": 0}, {"bits": 16}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
Bits |
Type |
Reset |
Name |
Description |
31:16 |
|
|
|
Reserved |
15:0 |
rw |
0x7d0 |
ec_rst_pulse |
Configure the pulse width of ec_rst_l. Each step is 5 us for a 200 kHz clock. |
Ultra low power AC debounce control register
- Offset:
0x18
- Reset default:
0x1f40
- Reset mask:
0xffff
- Register enable:
REGWEN
{"reg": [{"name": "ulp_ac_debounce_timer", "bits": 16, "attr": ["rw"], "rotate": 0}, {"bits": 16}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
Bits |
Type |
Reset |
Name |
Description |
31:16 |
|
|
|
Reserved |
15:0 |
rw |
0x1f40 |
ulp_ac_debounce_timer |
Configure the debounce timer for the AC input in number of clock cycles. Each step is 5 us for a 200 kHz clock. The signal must exceed the debounce time by at least one clock cycle to be detected. |
Ultra low power lid debounce control register
- Offset:
0x1c
- Reset default:
0x1f40
- Reset mask:
0xffff
- Register enable:
REGWEN
{"reg": [{"name": "ulp_lid_debounce_timer", "bits": 16, "attr": ["rw"], "rotate": 0}, {"bits": 16}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
Bits |
Type |
Reset |
Name |
Description |
31:16 |
|
|
|
Reserved |
15:0 |
rw |
0x1f40 |
ulp_lid_debounce_timer |
Configure the debounce timer for the lid in number of clock cycles. Each step is 5 us for a 200 kHz clock. The signal must exceed the debounce time by at least one clock cycle to be detected. |
Ultra low power pwrb debounce control register
- Offset:
0x20
- Reset default:
0x1f40
- Reset mask:
0xffff
- Register enable:
REGWEN
{"reg": [{"name": "ulp_pwrb_debounce_timer", "bits": 16, "attr": ["rw"], "rotate": 0}, {"bits": 16}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
Bits |
Type |
Reset |
Name |
Description |
31:16 |
|
|
|
Reserved |
15:0 |
rw |
0x1f40 |
ulp_pwrb_debounce_timer |
Configure the debounce timer for the power button in number of clock cycles. Each step is 5 us for a 200 kHz clock. The signal must exceed the debounce time by at least one clock cycle to be detected. |
Ultra low power control register
- Offset:
0x24
- Reset default:
0x0
- Reset mask:
0x1
{"reg": [{"name": "ulp_enable", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 120}}
Bits |
Type |
Reset |
Name |
Description |
31:1 |
|
|
|
Reserved |
0 |
rw |
0x0 |
ulp_enable |
0: disable ULP wakeup feature and reset the ULP FSM; 1: enable ULP wakeup feature |
Ultra low power status
- Offset:
0x28
- Reset default:
0x0
- Reset mask:
0x1
{"reg": [{"name": "ulp_wakeup", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 120}}
Bits |
Type |
Reset |
Name |
Description |
31:1 |
|
|
|
Reserved |
0 |
rw1c |
0x0 |
ulp_wakeup |
0: ULP wakeup not detected; 1: ULP wakeup event is detected |
wakeup status
- Offset:
0x2c
- Reset default:
0x0
- Reset mask:
0x1
{"reg": [{"name": "wakeup_sts", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 120}}
Bits |
Type |
Reset |
Name |
Description |
31:1 |
|
|
|
Reserved |
0 |
rw1c |
0x0 |
wakeup_sts |
0: wakeup event not detected; 1: wakeup event is detected |
configure key input output invert property
- Offset:
0x30
- Reset default:
0x0
- Reset mask:
0xfff
- Register enable:
REGWEN
{"reg": [{"name": "key0_in", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key0_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_in", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_in", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "pwrb_in", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "pwrb_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ac_present", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "bat_disable", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "lid_open", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "z3_wakeup", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 20}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
Bits |
Type |
Reset |
Name |
Description |
31:12 |
|
|
|
Reserved |
11 |
rw |
0x0 |
z3_wakeup |
0: don't invert; 1: invert |
10 |
rw |
0x0 |
lid_open |
0: don't invert; 1: invert |
9 |
rw |
0x0 |
bat_disable |
0: don't invert; 1: invert |
8 |
rw |
0x0 |
ac_present |
0: don't invert; 1: invert |
7 |
rw |
0x0 |
pwrb_out |
0: don't invert; 1: invert |
6 |
rw |
0x0 |
pwrb_in |
0: don't invert; 1: invert |
5 |
rw |
0x0 |
key2_out |
0: don't invert; 1: invert |
4 |
rw |
0x0 |
key2_in |
0: don't invert; 1: invert |
3 |
rw |
0x0 |
key1_out |
0: don't invert; 1: invert |
2 |
rw |
0x0 |
key1_in |
0: don't invert; 1: invert |
1 |
rw |
0x0 |
key0_out |
0: don't invert; 1: invert |
0 |
rw |
0x0 |
key0_in |
0: don't invert; 1: invert |
This register determines which override values are allowed for a given output.
If an override value programmed via PIN_OUT_VALUE
is not configured as an allowed value,
it will not have any effect.
- Offset:
0x34
- Reset default:
0x82
- Reset mask:
0xffff
- Register enable:
REGWEN
{"reg": [{"name": "bat_disable_0", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ec_rst_l_0", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "pwrb_out_0", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key0_out_0", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_out_0", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_out_0", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "z3_wakeup_0", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "flash_wp_l_0", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "bat_disable_1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ec_rst_l_1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "pwrb_out_1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key0_out_1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_out_1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_out_1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "z3_wakeup_1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "flash_wp_l_1", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 16}], "config": {"lanes": 1, "fontsize": 10, "vspace": 150}}
Bits |
Type |
Reset |
Name |
Description |
31:16 |
|
|
|
Reserved |
15 |
rw |
0x0 |
flash_wp_l_1 |
0: not allowed; 1: allowed |
14 |
rw |
0x0 |
z3_wakeup_1 |
0: not allowed; 1: allowed |
13 |
rw |
0x0 |
key2_out_1 |
0: not allowed; 1: allowed |
12 |
rw |
0x0 |
key1_out_1 |
0: not allowed; 1: allowed |
11 |
rw |
0x0 |
key0_out_1 |
0: not allowed; 1: allowed |
10 |
rw |
0x0 |
pwrb_out_1 |
0: not allowed; 1: allowed |
9 |
rw |
0x0 |
ec_rst_l_1 |
0: not allowed; 1: allowed |
8 |
rw |
0x0 |
bat_disable_1 |
0: not allowed; 1: allowed |
7 |
rw |
0x1 |
flash_wp_l_0 |
0: not allowed; 1: allowed |
6 |
rw |
0x0 |
z3_wakeup_0 |
0: not allowed; 1: allowed |
5 |
rw |
0x0 |
key2_out_0 |
0: not allowed; 1: allowed |
4 |
rw |
0x0 |
key1_out_0 |
0: not allowed; 1: allowed |
3 |
rw |
0x0 |
key0_out_0 |
0: not allowed; 1: allowed |
2 |
rw |
0x0 |
pwrb_out_0 |
0: not allowed; 1: allowed |
1 |
rw |
0x1 |
ec_rst_l_0 |
0: not allowed; 1: allowed |
0 |
rw |
0x0 |
bat_disable_0 |
0: not allowed; 1: allowed |
Enables the override function for a specific pin.
- Offset:
0x38
- Reset default:
0x82
- Reset mask:
0xff
{"reg": [{"name": "bat_disable", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ec_rst_l", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "pwrb_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key0_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "z3_wakeup", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "flash_wp_l", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 24}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
Bits |
Type |
Reset |
Name |
Description |
31:8 |
|
|
|
Reserved |
7 |
rw |
0x1 |
flash_wp_l |
0: disable override; 1: enable override |
6 |
rw |
0x0 |
z3_wakeup |
0: disable override; 1: enable override |
5 |
rw |
0x0 |
key2_out |
0: disable override; 1: enable override |
4 |
rw |
0x0 |
key1_out |
0: disable override; 1: enable override |
3 |
rw |
0x0 |
key0_out |
0: disable override; 1: enable override |
2 |
rw |
0x0 |
pwrb_out |
0: disable override; 1: enable override |
1 |
rw |
0x1 |
ec_rst_l |
0: disable override; 1: enable override |
0 |
rw |
0x0 |
bat_disable |
0: disable override; 1: enable override |
Sets the pin override value. Note that only the values
configured as 'allowed' in PIN_ALLOWED_CTL
will have
an effect. Otherwise the pin value will not be overridden.
- Offset:
0x3c
- Reset default:
0x0
- Reset mask:
0xff
{"reg": [{"name": "bat_disable", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ec_rst_l", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "pwrb_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key0_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_out", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "z3_wakeup", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "flash_wp_l", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 24}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
Bits |
Type |
Reset |
Name |
Description |
31:8 |
|
|
|
Reserved |
7 |
rw |
0x0 |
flash_wp_l |
0: override to 1b0; 1: override to 1b1 |
6 |
rw |
0x0 |
z3_wakeup |
0: override to 1b0; 1: override to 1b1 |
5 |
rw |
0x0 |
key2_out |
0: override to 1b0; 1: override to 1b1 |
4 |
rw |
0x0 |
key1_out |
0: override to 1b0; 1: override to 1b1 |
3 |
rw |
0x0 |
key0_out |
0: override to 1b0; 1: override to 1b1 |
2 |
rw |
0x0 |
pwrb_out |
0: override to 1b0; 1: override to 1b1 |
1 |
rw |
0x0 |
ec_rst_l |
0: override to 1b0; 1: override to 1b1 |
0 |
rw |
0x0 |
bat_disable |
0: override to 1b0; 1: override to 1b1 |
For SW to read the sysrst_ctrl inputs like GPIO
- Offset:
0x40
- Reset default:
0x0
- Reset mask:
0xff
{"reg": [{"name": "pwrb_in", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "key0_in", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "key1_in", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "key2_in", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "lid_open", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ac_present", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ec_rst_l", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "flash_wp_l", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 24}], "config": {"lanes": 1, "fontsize": 10, "vspace": 120}}
Bits |
Type |
Reset |
Name |
Description |
31:8 |
|
|
|
Reserved |
7 |
ro |
0x0 |
flash_wp_l |
raw flash_wp_l value; before the invert logic |
6 |
ro |
0x0 |
ec_rst_l |
raw ec_rst_l value; before the invert logic |
5 |
ro |
0x0 |
ac_present |
raw ac_present value; before the invert logic |
4 |
ro |
0x0 |
lid_open |
raw lid_open value; before the invert logic |
3 |
ro |
0x0 |
key2_in |
raw key2_in value; before the invert logic |
2 |
ro |
0x0 |
key1_in |
raw key1_in value; before the invert logic |
1 |
ro |
0x0 |
key0_in |
raw key0_in value; before the invert logic |
0 |
ro |
0x0 |
pwrb_in |
raw pwrb_in value; before the invert logic |
Define the keys or inputs that can trigger the interrupt
- Offset:
0x44
- Reset default:
0x0
- Reset mask:
0x3fff
- Register enable:
REGWEN
{"reg": [{"name": "pwrb_in_H2L", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key0_in_H2L", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_in_H2L", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_in_H2L", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ac_present_H2L", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ec_rst_l_H2L", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "flash_wp_l_H2L", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "pwrb_in_L2H", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key0_in_L2H", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_in_L2H", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_in_L2H", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ac_present_L2H", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ec_rst_l_L2H", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "flash_wp_l_L2H", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 18}], "config": {"lanes": 1, "fontsize": 10, "vspace": 160}}
Bits |
Type |
Reset |
Name |
Description |
31:14 |
|
|
|
Reserved |
13 |
rw |
0x0 |
flash_wp_l_L2H |
0: disable, 1: enable |
12 |
rw |
0x0 |
ec_rst_l_L2H |
0: disable, 1: enable |
11 |
rw |
0x0 |
ac_present_L2H |
0: disable, 1: enable |
10 |
rw |
0x0 |
key2_in_L2H |
0: disable, 1: enable |
9 |
rw |
0x0 |
key1_in_L2H |
0: disable, 1: enable |
8 |
rw |
0x0 |
key0_in_L2H |
0: disable, 1: enable |
7 |
rw |
0x0 |
pwrb_in_L2H |
0: disable, 1: enable |
6 |
rw |
0x0 |
flash_wp_l_H2L |
0: disable, 1: enable |
5 |
rw |
0x0 |
ec_rst_l_H2L |
0: disable, 1: enable |
4 |
rw |
0x0 |
ac_present_H2L |
0: disable, 1: enable |
3 |
rw |
0x0 |
key2_in_H2L |
0: disable, 1: enable |
2 |
rw |
0x0 |
key1_in_H2L |
0: disable, 1: enable |
1 |
rw |
0x0 |
key0_in_H2L |
0: disable, 1: enable |
0 |
rw |
0x0 |
pwrb_in_H2L |
0: disable, 1: enable |
Debounce timer control register for key-triggered interrupt
- Offset:
0x48
- Reset default:
0x7d0
- Reset mask:
0xffff
- Register enable:
REGWEN
{"reg": [{"name": "debounce_timer", "bits": 16, "attr": ["rw"], "rotate": 0}, {"bits": 16}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
Bits |
Type |
Reset |
Name |
Description |
31:16 |
|
|
|
Reserved |
15:0 |
rw |
0x7d0 |
debounce_timer |
Define the timer value so that the key or input is not oscillating in clock cycles. Each step is 5 us for a 200 kHz clock. The signal must exceed the debounce time by at least one clock cycle to be detected. |
Debounce timer control register for pwrb_in H2L transition
- Offset:
0x4c
- Reset default:
0x7d0
- Reset mask:
0x1ffff
- Register enable:
REGWEN
{"reg": [{"name": "debounce_timer", "bits": 16, "attr": ["rw"], "rotate": 0}, {"name": "auto_block_enable", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 15}], "config": {"lanes": 1, "fontsize": 10, "vspace": 190}}
Bits |
Type |
Reset |
Name |
Description |
31:17 |
|
|
|
Reserved |
16 |
rw |
0x0 |
auto_block_enable |
0: disable, 1: enable |
15:0 |
rw |
0x7d0 |
debounce_timer |
Define the timer value so that the pwrb_in is not oscillating in clock cycles. Each step is 5 us for a 200 kHz clock. The signal must exceed the debounce time by at least one clock cycle to be detected. |
configure the key outputs to auto-override and their value
- Offset:
0x50
- Reset default:
0x0
- Reset mask:
0x77
- Register enable:
REGWEN
{"reg": [{"name": "key0_out_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_out_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_out_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 1}, {"name": "key0_out_value", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_out_value", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_out_value", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 25}], "config": {"lanes": 1, "fontsize": 10, "vspace": 160}}
Bits |
Type |
Reset |
Name |
Description |
31:7 |
|
|
|
Reserved |
6 |
rw |
0x0 |
key2_out_value |
0: override to 1'b0; 1: override to 1'b1 |
5 |
rw |
0x0 |
key1_out_value |
0: override to 1'b0; 1: override to 1'b1 |
4 |
rw |
0x0 |
key0_out_value |
0: override to 1'b0; 1: override to 1'b1 |
3 |
|
|
|
Reserved |
2 |
rw |
0x0 |
key2_out_sel |
0: disable auto-block; 1: enable auto-block |
1 |
rw |
0x0 |
key1_out_sel |
0: disable auto-block; 1: enable auto-block |
0 |
rw |
0x0 |
key0_out_sel |
0: disable auto-block; 1: enable auto-block |
To define the keys that define the pre-condition of the combo
[0]: key0_in_sel
[1]: key1_in_sel
[2]: key2_in_sel
[3]: pwrb_in_sel
[4]: ac_present_sel
HW will start matching the combo as defined by COM_SEL_CTL
if this precondition is fulfilled.
If no keys are configured for the pre-condition, the pre-condition always evaluates to true.
The debounce timing is defined via KEY_INTR_DEBOUNCE_CTL
whereas the pre-condition pressed timing is defined via COM_PRE_DET_CTL.
- Reset default:
0x0
- Reset mask:
0x1f
Name |
Offset |
COM_PRE_SEL_CTL_0 |
0x54 |
COM_PRE_SEL_CTL_1 |
0x58 |
COM_PRE_SEL_CTL_2 |
0x5c |
COM_PRE_SEL_CTL_3 |
0x60 |
{"reg": [{"name": "key0_in_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_in_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_in_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "pwrb_in_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ac_present_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 27}], "config": {"lanes": 1, "fontsize": 10, "vspace": 160}}
Bits |
Type |
Reset |
Name |
Description |
31:5 |
|
|
|
Reserved |
4 |
rw |
0x0 |
ac_present_sel |
0: disable, 1: enable |
3 |
rw |
0x0 |
pwrb_in_sel |
0: disable, 1: enable |
2 |
rw |
0x0 |
key2_in_sel |
0: disable, 1: enable |
1 |
rw |
0x0 |
key1_in_sel |
0: disable, 1: enable |
0 |
rw |
0x0 |
key0_in_sel |
0: disable, 1: enable |
To define the duration that the combo pre-condition should be pressed
0-60s, each step is 5us(200KHz clock)
- Reset default:
0x0
- Reset mask:
0xffffffff
Name |
Offset |
COM_PRE_DET_CTL_0 |
0x64 |
COM_PRE_DET_CTL_1 |
0x68 |
COM_PRE_DET_CTL_2 |
0x6c |
COM_PRE_DET_CTL_3 |
0x70 |
{"reg": [{"name": "precondition_timer", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
Bits |
Type |
Reset |
Name |
Description |
31:0 |
rw |
0x0 |
precondition_timer |
0-60s, each step is 5us(200KHz clock) |
To define the keys that trigger the combo
[0]: key0_in_sel
[1]: key1_in_sel
[2]: key2_in_sel
[3]: pwrb_in_sel
[4]: ac_present_sel
HW will detect H2L transition in the combo use case.
Optionally, a pre-condition can be configured for the combo detection via COM_PRE_SEL_CTL.
If no keys are configured for the combo, the combo detection is disabled.
The debounce timing is defined via KEY_INTR_DEBOUNCE_CTL
whereas the key-pressed timing is defined via COM_DET_CTL.
- Reset default:
0x0
- Reset mask:
0x1f
Name |
Offset |
COM_SEL_CTL_0 |
0x74 |
COM_SEL_CTL_1 |
0x78 |
COM_SEL_CTL_2 |
0x7c |
COM_SEL_CTL_3 |
0x80 |
{"reg": [{"name": "key0_in_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key1_in_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "key2_in_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "pwrb_in_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ac_present_sel", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 27}], "config": {"lanes": 1, "fontsize": 10, "vspace": 160}}
Bits |
Type |
Reset |
Name |
Description |
31:5 |
|
|
|
Reserved |
4 |
rw |
0x0 |
ac_present_sel |
0: disable, 1: enable |
3 |
rw |
0x0 |
pwrb_in_sel |
0: disable, 1: enable |
2 |
rw |
0x0 |
key2_in_sel |
0: disable, 1: enable |
1 |
rw |
0x0 |
key1_in_sel |
0: disable, 1: enable |
0 |
rw |
0x0 |
key0_in_sel |
0: disable, 1: enable |
To define the duration that the combo should be pressed
0-60s, each step is 5us(200KHz clock)
- Reset default:
0x0
- Reset mask:
0xffffffff
Name |
Offset |
COM_DET_CTL_0 |
0x84 |
COM_DET_CTL_1 |
0x88 |
COM_DET_CTL_2 |
0x8c |
COM_DET_CTL_3 |
0x90 |
{"reg": [{"name": "detection_timer", "bits": 32, "attr": ["rw"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
Bits |
Type |
Reset |
Name |
Description |
31:0 |
rw |
0x0 |
detection_timer |
0-60s, each step is 5us(200KHz clock) |
To define the actions once the combo is detected
[0]: bat_disable
[1]: interrupt (to OpenTitan processor)
[2]: ec_rst (for Embedded Controller)
[3]: rst_req (to OpenTitan reset manager)
- Reset default:
0x0
- Reset mask:
0xf
Name |
Offset |
COM_OUT_CTL_0 |
0x94 |
COM_OUT_CTL_1 |
0x98 |
COM_OUT_CTL_2 |
0x9c |
COM_OUT_CTL_3 |
0xa0 |
{"reg": [{"name": "bat_disable", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "interrupt", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "ec_rst", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "rst_req", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 28}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
Bits |
Type |
Reset |
Name |
Description |
31:4 |
|
|
|
Reserved |
3 |
rw |
0x0 |
rst_req |
0: disable, 1: enable |
2 |
rw |
0x0 |
ec_rst |
0: disable, 1: enable |
1 |
rw |
0x0 |
interrupt |
0: disable, 1: enable |
0 |
rw |
0x0 |
bat_disable |
0: disable, 1: enable |
Combo interrupt source. These registers will only be set if the
interrupt action is configured in the corresponding COM_OUT_CTL
register.
- Offset:
0xa4
- Reset default:
0x0
- Reset mask:
0xf
{"reg": [{"name": "combo0_H2L", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "combo1_H2L", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "combo2_H2L", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "combo3_H2L", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"bits": 28}], "config": {"lanes": 1, "fontsize": 10, "vspace": 120}}
Bits |
Type |
Reset |
Name |
Description |
31:4 |
|
|
|
Reserved |
3 |
rw1c |
0x0 |
combo3_H2L |
0: case not detected;1: case detected |
2 |
rw1c |
0x0 |
combo2_H2L |
0: case not detected;1: case detected |
1 |
rw1c |
0x0 |
combo1_H2L |
0: case not detected;1: case detected |
0 |
rw1c |
0x0 |
combo0_H2L |
0: case not detected;1: case detected |
key interrupt source
- Offset:
0xa8
- Reset default:
0x0
- Reset mask:
0x3fff
{"reg": [{"name": "pwrb_H2L", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "key0_in_H2L", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "key1_in_H2L", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "key2_in_H2L", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "ac_present_H2L", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "ec_rst_l_H2L", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "flash_wp_l_H2L", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "pwrb_L2H", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "key0_in_L2H", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "key1_in_L2H", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "key2_in_L2H", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "ac_present_L2H", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "ec_rst_l_L2H", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"name": "flash_wp_l_L2H", "bits": 1, "attr": ["rw1c"], "rotate": -90}, {"bits": 18}], "config": {"lanes": 1, "fontsize": 10, "vspace": 160}}
Bits |
Type |
Reset |
Name |
Description |
31:14 |
|
|
|
Reserved |
13 |
rw1c |
0x0 |
flash_wp_l_L2H |
0: case not detected;1: case detected |
12 |
rw1c |
0x0 |
ec_rst_l_L2H |
0: case not detected;1: case detected |
11 |
rw1c |
0x0 |
ac_present_L2H |
0: case not detected;1: case detected |
10 |
rw1c |
0x0 |
key2_in_L2H |
0: case not detected;1: case detected |
9 |
rw1c |
0x0 |
key1_in_L2H |
0: case not detected;1: case detected |
8 |
rw1c |
0x0 |
key0_in_L2H |
0: case not detected;1: case detected |
7 |
rw1c |
0x0 |
pwrb_L2H |
0: case not detected;1: case detected |
6 |
rw1c |
0x0 |
flash_wp_l_H2L |
0: case not detected;1: case detected |
5 |
rw1c |
0x0 |
ec_rst_l_H2L |
0: case not detected;1: case detected |
4 |
rw1c |
0x0 |
ac_present_H2L |
0: case not detected;1: case detected |
3 |
rw1c |
0x0 |
key2_in_H2L |
0: case not detected;1: case detected |
2 |
rw1c |
0x0 |
key1_in_H2L |
0: case not detected;1: case detected |
1 |
rw1c |
0x0 |
key0_in_H2L |
0: case not detected;1: case detected |
0 |
rw1c |
0x0 |
pwrb_H2L |
0: case not detected;1: case detected |