[media] cx23885: fix VBI support
authorHans Verkuil <hans.verkuil@cisco.com>
Sat, 20 Sep 2014 13:19:32 +0000 (10:19 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Sun, 21 Sep 2014 23:41:34 +0000 (20:41 -0300)
Tested VBI support and discovered that the wrong offset was used.
After this change it is now working. Verified with CC/XDS for NTSC
and WSS/Teletext on PAL.

It also reported the wrong start lines for the second field. That's
now fixed as well.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/pci/cx23885/cx23885-core.c
drivers/media/pci/cx23885/cx23885-vbi.c

index cb94366b95042fe1a010bf83d8579bf9b4b2c498..331eddac7222ae7f62fb757148f90c8881b5ef4c 100644 (file)
@@ -1228,11 +1228,11 @@ int cx23885_risc_vbibuffer(struct pci_dev *pci, struct cx23885_riscmem *risc,
        /* Sync to line 6, so US CC line 21 will appear in line '12'
         * in the userland vbi payload */
        if (UNSET != top_offset)
-               rp = cx23885_risc_field(rp, sglist, top_offset, 6,
+               rp = cx23885_risc_field(rp, sglist, top_offset, 0,
                                        bpl, padding, lines, 0, true);
 
        if (UNSET != bottom_offset)
-               rp = cx23885_risc_field(rp, sglist, bottom_offset, 0x207,
+               rp = cx23885_risc_field(rp, sglist, bottom_offset, 0x200,
                                        bpl, padding, lines, 0, UNSET == top_offset);
 
 
index 67b71f9b41f422bd9fa64b3803416079fffb4f74..a7c6ef8f3ea3a7f1e96ce9a7642e3056ea27543c 100644 (file)
@@ -54,14 +54,14 @@ int cx23885_vbi_fmt(struct file *file, void *priv,
        f->fmt.vbi.flags = 0;
        if (dev->tvnorm & V4L2_STD_525_60) {
                /* ntsc */
-               f->fmt.vbi.start[0] = 10;
-               f->fmt.vbi.start[1] = 272;
+               f->fmt.vbi.start[0] = V4L2_VBI_ITU_525_F1_START + 9;
+               f->fmt.vbi.start[1] = V4L2_VBI_ITU_525_F2_START + 9;
                f->fmt.vbi.count[0] = VBI_NTSC_LINE_COUNT;
                f->fmt.vbi.count[1] = VBI_NTSC_LINE_COUNT;
        } else if (dev->tvnorm & V4L2_STD_625_50) {
                /* pal */
-               f->fmt.vbi.start[0] = 6;
-               f->fmt.vbi.start[1] = 318;
+               f->fmt.vbi.start[0] = V4L2_VBI_ITU_625_F1_START + 5;
+               f->fmt.vbi.start[1] = V4L2_VBI_ITU_625_F2_START + 5;
                f->fmt.vbi.count[0] = VBI_PAL_LINE_COUNT;
                f->fmt.vbi.count[1] = VBI_PAL_LINE_COUNT;
        }