5 #ifndef OPENTITAN_SW_DEVICE_LIB_DIF_DIF_CLKMGR_H_
6 #define OPENTITAN_SW_DEVICE_LIB_DIF_DIF_CLKMGR_H_
20 #include "sw/device/lib/dif/autogen/dif_clkmgr_autogen.h"
44 #if defined(OPENTITAN_IS_EARLGREY)
48 kDifClkmgrMeasureClockIo,
52 kDifClkmgrMeasureClockIoDiv2,
53 #elif defined(OPENTITAN_IS_DARJEELING)
56 #error "dif_clkmgr does not support this top"
74 } dif_clkmgr_measure_clock_t;
76 typedef enum dif_clkmgr_recov_err_type {
77 #if defined(OPENTITAN_IS_EARLGREY)
81 kDifClkmgrRecovErrTypeShadowUpdate = 1u << 0,
85 kDifClkmgrRecovErrTypeIoMeas = 1u << 1,
89 kDifClkmgrRecovErrTypeIoDiv2Meas = 1u << 2,
93 kDifClkmgrRecovErrTypeIoDiv4Meas = 1u << 3,
97 kDifClkmgrRecovErrTypeMainMeas = 1u << 4,
101 kDifClkmgrRecovErrTypeUsbMeas = 1u << 5,
105 kDifClkmgrRecovErrTypeIoTimeout = 1u << 6,
109 kDifClkmgrRecovErrTypeIoDiv2Timeout = 1u << 7,
113 kDifClkmgrRecovErrTypeIoDiv4Timeout = 1u << 8,
117 kDifClkmgrRecovErrTypeMainTimeout = 1u << 9,
121 kDifClkmgrRecovErrTypeUsbTimeout = 1u << 10,
122 #elif defined(OPENTITAN_IS_DARJEELING)
126 kDifClkmgrRecovErrTypeShadowUpdate = 1u << 0,
130 kDifClkmgrRecovErrTypeIoDiv4Meas = 1u << 1,
134 kDifClkmgrRecovErrTypeMainMeas = 1u << 2,
138 kDifClkmgrRecovErrTypeUsbMeas = 1u << 3,
142 kDifClkmgrRecovErrTypeIoDiv4Timeout = 1u << 4,
146 kDifClkmgrRecovErrTypeMainTimeout = 1u << 5,
150 kDifClkmgrRecovErrTypeUsbTimeout = 1u << 6,
152 #error "dif_clkmgr does not support this top"
154 } dif_clkmgr_recov_err_type_t;
176 } dif_clkmgr_fatal_err_type_t;
245 dt_instance_id_t inst_id,
296 dt_instance_id_t inst_id,
369 const dif_clkmgr_t *clkmgr,
bool *is_locked);
448 dif_clkmgr_measure_clock_t clock,
449 uint32_t min_threshold,
450 uint32_t max_threshold);
463 const dif_clkmgr_t *clkmgr, dif_clkmgr_measure_clock_t clock);
475 const dif_clkmgr_t *clkmgr, dif_clkmgr_measure_clock_t clock,
489 const dif_clkmgr_t *clkmgr, dif_clkmgr_measure_clock_t clock,
490 uint32_t *min_threshold, uint32_t *max_threshold);