summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video
diff options
context:
space:
mode:
authorGerd Knorr <devnull@localhost>2004-03-25 13:00:12 +0000
committerGerd Knorr <devnull@localhost>2004-03-25 13:00:12 +0000
commit8e0a7f2f9d3ab36712439a68d4c41795925a9c1a (patch)
treedb14ef51c8cfa99654bbf717da731bb66c6a277f /linux/drivers/media/video
parenta86e858dc8f1ce0188c0f87671c49e2a808962fc (diff)
downloadmediapointer-dvb-s2-8e0a7f2f9d3ab36712439a68d4c41795925a9c1a.tar.gz
mediapointer-dvb-s2-8e0a7f2f9d3ab36712439a68d4c41795925a9c1a.tar.bz2
- cx88 vbi fixes by Tom Zoerner
Diffstat (limited to 'linux/drivers/media/video')
-rw-r--r--linux/drivers/media/video/bttv-driver.c4
-rw-r--r--linux/drivers/media/video/cx88/cx88-vbi.c8
-rw-r--r--linux/drivers/media/video/cx88/cx88-video.c12
-rw-r--r--linux/drivers/media/video/cx88/cx88.h2
-rw-r--r--linux/drivers/media/video/saa7134/saa7134-core.c2
5 files changed, 15 insertions, 13 deletions
diff --git a/linux/drivers/media/video/bttv-driver.c b/linux/drivers/media/video/bttv-driver.c
index ffedaf051..39b1c3672 100644
--- a/linux/drivers/media/video/bttv-driver.c
+++ b/linux/drivers/media/video/bttv-driver.c
@@ -3401,7 +3401,8 @@ bttv_irq_switch_fields(struct bttv *btv)
rc = btread(BT848_RISC_COUNT);
if (rc < btv->main.dma || rc > btv->main.dma + 0x100) {
btv->framedrop++;
- if (irq_debug)
+ if (irq_debug) {
+ // TODO: dump_stack(); experiments
printk("bttv%d: skipped frame. no signal? high irq latency? "
"[main=%lx,o_vbi=%lx,o_field=%lx,rc=%lx]\n",
btv->c.nr,
@@ -3409,6 +3410,7 @@ bttv_irq_switch_fields(struct bttv *btv)
(unsigned long)btv->main.cpu[RISC_SLOT_O_VBI+1],
(unsigned long)btv->main.cpu[RISC_SLOT_O_FIELD+1],
(unsigned long)rc);
+ }
spin_unlock(&btv->s_lock);
return;
}
diff --git a/linux/drivers/media/video/cx88/cx88-vbi.c b/linux/drivers/media/video/cx88/cx88-vbi.c
index b1221fa7f..3b066a1fd 100644
--- a/linux/drivers/media/video/cx88/cx88-vbi.c
+++ b/linux/drivers/media/video/cx88/cx88-vbi.c
@@ -32,16 +32,16 @@ void cx8800_vbi_fmt(struct cx8800_dev *dev, struct v4l2_format *f)
case V4L2_STD_NTSC_M:
case V4L2_STD_NTSC_M_JP:
f->fmt.vbi.sampling_rate = 28636363;
- f->fmt.vbi.start[0] = 10;
- f->fmt.vbi.start[1] = 273;
+ f->fmt.vbi.start[0] = 10 -1;
+ f->fmt.vbi.start[1] = 273 -1;
break;
case V4L2_STD_PAL_BG:
case V4L2_STD_PAL_DK:
case V4L2_STD_PAL_I:
case V4L2_STD_SECAM:
f->fmt.vbi.sampling_rate = 35468950;
- f->fmt.vbi.start[0] = 7;
- f->fmt.vbi.start[1] = 319;
+ f->fmt.vbi.start[0] = 7 -1;
+ f->fmt.vbi.start[1] = 319 -1;
}
}
diff --git a/linux/drivers/media/video/cx88/cx88-video.c b/linux/drivers/media/video/cx88/cx88-video.c
index a56c7e90d..f35b43894 100644
--- a/linux/drivers/media/video/cx88/cx88-video.c
+++ b/linux/drivers/media/video/cx88/cx88-video.c
@@ -137,7 +137,7 @@ static unsigned int inline norm_htotal(struct cx8800_tvnorm *norm)
static unsigned int inline norm_vbipack(struct cx8800_tvnorm *norm)
{
- return (norm->id & V4L2_STD_625_50) ? 255 : 144;
+ return (norm->id & V4L2_STD_625_50) ? 511 : 288;
}
static struct cx8800_tvnorm tvnorms[] = {
@@ -585,8 +585,8 @@ static int set_tvnorm(struct cx8800_dev *dev, struct cx8800_tvnorm *norm)
cx_write(MO_HTOTAL, htotal);
// vbi stuff
- cx_write(MO_VBI_PACKET, ( (1 << 11) | /* (norm_vdelay(norm) << 11) | */
- (norm_vbipack(norm) << 0) ));
+ cx_write(MO_VBI_PACKET, ((1 << 11) | /* (norm_vdelay(norm) << 11) | */
+ norm_vbipack(norm)));
// audio
set_tvaudio(dev);
@@ -1559,9 +1559,9 @@ static int video_do_ioctl(struct inode *inode, struct file *file,
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_READWRITE |
V4L2_CAP_STREAMING |
+ V4L2_CAP_VBI_CAPTURE |
#if 0
V4L2_CAP_VIDEO_OVERLAY |
- V4L2_CAP_VBI_CAPTURE |
#endif
0;
if (UNSET != dev->tuner_type)
@@ -2058,7 +2058,7 @@ static void cx8800_vid_irq(struct cx8800_dev *dev)
}
/* risc1 vbi */
- if (status & 0x04) {
+ if (status & 0x08) {
spin_lock(&dev->slock);
count = cx_read(MO_VBI_GPCNT);
cx8800_wakeup(dev, &dev->vbiq, count);
@@ -2074,7 +2074,7 @@ static void cx8800_vid_irq(struct cx8800_dev *dev)
}
/* risc2 vbi */
- if (status & 0x40) {
+ if (status & 0x80) {
dprintk(2,"stopper vbi\n");
spin_lock(&dev->slock);
cx8800_restart_vbi_queue(dev,&dev->vbiq);
diff --git a/linux/drivers/media/video/cx88/cx88.h b/linux/drivers/media/video/cx88/cx88.h
index 766c8eb04..f06178e5a 100644
--- a/linux/drivers/media/video/cx88/cx88.h
+++ b/linux/drivers/media/video/cx88/cx88.h
@@ -67,7 +67,7 @@
#define FORMAT_FLAGS_PACKED 0x01
#define FORMAT_FLAGS_PLANAR 0x02
-#define VBI_LINE_COUNT 16
+#define VBI_LINE_COUNT 17
#define VBI_LINE_LENGTH 2048
/* need "shadow" registers for some write-only ones ... */
diff --git a/linux/drivers/media/video/saa7134/saa7134-core.c b/linux/drivers/media/video/saa7134/saa7134-core.c
index d1ee34e29..46ddadbc6 100644
--- a/linux/drivers/media/video/saa7134/saa7134-core.c
+++ b/linux/drivers/media/video/saa7134/saa7134-core.c
@@ -101,7 +101,7 @@ unsigned int saa7134_devcount;
/* debug help functions */
static const char *v4l1_ioctls[] = {
- "0", "CGAP", "GCHAN", "SCHAN", "GTUNER", "STUNER", "GPICT", "SPICT",
+ "0", "GCAP", "GCHAN", "SCHAN", "GTUNER", "STUNER", "GPICT", "SPICT",
"CCAPTURE", "GWIN", "SWIN", "GFBUF", "SFBUF", "KEY", "GFREQ",
"SFREQ", "GAUDIO", "SAUDIO", "SYNC", "MCAPTURE", "GMBUF", "GUNIT",
"GCAPTURE", "SCAPTURE", "SPLAYMODE", "SWRITEMODE", "GPLAYINFO",