summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Elder <elder@linaro.org>2022-07-13 19:11:45 -0500
committerAlex Elder <elder@linaro.org>2022-07-14 15:29:02 -0500
commita1316c3d3ad492cce80fe5ecad218b73e21f92b5 (patch)
treed93c282952524596dd0aa6f8989e0351abcdb588
parentd5bf9f33d0258e908d71efe4a5c411a9d09dd186 (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.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/ipa_reg.c b/ipa_reg.c
index aefc7ac..8ec954e 100644
--- a/ipa_reg.c
+++ b/ipa_reg.c
@@ -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)