From 136a5e9e01ed89d8891845027b3ee731bb662926 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Sun, 31 May 2015 06:48:00 -0300 Subject: [PATCH] [media] cobalt: support transfer function Add support for the transfer function to the cobalt driver: make sure it is passed on to/retrieved from the sub-device correctly. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- drivers/media/pci/cobalt/cobalt-driver.h | 1 + drivers/media/pci/cobalt/cobalt-v4l2.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/drivers/media/pci/cobalt/cobalt-driver.h b/drivers/media/pci/cobalt/cobalt-driver.h index f63ce193a65d..c206df930669 100644 --- a/drivers/media/pci/cobalt/cobalt-driver.h +++ b/drivers/media/pci/cobalt/cobalt-driver.h @@ -231,6 +231,7 @@ struct cobalt_stream { u32 pixfmt; u32 sequence; u32 colorspace; + u32 xfer_func; u32 ycbcr_enc; u32 quantization; diff --git a/drivers/media/pci/cobalt/cobalt-v4l2.c b/drivers/media/pci/cobalt/cobalt-v4l2.c index 8b14bec123eb..72b081f9cde3 100644 --- a/drivers/media/pci/cobalt/cobalt-v4l2.c +++ b/drivers/media/pci/cobalt/cobalt-v4l2.c @@ -170,6 +170,7 @@ static void cobalt_enable_output(struct cobalt_stream *s) } sd_fmt.format.colorspace = s->colorspace; + sd_fmt.format.xfer_func = s->xfer_func; sd_fmt.format.ycbcr_enc = s->ycbcr_enc; sd_fmt.format.quantization = s->quantization; sd_fmt.format.width = bt->width; @@ -737,6 +738,7 @@ static int cobalt_g_fmt_vid_cap(struct file *file, void *priv_fh, v4l2_subdev_call(s->sd, pad, get_fmt, NULL, &sd_fmt); v4l2_fill_pix_format(pix, &sd_fmt.format); pix->colorspace = sd_fmt.format.colorspace; + pix->xfer_func = sd_fmt.format.xfer_func; pix->ycbcr_enc = sd_fmt.format.ycbcr_enc; pix->quantization = sd_fmt.format.quantization; } @@ -782,6 +784,7 @@ static int cobalt_try_fmt_vid_cap(struct file *file, void *priv_fh, v4l2_subdev_call(s->sd, pad, get_fmt, NULL, &sd_fmt); v4l2_fill_pix_format(pix, &sd_fmt.format); pix->colorspace = sd_fmt.format.colorspace; + pix->xfer_func = sd_fmt.format.xfer_func; pix->ycbcr_enc = sd_fmt.format.ycbcr_enc; pix->quantization = sd_fmt.format.quantization; } @@ -897,6 +900,7 @@ static int cobalt_g_fmt_vid_out(struct file *file, void *priv_fh, pix->field = V4L2_FIELD_NONE; pix->pixelformat = s->pixfmt; pix->colorspace = s->colorspace; + pix->xfer_func = s->xfer_func; pix->ycbcr_enc = s->ycbcr_enc; pix->quantization = s->quantization; pix->sizeimage = pix->bytesperline * pix->height; @@ -953,11 +957,13 @@ static int cobalt_s_fmt_vid_out(struct file *file, void *priv_fh, s->stride = pix->bytesperline; s->pixfmt = pix->pixelformat; s->colorspace = pix->colorspace; + s->xfer_func = pix->xfer_func; s->ycbcr_enc = pix->ycbcr_enc; s->quantization = pix->quantization; sd_fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE; v4l2_subdev_call(s->sd, pad, get_fmt, NULL, &sd_fmt); sd_fmt.format.colorspace = pix->colorspace; + sd_fmt.format.xfer_func = pix->xfer_func; sd_fmt.format.ycbcr_enc = pix->ycbcr_enc; sd_fmt.format.quantization = pix->quantization; v4l2_subdev_call(s->sd, pad, set_fmt, NULL, &sd_fmt); -- 2.20.1