summaryrefslogtreecommitdiff
path: root/linux
diff options
context:
space:
mode:
Diffstat (limited to 'linux')
-rw-r--r--linux/drivers/media/Kconfig6
-rw-r--r--linux/drivers/media/common/saa7146_core.c2
-rw-r--r--linux/drivers/media/common/saa7146_hlp.c6
-rw-r--r--linux/drivers/media/common/saa7146_video.c9
-rw-r--r--linux/drivers/media/dvb/dvb-core/dvb_ksyms.c5
-rw-r--r--linux/drivers/media/video/mxb.c12
6 files changed, 31 insertions, 9 deletions
diff --git a/linux/drivers/media/Kconfig b/linux/drivers/media/Kconfig
index b0fcbddea..d01c95907 100644
--- a/linux/drivers/media/Kconfig
+++ b/linux/drivers/media/Kconfig
@@ -36,14 +36,14 @@ source "drivers/media/common/Kconfig"
config VIDEO_TUNER
tristate
- default y if VIDEO_BT848=y || VIDEO_SAA7134=y || VIDEO_MXB=y || VIDEO_DPC=y
- default m if VIDEO_BT848=m || VIDEO_SAA7134=m || VIDEO_MXB=m || VIDEO_DPC=m
+ default y if VIDEO_BT848=y || VIDEO_SAA7134=y || VIDEO_MXB=y
+ default m if VIDEO_BT848=m || VIDEO_SAA7134=m || VIDEO_MXB=m
depends on VIDEO_DEV
config VIDEO_BUF
tristate
default y if VIDEO_BT848=y || VIDEO_SAA7134=y || VIDEO_SAA7146=y
- default m if VIDEO_BT848=m || VIDEO_SAA7134=m || VIDEO_SAA7134=m
+ default m if VIDEO_BT848=m || VIDEO_SAA7134=m || VIDEO_SAA7146=m
depends on VIDEO_DEV
config VIDEO_BTCX
diff --git a/linux/drivers/media/common/saa7146_core.c b/linux/drivers/media/common/saa7146_core.c
index 1a2b1886d..385757bab 100644
--- a/linux/drivers/media/common/saa7146_core.c
+++ b/linux/drivers/media/common/saa7146_core.c
@@ -278,7 +278,7 @@ int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent)
memset(dev, 0x0, sizeof(struct saa7146_dev));
DEB_EE(("pci:%p\n",pci));
-
+
if (pci_enable_device(pci)) {
ERR(("pci_enable_device() failed.\n"));
err = -EIO;
diff --git a/linux/drivers/media/common/saa7146_hlp.c b/linux/drivers/media/common/saa7146_hlp.c
index 2659d1cba..a5f374915 100644
--- a/linux/drivers/media/common/saa7146_hlp.c
+++ b/linux/drivers/media/common/saa7146_hlp.c
@@ -962,6 +962,12 @@ void program_capture_engine(struct saa7146_dev *dev, int planar)
unsigned long e_wait = vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? CMD_E_FID_A : CMD_E_FID_B;
unsigned long o_wait = vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? CMD_O_FID_A : CMD_O_FID_B;
+ if( 0 != (dev->ext->ext_vv_data->flags & SAA7146_EXT_SWAP_ODD_EVEN)) {
+ unsigned long tmp = e_wait;
+ e_wait = o_wait;
+ o_wait = tmp;
+ }
+
/* write beginning of rps-program */
count = 0;
diff --git a/linux/drivers/media/common/saa7146_video.c b/linux/drivers/media/common/saa7146_video.c
index 92a76b8d4..eb090eeeb 100644
--- a/linux/drivers/media/common/saa7146_video.c
+++ b/linux/drivers/media/common/saa7146_video.c
@@ -434,20 +434,25 @@ int get_control(struct saa7146_fh *fh, struct v4l2_control *c)
case V4L2_CID_BRIGHTNESS:
value = saa7146_read(dev, BCS_CTRL);
c->value = 0xff & (value >> 24);
+ DEB_D(("V4L2_CID_BRIGHTNESS: %d\n",c->value));
break;
case V4L2_CID_CONTRAST:
value = saa7146_read(dev, BCS_CTRL);
c->value = 0x7f & (value >> 16);
+ DEB_D(("V4L2_CID_CONTRAST: %d\n",c->value));
break;
case V4L2_CID_SATURATION:
value = saa7146_read(dev, BCS_CTRL);
c->value = 0x7f & (value >> 0);
+ DEB_D(("V4L2_CID_SATURATION: %d\n",c->value));
break;
case V4L2_CID_VFLIP:
c->value = vv->vflip;
+ DEB_D(("V4L2_CID_VFLIP: %d\n",c->value));
break;
case V4L2_CID_HFLIP:
c->value = vv->hflip;
+ DEB_D(("V4L2_CID_HFLIP: %d\n",c->value));
break;
default:
return -EINVAL;
@@ -876,7 +881,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
return -EINVAL;
}
- DEB_EE(("VIDIOC_ENUMSTD: type:%d, index:%d\n",f->type,f->index));
+ DEB_EE(("VIDIOC_ENUM_FMT: type:%d, index:%d\n",f->type,f->index));
return 0;
}
case VIDIOC_QUERYCTRL:
@@ -974,6 +979,8 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
struct saa7146_fh *ov_fh = NULL;
+ DEB_EE(("VIDIOC_S_STD\n"));
+
if( 0 != vv->streaming ) {
return -EBUSY;
}
diff --git a/linux/drivers/media/dvb/dvb-core/dvb_ksyms.c b/linux/drivers/media/dvb/dvb-core/dvb_ksyms.c
index a9cf86ba7..b4e9ce7d2 100644
--- a/linux/drivers/media/dvb/dvb-core/dvb_ksyms.c
+++ b/linux/drivers/media/dvb/dvb-core/dvb_ksyms.c
@@ -13,7 +13,10 @@
/* if the miracle happens and "generic_usercopy()" is included into
- the kernel, then this can vanish... */
+ the kernel, then this can vanish. please don't make the mistake and
+ define this as video_usercopy(). this will introduce a dependecy
+ to the v4l "videodev.o" module, which is unnecessary for some
+ cards (ie. the budget dvb-cards don't need the v4l module...) */
int dvb_usercopy(struct inode *inode, struct file *file,
unsigned int cmd, unsigned long arg,
int (*func)(struct inode *inode, struct file *file,
diff --git a/linux/drivers/media/video/mxb.c b/linux/drivers/media/video/mxb.c
index c5a5e6921..b602a1d26 100644
--- a/linux/drivers/media/video/mxb.c
+++ b/linux/drivers/media/video/mxb.c
@@ -177,6 +177,9 @@ struct mxb
int cur_mute; /* current mute status */
};
+static
+struct saa7146_extension extension;
+
static int mxb_vbi_bypass(struct saa7146_dev* dev)
{
struct mxb* mxb = (struct mxb*)dev->ext_priv;
@@ -424,6 +427,12 @@ static int mxb_init_done(struct saa7146_dev* dev)
msg.buf = &saa7740_init[0].data[0];
if( 1 == (err = i2c_transfer(&mxb->i2c_adapter, &msg, 1))) {
+ /* the sound arena module is a pos, that's probably the reason
+ philips refuses to hand out a datasheet for the saa7740...
+ it seems to screw up the i2c bus, so we disable fast irq
+ based i2c transactions here and rely on the slow and safe
+ polling method ... */
+ extension.flags &= ~SAA7146_USE_I2C_IRQ;
for(i = 1;;i++) {
msg.len = saa7740_init[i].length;
if( -1 == msg.len ) {
@@ -1003,9 +1012,6 @@ static struct saa7146_standard standard[] = {
};
static
-struct saa7146_extension extension;
-
-static
struct saa7146_pci_extension_data mxb = {
.ext_priv = "Multimedia eXtension Board",
.ext = &extension,