| // 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_ |