5 #include "sw/device/silicon_creator/lib/drivers/sensor_ctrl.h"
7 #include "gmock/gmock.h"
8 #include "gtest/gtest.h"
9 #include "sw/device/silicon_creator/lib/base/mock_sec_mmio.h"
10 #include "sw/device/silicon_creator/lib/drivers/lifecycle.h"
11 #include "sw/device/silicon_creator/lib/drivers/mock_otp.h"
12 #include "sw/device/silicon_creator/testing/rom_test.h"
15 #include "otp_ctrl_regs.h"
16 #include "sensor_ctrl_regs.h"
18 namespace sensor_ctrl_unittest {
21 using ::testing::AnyNumber;
22 using ::testing::NiceMock;
23 using ::testing::NotNull;
24 using ::testing::Return;
26 constexpr uint32_t kOtpSensorCtrl =
27 OTP_CTRL_PARAM_OWNER_SW_CFG_ROM_SENSOR_CTRL_ALERT_CFG_OFFSET;
30 public testing::WithParamInterface<lifecycle_state_t> {
32 void SetupExpectations() {
33 ON_CALL(otp_, read32(_)).WillByDefault([](uint32_t addr) {
50 case kOtpSensorCtrl + 0:
52 case kOtpSensorCtrl + 4:
54 case kOtpSensorCtrl + 8:
61 EXPECT_CALL(sec_mmio_,
62 Write32(base_ + SENSOR_CTRL_ALERT_EN_0_REG_OFFSET, 6));
63 EXPECT_CALL(sec_mmio_,
64 Write32(base_ + SENSOR_CTRL_ALERT_EN_1_REG_OFFSET, 6));
65 EXPECT_CALL(sec_mmio_,
66 Write32(base_ + SENSOR_CTRL_ALERT_EN_2_REG_OFFSET, 6));
67 EXPECT_CALL(sec_mmio_,
68 Write32(base_ + SENSOR_CTRL_ALERT_EN_3_REG_OFFSET, 6));
70 EXPECT_CALL(sec_mmio_,
71 Write32(base_ + SENSOR_CTRL_ALERT_EN_4_REG_OFFSET, 9));
72 EXPECT_CALL(sec_mmio_,
73 Write32(base_ + SENSOR_CTRL_ALERT_EN_5_REG_OFFSET, 9));
74 EXPECT_CALL(sec_mmio_,
75 Write32(base_ + SENSOR_CTRL_ALERT_EN_6_REG_OFFSET, 9));
76 EXPECT_CALL(sec_mmio_,
77 Write32(base_ + SENSOR_CTRL_ALERT_EN_7_REG_OFFSET, 9));
79 EXPECT_CALL(sec_mmio_,
80 Write32(base_ + SENSOR_CTRL_ALERT_EN_8_REG_OFFSET, 0));
81 EXPECT_CALL(sec_mmio_,
82 Write32(base_ + SENSOR_CTRL_ALERT_EN_9_REG_OFFSET, 0));
83 EXPECT_CALL(sec_mmio_,
84 Write32(base_ + SENSOR_CTRL_ALERT_EN_10_REG_OFFSET, 0));
87 EXPECT_CALL(sec_mmio_,
88 Write32(base_ + SENSOR_CTRL_FATAL_ALERT_EN_REG_OFFSET, 0x0F6));
91 rom_test::NiceMockOtp otp_;
92 rom_test::MockSecMmio sec_mmio_;
96 lifecycle_state_t state = GetParam();
106 EXPECT_EQ(kErrorOk, sensor_ctrl_configure(state));
109 INSTANTIATE_TEST_SUITE_P(LcStates, SensorCtrlTest,
110 testing::Values(kLcStateTest, kLcStateRma, kLcStateDev,
111 kLcStateProd, kLcStateProdEnd));