V4L/DVB (9969): tvp5150: add support for VIDIOC_G_CHIP_IDENT ioctl
authorMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 22 Dec 2008 23:34:18 +0000 (20:34 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 30 Dec 2008 11:39:33 +0000 (09:39 -0200)
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/tvp5150.c
include/media/v4l2-chip-ident.h

index e8a4637..a388a9f 100644 (file)
@@ -12,6 +12,7 @@
 #include <media/v4l2-device.h>
 #include <media/tvp5150.h>
 #include <media/v4l2-i2c-drv-legacy.h>
+#include <media/v4l2-chip-ident.h>
 
 #include "tvp5150_reg.h"
 
@@ -961,6 +962,20 @@ static int tvp5150_g_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt)
 }
 
 
+static int tvp5150_g_chip_ident(struct v4l2_subdev *sd,
+                               struct v4l2_chip_ident *chip)
+{
+       int rev;
+       struct i2c_client *client = v4l2_get_subdevdata(sd);
+
+       rev = tvp5150_read(sd, TVP5150_ROM_MAJOR_VER) << 8 |
+             tvp5150_read(sd, TVP5150_ROM_MINOR_VER);
+
+       return v4l2_chip_ident_i2c_client(client, chip, V4L2_IDENT_TVP5150,
+                                         rev);
+}
+
+
 #ifdef CONFIG_VIDEO_ADV_DEBUG
 static int tvp5150_g_register(struct v4l2_subdev *sd, struct v4l2_register *reg)
 {
@@ -1026,6 +1041,7 @@ static const struct v4l2_subdev_core_ops tvp5150_core_ops = {
        .s_ctrl = tvp5150_s_ctrl,
        .queryctrl = tvp5150_queryctrl,
        .reset = tvp5150_reset,
+       .g_chip_ident = tvp5150_g_chip_ident,
 #ifdef CONFIG_VIDEO_ADV_DEBUG
        .g_register = tvp5150_g_register,
        .s_register = tvp5150_s_register,
index bfe5142..e3e5b53 100644 (file)
@@ -70,6 +70,9 @@ enum {
        /* module vp27smpx: just ident 2700 */
        V4L2_IDENT_VP27SMPX = 2700,
 
+       /* module tvp5150 */
+       V4L2_IDENT_TVP5150 = 5150,
+
        /* module cs5345: just ident 5345 */
        V4L2_IDENT_CS5345 = 5345,