Skip to content

Commit 14918d1

Browse files
committed
Augment debug information with all reads and writes that are occurring.
1 parent e9a5de2 commit 14918d1

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

ipu/ipu.c

+11-10
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,20 @@ static struct ipu *ipu;
3232

3333
static inline uint32_t read_reg(struct ipu *ipu, unsigned int reg)
3434
{
35-
return *(volatile uint32_t *) (ipu->base + reg);
35+
uint32_t result = *(volatile uint32_t *) (ipu->base + reg);
36+
printf("%-19s contains %08" PRIX32 "\n", reg_names[reg / sizeof(uint32_t)], result);
37+
return result;
3638
}
3739

3840
static inline void write_reg(struct ipu *ipu, unsigned int reg, uint32_t value)
3941
{
42+
printf("%-19s being written %08" PRIX32 "\n", reg_names[reg / sizeof(uint32_t)], value);
43+
if (reg == REG_HRSZ_COEF_LUT || reg == REG_VRSZ_COEF_LUT) {
44+
if (value & 1)
45+
printf("%-19s starting configuration\n", "");
46+
else
47+
printf("%-19s coefficient %3u, offset +%2u\n", "", (value >> 6) & 0x7FF, (value >> 1) & 0x1F);
48+
}
4049
*(volatile uint32_t *) (ipu->base + reg) = value;
4150
}
4251

@@ -54,7 +63,7 @@ static void print_regs(struct ipu *ipu)
5463
{
5564
unsigned int i;
5665
for (i = 0; i < sizeof(reg_names) / sizeof(reg_names[0]); i++) {
57-
printf("%s = 0x%08x\n", reg_names[i], read_reg(ipu, i * 4));
66+
read_reg(ipu, i * 4);
5867
}
5968
}
6069

@@ -125,9 +134,6 @@ static void ipu_set_upscale_bilinear_coef(struct ipu *ipu,
125134
}
126135

127136
uint32_t value = ((weight & 0x7FF) << 6) | (offset << 1);
128-
printf("Writing 0x%08" PRIX32 " (coefficient %u, offset %u) to %s\n",
129-
value, weight, offset, reg_names[reg / sizeof(uint32_t)]);
130-
131137
write_reg(ipu, reg, value);
132138
usleep(1); /* a small sleep seems necessary */
133139
}
@@ -178,9 +184,6 @@ static void ipu_set_downscale_bilinear_coef(struct ipu *ipu,
178184
/ weight_frac.denom;
179185

180186
uint32_t value = ((weight & 0x7FF) << 6) | (offset << 1);
181-
printf("Writing 0x%08" PRIX32 " (coefficient %u, offset %u) to %s\n",
182-
value, weight, offset, reg_names[reg / sizeof(uint32_t)]);
183-
184187
write_reg(ipu, reg, value);
185188
usleep(1); /* a small sleep seems necessary */
186189
}
@@ -214,8 +217,6 @@ static void ipu_set_nearest_resize_coef(struct ipu *ipu,
214217
weight_frac.num %= weight_frac.denom;
215218

216219
uint32_t value = (weight << 6) | (offset << 1);
217-
printf("Writing 0x%08" PRIX32 " (coefficient %u, offset %u) to %s\n",
218-
value, weight, offset, reg_names[reg / sizeof(uint32_t)]);
219220

220221
write_reg(ipu, reg, value);
221222
usleep(1); /* a small sleep seems necessary */

0 commit comments

Comments
 (0)