diff options
author | Alex Elder <elder@linaro.org> | 2022-07-13 19:11:45 -0500 |
---|---|---|
committer | Alex Elder <elder@linaro.org> | 2022-07-14 15:29:02 -0500 |
commit | a1316c3d3ad492cce80fe5ecad218b73e21f92b5 (patch) | |
tree | d93c282952524596dd0aa6f8989e0351abcdb588 | |
parent | d5bf9f33d0258e908d71efe4a5c411a9d09dd186 (diff) |
regs: test the IPA_REG_TIMERS_PULSE_GRAN_CFG register
Create a test function that validates the offset and fields for the
IPA_REG_TIMERS_PULSE_GRAN_CFG register, for every IPA version,
making sure they match what's already defined in "ipa_reg.h".
Signed-off-by: Alex Elder <elder@linaro.org>
-rw-r--r-- | ipa_reg.c | 60 |
1 files changed, 60 insertions, 0 deletions
@@ -1329,6 +1329,65 @@ static void ipa_reg_test_timers_xo_clk_div_cfg(enum ipa_version version) ipa_reg_test_fmask(reg, DIV_ENABLE, mask); } +static void ipa_reg_test_timers_pulse_gran_cfg(enum ipa_version version) +{ + const struct ipa_regs *regs = ipa_regs[version]; + const char *vers = version_string(version); + const struct ipa_reg *reg; + u32 mask; + + if (IPA_REG_TIMERS_PULSE_GRAN_CFG >= regs->reg_count) { + if (version < IPA_VERSION_4_5) + return; + + printf("version %s TIMERS_PULSE_GRAN_CFG > reg_count %u\n", + vers, regs->reg_count); + exit(1); + } + + reg = regs->reg[IPA_REG_TIMERS_PULSE_GRAN_CFG]; + if (!reg) { + if (version < IPA_VERSION_4_5) + return; + + printf("version %s TIMERS_PULSE_GRAN_CFG not defined\n", + vers); + exit(1); + } else if (version < IPA_VERSION_4_5) { + printf("version %s TIMERS_PULSE_GRAN_CFG should not be defined\n", + vers); + exit(1); + } + + if (!reg->name) { + printf("version %s TIMERS_PULSE_GRAN_CFG has no defined name\n", + vers); + exit(1); + } + + if (strcmp(reg->name, "TIMERS_PULSE_GRAN_CFG")) { + printf("version %s TIMERS_PULSE_GRAN_CFG has wrong name %s\n", + vers, reg->name); + exit(1); + } + + if (reg->offset != IPA_REG_TIMERS_PULSE_GRAN_CFG_OFFSET) { + printf("version %s %s offset 0x%04x, old 0x%04x\n", + vers, reg->name, reg->offset, + IPA_REG_TIMERS_PULSE_GRAN_CFG_OFFSET); + exit(1); + } + + mask = GRAN_0_FMASK; + ipa_reg_test_fmask(reg, PULSE_GRAN_0, mask); + + mask = GRAN_1_FMASK; + ipa_reg_test_fmask(reg, PULSE_GRAN_1, mask); + + mask = GRAN_2_FMASK; + ipa_reg_test_fmask(reg, PULSE_GRAN_2, mask); +} + static void ipa_reg_test(enum ipa_version version) { printf("Testing %s\n", version_string(version)); @@ -1351,6 +1410,7 @@ static void ipa_reg_test(enum ipa_version version) ipa_reg_test_idle_indication_cfg(version); ipa_reg_test_qtime_timestamp_cfg(version); ipa_reg_test_timers_xo_clk_div_cfg(version); + ipa_reg_test_timers_pulse_gran_cfg(version); } int ipa_reg_init(struct ipa *ipa) |