diff options
Diffstat (limited to 'linux')
-rw-r--r-- | linux/drivers/media/Kconfig | 6 | ||||
-rw-r--r-- | linux/drivers/media/common/saa7146_core.c | 2 | ||||
-rw-r--r-- | linux/drivers/media/common/saa7146_hlp.c | 6 | ||||
-rw-r--r-- | linux/drivers/media/common/saa7146_video.c | 9 | ||||
-rw-r--r-- | linux/drivers/media/dvb/dvb-core/dvb_ksyms.c | 5 | ||||
-rw-r--r-- | linux/drivers/media/video/mxb.c | 12 |
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, |