summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Massey <aaronmassey@google.com>2021-11-02 14:44:11 -0600
committerCommit Bot <commit-bot@chromium.org>2021-11-10 22:21:45 +0000
commit5168b0ed86959089bea7bd47a7a42fff787a349e (patch)
treeb52d06e74494cb18d6cae2189dd552932a1fafe6
parentd5a91e86bb86b43898e9dc60560c424422b33a17 (diff)
downloadchrome-ec-5168b0ed86959089bea7bd47a7a42fff787a349e.tar.gz
zephyr: emul: sn5s330 add int status registers
Added status registers used by driver during initialization. BRANCH=none BUG=b:203364783 TEST=zmake configure --test zephyr/test/drivers (checked coverage change) Signed-off-by: Aaron Massey <aaronmassey@google.com> Change-Id: Id86d92001ebde11ece907ebdb3116e70883cd44b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3257778 Reviewed-by: Abe Levkoy <alevkoy@chromium.org>
-rw-r--r--driver/ppc/sn5s330.h3
-rw-r--r--zephyr/emul/emul_sn5s330.c42
2 files changed, 44 insertions, 1 deletions
diff --git a/driver/ppc/sn5s330.h b/driver/ppc/sn5s330.h
index 188499e34a..fbf1159165 100644
--- a/driver/ppc/sn5s330.h
+++ b/driver/ppc/sn5s330.h
@@ -43,6 +43,9 @@ enum sn5s330_pp_idx {
#define SN5S330_INT_STATUS_REG1 0x2F
#define SN5S330_INT_STATUS_REG2 0x30
#define SN5S330_INT_STATUS_REG3 0x31
+/*
+ * TODO(b:205754232): Register name discrepancy
+ */
#define SN5S330_INT_STATUS_REG4 0x32
#define SN5S330_INT_TRIP_RISE_REG1 0x20
diff --git a/zephyr/emul/emul_sn5s330.c b/zephyr/emul/emul_sn5s330.c
index 0f69007bd5..8e07b28f11 100644
--- a/zephyr/emul/emul_sn5s330.c
+++ b/zephyr/emul/emul_sn5s330.c
@@ -52,6 +52,17 @@ struct sn5s330_emul_data {
uint8_t func_set11_reg;
/** Emulated FUNC_SET12 register */
uint8_t func_set12_reg;
+ /** Emulated INT_STATUS_REG1 register */
+ uint8_t int_status_reg1;
+ /** Emulated INT_STATUS_REG2 register */
+ uint8_t int_status_reg2;
+ /** Emulated INT_STATUS_REG3 register */
+ uint8_t int_status_reg3;
+ /** Emulated INT_STATUS_REG4 register */
+ /*
+ * TODO(b:205754232): Register name discrepancy
+ */
+ uint8_t int_status_reg4;
};
struct sn5s330_emul_cfg {
@@ -134,6 +145,22 @@ static int sn5s330_emul_read_byte(struct i2c_emul *emul, int reg, uint8_t *val,
__ASSERT_NO_MSG(bytes == 0);
*val = data->func_set12_reg;
break;
+ case SN5S330_INT_STATUS_REG1:
+ __ASSERT_NO_MSG(bytes == 0);
+ *val = data->int_status_reg1;
+ break;
+ case SN5S330_INT_STATUS_REG2:
+ __ASSERT_NO_MSG(bytes == 0);
+ *val = data->int_status_reg2;
+ break;
+ case SN5S330_INT_STATUS_REG3:
+ __ASSERT_NO_MSG(bytes == 0);
+ *val = data->int_status_reg3;
+ break;
+ case SN5S330_INT_STATUS_REG4:
+ __ASSERT_NO_MSG(bytes == 0);
+ *val = data->int_status_reg4;
+ break;
default:
__ASSERT(false, "Unimplemented Register Access Error on 0x%x",
reg);
@@ -196,7 +223,20 @@ static int sn5s330_emul_write_byte(struct i2c_emul *emul, int reg, uint8_t val,
__ASSERT_NO_MSG(bytes == 1);
data->func_set12_reg = val;
break;
-
+ case SN5S330_INT_STATUS_REG1:
+ /* fallthrough */
+ case SN5S330_INT_STATUS_REG2:
+ /* fallthrough */
+ case SN5S330_INT_STATUS_REG3:
+ __ASSERT(false,
+ "Write to an unverified-as-safe read-only register on "
+ "0x%x",
+ reg);
+ /* fallthrough for checkpath */
+ case SN5S330_INT_STATUS_REG4:
+ __ASSERT_NO_MSG(bytes == 1);
+ data->int_status_reg4 = val;
+ break;
default:
__ASSERT(false, "Unimplemented Register Access Error on 0x%x",
reg);