Commit 136a5e9e authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[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: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 78aad7f8
...@@ -231,6 +231,7 @@ struct cobalt_stream { ...@@ -231,6 +231,7 @@ struct cobalt_stream {
u32 pixfmt; u32 pixfmt;
u32 sequence; u32 sequence;
u32 colorspace; u32 colorspace;
u32 xfer_func;
u32 ycbcr_enc; u32 ycbcr_enc;
u32 quantization; u32 quantization;
......
...@@ -170,6 +170,7 @@ static void cobalt_enable_output(struct cobalt_stream *s) ...@@ -170,6 +170,7 @@ static void cobalt_enable_output(struct cobalt_stream *s)
} }
sd_fmt.format.colorspace = s->colorspace; 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.ycbcr_enc = s->ycbcr_enc;
sd_fmt.format.quantization = s->quantization; sd_fmt.format.quantization = s->quantization;
sd_fmt.format.width = bt->width; sd_fmt.format.width = bt->width;
...@@ -737,6 +738,7 @@ static int cobalt_g_fmt_vid_cap(struct file *file, void *priv_fh, ...@@ -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_subdev_call(s->sd, pad, get_fmt, NULL, &sd_fmt);
v4l2_fill_pix_format(pix, &sd_fmt.format); v4l2_fill_pix_format(pix, &sd_fmt.format);
pix->colorspace = sd_fmt.format.colorspace; pix->colorspace = sd_fmt.format.colorspace;
pix->xfer_func = sd_fmt.format.xfer_func;
pix->ycbcr_enc = sd_fmt.format.ycbcr_enc; pix->ycbcr_enc = sd_fmt.format.ycbcr_enc;
pix->quantization = sd_fmt.format.quantization; pix->quantization = sd_fmt.format.quantization;
} }
...@@ -782,6 +784,7 @@ static int cobalt_try_fmt_vid_cap(struct file *file, void *priv_fh, ...@@ -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_subdev_call(s->sd, pad, get_fmt, NULL, &sd_fmt);
v4l2_fill_pix_format(pix, &sd_fmt.format); v4l2_fill_pix_format(pix, &sd_fmt.format);
pix->colorspace = sd_fmt.format.colorspace; pix->colorspace = sd_fmt.format.colorspace;
pix->xfer_func = sd_fmt.format.xfer_func;
pix->ycbcr_enc = sd_fmt.format.ycbcr_enc; pix->ycbcr_enc = sd_fmt.format.ycbcr_enc;
pix->quantization = sd_fmt.format.quantization; pix->quantization = sd_fmt.format.quantization;
} }
...@@ -897,6 +900,7 @@ static int cobalt_g_fmt_vid_out(struct file *file, void *priv_fh, ...@@ -897,6 +900,7 @@ static int cobalt_g_fmt_vid_out(struct file *file, void *priv_fh,
pix->field = V4L2_FIELD_NONE; pix->field = V4L2_FIELD_NONE;
pix->pixelformat = s->pixfmt; pix->pixelformat = s->pixfmt;
pix->colorspace = s->colorspace; pix->colorspace = s->colorspace;
pix->xfer_func = s->xfer_func;
pix->ycbcr_enc = s->ycbcr_enc; pix->ycbcr_enc = s->ycbcr_enc;
pix->quantization = s->quantization; pix->quantization = s->quantization;
pix->sizeimage = pix->bytesperline * pix->height; pix->sizeimage = pix->bytesperline * pix->height;
...@@ -953,11 +957,13 @@ static int cobalt_s_fmt_vid_out(struct file *file, void *priv_fh, ...@@ -953,11 +957,13 @@ static int cobalt_s_fmt_vid_out(struct file *file, void *priv_fh,
s->stride = pix->bytesperline; s->stride = pix->bytesperline;
s->pixfmt = pix->pixelformat; s->pixfmt = pix->pixelformat;
s->colorspace = pix->colorspace; s->colorspace = pix->colorspace;
s->xfer_func = pix->xfer_func;
s->ycbcr_enc = pix->ycbcr_enc; s->ycbcr_enc = pix->ycbcr_enc;
s->quantization = pix->quantization; s->quantization = pix->quantization;
sd_fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE; sd_fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
v4l2_subdev_call(s->sd, pad, get_fmt, NULL, &sd_fmt); v4l2_subdev_call(s->sd, pad, get_fmt, NULL, &sd_fmt);
sd_fmt.format.colorspace = pix->colorspace; 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.ycbcr_enc = pix->ycbcr_enc;
sd_fmt.format.quantization = pix->quantization; sd_fmt.format.quantization = pix->quantization;
v4l2_subdev_call(s->sd, pad, set_fmt, NULL, &sd_fmt); v4l2_subdev_call(s->sd, pad, set_fmt, NULL, &sd_fmt);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment