]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[media] vivid-tpg: add tpg_log_status()
authorHans Verkuil <hans.verkuil@cisco.com>
Fri, 24 Apr 2015 14:16:22 +0000 (11:16 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 28 Apr 2015 12:19:56 +0000 (09:19 -0300)
Add a log_status function to the test pattern generator and use that
in vivid. This simplifies debugging complex colorspace problems.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/platform/vivid/vivid-core.c
drivers/media/platform/vivid/vivid-tpg.c
drivers/media/platform/vivid/vivid-tpg.h

index d33f16495dbce50d7a5b42e6d1e98f107effb61a..d6caeeb5758d19e64dda132877e21adbc92f9f39 100644 (file)
@@ -392,6 +392,17 @@ static int vidioc_s_parm(struct file *file, void *fh,
        return vivid_vid_out_g_parm(file, fh, parm);
 }
 
+static int vidioc_log_status(struct file *file, void *fh)
+{
+       struct vivid_dev *dev = video_drvdata(file);
+       struct video_device *vdev = video_devdata(file);
+
+       v4l2_ctrl_log_status(file, fh);
+       if (vdev->vfl_dir == VFL_DIR_RX && vdev->vfl_type == VFL_TYPE_GRABBER)
+               tpg_log_status(&dev->tpg);
+       return 0;
+}
+
 static ssize_t vivid_radio_read(struct file *file, char __user *buf,
                         size_t size, loff_t *offset)
 {
@@ -610,7 +621,7 @@ static const struct v4l2_ioctl_ops vivid_ioctl_ops = {
        .vidioc_g_edid                  = vidioc_g_edid,
        .vidioc_s_edid                  = vidioc_s_edid,
 
-       .vidioc_log_status              = v4l2_ctrl_log_status,
+       .vidioc_log_status              = vidioc_log_status,
        .vidioc_subscribe_event         = vidioc_subscribe_event,
        .vidioc_unsubscribe_event       = v4l2_event_unsubscribe,
 };
index cb766eb154e71eff55004bbf0e667fc44964dde7..69cd8fb6aac4983084b0bb963a038f18bec041e4 100644 (file)
@@ -1670,6 +1670,22 @@ static int tpg_pattern_avg(const struct tpg_data *tpg,
        return -1;
 }
 
+void tpg_log_status(struct tpg_data *tpg)
+{
+       pr_info("tpg source WxH: %ux%u (%s)\n",
+                       tpg->src_width, tpg->src_height,
+                       tpg->is_yuv ? "YCbCr" : "RGB");
+       pr_info("tpg field: %u\n", tpg->field);
+       pr_info("tpg crop: %ux%u@%dx%d\n", tpg->crop.width, tpg->crop.height,
+                       tpg->crop.left, tpg->crop.top);
+       pr_info("tpg compose: %ux%u@%dx%d\n", tpg->compose.width, tpg->compose.height,
+                       tpg->compose.left, tpg->compose.top);
+       pr_info("tpg colorspace: %d\n", tpg->colorspace);
+       pr_info("tpg Y'CbCr encoding: %d/%d\n", tpg->ycbcr_enc, tpg->real_ycbcr_enc);
+       pr_info("tpg quantization: %d/%d\n", tpg->quantization, tpg->real_quantization);
+       pr_info("tpg RGB range: %d/%d\n", tpg->rgb_range, tpg->real_rgb_range);
+}
+
 /*
  * This struct contains common parameters used by both the drawing of the
  * test pattern and the drawing of the extras (borders, square, etc.)
index a50cd2e2535bf188103e9418ce1722ea00124273..ef8638f945bed00e53f2c61b015881dbaf772300 100644 (file)
@@ -192,6 +192,7 @@ int tpg_alloc(struct tpg_data *tpg, unsigned max_w);
 void tpg_free(struct tpg_data *tpg);
 void tpg_reset_source(struct tpg_data *tpg, unsigned width, unsigned height,
                       u32 field);
+void tpg_log_status(struct tpg_data *tpg);
 
 void tpg_set_font(const u8 *f);
 void tpg_gen_text(const struct tpg_data *tpg,