V4L/DVB (12242): mt9v011: implement core->s_config to allow adjusting xtal frequency
authorMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 14 Jul 2009 06:14:21 +0000 (03:14 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 24 Jul 2009 17:03:25 +0000 (14:03 -0300)
Since frames per second is a function of cristal frequency, and this is
device-specific, add a function that allows adjusting it, via
subdev->core->s_config callback.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/mt9v011.c

index d7b15dd836e68f69db7b80c7172898b19a6bc7f7..b2260de645f0c16855dfd31ac8aa4b296a05f34f 100644 (file)
@@ -340,6 +340,22 @@ static int mt9v011_s_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt)
        return 0;
 }
 
+static int mt9v011_s_config(struct v4l2_subdev *sd, int dumb, void *data)
+{
+       struct mt9v011 *core = to_mt9v011(sd);
+       unsigned *xtal = data;
+
+       v4l2_dbg(1, debug, sd, "s_config called\n");
+
+       if (xtal) {
+               core->xtal = *xtal;
+               v4l2_dbg(1, debug, sd, "xtal set to %d.%03d MHz\n",
+                        *xtal / 1000000, (*xtal / 1000) % 1000);
+       }
+
+       return 0;
+}
+
 
 #ifdef CONFIG_VIDEO_ADV_DEBUG
 static int mt9v011_g_register(struct v4l2_subdev *sd,
@@ -388,6 +404,7 @@ static const struct v4l2_subdev_core_ops mt9v011_core_ops = {
        .g_ctrl = mt9v011_g_ctrl,
        .s_ctrl = mt9v011_s_ctrl,
        .reset = mt9v011_reset,
+       .s_config = mt9v011_s_config,
        .g_chip_ident = mt9v011_g_chip_ident,
 #ifdef CONFIG_VIDEO_ADV_DEBUG
        .g_register = mt9v011_g_register,