| // Copyright lowRISC contributors. | |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. | |
| // SPDX-License-Identifier: Apache-2.0 | |
| #ifndef OPENTITAN_SW_DEVICE_LIB_DIF_DIF_SENSOR_CTRL_H_ | |
| #define OPENTITAN_SW_DEVICE_LIB_DIF_DIF_SENSOR_CTRL_H_ | |
| /** | |
| * @file | |
| * @brief <a href="/hw/top_earlgrey/ip/sensor_ctrl/doc/">Sensor Controller</a> | |
| * Device Interface Functions | |
| */ | |
| #include <stdint.h> | |
| #include "sw/device/lib/base/macros.h" | |
| #include "sw/device/lib/base/mmio.h" | |
| #include "sw/device/lib/dif/dif_base.h" | |
| #include "sw/device/lib/dif/autogen/dif_sensor_ctrl_autogen.h" | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif // __cplusplus | |
| /** | |
| * An event, identified by a numeric id. | |
| * | |
| */ | |
| typedef uint32_t dif_sensor_ctrl_event_idx_t; | |
| /** | |
| * A vector of AST events, where each bit represents one event. | |
| * | |
| */ | |
| typedef uint32_t dif_sensor_ctrl_events_t; | |
| /** | |
| * IO power status | |
| * Each bit represents the current status of a particular IO rail. | |
| * | |
| */ | |
| typedef uint32_t dif_sensor_ctrl_io_power_status_t; | |
| /** | |
| * Locks sensor control configuration from further updates. | |
| * | |
| * | |
| * @param sensor_ctrl A sensor_ctrl handle. | |
| * @return 'kDifBadArg' if `handle` is null. | |
| */ | |
| OT_WARN_UNUSED_RESULT | |
| dif_result_t dif_sensor_ctrl_lock_cfg(const dif_sensor_ctrl_t *sensor_ctrl); | |
| /** | |
| * Sets the value for a particular AST event trigger. | |
| * | |
| * @param sensor_ctrl A sensor_ctrl handle. | |
| * @param event_idx The event to configure. | |
| * @return 'kDifBadArg' if `handle` is null or if `event_idx` is larger than the | |
| * number of events supported. | |
| */ | |
| OT_WARN_UNUSED_RESULT | |
| dif_result_t dif_sensor_ctrl_set_ast_event_trigger( | |
| const dif_sensor_ctrl_t *sensor_ctrl, dif_sensor_ctrl_event_idx_t event_idx, | |
| dif_toggle_t enable); | |
| /** | |
| * Sets the fatality configuration of a particular event. | |
| * | |
| * An event can be configured to be either fatal or recoverable. | |
| * | |
| * @param sensor_ctrl A sensor_ctrl handle. | |
| * @param en_fatal The fatality enablement state of an event. If | |
| * `kDifToggleEnabled`, the event is fatal. Otherwise, it is recoverable. | |
| * @param event_idx The event to configure | |
| * @return 'kDifBadArg' if `handle` is null or `event_idx` is larger than the | |
| * number of events supported. | |
| */ | |
| OT_WARN_UNUSED_RESULT | |
| dif_result_t dif_sensor_ctrl_set_alert_fatal( | |
| const dif_sensor_ctrl_t *sensor_ctrl, dif_sensor_ctrl_event_idx_t event_idx, | |
| dif_toggle_t en_fatal); | |
| /** | |
| * Gets the current vector of recoverable events. | |
| * | |
| * @param sensor_ctrl A sensor_ctrl handle. | |
| * @param[out] events The set of current recoverable events | |
| * @return 'kDifBadArg' if `handle` is null. | |
| */ | |
| OT_WARN_UNUSED_RESULT | |
| dif_result_t dif_sensor_ctrl_get_recov_events( | |
| const dif_sensor_ctrl_t *sensor_ctrl, dif_sensor_ctrl_events_t *events); | |
| /** | |
| * Clears the specified recoverable events. | |
| * | |
| * @param sensor_ctrl A sensor_ctrl handle. | |
| * @param event_idx The event to clear. | |
| * @return 'kDifBadArg' if `handle` is null or 'event_idx' is larger than the | |
| * number of events supported.. | |
| */ | |
| OT_WARN_UNUSED_RESULT | |
| dif_result_t dif_sensor_ctrl_clear_recov_event( | |
| const dif_sensor_ctrl_t *sensor_ctrl, | |
| dif_sensor_ctrl_event_idx_t event_idx); | |
| /** | |
| * Gets the current vector of fatal events. | |
| * | |
| * @param sensor_ctrl A sensor_ctrl handle. | |
| * @param[out] events The set of current fatal events. | |
| * @return 'kDifBadArg' if `handle` is null. | |
| */ | |
| OT_WARN_UNUSED_RESULT | |
| dif_result_t dif_sensor_ctrl_get_fatal_events( | |
| const dif_sensor_ctrl_t *sensor_ctrl, dif_sensor_ctrl_events_t *events); | |
| /** | |
| * Gets the current ast init done status. | |
| * | |
| * @param sensor_ctrl A sensor_ctrl handle. | |
| * @param[out] done Current init_done status. | |
| * @return 'kDifBadArg' if `handle` is null. | |
| */ | |
| OT_WARN_UNUSED_RESULT | |
| dif_result_t dif_sensor_ctrl_get_ast_init_done_status( | |
| const dif_sensor_ctrl_t *sensor_ctrl, dif_toggle_t *done); | |
| /** | |
| * Gets the current io power status. | |
| * | |
| * @param sensor_ctrl A sensor_ctrl handle. | |
| * @param[out] done Current io power status. | |
| * @return 'kDifBadArg' if `handle` is null. | |
| */ | |
| OT_WARN_UNUSED_RESULT | |
| dif_result_t dif_sensor_ctrl_get_io_power_status( | |
| const dif_sensor_ctrl_t *sensor_ctrl, | |
| dif_sensor_ctrl_io_power_status_t *io_status); | |
| #ifdef __cplusplus | |
| } // extern "C" | |
| #endif // __cplusplus | |
| #endif // OPENTITAN_SW_DEVICE_LIB_DIF_DIF_SENSOR_CTRL_H_ |