* Re: [PATCH 04/10] [media] coda: fix FMO value setting for CodaDx6
[not found] ` <1379582036-4840-5-git-send-email-p.zabel@pengutronix.de>
@ 2013-09-30 11:48 ` Hans Verkuil
2013-09-30 13:23 ` Philipp Zabel
0 siblings, 1 reply; 5+ messages in thread
From: Hans Verkuil @ 2013-09-30 11:48 UTC (permalink / raw)
To: Philipp Zabel
Cc: linux-media, Mauro Carvalho Chehab, Kamil Debski, Javier Martin,
Hans Verkuil, kernel
On 09/19/2013 11:13 AM, Philipp Zabel wrote:
> The register is only written on CodaDx6, so the temporary variable
> to be written only needs to be initialized on CodaDx6.
>
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> ---
> drivers/media/platform/coda.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/media/platform/coda.c b/drivers/media/platform/coda.c
> index 53539c1..e8acff3 100644
> --- a/drivers/media/platform/coda.c
> +++ b/drivers/media/platform/coda.c
> @@ -2074,10 +2074,10 @@ static int coda_start_streaming(struct vb2_queue *q, unsigned int count)
> coda_setup_iram(ctx);
>
> if (dst_fourcc == V4L2_PIX_FMT_H264) {
> - value = (FMO_SLICE_SAVE_BUF_SIZE << 7);
> - value |= (0 & CODA_FMOPARAM_TYPE_MASK) << CODA_FMOPARAM_TYPE_OFFSET;
> - value |= 0 & CODA_FMOPARAM_SLICENUM_MASK;
> if (dev->devtype->product == CODA_DX6) {
> + value = (FMO_SLICE_SAVE_BUF_SIZE << 7);
> + value |= (0 & CODA_FMOPARAM_TYPE_MASK) << CODA_FMOPARAM_TYPE_OFFSET;
> + value |= 0 & CODA_FMOPARAM_SLICENUM_MASK;
0 & CODA_FMOPARAM_SLICENUM_MASK?
These last two lines evaluate to a nop, so that looks very weird. Is this a bug?
Regards,
Hans
> coda_write(dev, value, CODADX6_CMD_ENC_SEQ_FMO);
> } else {
> coda_write(dev, ctx->iram_info.search_ram_paddr,
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 07/10] [media] coda: prefix v4l2_ioctl_ops with coda_
[not found] ` <1379582036-4840-8-git-send-email-p.zabel@pengutronix.de>
@ 2013-09-30 11:50 ` Hans Verkuil
2013-09-30 13:23 ` Philipp Zabel
0 siblings, 1 reply; 5+ messages in thread
From: Hans Verkuil @ 2013-09-30 11:50 UTC (permalink / raw)
To: Philipp Zabel
Cc: linux-media, Mauro Carvalho Chehab, Kamil Debski, Javier Martin,
Hans Verkuil, kernel
On 09/19/2013 11:13 AM, Philipp Zabel wrote:
> Moving the ioctl handler callbacks into the coda namespace helps
> tremendously to make sense of backtraces.
I like the idea, but I would just use the coda_ prefix, not coda_vidioc_. In general
the prefix is either vidioc_ or the name of the driver, not both.
Regards,
Hans
>
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> ---
> drivers/media/platform/coda.c | 123 +++++++++++++++++++++---------------------
> 1 file changed, 63 insertions(+), 60 deletions(-)
>
> diff --git a/drivers/media/platform/coda.c b/drivers/media/platform/coda.c
> index 4f038c2..9091664 100644
> --- a/drivers/media/platform/coda.c
> +++ b/drivers/media/platform/coda.c
> @@ -412,8 +412,8 @@ static char *coda_product_name(int product)
> /*
> * V4L2 ioctl() operations.
> */
> -static int vidioc_querycap(struct file *file, void *priv,
> - struct v4l2_capability *cap)
> +static int coda_vidioc_querycap(struct file *file, void *priv,
> + struct v4l2_capability *cap)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
>
> @@ -484,8 +484,8 @@ static int enum_fmt(void *priv, struct v4l2_fmtdesc *f,
> return -EINVAL;
> }
>
> -static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
> - struct v4l2_fmtdesc *f)
> +static int coda_vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
> + struct v4l2_fmtdesc *f)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
> struct vb2_queue *src_vq;
> @@ -503,13 +503,14 @@ static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
> return enum_fmt(priv, f, V4L2_BUF_TYPE_VIDEO_CAPTURE, 0);
> }
>
> -static int vidioc_enum_fmt_vid_out(struct file *file, void *priv,
> - struct v4l2_fmtdesc *f)
> +static int coda_vidioc_enum_fmt_vid_out(struct file *file, void *priv,
> + struct v4l2_fmtdesc *f)
> {
> return enum_fmt(priv, f, V4L2_BUF_TYPE_VIDEO_OUTPUT, 0);
> }
>
> -static int vidioc_g_fmt(struct file *file, void *priv, struct v4l2_format *f)
> +static int coda_vidioc_g_fmt(struct file *file, void *priv,
> + struct v4l2_format *f)
> {
> struct vb2_queue *vq;
> struct coda_q_data *q_data;
> @@ -536,7 +537,7 @@ static int vidioc_g_fmt(struct file *file, void *priv, struct v4l2_format *f)
> return 0;
> }
>
> -static int vidioc_try_fmt(struct coda_codec *codec, struct v4l2_format *f)
> +static int coda_vidioc_try_fmt(struct coda_codec *codec, struct v4l2_format *f)
> {
> unsigned int max_w, max_h;
> enum v4l2_field field;
> @@ -575,8 +576,8 @@ static int vidioc_try_fmt(struct coda_codec *codec, struct v4l2_format *f)
> return 0;
> }
>
> -static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
> - struct v4l2_format *f)
> +static int coda_vidioc_try_fmt_vid_cap(struct file *file, void *priv,
> + struct v4l2_format *f)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
> struct coda_codec *codec;
> @@ -604,7 +605,7 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
>
> f->fmt.pix.colorspace = ctx->colorspace;
>
> - ret = vidioc_try_fmt(codec, f);
> + ret = coda_vidioc_try_fmt(codec, f);
> if (ret < 0)
> return ret;
>
> @@ -620,8 +621,8 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
> return 0;
> }
>
> -static int vidioc_try_fmt_vid_out(struct file *file, void *priv,
> - struct v4l2_format *f)
> +static int coda_vidioc_try_fmt_vid_out(struct file *file, void *priv,
> + struct v4l2_format *f)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
> struct coda_codec *codec;
> @@ -633,10 +634,10 @@ static int vidioc_try_fmt_vid_out(struct file *file, void *priv,
> if (!f->fmt.pix.colorspace)
> f->fmt.pix.colorspace = V4L2_COLORSPACE_REC709;
>
> - return vidioc_try_fmt(codec, f);
> + return coda_vidioc_try_fmt(codec, f);
> }
>
> -static int vidioc_s_fmt(struct coda_ctx *ctx, struct v4l2_format *f)
> +static int coda_vidioc_s_fmt(struct coda_ctx *ctx, struct v4l2_format *f)
> {
> struct coda_q_data *q_data;
> struct vb2_queue *vq;
> @@ -666,61 +667,62 @@ static int vidioc_s_fmt(struct coda_ctx *ctx, struct v4l2_format *f)
> return 0;
> }
>
> -static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
> - struct v4l2_format *f)
> +static int coda_vidioc_s_fmt_vid_cap(struct file *file, void *priv,
> + struct v4l2_format *f)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
> int ret;
>
> - ret = vidioc_try_fmt_vid_cap(file, priv, f);
> + ret = coda_vidioc_try_fmt_vid_cap(file, priv, f);
> if (ret)
> return ret;
>
> - return vidioc_s_fmt(ctx, f);
> + return coda_vidioc_s_fmt(ctx, f);
> }
>
> -static int vidioc_s_fmt_vid_out(struct file *file, void *priv,
> - struct v4l2_format *f)
> +static int coda_vidioc_s_fmt_vid_out(struct file *file, void *priv,
> + struct v4l2_format *f)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
> int ret;
>
> - ret = vidioc_try_fmt_vid_out(file, priv, f);
> + ret = coda_vidioc_try_fmt_vid_out(file, priv, f);
> if (ret)
> return ret;
>
> - ret = vidioc_s_fmt(ctx, f);
> + ret = coda_vidioc_s_fmt(ctx, f);
> if (ret)
> ctx->colorspace = f->fmt.pix.colorspace;
>
> return ret;
> }
>
> -static int vidioc_reqbufs(struct file *file, void *priv,
> - struct v4l2_requestbuffers *reqbufs)
> +static int coda_vidioc_reqbufs(struct file *file, void *priv,
> + struct v4l2_requestbuffers *reqbufs)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
>
> return v4l2_m2m_reqbufs(file, ctx->m2m_ctx, reqbufs);
> }
>
> -static int vidioc_querybuf(struct file *file, void *priv,
> - struct v4l2_buffer *buf)
> +static int coda_vidioc_querybuf(struct file *file, void *priv,
> + struct v4l2_buffer *buf)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
>
> return v4l2_m2m_querybuf(file, ctx->m2m_ctx, buf);
> }
>
> -static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *buf)
> +static int coda_vidioc_qbuf(struct file *file, void *priv,
> + struct v4l2_buffer *buf)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
>
> return v4l2_m2m_qbuf(file, ctx->m2m_ctx, buf);
> }
>
> -static int vidioc_expbuf(struct file *file, void *priv,
> - struct v4l2_exportbuffer *eb)
> +static int coda_vidioc_expbuf(struct file *file, void *priv,
> + struct v4l2_exportbuffer *eb)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
>
> @@ -738,7 +740,8 @@ static bool coda_buf_is_end_of_stream(struct coda_ctx *ctx,
> (buf->sequence == (ctx->qsequence - 1)));
> }
>
> -static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *buf)
> +static int coda_vidioc_dqbuf(struct file *file, void *priv,
> + struct v4l2_buffer *buf)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
> int ret;
> @@ -758,24 +761,24 @@ static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *buf)
> return ret;
> }
>
> -static int vidioc_create_bufs(struct file *file, void *priv,
> - struct v4l2_create_buffers *create)
> +static int coda_vidioc_create_bufs(struct file *file, void *priv,
> + struct v4l2_create_buffers *create)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
>
> return v4l2_m2m_create_bufs(file, ctx->m2m_ctx, create);
> }
>
> -static int vidioc_streamon(struct file *file, void *priv,
> - enum v4l2_buf_type type)
> +static int coda_vidioc_streamon(struct file *file, void *priv,
> + enum v4l2_buf_type type)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
>
> return v4l2_m2m_streamon(file, ctx->m2m_ctx, type);
> }
>
> -static int vidioc_streamoff(struct file *file, void *priv,
> - enum v4l2_buf_type type)
> +static int coda_vidioc_streamoff(struct file *file, void *priv,
> + enum v4l2_buf_type type)
> {
> struct coda_ctx *ctx = fh_to_ctx(priv);
> int ret;
> @@ -792,8 +795,8 @@ static int vidioc_streamoff(struct file *file, void *priv,
> return ret;
> }
>
> -static int vidioc_decoder_cmd(struct file *file, void *fh,
> - struct v4l2_decoder_cmd *dc)
> +static int coda_vidioc_decoder_cmd(struct file *file, void *fh,
> + struct v4l2_decoder_cmd *dc)
> {
> struct coda_ctx *ctx = fh_to_ctx(fh);
>
> @@ -816,8 +819,8 @@ static int vidioc_decoder_cmd(struct file *file, void *fh,
> return 0;
> }
>
> -static int vidioc_subscribe_event(struct v4l2_fh *fh,
> - const struct v4l2_event_subscription *sub)
> +static int coda_vidioc_subscribe_event(struct v4l2_fh *fh,
> + const struct v4l2_event_subscription *sub)
> {
> switch (sub->type) {
> case V4L2_EVENT_EOS:
> @@ -828,32 +831,32 @@ static int vidioc_subscribe_event(struct v4l2_fh *fh,
> }
>
> static const struct v4l2_ioctl_ops coda_ioctl_ops = {
> - .vidioc_querycap = vidioc_querycap,
> + .vidioc_querycap = coda_vidioc_querycap,
>
> - .vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
> - .vidioc_g_fmt_vid_cap = vidioc_g_fmt,
> - .vidioc_try_fmt_vid_cap = vidioc_try_fmt_vid_cap,
> - .vidioc_s_fmt_vid_cap = vidioc_s_fmt_vid_cap,
> + .vidioc_enum_fmt_vid_cap = coda_vidioc_enum_fmt_vid_cap,
> + .vidioc_g_fmt_vid_cap = coda_vidioc_g_fmt,
> + .vidioc_try_fmt_vid_cap = coda_vidioc_try_fmt_vid_cap,
> + .vidioc_s_fmt_vid_cap = coda_vidioc_s_fmt_vid_cap,
>
> - .vidioc_enum_fmt_vid_out = vidioc_enum_fmt_vid_out,
> - .vidioc_g_fmt_vid_out = vidioc_g_fmt,
> - .vidioc_try_fmt_vid_out = vidioc_try_fmt_vid_out,
> - .vidioc_s_fmt_vid_out = vidioc_s_fmt_vid_out,
> + .vidioc_enum_fmt_vid_out = coda_vidioc_enum_fmt_vid_out,
> + .vidioc_g_fmt_vid_out = coda_vidioc_g_fmt,
> + .vidioc_try_fmt_vid_out = coda_vidioc_try_fmt_vid_out,
> + .vidioc_s_fmt_vid_out = coda_vidioc_s_fmt_vid_out,
>
> - .vidioc_reqbufs = vidioc_reqbufs,
> - .vidioc_querybuf = vidioc_querybuf,
> + .vidioc_reqbufs = coda_vidioc_reqbufs,
> + .vidioc_querybuf = coda_vidioc_querybuf,
>
> - .vidioc_qbuf = vidioc_qbuf,
> - .vidioc_expbuf = vidioc_expbuf,
> - .vidioc_dqbuf = vidioc_dqbuf,
> - .vidioc_create_bufs = vidioc_create_bufs,
> + .vidioc_qbuf = coda_vidioc_qbuf,
> + .vidioc_expbuf = coda_vidioc_expbuf,
> + .vidioc_dqbuf = coda_vidioc_dqbuf,
> + .vidioc_create_bufs = coda_vidioc_create_bufs,
>
> - .vidioc_streamon = vidioc_streamon,
> - .vidioc_streamoff = vidioc_streamoff,
> + .vidioc_streamon = coda_vidioc_streamon,
> + .vidioc_streamoff = coda_vidioc_streamoff,
>
> - .vidioc_decoder_cmd = vidioc_decoder_cmd,
> + .vidioc_decoder_cmd = coda_vidioc_decoder_cmd,
>
> - .vidioc_subscribe_event = vidioc_subscribe_event,
> + .vidioc_subscribe_event = coda_vidioc_subscribe_event,
> .vidioc_unsubscribe_event = v4l2_event_unsubscribe,
> };
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 10/10] [media] coda: v4l2-compliance fix: zero pixel format priv field
[not found] ` <1379582036-4840-11-git-send-email-p.zabel@pengutronix.de>
@ 2013-09-30 11:52 ` Hans Verkuil
0 siblings, 0 replies; 5+ messages in thread
From: Hans Verkuil @ 2013-09-30 11:52 UTC (permalink / raw)
To: Philipp Zabel
Cc: linux-media, Mauro Carvalho Chehab, Kamil Debski, Javier Martin,
Hans Verkuil, kernel
On 09/19/2013 11:13 AM, Philipp Zabel wrote:
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> ---
> drivers/media/platform/coda.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/media/platform/coda.c b/drivers/media/platform/coda.c
> index d15238a..6dec34d 100644
> --- a/drivers/media/platform/coda.c
> +++ b/drivers/media/platform/coda.c
> @@ -556,6 +556,7 @@ static int coda_vidioc_g_fmt(struct file *file, void *priv,
>
> f->fmt.pix.sizeimage = q_data->sizeimage;
> f->fmt.pix.colorspace = ctx->colorspace;
> + f->fmt.pix.priv = 0;
This is cleared by the core code, so this isn't necessary.
>
> return 0;
> }
> @@ -613,6 +614,8 @@ static int coda_vidioc_try_fmt(struct coda_ctx *ctx, struct coda_codec *codec,
> BUG();
> }
>
> + f->fmt.pix.priv = 0;
> +
This is the only one that needs to be cleared manually, so this is fine.
Regards,
Hans
> return 0;
> }
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 04/10] [media] coda: fix FMO value setting for CodaDx6
2013-09-30 11:48 ` [PATCH 04/10] [media] coda: fix FMO value setting for CodaDx6 Hans Verkuil
@ 2013-09-30 13:23 ` Philipp Zabel
0 siblings, 0 replies; 5+ messages in thread
From: Philipp Zabel @ 2013-09-30 13:23 UTC (permalink / raw)
To: Hans Verkuil
Cc: linux-media, Mauro Carvalho Chehab, Kamil Debski, Javier Martin,
Hans Verkuil, kernel
Am Montag, den 30.09.2013, 13:48 +0200 schrieb Hans Verkuil:
> On 09/19/2013 11:13 AM, Philipp Zabel wrote:
> > The register is only written on CodaDx6, so the temporary variable
> > to be written only needs to be initialized on CodaDx6.
> >
> > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> > ---
> > drivers/media/platform/coda.c | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/media/platform/coda.c b/drivers/media/platform/coda.c
> > index 53539c1..e8acff3 100644
> > --- a/drivers/media/platform/coda.c
> > +++ b/drivers/media/platform/coda.c
> > @@ -2074,10 +2074,10 @@ static int coda_start_streaming(struct vb2_queue *q, unsigned int count)
> > coda_setup_iram(ctx);
> >
> > if (dst_fourcc == V4L2_PIX_FMT_H264) {
> > - value = (FMO_SLICE_SAVE_BUF_SIZE << 7);
> > - value |= (0 & CODA_FMOPARAM_TYPE_MASK) << CODA_FMOPARAM_TYPE_OFFSET;
> > - value |= 0 & CODA_FMOPARAM_SLICENUM_MASK;
> > if (dev->devtype->product == CODA_DX6) {
> > + value = (FMO_SLICE_SAVE_BUF_SIZE << 7);
> > + value |= (0 & CODA_FMOPARAM_TYPE_MASK) << CODA_FMOPARAM_TYPE_OFFSET;
> > + value |= 0 & CODA_FMOPARAM_SLICENUM_MASK;
>
> 0 & CODA_FMOPARAM_SLICENUM_MASK?
>
> These last two lines evaluate to a nop, so that looks very weird. Is this a bug?
I assume Javier added those for documentation purposes. The newer CODA
cores don't have the FMO configuration anymore. I'll remove the no-op
lines for now if he doesn't mind.
regards
Philipp
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 07/10] [media] coda: prefix v4l2_ioctl_ops with coda_
2013-09-30 11:50 ` [PATCH 07/10] [media] coda: prefix v4l2_ioctl_ops with coda_ Hans Verkuil
@ 2013-09-30 13:23 ` Philipp Zabel
0 siblings, 0 replies; 5+ messages in thread
From: Philipp Zabel @ 2013-09-30 13:23 UTC (permalink / raw)
To: Hans Verkuil
Cc: linux-media, Mauro Carvalho Chehab, Kamil Debski, Javier Martin,
Hans Verkuil, kernel
Am Montag, den 30.09.2013, 13:50 +0200 schrieb Hans Verkuil:
> On 09/19/2013 11:13 AM, Philipp Zabel wrote:
> > Moving the ioctl handler callbacks into the coda namespace helps
> > tremendously to make sense of backtraces.
>
> I like the idea, but I would just use the coda_ prefix, not coda_vidioc_. In general
> the prefix is either vidioc_ or the name of the driver, not both.
Thank you, I'll change this patch (and the following patches)
accordingly.
regards
Philipp
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-09-30 13:24 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1379582036-4840-1-git-send-email-p.zabel@pengutronix.de>
[not found] ` <1379582036-4840-5-git-send-email-p.zabel@pengutronix.de>
2013-09-30 11:48 ` [PATCH 04/10] [media] coda: fix FMO value setting for CodaDx6 Hans Verkuil
2013-09-30 13:23 ` Philipp Zabel
[not found] ` <1379582036-4840-8-git-send-email-p.zabel@pengutronix.de>
2013-09-30 11:50 ` [PATCH 07/10] [media] coda: prefix v4l2_ioctl_ops with coda_ Hans Verkuil
2013-09-30 13:23 ` Philipp Zabel
[not found] ` <1379582036-4840-11-git-send-email-p.zabel@pengutronix.de>
2013-09-30 11:52 ` [PATCH 10/10] [media] coda: v4l2-compliance fix: zero pixel format priv field Hans Verkuil
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox