[media] s5p-csis: Add registers logging for debugging
authorSylwester Nawrocki <s.nawrocki@samsung.com>
Fri, 28 Sep 2012 14:05:53 +0000 (11:05 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 21 Dec 2012 14:25:13 +0000 (12:25 -0200)
Dump registers contents together with the event counters state
in VIDIOC_LOG_STATUS ioctl.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/platform/s5p-fimc/mipi-csis.c

index 8ec7c3b79659be1b813e6731789ee5e64d196ad4..8a06f1402f378c0bc56d58ab0b446981a49ecfc0 100644 (file)
@@ -383,6 +383,30 @@ err:
        return -ENXIO;
 }
 
+static void dump_regs(struct csis_state *state, const char *label)
+{
+       struct {
+               u32 offset;
+               const char * const name;
+       } registers[] = {
+               { 0x00, "CTRL" },
+               { 0x04, "DPHYCTRL" },
+               { 0x08, "CONFIG" },
+               { 0x0c, "DPHYSTS" },
+               { 0x10, "INTMSK" },
+               { 0x2c, "RESOL" },
+               { 0x38, "SDW_CONFIG" },
+       };
+       u32 i;
+
+       v4l2_info(&state->sd, "--- %s ---\n", label);
+
+       for (i = 0; i < ARRAY_SIZE(registers); i++) {
+               u32 cfg = s5pcsis_read(state, registers[i].offset);
+               v4l2_info(&state->sd, "%10s: 0x%08x\n", registers[i].name, cfg);
+       }
+}
+
 static void s5pcsis_start_stream(struct csis_state *state)
 {
        s5pcsis_reset(state);
@@ -583,7 +607,11 @@ static int s5pcsis_log_status(struct v4l2_subdev *sd)
 {
        struct csis_state *state = sd_to_csis_state(sd);
 
+       mutex_lock(&state->lock);
        s5pcsis_log_counters(state, true);
+       if (debug && (state->flags & ST_POWERED))
+               dump_regs(state, __func__);
+       mutex_unlock(&state->lock);
        return 0;
 }