|
@@ -129,10 +129,10 @@ static int decode_vps(u8 *dst, u8 *p)
|
|
|
return err & 0xf0;
|
|
|
}
|
|
|
|
|
|
-int cx18_av_vbi_g_fmt(struct cx18 *cx, struct v4l2_format *fmt)
|
|
|
+int cx18_av_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *svbi)
|
|
|
{
|
|
|
+ struct cx18 *cx = v4l2_get_subdevdata(sd);
|
|
|
struct cx18_av_state *state = &cx->av_state;
|
|
|
- struct v4l2_sliced_vbi_format *svbi;
|
|
|
static const u16 lcr2vbi[] = {
|
|
|
0, V4L2_SLICED_TELETEXT_B, 0, /* 1 */
|
|
|
0, V4L2_SLICED_WSS_625, 0, /* 4 */
|
|
@@ -143,9 +143,6 @@ int cx18_av_vbi_g_fmt(struct cx18 *cx, 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 ((cx18_av_read(cx, 0x404) & 0x10) == 0)
|
|
@@ -173,30 +170,27 @@ int cx18_av_vbi_g_fmt(struct cx18 *cx, struct v4l2_format *fmt)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int cx18_av_vbi_s_fmt(struct cx18 *cx, struct v4l2_format *fmt)
|
|
|
+int cx18_av_s_raw_fmt(struct v4l2_subdev *sd, struct v4l2_vbi_format *fmt)
|
|
|
{
|
|
|
+ struct cx18 *cx = v4l2_get_subdevdata(sd);
|
|
|
struct cx18_av_state *state = &cx->av_state;
|
|
|
- struct v4l2_sliced_vbi_format *svbi;
|
|
|
- int is_pal = !(state->std & V4L2_STD_525_60);
|
|
|
- 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 */
|
|
|
+ cx18_av_std_setup(cx);
|
|
|
|
|
|
- /* Setup standard */
|
|
|
- cx18_av_std_setup(cx);
|
|
|
+ /* VBI Offset */
|
|
|
+ cx18_av_write(cx, 0x47f, state->slicer_line_delay);
|
|
|
+ cx18_av_write(cx, 0x404, 0x2e);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
|
|
|
- /* VBI Offset */
|
|
|
- cx18_av_write(cx, 0x47f, state->slicer_line_delay);
|
|
|
- cx18_av_write(cx, 0x404, 0x2e);
|
|
|
- return 0;
|
|
|
- }
|
|
|
+int cx18_av_s_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *svbi)
|
|
|
+{
|
|
|
+ struct cx18 *cx = v4l2_get_subdevdata(sd);
|
|
|
+ struct cx18_av_state *state = &cx->av_state;
|
|
|
+ int is_pal = !(state->std & V4L2_STD_525_60);
|
|
|
+ int i, x;
|
|
|
+ u8 lcr[24];
|
|
|
|
|
|
for (x = 0; x <= 23; x++)
|
|
|
lcr[x] = 0x00;
|