5 #ifndef OPENTITAN_SW_DEVICE_LIB_DIF_DIF_RV_CORE_IBEX_H_
6 #define OPENTITAN_SW_DEVICE_LIB_DIF_DIF_RV_CORE_IBEX_H_
14 #include "sw/device/lib/dif/autogen/dif_rv_core_ibex_autogen.h"
23 typedef enum dif_rv_core_ibex_addr_translation_slot {
24 kDifRvCoreIbexAddrTranslationSlot_0,
25 kDifRvCoreIbexAddrTranslationSlot_1,
26 kDifRvCoreIbexAddrTranslationSlotCount,
27 } dif_rv_core_ibex_addr_translation_slot_t;
32 typedef enum dif_rv_core_ibex_addr_translation_bus {
33 kDifRvCoreIbexAddrTranslationDBus,
34 kDifRvCoreIbexAddrTranslationIBus,
35 kDifRvCoreIbexAddrTranslationBusCount,
36 } dif_rv_core_ibex_addr_translation_bus_t;
76 typedef enum dif_rv_core_ibex_error_status {
80 kDifRvCoreIbexErrorStatusRegisterTransmissionIntegrity = 1 << 0,
85 kDifRvCoreIbexErrorStatusFatalResponseIntegrity = 1 << 8,
90 kDifRvCoreIbexErrorStatusFatalInternalError = 1 << 9,
95 kDifRvCoreIbexErrorStatusRecoverableInternal = 1 << 10,
100 kDifRvCoreIbexErrorStatusAll = (1 << 0 | 1 << 8 | 1 << 9 | 1 << 10),
101 } dif_rv_core_ibex_error_status_t;
103 typedef enum dif_rv_core_ibex_rnd_status_code {
107 kDifRvCoreIbexRndStatusValid = 1 << 0,
111 kDifRvCoreIbexRndStatusFipsCompliant = 1 << 1,
112 } dif_rv_core_ibex_rnd_status_code_t;
117 typedef uint32_t dif_rv_core_ibex_rnd_status_t;
141 typedef enum dif_rv_core_ibex_nmi_source {
145 kDifRvCoreIbexNmiSourceAlert = 1 << 0,
149 kDifRvCoreIbexNmiSourceWdog = 1 << 1,
153 kDifRvCoreIbexNmiSourceAll = 0x3,
154 } dif_rv_core_ibex_nmi_source_t;
231 dif_result_t dif_rv_core_ibex_configure_addr_translation(
232 const dif_rv_core_ibex_t *rv_core_ibex,
233 dif_rv_core_ibex_addr_translation_slot_t slot,
234 dif_rv_core_ibex_addr_translation_bus_t bus,
248 const dif_rv_core_ibex_t *rv_core_ibex,
249 dif_rv_core_ibex_addr_translation_slot_t slot,
250 dif_rv_core_ibex_addr_translation_bus_t bus);
263 const dif_rv_core_ibex_t *rv_core_ibex,
264 dif_rv_core_ibex_addr_translation_slot_t slot,
265 dif_rv_core_ibex_addr_translation_bus_t bus);
279 const dif_rv_core_ibex_t *rv_core_ibex,
280 dif_rv_core_ibex_addr_translation_slot_t slot,
281 dif_rv_core_ibex_addr_translation_bus_t bus,
296 const dif_rv_core_ibex_t *rv_core_ibex,
297 dif_rv_core_ibex_addr_translation_slot_t slot,
298 dif_rv_core_ibex_addr_translation_bus_t bus);
309 const dif_rv_core_ibex_t *rv_core_ibex,
310 dif_rv_core_ibex_error_status_t *error_status);
321 const dif_rv_core_ibex_t *rv_core_ibex,
322 dif_rv_core_ibex_error_status_t error_status);
332 dif_result_t dif_rv_core_ibex_enable_nmi(
const dif_rv_core_ibex_t *rv_core_ibex,
333 dif_rv_core_ibex_nmi_source_t nmi);
344 const dif_rv_core_ibex_t *rv_core_ibex,
356 const dif_rv_core_ibex_t *rv_core_ibex, dif_rv_core_ibex_nmi_source_t nmi);
367 const dif_rv_core_ibex_t *rv_core_ibex,
368 dif_rv_core_ibex_rnd_status_t *
status);
379 const dif_rv_core_ibex_t *rv_core_ibex, uint32_t *data);
381 typedef uint32_t dif_rv_core_ibex_fpga_info_t;
393 const dif_rv_core_ibex_t *rv_core_ibex, dif_rv_core_ibex_fpga_info_t *info);
409 const dif_rv_core_ibex_t *rv_core_ibex,
bool *enabled);
419 dif_result_t dif_rv_core_ibex_trigger_sw_recov_err_alert(
420 const dif_rv_core_ibex_t *rv_core_ibex);
431 const dif_rv_core_ibex_t *rv_core_ibex,
bool *enabled);
442 dif_result_t dif_rv_core_ibex_trigger_sw_fatal_err_alert(
443 const dif_rv_core_ibex_t *rv_core_ibex);
456 const dif_rv_core_ibex_t *rv_core_ibex, uint32_t *cpu_info,