Re: [PATCH] media: i2c: tvp514x: add support for asynchronous probing

From: Hans Verkuil
Date: Mon Jun 24 2013 - 04:39:58 EST


On Mon June 24 2013 10:24:02 Prabhakar Lad wrote:
> Hi Hans,
>
> On Mon, Jun 24, 2013 at 12:41 PM, Hans Verkuil <hverkuil@xxxxxxxxx> wrote:
> > On Sun June 23 2013 17:48:20 Prabhakar Lad wrote:
> >> Hi Guennadi,
> >>
> >> Thanks for the review.
> >>
> >> On Sun, Jun 23, 2013 at 8:49 PM, Guennadi Liakhovetski
> >> <g.liakhovetski@xxxxxx> wrote:
> >> > On Sat, 22 Jun 2013, Prabhakar Lad wrote:
> >> >
> >> >> From: "Lad, Prabhakar" <prabhakar.csengg@xxxxxxxxx>
> >> >>
> >> >> Both synchronous and asynchronous tvp514x subdevice probing is supported by
> >> >> this patch.
> >> >>
> >> >> Signed-off-by: Prabhakar Lad <prabhakar.csengg@xxxxxxxxx>
> >> >> Cc: Guennadi Liakhovetski <g.liakhovetski@xxxxxx>
> >> >> Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
> >> >> Cc: Hans Verkuil <hverkuil@xxxxxxxxx>
> >> >> Cc: Sakari Ailus <sakari.ailus@xxxxxx>
> >> >> Cc: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>
> >> >> ---
> >> >> drivers/media/i2c/tvp514x.c | 22 +++++++++++++++-------
> >> >> 1 file changed, 15 insertions(+), 7 deletions(-)
> >> >>
> >> >> diff --git a/drivers/media/i2c/tvp514x.c b/drivers/media/i2c/tvp514x.c
> >> >> index 864eb14..d090caf 100644
> >> >> --- a/drivers/media/i2c/tvp514x.c
> >> >> +++ b/drivers/media/i2c/tvp514x.c
> >> >> @@ -36,6 +36,7 @@
> >> >> #include <linux/module.h>
> >> >> #include <linux/v4l2-mediabus.h>
> >> >>
> >> >> +#include <media/v4l2-async.h>
> >> >> #include <media/v4l2-device.h>
> >> >> #include <media/v4l2-common.h>
> >> >> #include <media/v4l2-mediabus.h>
> >> >
> >> > Ok, but this one really does too many things in one patch:
> >> >
> >> >> @@ -1148,9 +1149,9 @@ tvp514x_probe(struct i2c_client *client, const struct i2c_device_id *id)
> >> >> /* Register with V4L2 layer as slave device */
> >> >> sd = &decoder->sd;
> >> >> v4l2_i2c_subdev_init(sd, client, &tvp514x_ops);
> >> >> - strlcpy(sd->name, TVP514X_MODULE_NAME, sizeof(sd->name));
> >> >>
> >> >> #if defined(CONFIG_MEDIA_CONTROLLER)
> >> >> + strlcpy(sd->name, TVP514X_MODULE_NAME, sizeof(sd->name));
> >> >
> >> > This is unrelated
> >> >
> >> OK I'll split the patch or may be a line in a commit message can do ?
> >
> > Please split it up in two patches.
> >
> > Why is sd->name set anyway? And why is it moved under CONFIG_MEDIA_CONTROLLER?
> > It's not obvious to me.
> >
> while using tvp514x subdev with media controller based drivers, when we
> enumerate entities (MEDIA_IOC_ENUM_ENTITIES) to get the index id
> of the entity we compare the entity name with "tvp514x", So I moved it
> under CONFIG_MEDIA_CONTROLLER config. I hope you are OK with
> moving this in a separate patch.

Sorry, but this approach is wrong. sd->name must be a unique name, so manually
setting sd->name will fail if you have two tvp514x devices.

There is no reason to override sd->name here, and it is actually a bug. I see
that tvp7002 has the same problem (and a bunch of others as well).

When trying to find a tvp514x you can just use strstr() in your application.
That will work all the time as long as there is only one tvp514x.

Regards,

Hans
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/