Skip to content

Commit 8e04cde

Browse files
committed
[rdlgenerator] Add none member to bitmask enums
Signed-off-by: Douglas Reis <doreis@lowrisc.org>
1 parent 06348c5 commit 8e04cde

9 files changed

Lines changed: 25 additions & 2 deletions

File tree

sw/device/lib/hal/autogen/clkmgr.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <stdint.h>
1010

1111
typedef enum [[clang::flag_enum]] clkmgr_alert_test : uint32_t {
12+
clkmgr_alert_test_none = 0,
1213
clkmgr_alert_test_recov_fault = (1u << 0),
1314
clkmgr_alert_test_fatal_fault = (1u << 1),
1415
} clkmgr_alert_test;
@@ -66,6 +67,7 @@ typedef struct [[gnu::aligned(4)]] {
6667
} clkmgr_main_meas_ctrl_shadowed;
6768

6869
typedef enum [[clang::flag_enum]] clkmgr_recov_err_code : uint32_t {
70+
clkmgr_recov_err_code_none = 0,
6971
clkmgr_recov_err_code_shadow_update_err = (1u << 0),
7072
clkmgr_recov_err_code_io_measure_err = (1u << 1),
7173
clkmgr_recov_err_code_main_measure_err = (1u << 2),
@@ -74,6 +76,7 @@ typedef enum [[clang::flag_enum]] clkmgr_recov_err_code : uint32_t {
7476
} clkmgr_recov_err_code;
7577

7678
typedef enum [[clang::flag_enum]] clkmgr_fatal_err_code : uint32_t {
79+
clkmgr_fatal_err_code_none = 0,
7780
clkmgr_fatal_err_code_reg_intg = (1u << 0),
7881
clkmgr_fatal_err_code_idle_cnt = (1u << 1),
7982
clkmgr_fatal_err_code_shadow_storage_err = (1u << 2),

sw/device/lib/hal/autogen/entropy_src.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@
99
#include <stdint.h>
1010

1111
typedef enum [[clang::flag_enum]] entropy_src_intr : uint32_t {
12+
entropy_src_intr_none = 0,
1213
entropy_src_intr_es_entropy_valid = (1u << 0),
1314
entropy_src_intr_es_health_test_failed = (1u << 1),
1415
entropy_src_intr_es_observe_fifo_ready = (1u << 2),
1516
entropy_src_intr_es_fatal_err = (1u << 3),
1617
} entropy_src_intr;
1718

1819
typedef enum [[clang::flag_enum]] entropy_src_alert_test : uint32_t {
20+
entropy_src_alert_test_none = 0,
1921
entropy_src_alert_test_recov_alert = (1u << 0),
2022
entropy_src_alert_test_fatal_alert = (1u << 1),
2123
} entropy_src_alert_test;

sw/device/lib/hal/autogen/i2c.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <stdint.h>
1010

1111
typedef enum [[clang::flag_enum]] i2c_intr : uint32_t {
12+
i2c_intr_none = 0,
1213
i2c_intr_fmt_threshold = (1u << 0),
1314
i2c_intr_rx_threshold = (1u << 1),
1415
i2c_intr_acq_threshold = (1u << 2),
@@ -32,6 +33,7 @@ typedef struct [[gnu::aligned(4)]] {
3233
} i2c_alert_test;
3334

3435
typedef enum [[clang::flag_enum]] i2c_ctrl : uint32_t {
36+
i2c_ctrl_none = 0,
3537
i2c_ctrl_enablehost = (1u << 0),
3638
i2c_ctrl_enabletarget = (1u << 1),
3739
i2c_ctrl_llpbk = (1u << 2),
@@ -42,6 +44,7 @@ typedef enum [[clang::flag_enum]] i2c_ctrl : uint32_t {
4244
} i2c_ctrl;
4345

4446
typedef enum [[clang::flag_enum]] i2c_status : uint32_t {
47+
i2c_status_none = 0,
4548
i2c_status_fmtfull = (1u << 0),
4649
i2c_status_rxfull = (1u << 1),
4750
i2c_status_fmtempty = (1u << 2),
@@ -108,6 +111,7 @@ typedef struct [[gnu::aligned(4)]] {
108111
} i2c_target_fifo_status;
109112

110113
typedef enum [[clang::flag_enum]] i2c_ovrd : uint32_t {
114+
i2c_ovrd_none = 0,
111115
i2c_ovrd_txovrden = (1u << 0),
112116
i2c_ovrd_sclval = (1u << 1),
113117
i2c_ovrd_sdaval = (1u << 2),
@@ -210,13 +214,15 @@ typedef struct [[gnu::aligned(4)]] {
210214
} i2c_acq_fifo_next_data;
211215

212216
typedef enum [[clang::flag_enum]] i2c_controller_events : uint32_t {
217+
i2c_controller_events_none = 0,
213218
i2c_controller_events_nack = (1u << 0),
214219
i2c_controller_events_unhandled_nack_timeout = (1u << 1),
215220
i2c_controller_events_bus_timeout = (1u << 2),
216221
i2c_controller_events_arbitration_lost = (1u << 3),
217222
} i2c_controller_events;
218223

219224
typedef enum [[clang::flag_enum]] i2c_target_events : uint32_t {
225+
i2c_target_events_none = 0,
220226
i2c_target_events_tx_pending = (1u << 0),
221227
i2c_target_events_bus_timeout = (1u << 1),
222228
i2c_target_events_arbitration_lost = (1u << 2),

sw/device/lib/hal/autogen/kmac.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@
99
#include <stdint.h>
1010

1111
typedef enum [[clang::flag_enum]] kmac_intr : uint32_t {
12+
kmac_intr_none = 0,
1213
kmac_intr_kmac_done = (1u << 0),
1314
kmac_intr_fifo_empty = (1u << 1),
1415
kmac_intr_kmac_err = (1u << 2),
1516
} kmac_intr;
1617

1718
typedef enum [[clang::flag_enum]] kmac_alert_test : uint32_t {
19+
kmac_alert_test_none = 0,
1820
kmac_alert_test_recov_operation_err = (1u << 0),
1921
kmac_alert_test_fatal_fault_err = (1u << 1),
2022
} kmac_alert_test;

sw/device/lib/hal/autogen/rom_ctrl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ typedef struct [[gnu::aligned(4)]] {
1414
} rom_ctrl_alert_test;
1515

1616
typedef enum [[clang::flag_enum]] rom_ctrl_fatal_alert_cause : uint32_t {
17+
rom_ctrl_fatal_alert_cause_none = 0,
1718
rom_ctrl_fatal_alert_cause_checker_error = (1u << 0),
1819
rom_ctrl_fatal_alert_cause_integrity_error = (1u << 1),
1920
} rom_ctrl_fatal_alert_cause;

sw/device/lib/hal/autogen/rstmgr.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <stdint.h>
1010

1111
typedef enum [[clang::flag_enum]] rstmgr_alert_test : uint32_t {
12+
rstmgr_alert_test_none = 0,
1213
rstmgr_alert_test_fatal_fault = (1u << 0),
1314
rstmgr_alert_test_fatal_cnsty_fault = (1u << 1),
1415
} rstmgr_alert_test;
@@ -71,6 +72,7 @@ typedef struct [[gnu::aligned(4)]] {
7172
} rstmgr_sw_rst_ctrl_n;
7273

7374
typedef enum [[clang::flag_enum]] rstmgr_err_code : uint32_t {
75+
rstmgr_err_code_none = 0,
7476
rstmgr_err_code_reg_intg_err = (1u << 0),
7577
rstmgr_err_code_reset_consistency_err = (1u << 1),
7678
rstmgr_err_code_fsm_err = (1u << 2),

sw/device/lib/hal/autogen/spi_device.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <stdint.h>
1010

1111
typedef enum [[clang::flag_enum]] spi_device_intr : uint32_t {
12+
spi_device_intr_none = 0,
1213
spi_device_intr_upload_cmdfifo_not_empty = (1u << 0),
1314
spi_device_intr_upload_payload_not_empty = (1u << 1),
1415
spi_device_intr_upload_payload_overflow = (1u << 2),
@@ -49,6 +50,7 @@ typedef struct [[gnu::aligned(4)]] {
4950
} spi_device_status;
5051

5152
typedef enum [[clang::flag_enum]] spi_device_intercept_en : uint32_t {
53+
spi_device_intercept_en_none = 0,
5254
spi_device_intercept_en_status = (1u << 0),
5355
spi_device_intercept_en_jedec = (1u << 1),
5456
spi_device_intercept_en_sfdp = (1u << 2),
@@ -163,6 +165,7 @@ typedef struct [[gnu::aligned(4)]] {
163165
} spi_device_tpm_cap;
164166

165167
typedef enum [[clang::flag_enum]] spi_device_tpm_cfg : uint32_t {
168+
spi_device_tpm_cfg_none = 0,
166169
spi_device_tpm_cfg_en = (1u << 0),
167170
spi_device_tpm_cfg_tpm_mode = (1u << 1),
168171
spi_device_tpm_cfg_hw_reg_dis = (1u << 2),
@@ -171,6 +174,7 @@ typedef enum [[clang::flag_enum]] spi_device_tpm_cfg : uint32_t {
171174
} spi_device_tpm_cfg;
172175

173176
typedef enum [[clang::flag_enum]] spi_device_tpm_status : uint32_t {
177+
spi_device_tpm_status_none = 0,
174178
spi_device_tpm_status_cmdaddr_notempty = (1u << 0),
175179
spi_device_tpm_status_wrfifo_pending = (1u << 1),
176180
spi_device_tpm_status_rdfifo_aborted = (1u << 2),

sw/device/lib/hal/autogen/uart.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <stdint.h>
1010

1111
typedef enum [[clang::flag_enum]] uart_intr : uint32_t {
12+
uart_intr_none = 0,
1213
uart_intr_tx_watermark = (1u << 0),
1314
uart_intr_rx_watermark = (1u << 1),
1415
uart_intr_tx_done = (1u << 2),
@@ -40,6 +41,7 @@ typedef struct [[gnu::aligned(4)]] {
4041
} uart_ctrl;
4142

4243
typedef enum [[clang::flag_enum]] uart_status : uint32_t {
44+
uart_status_none = 0,
4345
uart_status_txfull = (1u << 0),
4446
uart_status_rxfull = (1u << 1),
4547
uart_status_txempty = (1u << 2),
@@ -74,6 +76,7 @@ typedef struct [[gnu::aligned(4)]] {
7476
} uart_fifo_status;
7577

7678
typedef enum [[clang::flag_enum]] uart_ovrd : uint32_t {
79+
uart_ovrd_none = 0,
7780
uart_ovrd_txen = (1u << 0),
7881
uart_ovrd_txval = (1u << 1),
7982
} uart_ovrd;

util/rdlgenerator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ def emit_register_flag_enum(device_name: str, reg: dict) -> str:
269269
"""
270270
reg_name = reg["name"].lower()
271271
fully_qualified_type_name = "_".join([device_name, reg_name])
272-
enum_variants = []
272+
enum_variants = [f"{fully_qualified_type_name}_none = 0,"]
273273
for bit, field in enumerate(fields_ascending_by_lsb(reg)):
274274
field_name = field["name"].lower()
275275
fully_qualified_field_name = "_".join([device_name, reg_name, field_name])
@@ -288,7 +288,7 @@ def emit_common_device_register_declaration(
288288
) -> tuple[str, str]:
289289
common_name = stripped_longest_common_prefix([x["name"] for x in register_set])
290290
fully_qualified_type_name = "_".join([device_name, common_name])
291-
enum_variants = []
291+
enum_variants = [f"{fully_qualified_type_name}_none = 0,"]
292292
for bit, field in enumerate(fields_ascending_by_lsb(register_set[0])):
293293
field_name = field["name"].lower()
294294
fully_qualified_field_name = "_".join([device_name, common_name, field_name])

0 commit comments

Comments
 (0)