- patches.arch/x86_mce_intel_decode_physical_address.patch:
[linux-flexiantxendom0-3.2.10.git] / drivers / media / video / cx25840 / cx25840-vbi.c
index 35f6592..64a4004 100644 (file)
@@ -82,11 +82,10 @@ static int decode_vps(u8 * dst, u8 * p)
        return err & 0xf0;
 }
 
-int cx25840_vbi_g_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt)
+int cx25840_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *svbi)
 {
        struct i2c_client *client = v4l2_get_subdevdata(sd);
        struct cx25840_state *state = to_state(sd);
-       struct v4l2_sliced_vbi_format *svbi;
        static const u16 lcr2vbi[] = {
                0, V4L2_SLICED_TELETEXT_B, 0,   /* 1 */
                0, V4L2_SLICED_WSS_625, 0,      /* 4 */
@@ -97,9 +96,6 @@ int cx25840_vbi_g_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt)
        int is_pal = !(state->std & V4L2_STD_525_60);
        int i;
 
-       if (fmt->type != V4L2_BUF_TYPE_SLICED_VBI_CAPTURE)
-               return -EINVAL;
-       svbi = &fmt->fmt.sliced;
        memset(svbi, 0, sizeof(*svbi));
        /* we're done if raw VBI is active */
        if ((cx25840_read(client, 0x404) & 0x10) == 0)
@@ -127,32 +123,30 @@ int cx25840_vbi_g_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt)
        return 0;
 }
 
-int cx25840_vbi_s_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt)
+int cx25840_s_raw_fmt(struct v4l2_subdev *sd, struct v4l2_vbi_format *fmt)
 {
        struct i2c_client *client = v4l2_get_subdevdata(sd);
        struct cx25840_state *state = to_state(sd);
-       struct v4l2_sliced_vbi_format *svbi;
        int is_pal = !(state->std & V4L2_STD_525_60);
        int vbi_offset = is_pal ? 1 : 0;
-       int i, x;
-       u8 lcr[24];
 
-       if (fmt->type != V4L2_BUF_TYPE_SLICED_VBI_CAPTURE &&
-                       fmt->type != V4L2_BUF_TYPE_VBI_CAPTURE)
-               return -EINVAL;
-       svbi = &fmt->fmt.sliced;
-       if (fmt->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
-               /* raw VBI */
-               memset(svbi, 0, sizeof(*svbi));
+       /* Setup standard */
+       cx25840_std_setup(client);
 
-               /* Setup standard */
-               cx25840_std_setup(client);
+       /* VBI Offset */
+       cx25840_write(client, 0x47f, vbi_offset);
+       cx25840_write(client, 0x404, 0x2e);
+       return 0;
+}
 
-               /* VBI Offset */
-               cx25840_write(client, 0x47f, vbi_offset);
-               cx25840_write(client, 0x404, 0x2e);
-               return 0;
-       }
+int cx25840_s_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *svbi)
+{
+       struct i2c_client *client = v4l2_get_subdevdata(sd);
+       struct cx25840_state *state = to_state(sd);
+       int is_pal = !(state->std & V4L2_STD_525_60);
+       int vbi_offset = is_pal ? 1 : 0;
+       int i, x;
+       u8 lcr[24];
 
        for (x = 0; x <= 23; x++)
                lcr[x] = 0x00;