diff options
Diffstat (limited to 'drivers/media/video/bt8xx')
-rw-r--r-- | drivers/media/video/bt8xx/Kconfig | 5 | ||||
-rw-r--r-- | drivers/media/video/bt8xx/bttv-cards.c | 2 | ||||
-rw-r--r-- | drivers/media/video/bt8xx/bttv-driver.c | 12 | ||||
-rw-r--r-- | drivers/media/video/bt8xx/bttv-i2c.c | 16 |
4 files changed, 33 insertions, 2 deletions
diff --git a/drivers/media/video/bt8xx/Kconfig b/drivers/media/video/bt8xx/Kconfig index cdcf55650714..58eae887a629 100644 --- a/drivers/media/video/bt8xx/Kconfig +++ b/drivers/media/video/bt8xx/Kconfig | |||
@@ -8,7 +8,10 @@ config VIDEO_BT848 | |||
8 | select VIDEO_IR | 8 | select VIDEO_IR |
9 | select VIDEO_TUNER | 9 | select VIDEO_TUNER |
10 | select VIDEO_TVEEPROM | 10 | select VIDEO_TVEEPROM |
11 | select VIDEO_MSP3400 | 11 | select VIDEO_MSP3400 if VIDEO_HELPER_CHIPS_AUTO |
12 | select VIDEO_TVAUDIO if VIDEO_HELPER_CHIPS_AUTO | ||
13 | select VIDEO_TDA7432 if VIDEO_HELPER_CHIPS_AUTO | ||
14 | select VIDEO_TDA9875 if VIDEO_HELPER_CHIPS_AUTO | ||
12 | ---help--- | 15 | ---help--- |
13 | Support for BT848 based frame grabber/overlay boards. This includes | 16 | Support for BT848 based frame grabber/overlay boards. This includes |
14 | the Miro, Hauppauge and STB boards. Please read the material in | 17 | the Miro, Hauppauge and STB boards. Please read the material in |
diff --git a/drivers/media/video/bt8xx/bttv-cards.c b/drivers/media/video/bt8xx/bttv-cards.c index de14818d5cc4..d23a42b1504f 100644 --- a/drivers/media/video/bt8xx/bttv-cards.c +++ b/drivers/media/video/bt8xx/bttv-cards.c | |||
@@ -4991,7 +4991,7 @@ void __devinit bttv_check_chipset(void) | |||
4991 | int pcipci_fail = 0; | 4991 | int pcipci_fail = 0; |
4992 | struct pci_dev *dev = NULL; | 4992 | struct pci_dev *dev = NULL; |
4993 | 4993 | ||
4994 | if (pci_pci_problems & PCIPCI_FAIL) | 4994 | if (pci_pci_problems & (PCIPCI_FAIL|PCIAGP_FAIL)) /* should check if target is AGP */ |
4995 | pcipci_fail = 1; | 4995 | pcipci_fail = 1; |
4996 | if (pci_pci_problems & (PCIPCI_TRITON|PCIPCI_NATOMA|PCIPCI_VIAETBF)) | 4996 | if (pci_pci_problems & (PCIPCI_TRITON|PCIPCI_NATOMA|PCIPCI_VIAETBF)) |
4997 | triton1 = 1; | 4997 | triton1 = 1; |
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c index 20dff7c316eb..50dde82844ec 100644 --- a/drivers/media/video/bt8xx/bttv-driver.c +++ b/drivers/media/video/bt8xx/bttv-driver.c | |||
@@ -2431,6 +2431,14 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file, | |||
2431 | fbuf->bytesperline = btv->fbuf.fmt.bytesperline; | 2431 | fbuf->bytesperline = btv->fbuf.fmt.bytesperline; |
2432 | if (fh->ovfmt) | 2432 | if (fh->ovfmt) |
2433 | fbuf->depth = fh->ovfmt->depth; | 2433 | fbuf->depth = fh->ovfmt->depth; |
2434 | else { | ||
2435 | if (fbuf->width) | ||
2436 | fbuf->depth = ((fbuf->bytesperline<<3) | ||
2437 | + (fbuf->width-1) ) | ||
2438 | /fbuf->width; | ||
2439 | else | ||
2440 | fbuf->depth = 0; | ||
2441 | } | ||
2434 | return 0; | 2442 | return 0; |
2435 | } | 2443 | } |
2436 | case VIDIOCSFBUF: | 2444 | case VIDIOCSFBUF: |
@@ -4186,6 +4194,7 @@ static void __devexit bttv_remove(struct pci_dev *pci_dev) | |||
4186 | return; | 4194 | return; |
4187 | } | 4195 | } |
4188 | 4196 | ||
4197 | #ifdef CONFIG_PM | ||
4189 | static int bttv_suspend(struct pci_dev *pci_dev, pm_message_t state) | 4198 | static int bttv_suspend(struct pci_dev *pci_dev, pm_message_t state) |
4190 | { | 4199 | { |
4191 | struct bttv *btv = pci_get_drvdata(pci_dev); | 4200 | struct bttv *btv = pci_get_drvdata(pci_dev); |
@@ -4266,6 +4275,7 @@ static int bttv_resume(struct pci_dev *pci_dev) | |||
4266 | spin_unlock_irqrestore(&btv->s_lock,flags); | 4275 | spin_unlock_irqrestore(&btv->s_lock,flags); |
4267 | return 0; | 4276 | return 0; |
4268 | } | 4277 | } |
4278 | #endif | ||
4269 | 4279 | ||
4270 | static struct pci_device_id bttv_pci_tbl[] = { | 4280 | static struct pci_device_id bttv_pci_tbl[] = { |
4271 | {PCI_VENDOR_ID_BROOKTREE, PCI_DEVICE_ID_BT848, | 4281 | {PCI_VENDOR_ID_BROOKTREE, PCI_DEVICE_ID_BT848, |
@@ -4286,8 +4296,10 @@ static struct pci_driver bttv_pci_driver = { | |||
4286 | .id_table = bttv_pci_tbl, | 4296 | .id_table = bttv_pci_tbl, |
4287 | .probe = bttv_probe, | 4297 | .probe = bttv_probe, |
4288 | .remove = __devexit_p(bttv_remove), | 4298 | .remove = __devexit_p(bttv_remove), |
4299 | #ifdef CONFIG_PM | ||
4289 | .suspend = bttv_suspend, | 4300 | .suspend = bttv_suspend, |
4290 | .resume = bttv_resume, | 4301 | .resume = bttv_resume, |
4302 | #endif | ||
4291 | }; | 4303 | }; |
4292 | 4304 | ||
4293 | static int bttv_init_module(void) | 4305 | static int bttv_init_module(void) |
diff --git a/drivers/media/video/bt8xx/bttv-i2c.c b/drivers/media/video/bt8xx/bttv-i2c.c index 0dfbcc85ebb9..70de6c96e201 100644 --- a/drivers/media/video/bt8xx/bttv-i2c.c +++ b/drivers/media/video/bt8xx/bttv-i2c.c | |||
@@ -8,6 +8,9 @@ | |||
8 | & Marcus Metzler (mocm@thp.uni-koeln.de) | 8 | & Marcus Metzler (mocm@thp.uni-koeln.de) |
9 | (c) 1999-2003 Gerd Knorr <kraxel@bytesex.org> | 9 | (c) 1999-2003 Gerd Knorr <kraxel@bytesex.org> |
10 | 10 | ||
11 | (c) 2005 Mauro Carvalho Chehab <mchehab@infradead.org> | ||
12 | - Multituner support and i2c address binding | ||
13 | |||
11 | This program is free software; you can redistribute it and/or modify | 14 | This program is free software; you can redistribute it and/or modify |
12 | it under the terms of the GNU General Public License as published by | 15 | it under the terms of the GNU General Public License as published by |
13 | the Free Software Foundation; either version 2 of the License, or | 16 | the Free Software Foundation; either version 2 of the License, or |
@@ -45,10 +48,18 @@ static int i2c_debug; | |||
45 | static int i2c_hw; | 48 | static int i2c_hw; |
46 | static int i2c_scan; | 49 | static int i2c_scan; |
47 | module_param(i2c_debug, int, 0644); | 50 | module_param(i2c_debug, int, 0644); |
51 | MODULE_PARM_DESC(i2c_hw,"configure i2c debug level"); | ||
48 | module_param(i2c_hw, int, 0444); | 52 | module_param(i2c_hw, int, 0444); |
53 | MODULE_PARM_DESC(i2c_hw,"force use of hardware i2c support, " | ||
54 | "instead of software bitbang"); | ||
49 | module_param(i2c_scan, int, 0444); | 55 | module_param(i2c_scan, int, 0444); |
50 | MODULE_PARM_DESC(i2c_scan,"scan i2c bus at insmod time"); | 56 | MODULE_PARM_DESC(i2c_scan,"scan i2c bus at insmod time"); |
51 | 57 | ||
58 | static unsigned int i2c_udelay = 5; | ||
59 | module_param(i2c_udelay, int, 0444); | ||
60 | MODULE_PARM_DESC(i2c_udelay,"soft i2c delay at insmod time, in usecs " | ||
61 | "(should be 5 or higher). Lower value means higher bus speed."); | ||
62 | |||
52 | /* ----------------------------------------------------------------------- */ | 63 | /* ----------------------------------------------------------------------- */ |
53 | /* I2C functions - bitbanging adapter (software i2c) */ | 64 | /* I2C functions - bitbanging adapter (software i2c) */ |
54 | 65 | ||
@@ -425,6 +436,11 @@ int __devinit init_bttv_i2c(struct bttv *btv) | |||
425 | sizeof(bttv_i2c_adap_hw_template)); | 436 | sizeof(bttv_i2c_adap_hw_template)); |
426 | } else { | 437 | } else { |
427 | /* bt848 */ | 438 | /* bt848 */ |
439 | /* Prevents usage of invalid delay values */ | ||
440 | if (i2c_udelay<5) | ||
441 | i2c_udelay=5; | ||
442 | bttv_i2c_algo_bit_template.udelay=i2c_udelay; | ||
443 | |||
428 | memcpy(&btv->c.i2c_adap, &bttv_i2c_adap_sw_template, | 444 | memcpy(&btv->c.i2c_adap, &bttv_i2c_adap_sw_template, |
429 | sizeof(bttv_i2c_adap_sw_template)); | 445 | sizeof(bttv_i2c_adap_sw_template)); |
430 | memcpy(&btv->i2c_algo, &bttv_i2c_algo_bit_template, | 446 | memcpy(&btv->i2c_algo, &bttv_i2c_algo_bit_template, |