11 #include "sw/device/lib/base/multibits.h"
14 #include "sensor_ctrl_regs.h"
22 return event_idx > SENSOR_CTRL_PARAM_NUM_ALERT_EVENTS;
29 return (mmio_region_read32(sensor_ctrl->
base_addr,
30 SENSOR_CTRL_CFG_REGWEN_REG_OFFSET) == 0);
35 if (sensor_ctrl == NULL) {
39 mmio_region_write32(sensor_ctrl->
base_addr, SENSOR_CTRL_CFG_REGWEN_REG_OFFSET,
49 if (sensor_ctrl == NULL || is_ast_event_invalid(event_idx) ||
54 uint32_t reg = mmio_region_read32(sensor_ctrl->
base_addr,
55 SENSOR_CTRL_ALERT_TRIG_REG_OFFSET);
65 if (sensor_ctrl == NULL || is_ast_event_invalid(event_idx)) {
69 uint32_t reg = mmio_region_read32(sensor_ctrl->
base_addr,
70 SENSOR_CTRL_ALERT_TRIG_REG_OFFSET);
72 mmio_region_write32(sensor_ctrl->
base_addr, SENSOR_CTRL_ALERT_TRIG_REG_OFFSET,
82 if (sensor_ctrl == NULL || is_ast_event_invalid(event_idx)) {
86 if (is_locked(sensor_ctrl)) {
92 SENSOR_CTRL_ALERT_EN_0_REG_OFFSET + ((ptrdiff_t)event_idx << 2),
102 if (sensor_ctrl == NULL || is_ast_event_invalid(event_idx)) {
106 if (is_locked(sensor_ctrl)) {
110 uint32_t reg = mmio_region_read32(sensor_ctrl->
base_addr,
111 SENSOR_CTRL_FATAL_ALERT_EN_REG_OFFSET);
113 mmio_region_write32(sensor_ctrl->
base_addr,
114 SENSOR_CTRL_FATAL_ALERT_EN_REG_OFFSET, reg);
122 if (sensor_ctrl == NULL || events == NULL) {
126 *events = mmio_region_read32(sensor_ctrl->
base_addr,
127 SENSOR_CTRL_RECOV_ALERT_REG_OFFSET);
136 if (sensor_ctrl == NULL || is_ast_event_invalid(event_idx)) {
141 mmio_region_write32(sensor_ctrl->
base_addr,
142 SENSOR_CTRL_RECOV_ALERT_REG_OFFSET, reg);
150 if (sensor_ctrl == NULL || events == NULL) {
154 *events = mmio_region_read32(sensor_ctrl->
base_addr,
155 SENSOR_CTRL_FATAL_ALERT_REG_OFFSET);
163 if (sensor_ctrl == NULL || done == NULL) {
168 mmio_region_read32(sensor_ctrl->
base_addr, SENSOR_CTRL_STATUS_REG_OFFSET);
179 if (sensor_ctrl == NULL || io_power_status == NULL) {
184 mmio_region_read32(sensor_ctrl->
base_addr, SENSOR_CTRL_STATUS_REG_OFFSET);