diff options
author | Aaron Massey <aaronmassey@google.com> | 2021-11-02 14:44:11 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-11-10 22:21:45 +0000 |
commit | 5168b0ed86959089bea7bd47a7a42fff787a349e (patch) | |
tree | b52d06e74494cb18d6cae2189dd552932a1fafe6 | |
parent | d5a91e86bb86b43898e9dc60560c424422b33a17 (diff) | |
download | chrome-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.h | 3 | ||||
-rw-r--r-- | zephyr/emul/emul_sn5s330.c | 42 |
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); |