blob: c65dd5294306735aa238620bea33b31a44516c62 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
name: "sysrst_ctrl",
human_name: "System Reset Controller",
one_line_desc: "Manages board-level reset sequencing, interfaces reset and power manager",
one_paragraph_desc: '''
System Reset Controller provides basic board-level reset sequencing in response to trusted inputs.
It is programmable to accommodate actions triggered by presses of buttons and keyboard key combinations, to control the duration of reset pulses, and to trigger reset or wake-up requests that go to Reset Manager and to Power Manager.
System Reset Controller is part of the always-on power and clock domain.
'''
design_spec: "../doc",
dv_doc: "../doc/dv",
hw_checklist: "../doc/checklist",
sw_checklist: "/sw/device/lib/dif/dif_sysrst_ctrl",
version: "1.0",
life_stage: "L1",
design_stage: "D3",
verification_stage: "V2S",
dif_stage: "S2",
clocking: [
{clock: "clk_i", reset: "rst_ni", primary: true},
{clock: "clk_aon_i", reset: "rst_aon_ni"}
]
bus_interfaces: [
{ protocol: "tlul", direction: "device" }
],
interrupt_list: [
{ name: "event_detected",
desc: "Common interrupt triggered by combo or keyboard events.",
}
],
alert_list: [
{ name: "fatal_fault",
desc: '''
This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected.
'''
}
],
wakeup_list: [
{ name: "wkup_req",
desc: "OpenTitan wake request signal to `pwrmgr` (running on AON clock).",
}
],
reset_request_list: [
{ name: "rst_req",
desc: "OpenTitan reset request to `rstmgr` (running on AON clock)."
},
],
param_list: [
{ name: "NumCombo",
type: "int",
default: "4",
desc: "Number of keyboard combos",
local: "true",
}
{ name: "TimerWidth",
type: "int",
default: "16",
desc: "Number of timer bits",
local: "true",
}
{ name: "DetTimerWidth",
type: "int",
default: "32",
desc: "Number of detection timer bits",
local: "true",
}
],
available_inout_list: [
{ name: "ec_rst_l", desc: "ec_rst_l as an inout to/from the open drain IO" }
{ name: "flash_wp_l", desc: "flash_wp_l as an inout to/from the open drain IO" }
],
available_input_list: [
{ name: "ac_present", desc: "A/C power is present" }
{ name: "key0_in", desc: "VolUp button in tablet; column output from the EC in a laptop" }
{ name: "key1_in", desc: "VolDown button in tablet; row input from keyboard matrix in a laptop" }
{ name: "key2_in", desc: "TBD button in tablet; row input from keyboard matrix in a laptop" }
{ name: "pwrb_in", desc: "Power button in both tablet and laptop" }
{ name: "lid_open", desc: "Lid is open" }
],
available_output_list: [
{ name: "bat_disable", desc: "Battery is disconnected" }
{ name: "key0_out", desc: "Passthrough from key0_in, can be configured to invert" }
{ name: "key1_out", desc: "Passthrough from key1_in, can be configured to invert" }
{ name: "key2_out", desc: "Passthrough from key2_in, can be configured to invert" }
{ name: "pwrb_out", desc: "Passthrough from pwrb_in, can be configured to invert" }
{ name: "z3_wakeup", desc: "To enter Z3 mode and exit from Z4 sleep mode" }
],
inter_signal_list: [
{ name: "wkup_req",
package: "",
struct: "logic",
act: "req"
type: "uni",
width: "1"
}
{ name: "rst_req",
package: "",
struct: "logic",
act: "req"
type: "uni",
width: "1"
}
],
countermeasures: [
{ name: "BUS.INTEGRITY",
desc: "End-to-end bus integrity scheme."
}
]
regwidth: "32",
registers: [
{ name: "REGWEN",
desc: "Configuration write enable control register",
swaccess: "rw0c",
hwaccess: "none",
resval: "1",
fields: [
{ bits: "0",
name: "write_en",
desc: '''config write enable.
0: cfg is locked(not writable); 1: cfg is not locked(writable)
''',
}
]
}
{ name: "EC_RST_CTL",
desc: "EC reset control register",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "2000",
async: "clk_aon_i",
fields: [
{ bits: "TimerWidth-1:0",
name: "ec_rst_pulse",
desc: '''
Configure the debounce timer 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.
'''
}
],
}
{ name: "ULP_AC_DEBOUNCE_CTL",
desc: "Ultra low power AC debounce control register",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "8000",
async: "clk_aon_i",
fields: [
{ bits: "TimerWidth-1:0",
name: "ulp_ac_debounce_timer",
desc: '''
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.
'''
}
],
}
{ name: "ULP_LID_DEBOUNCE_CTL",
desc: "Ultra low power lid debounce control register",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "8000",
async: "clk_aon_i",
fields: [
{ bits: "TimerWidth-1:0",
name: "ulp_lid_debounce_timer",
desc: '''
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.
'''
}
],
}
{ name: "ULP_PWRB_DEBOUNCE_CTL",
desc: "Ultra low power pwrb debounce control register",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "8000",
async: "clk_aon_i",
fields: [
{ bits: "TimerWidth-1:0",
name: "ulp_pwrb_debounce_timer",
desc: '''
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.
'''
}
],
}
{ name: "ULP_CTL",
desc: "Ultra low power control register",
swaccess: "rw",
hwaccess: "hro",
resval: "0",
async: "clk_aon_i",
fields: [
{ bits: "0",
name: "ulp_enable",
desc: "0: disable ULP wakeup feature and reset the ULP FSM; 1: enable ULP wakeup feature",
}
],
}
{ name: "ULP_STATUS",
desc: "Ultra low power status",
swaccess: "rw1c",
hwaccess: "hwo",
resval: "0",
async: "clk_aon_i",
tags: [ // the value of these regs is determined by the
// value on the pins, hence it cannot be predicted.
"excl:CsrNonInitTests:CsrExclCheck"],
fields: [
{ bits: "0",
name: "ulp_wakeup",
desc: "0: ULP wakeup not detected; 1: ULP wakeup event is detected",
}
],
}
{ name: "WKUP_STATUS",
desc: "wakeup status",
swaccess: "rw1c",
hwaccess: "hrw",
resval: "0",
async: "clk_aon_i",
tags: [ // the value of these regs is determined by the
// value on the pins, hence it cannot be predicted.
"excl:CsrNonInitTests:CsrExclCheck"],
fields: [
{ bits: "0",
name: "wakeup_sts",
desc: "0: wakeup event not detected; 1: wakeup event is detected",
}
],
}
{ name: "KEY_INVERT_CTL",
desc: "configure key input output invert property",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "0",
async: "clk_aon_i",
fields: [
{ bits: "0",
name: "key0_in",
desc: "0: don't invert; 1: invert",
resval: "0",
}
{ bits: "1",
name: "key0_out",
desc: "0: don't invert; 1: invert",
resval: "0",
}
{ bits: "2",
name: "key1_in",
desc: "0: don't invert; 1: invert",
resval: "0",
}
{ bits: "3",
name: "key1_out",
desc: "0: don't invert; 1: invert",
resval: "0",
}
{ bits: "4",
name: "key2_in",
desc: "0: don't invert; 1: invert",
resval: "0",
}
{ bits: "5",
name: "key2_out",
desc: "0: don't invert; 1: invert",
resval: "0",
}
{ bits: "6",
name: "pwrb_in",
desc: "0: don't invert; 1: invert",
resval: "0",
}
{ bits: "7",
name: "pwrb_out",
desc: "0: don't invert; 1: invert",
resval: "0",
}
{ bits: "8",
name: "ac_present",
desc: "0: don't invert; 1: invert",
resval: "0",
}
{ bits: "9",
name: "bat_disable",
desc: "0: don't invert; 1: invert",
resval: "0",
}
{ bits: "10",
name: "lid_open",
desc: "0: don't invert; 1: invert",
resval: "0",
}
{ bits: "11",
name: "z3_wakeup",
desc: "0: don't invert; 1: invert",
resval: "0",
}
]
}
{ name: "PIN_ALLOWED_CTL",
desc: '''
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.
''',
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
async: "clk_aon_i",
fields: [
{ bits: "0",
name: "bat_disable_0",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "1",
name: "ec_rst_l_0",
desc: "0: not allowed; 1: allowed",
resval: "1",
}
{ bits: "2",
name: "pwrb_out_0",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "3",
name: "key0_out_0",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "4",
name: "key1_out_0",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "5",
name: "key2_out_0",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "6",
name: "z3_wakeup_0",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "7",
name: "flash_wp_l_0",
desc: "0: not allowed; 1: allowed",
resval: "1",
}
{ bits: "8",
name: "bat_disable_1",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "9",
name: "ec_rst_l_1",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "10",
name: "pwrb_out_1",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "11",
name: "key0_out_1",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "12",
name: "key1_out_1",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "13",
name: "key2_out_1",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "14",
name: "z3_wakeup_1",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
{ bits: "15",
name: "flash_wp_l_1",
desc: "0: not allowed; 1: allowed",
resval: "0",
}
]
}
{ name: "PIN_OUT_CTL",
desc: "Enables the override function for a specific pin.",
swaccess: "rw",
hwaccess: "hro",
async: "clk_aon_i",
fields: [
{ bits: "0",
name: "bat_disable",
desc: "0: disable override; 1: enable override",
resval: "0",
}
{ bits: "1",
name: "ec_rst_l",
desc: "0: disable override; 1: enable override",
resval: "1",
}
{ bits: "2",
name: "pwrb_out",
desc: "0: disable override; 1: enable override",
resval: "0",
}
{ bits: "3",
name: "key0_out",
desc: "0: disable override; 1: enable override",
resval: "0",
}
{ bits: "4",
name: "key1_out",
desc: "0: disable override; 1: enable override",
resval: "0",
}
{ bits: "5",
name: "key2_out",
desc: "0: disable override; 1: enable override",
resval: "0",
}
{ bits: "6",
name: "z3_wakeup",
desc: "0: disable override; 1: enable override",
resval: "0",
}
{ bits: "7",
name: "flash_wp_l",
desc: "0: disable override; 1: enable override",
resval: "1",
}
]
}
{ name: "PIN_OUT_VALUE",
desc: '''
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.
''',
swaccess: "rw",
hwaccess: "hro",
resval: "0",
async: "clk_aon_i",
fields: [
{ bits: "0",
name: "bat_disable",
desc: "0: override to 1b0; 1: override to 1b1",
resval: "0",
}
{ bits: "1",
name: "ec_rst_l",
desc: "0: override to 1b0; 1: override to 1b1",
resval: "0",
}
{ bits: "2",
name: "pwrb_out",
desc: "0: override to 1b0; 1: override to 1b1",
resval: "0",
}
{ bits: "3",
name: "key0_out",
desc: "0: override to 1b0; 1: override to 1b1",
resval: "0",
}
{ bits: "4",
name: "key1_out",
desc: "0: override to 1b0; 1: override to 1b1",
resval: "0",
}
{ bits: "5",
name: "key2_out",
desc: "0: override to 1b0; 1: override to 1b1",
resval: "0",
}
{ bits: "6",
name: "z3_wakeup",
desc: "0: override to 1b0; 1: override to 1b1",
resval: "0",
}
{ bits: "7",
name: "flash_wp_l",
desc: "0: override to 1b0; 1: override to 1b1",
resval: "0",
}
]
}
{ name: "PIN_IN_VALUE",
desc: "For SW to read the sysrst_ctrl inputs like GPIO",
swaccess: "ro",
hwaccess: "hwo",
resval: "0",
tags: [ // the value of these regs is determined by the
// value on the pins, hence it cannot be predicted.
"excl:CsrAllTests:CsrExclCheck"],
fields: [
{ bits: "0",
name: "pwrb_in",
desc: "raw pwrb_in value; before the invert logic",
resval: "0",
}
{ bits: "1",
name: "key0_in",
desc: "raw key0_in value; before the invert logic",
resval: "0",
}
{ bits: "2",
name: "key1_in",
desc: "raw key1_in value; before the invert logic",
resval: "0",
}
{ bits: "3",
name: "key2_in",
desc: "raw key2_in value; before the invert logic",
resval: "0",
}
{ bits: "4",
name: "lid_open",
desc: "raw lid_open value; before the invert logic",
resval: "0",
}
{ bits: "5",
name: "ac_present",
desc: "raw ac_present value; before the invert logic",
resval: "0",
}
{ bits: "6",
name: "ec_rst_l",
desc: "raw ec_rst_l value; before the invert logic",
resval: "0",
}
{ bits: "7",
name: "flash_wp_l",
desc: "raw flash_wp_l value; before the invert logic",
resval: "0",
}
]
}
{ name: "KEY_INTR_CTL",
desc: "Define the keys or inputs that can trigger the interrupt ",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "0",
async: "clk_aon_i",
fields: [
{ bits: "0",
name: "pwrb_in_H2L",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "1",
name: "key0_in_H2L",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "2",
name: "key1_in_H2L",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "3",
name: "key2_in_H2L",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "4",
name: "ac_present_H2L",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "5",
name: "ec_rst_l_H2L",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "6",
name: "flash_wp_l_H2L",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "7",
name: "pwrb_in_L2H",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "8",
name: "key0_in_L2H",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "9",
name: "key1_in_L2H",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "10",
name: "key2_in_L2H",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "11",
name: "ac_present_L2H",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "12",
name: "ec_rst_l_L2H",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "13",
name: "flash_wp_l_L2H",
desc: "0: disable, 1: enable",
resval: "0",
}
]
}
{ name: "KEY_INTR_DEBOUNCE_CTL",
desc: "Debounce timer control register for key-triggered interrupt",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "2000",
async: "clk_aon_i",
fields: [
{ bits: "TimerWidth-1:0",
name: "debounce_timer",
desc: '''
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.
'''
}
],
}
{ name: "AUTO_BLOCK_DEBOUNCE_CTL",
desc: "Debounce timer control register for pwrb_in H2L transition",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
async: "clk_aon_i",
fields: [
{ bits: "TimerWidth-1:0",
name: "debounce_timer",
desc: '''
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.
''',
resval: "2000",
}
{ bits: "16",
name: "auto_block_enable",
desc: "0: disable, 1: enable",
resval: "0",
}
],
}
{ name: "AUTO_BLOCK_OUT_CTL",
desc: "configure the key outputs to auto-override and their value",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "0",
async: "clk_aon_i",
fields: [
{ bits: "0",
name: "key0_out_sel",
desc: "0: disable auto-block; 1: enable auto-block",
resval: "0",
}
{ bits: "1",
name: "key1_out_sel",
desc: "0: disable auto-block; 1: enable auto-block",
resval: "0",
}
{ bits: "2",
name: "key2_out_sel",
desc: "0: disable auto-block; 1: enable auto-block",
resval: "0",
}
{ bits: "4",
name: "key0_out_value",
desc: "0: override to 1'b0; 1: override to 1'b1",
resval: "0",
}
{ bits: "5",
name: "key1_out_value",
desc: "0: override to 1'b0; 1: override to 1'b1",
resval: "0",
}
{ bits: "6",
name: "key2_out_value",
desc: "0: override to 1'b0; 1: override to 1'b1",
resval: "0",
}
]
}
{ multireg: {
name: "COM_PRE_SEL_CTL",
desc: '''
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.
''',
count: "NumCombo",
cname: "sysrst_ctrl",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "0",
async: "clk_aon_i",
fields: [
{ bits: "0",
name: "key0_in_sel",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "1",
name: "key1_in_sel",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "2",
name: "key2_in_sel",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "3",
name: "pwrb_in_sel",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "4",
name: "ac_present_sel",
desc: "0: disable, 1: enable",
resval: "0",
}
],
}
}
{ multireg: {
name: "COM_PRE_DET_CTL",
desc: '''To define the duration that the combo pre-condition should be pressed
0-60s, each step is 5us(200KHz clock)
''',
count: "NumCombo",
cname: "sysrst_ctrl",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "0",
async: "clk_aon_i",
fields: [
{ bits: "DetTimerWidth-1:0",
name: "precondition_timer",
desc: "0-60s, each step is 5us(200KHz clock)",
}
],
}
}
{ multireg: {
name: "COM_SEL_CTL",
desc: '''
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.
''',
count: "NumCombo",
cname: "sysrst_ctrl",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "0",
async: "clk_aon_i",
fields: [
{ bits: "0",
name: "key0_in_sel",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "1",
name: "key1_in_sel",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "2",
name: "key2_in_sel",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "3",
name: "pwrb_in_sel",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "4",
name: "ac_present_sel",
desc: "0: disable, 1: enable",
resval: "0",
}
],
}
}
{ multireg: {
name: "COM_DET_CTL",
desc: '''To define the duration that the combo should be pressed
0-60s, each step is 5us(200KHz clock)
''',
count: "NumCombo",
cname: "sysrst_ctrl",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "0",
async: "clk_aon_i",
fields: [
{ bits: "DetTimerWidth-1:0",
name: "detection_timer",
desc: "0-60s, each step is 5us(200KHz clock)",
}
],
}
}
{ multireg: {
name: "COM_OUT_CTL",
desc: '''
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)
''',
count: "NumCombo",
cname: "sysrst_ctrl",
swaccess: "rw",
hwaccess: "hro",
regwen: "REGWEN",
resval: "0",
async: "clk_aon_i",
fields: [
{ bits: "0",
name: "bat_disable",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "1",
name: "interrupt",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "2",
name: "ec_rst",
desc: "0: disable, 1: enable",
resval: "0",
}
{ bits: "3",
name: "rst_req",
desc: "0: disable, 1: enable",
resval: "0",
}
],
}
}
{ name: "COMBO_INTR_STATUS",
desc: '''
Combo interrupt source. These registers will only be set if the
interrupt action is configured in the corresponding !!COM_OUT_CTL register.
''',
swaccess: "rw1c",
hwaccess: "hwo",
resval: "0",
async: "clk_aon_i",
tags: [ // the value of these regs is determined by the
// value on the pins, hence it cannot be predicted.
"excl:CsrNonInitTests:CsrExclCheck"],
fields: [
{ bits: "0",
name: "combo0_H2L",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "1",
name: "combo1_H2L",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "2",
name: "combo2_H2L",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "3",
name: "combo3_H2L",
desc: "0: case not detected;1: case detected",
resval: "0",
}
]
}
{ name: "KEY_INTR_STATUS",
desc: "key interrupt source",
swaccess: "rw1c",
hwaccess: "hwo",
resval: "0",
async: "clk_aon_i",
tags: [ // the value of these regs is determined by the value on the pins
// or other CSRs, hence it cannot be predicted.
"excl:CsrNonInitTests:CsrExclCheck"],
fields: [
{ bits: "0",
name: "pwrb_H2L",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "1",
name: "key0_in_H2L",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "2",
name: "key1_in_H2L",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "3",
name: "key2_in_H2L",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "4",
name: "ac_present_H2L",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "5",
name: "ec_rst_l_H2L",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "6",
name: "flash_wp_l_H2L",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "7",
name: "pwrb_L2H",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "8",
name: "key0_in_L2H",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "9",
name: "key1_in_L2H",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "10",
name: "key2_in_L2H",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "11",
name: "ac_present_L2H",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "12",
name: "ec_rst_l_L2H",
desc: "0: case not detected;1: case detected",
resval: "0",
}
{ bits: "13",
name: "flash_wp_l_L2H",
desc: "0: case not detected;1: case detected",
resval: "0",
}
]
}
],
}