Merge master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb

* master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb:
V4L/DVB (4712): Fix warning when compiling on x86_i64
V4L/DVB (4711): Radio: No need to return void
V4L/DVB (4708): Add tveeprom support for Philips FM1236/FM1216ME MK5
V4L/DVB (4707): 4linux: complete conversion to hotplug safe PCI API
V4L/DVB (4706): Do not enable VIDEO_V4L2 unconditionally
V4L/DVB (4704): SAA713x: fixed compile warning in SECAM fixup
V4L/DVB (4703): Add support for the ASUS EUROPA2 OEM board
V4L/DVB (4702): Fix: set antenna input for DVB-T for Asus P7131 Dual hybrid
V4L/DVB (4701): Saa713x audio fixes
V4L/DVB (4676a): Remove Kconfig item for DiB7000M support

+203 -78
+1
Documentation/video4linux/CARDLIST.saa7134
··· 98 97 -> LifeView FlyDVB-S /Acorp TV134DS [5168:0300,4e42:0300] 99 98 -> Proteus Pro 2309 [0919:2003] 100 99 -> AVerMedia TV Hybrid A16AR [1461:2c00]
··· 98 97 -> LifeView FlyDVB-S /Acorp TV134DS [5168:0300,4e42:0300] 99 98 -> Proteus Pro 2309 [0919:2003] 100 99 -> AVerMedia TV Hybrid A16AR [1461:2c00] 101 + 100 -> Asus Europa2 OEM [1043:4860]
+1
drivers/media/Kconfig
··· 54 55 config VIDEO_V4L2 56 bool 57 default y 58 59 source "drivers/media/video/Kconfig"
··· 54 55 config VIDEO_V4L2 56 bool 57 + depends on VIDEO_DEV 58 default y 59 60 source "drivers/media/video/Kconfig"
-1
drivers/media/dvb/dvb-usb/Kconfig
··· 69 config DVB_USB_DIB0700 70 tristate "DiBcom DiB0700 USB DVB devices (see help for supported devices)" 71 depends on DVB_USB 72 - select DVB_DIB7000M 73 select DVB_DIB3000MC 74 select DVB_TUNER_MT2060 75 help
··· 69 config DVB_USB_DIB0700 70 tristate "DiBcom DiB0700 USB DVB devices (see help for supported devices)" 71 depends on DVB_USB 72 select DVB_DIB3000MC 73 select DVB_TUNER_MT2060 74 help
+3 -2
drivers/media/dvb/dvb-usb/usb-urb.c
··· 122 usb_free_stream_buffers(stream); 123 return -ENOMEM; 124 } 125 - deb_mem("buffer %d: %p (dma: %u)\n", 126 - stream->buf_num, stream->buf_list[stream->buf_num], stream->dma_addr[stream->buf_num]); 127 memset(stream->buf_list[stream->buf_num],0,size); 128 stream->state |= USB_STATE_URB_BUF; 129 }
··· 122 usb_free_stream_buffers(stream); 123 return -ENOMEM; 124 } 125 + deb_mem("buffer %d: %p (dma: %Lu)\n", 126 + stream->buf_num, 127 + stream->buf_list[stream->buf_num], (long long)stream->dma_addr[stream->buf_num]); 128 memset(stream->buf_list[stream->buf_num],0,size); 129 stream->state |= USB_STATE_URB_BUF; 130 }
+1 -1
drivers/media/radio/radio-gemtek-pci.c
··· 449 450 static void __exit gemtek_pci_cleanup_module( void ) 451 { 452 - return pci_unregister_driver( &gemtek_pci_driver ); 453 } 454 455 MODULE_AUTHOR( "Vladimir Shebordaev <vshebordaev@mail.ru>" );
··· 449 450 static void __exit gemtek_pci_cleanup_module( void ) 451 { 452 + pci_unregister_driver(&gemtek_pci_driver); 453 } 454 455 MODULE_AUTHOR( "Vladimir Shebordaev <vshebordaev@mail.ru>" );
+35
drivers/media/video/saa7134/saa7134-cards.c
··· 2994 .amux = LINE1, 2995 }, 2996 }, 2997 }; 2998 2999 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); ··· 3625 .subdevice = 0x2c00, 3626 .driver_data = SAA7134_BOARD_AVERMEDIA_A16AR, 3627 },{ 3628 /* --- boards without eeprom + subsystem ID --- */ 3629 .vendor = PCI_VENDOR_ID_PHILIPS, 3630 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, ··· 3905 break; 3906 case SAA7134_BOARD_PHILIPS_EUROPA: 3907 case SAA7134_BOARD_VIDEOMATE_DVBT_300: 3908 /* The Philips EUROPA based hybrid boards have the tuner connected through 3909 * the channel decoder. We have to make it transparent to find it 3910 */
··· 2994 .amux = LINE1, 2995 }, 2996 }, 2997 + [SAA7134_BOARD_ASUS_EUROPA2_HYBRID] = { 2998 + .name = "Asus Europa2 OEM", 2999 + .audio_clock = 0x00187de7, 3000 + .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3, 3001 + .radio_type = UNSET, 3002 + .tuner_addr = ADDR_UNSET, 3003 + .radio_addr = ADDR_UNSET, 3004 + .tda9887_conf = TDA9887_PRESENT| TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE, 3005 + .mpeg = SAA7134_MPEG_DVB, 3006 + .inputs = {{ 3007 + .name = name_tv, 3008 + .vmux = 3, 3009 + .amux = TV, 3010 + .tv = 1, 3011 + },{ 3012 + .name = name_comp1, 3013 + .vmux = 4, 3014 + .amux = LINE2, 3015 + },{ 3016 + .name = name_svideo, 3017 + .vmux = 8, 3018 + .amux = LINE2, 3019 + }}, 3020 + .radio = { 3021 + .name = name_radio, 3022 + .amux = LINE1, 3023 + }, 3024 + }, 3025 }; 3026 3027 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); ··· 3597 .subdevice = 0x2c00, 3598 .driver_data = SAA7134_BOARD_AVERMEDIA_A16AR, 3599 },{ 3600 + .vendor = PCI_VENDOR_ID_PHILIPS, 3601 + .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3602 + .subvendor = 0x1043, 3603 + .subdevice = 0x4860, 3604 + .driver_data = SAA7134_BOARD_ASUS_EUROPA2_HYBRID, 3605 + },{ 3606 /* --- boards without eeprom + subsystem ID --- */ 3607 .vendor = PCI_VENDOR_ID_PHILIPS, 3608 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, ··· 3871 break; 3872 case SAA7134_BOARD_PHILIPS_EUROPA: 3873 case SAA7134_BOARD_VIDEOMATE_DVBT_300: 3874 + case SAA7134_BOARD_ASUS_EUROPA2_HYBRID: 3875 /* The Philips EUROPA based hybrid boards have the tuner connected through 3876 * the channel decoder. We have to make it transparent to find it 3877 */
+42 -2
drivers/media/video/saa7134/saa7134-dvb.c
··· 874 875 /* ------------------------------------------------------------------ */ 876 877 static int lifeview_trio_tuner_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params) 878 { 879 int ret; ··· 1176 &philips_tiger_config, 1177 &dev->i2c_adap); 1178 if (dev->dvb.frontend) { 1179 - dev->dvb.frontend->ops.tuner_ops.init = philips_tiger_tuner_init; 1180 - dev->dvb.frontend->ops.tuner_ops.sleep = philips_tiger_tuner_sleep; 1181 dev->dvb.frontend->ops.tuner_ops.set_params = philips_tiger_tuner_set_params; 1182 } 1183 break; ··· 1268 } 1269 } 1270 break; 1271 default: 1272 printk("%s: Huh? unknown DVB card?\n",dev->name); 1273 break;
··· 874 875 /* ------------------------------------------------------------------ */ 876 877 + static int asus_p7131_dual_tuner_init(struct dvb_frontend *fe) 878 + { 879 + struct saa7134_dev *dev = fe->dvb->priv; 880 + static u8 data[] = { 0x3c, 0x33, 0x6a}; 881 + struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; 882 + 883 + if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1) 884 + return -EIO; 885 + /* make sure the DVB-T antenna input is set */ 886 + saa_setl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0200000); 887 + return 0; 888 + } 889 + 890 + static int asus_p7131_dual_tuner_sleep(struct dvb_frontend *fe) 891 + { 892 + struct saa7134_dev *dev = fe->dvb->priv; 893 + static u8 data[] = { 0x3c, 0x33, 0x68}; 894 + struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; 895 + 896 + i2c_transfer(&dev->i2c_adap, &msg, 1); 897 + philips_tda827xa_tuner_sleep( 0x61, fe); 898 + /* reset antenna inputs for analog usage */ 899 + saa_clearl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0200000); 900 + return 0; 901 + } 902 + 903 + /* ------------------------------------------------------------------ */ 904 + 905 static int lifeview_trio_tuner_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params) 906 { 907 int ret; ··· 1148 &philips_tiger_config, 1149 &dev->i2c_adap); 1150 if (dev->dvb.frontend) { 1151 + dev->dvb.frontend->ops.tuner_ops.init = asus_p7131_dual_tuner_init; 1152 + dev->dvb.frontend->ops.tuner_ops.sleep = asus_p7131_dual_tuner_sleep; 1153 dev->dvb.frontend->ops.tuner_ops.set_params = philips_tiger_tuner_set_params; 1154 } 1155 break; ··· 1240 } 1241 } 1242 break; 1243 + case SAA7134_BOARD_ASUS_EUROPA2_HYBRID: 1244 + dev->dvb.frontend = tda10046_attach(&medion_cardbus, 1245 + &dev->i2c_adap); 1246 + if (dev->dvb.frontend) { 1247 + dev->original_demod_sleep = dev->dvb.frontend->ops.sleep; 1248 + dev->dvb.frontend->ops.sleep = philips_europa_demod_sleep; 1249 + dev->dvb.frontend->ops.tuner_ops.init = philips_fmd1216_tuner_init; 1250 + dev->dvb.frontend->ops.tuner_ops.sleep = philips_fmd1216_tuner_sleep; 1251 + dev->dvb.frontend->ops.tuner_ops.set_params = philips_fmd1216_tuner_set_params; 1252 + } 1253 + break; 1254 + 1255 default: 1256 printk("%s: Huh? unknown DVB card?\n",dev->name); 1257 break;
+41 -54
drivers/media/video/saa7134/saa7134-tvaudio.c
··· 72 int carr; 73 } mainscan[] = { 74 { 75 - .name = "M", 76 - .std = V4L2_STD_NTSC | V4L2_STD_PAL_M, 77 .carr = 4500, 78 },{ 79 - .name = "BG", 80 - .std = V4L2_STD_PAL_BG, 81 .carr = 5500, 82 },{ 83 .name = "I", ··· 85 .carr = 6000, 86 },{ 87 .name = "DKL", 88 - .std = V4L2_STD_PAL_DK | V4L2_STD_SECAM, 89 .carr = 6500, 90 } 91 }; ··· 93 static struct saa7134_tvaudio tvaudio[] = { 94 { 95 .name = "PAL-B/G FM-stereo", 96 - .std = V4L2_STD_PAL, 97 .mode = TVAUDIO_FM_BG_STEREO, 98 .carr1 = 5500, 99 .carr2 = 5742, 100 },{ 101 .name = "PAL-D/K1 FM-stereo", 102 - .std = V4L2_STD_PAL, 103 .carr1 = 6500, 104 .carr2 = 6258, 105 .mode = TVAUDIO_FM_BG_STEREO, 106 },{ 107 .name = "PAL-D/K2 FM-stereo", 108 - .std = V4L2_STD_PAL, 109 .carr1 = 6500, 110 .carr2 = 6742, 111 .mode = TVAUDIO_FM_BG_STEREO, 112 },{ 113 .name = "PAL-D/K3 FM-stereo", 114 - .std = V4L2_STD_PAL, 115 .carr1 = 6500, 116 .carr2 = 5742, 117 .mode = TVAUDIO_FM_BG_STEREO, 118 },{ 119 .name = "PAL-B/G NICAM", 120 - .std = V4L2_STD_PAL, 121 .carr1 = 5500, 122 .carr2 = 5850, 123 .mode = TVAUDIO_NICAM_FM, 124 },{ 125 .name = "PAL-I NICAM", 126 - .std = V4L2_STD_PAL, 127 .carr1 = 6000, 128 .carr2 = 6552, 129 .mode = TVAUDIO_NICAM_FM, 130 },{ 131 .name = "PAL-D/K NICAM", 132 - .std = V4L2_STD_PAL, 133 .carr1 = 6500, 134 .carr2 = 5850, 135 .mode = TVAUDIO_NICAM_FM, 136 },{ 137 .name = "SECAM-L NICAM", 138 - .std = V4L2_STD_SECAM, 139 .carr1 = 6500, 140 .carr2 = 5850, 141 .mode = TVAUDIO_NICAM_AM, 142 },{ 143 - .name = "SECAM-L MONO", 144 - .std = V4L2_STD_SECAM, 145 .carr1 = 6500, 146 - .carr2 = -1, 147 - .mode = TVAUDIO_AM_MONO, 148 - },{ 149 - .name = "SECAM-D/K", 150 - .std = V4L2_STD_SECAM, 151 - .carr1 = 6500, 152 - .carr2 = -1, 153 - .mode = TVAUDIO_FM_MONO, 154 - },{ 155 - .name = "NTSC-M", 156 - .std = V4L2_STD_NTSC, 157 - .carr1 = 4500, 158 - .carr2 = -1, 159 - .mode = TVAUDIO_FM_MONO, 160 },{ 161 .name = "NTSC-A2 FM-stereo", 162 .std = V4L2_STD_NTSC, 163 .carr1 = 4500, 164 .carr2 = 4724, 165 .mode = TVAUDIO_FM_K_STEREO, 166 } 167 }; 168 #define TVAUDIO (sizeof(tvaudio)/sizeof(struct saa7134_tvaudio)) ··· 334 saa_writeb(SAA7134_STEREO_DAC_OUTPUT_SELECT, 0xa1); 335 saa_writeb(SAA7134_NICAM_CONFIG, 0x00); 336 break; 337 - case TVAUDIO_AM_MONO: 338 - saa_writeb(SAA7134_DEMODULATOR, 0x12); 339 - saa_writeb(SAA7134_DCXO_IDENT_CTRL, 0x00); 340 - saa_writeb(SAA7134_FM_DEEMPHASIS, 0x44); 341 - saa_writeb(SAA7134_STEREO_DAC_OUTPUT_SELECT, 0xa0); 342 - break; 343 case TVAUDIO_FM_SAT_STEREO: 344 /* not implemented (yet) */ 345 break; ··· 378 } 379 printk("\n"); 380 } 381 - 382 if (dev->tvnorm->id & scan->std) { 383 tvaudio_setcarrier(dev,scan->carr-90,scan->carr-90); 384 saa_readl(SAA7134_LEVEL_READOUT1 >> 2); ··· 413 414 switch (audio->mode) { 415 case TVAUDIO_FM_MONO: 416 - case TVAUDIO_AM_MONO: 417 return V4L2_TUNER_SUB_MONO; 418 case TVAUDIO_FM_K_STEREO: 419 case TVAUDIO_FM_BG_STEREO: ··· 481 482 switch (audio->mode) { 483 case TVAUDIO_FM_MONO: 484 - case TVAUDIO_AM_MONO: 485 /* nothing to do ... */ 486 break; 487 case TVAUDIO_FM_K_STEREO: ··· 541 542 if (1 == nscan) { 543 /* only one candidate -- skip scan ;) */ 544 max1 = 12345; 545 carrier = default_carrier; 546 } else { ··· 589 dev->automute = 0; 590 saa_andorb(SAA7134_STEREO_DAC_OUTPUT_SELECT, 0x30, 0x00); 591 saa7134_tvaudio_setmute(dev); 592 - 593 /* find the exact tv audio norm */ 594 for (audio = UNSET, i = 0; i < TVAUDIO; i++) { 595 if (dev->tvnorm->id != UNSET && ··· 596 continue; 597 if (tvaudio[i].carr1 != carrier) 598 continue; 599 - 600 if (UNSET == audio) 601 audio = i; 602 tvaudio_setmode(dev,&tvaudio[i],"trying"); ··· 611 if (UNSET == audio) 612 continue; 613 tvaudio_setmode(dev,&tvaudio[audio],"using"); 614 tvaudio_setstereo(dev,&tvaudio[audio],V4L2_TUNER_MODE_MONO); 615 dev->tvaudio = &tvaudio[audio]; 616 ··· 736 int mask; 737 struct saa7134_input *in; 738 739 - /* Hac 0506 route OSS sound simultanously */ 740 xbarin = 0x03; 741 switch (dev->input->amux) { 742 case TV: ··· 819 } else { 820 /* (let chip) scan for sound carrier */ 821 norms = 0; 822 - if (dev->tvnorm->id & V4L2_STD_PAL) { 823 - dprintk("PAL scan\n"); 824 - norms |= 0x2c; /* B/G + D/K + I */ 825 - } 826 - if (dev->tvnorm->id & V4L2_STD_NTSC) { 827 - dprintk("NTSC scan\n"); 828 - norms |= 0x40; /* M */ 829 - } 830 - if (dev->tvnorm->id & V4L2_STD_SECAM) { 831 - dprintk("SECAM scan\n"); 832 - norms |= 0x18; /* L + D/K */ 833 - } 834 if (0 == norms) 835 norms = 0x7c; /* all */ 836 dprintk("scanning:%s%s%s%s%s\n", ··· 1017 1018 int saa7134_tvaudio_do_scan(struct saa7134_dev *dev) 1019 { 1020 - if (dev->thread.pid >= 0) { 1021 dev->thread.mode = UNSET; 1022 dev->thread.scan2++; 1023 wake_up_interruptible(&dev->thread.wq);
··· 72 int carr; 73 } mainscan[] = { 74 { 75 + .name = "MN", 76 + .std = V4L2_STD_MN, 77 .carr = 4500, 78 },{ 79 + .name = "BGH", 80 + .std = V4L2_STD_B | V4L2_STD_GH, 81 .carr = 5500, 82 },{ 83 .name = "I", ··· 85 .carr = 6000, 86 },{ 87 .name = "DKL", 88 + .std = V4L2_STD_DK | V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC, 89 .carr = 6500, 90 } 91 }; ··· 93 static struct saa7134_tvaudio tvaudio[] = { 94 { 95 .name = "PAL-B/G FM-stereo", 96 + .std = V4L2_STD_PAL_BG, 97 .mode = TVAUDIO_FM_BG_STEREO, 98 .carr1 = 5500, 99 .carr2 = 5742, 100 },{ 101 .name = "PAL-D/K1 FM-stereo", 102 + .std = V4L2_STD_PAL_DK, 103 .carr1 = 6500, 104 .carr2 = 6258, 105 .mode = TVAUDIO_FM_BG_STEREO, 106 },{ 107 .name = "PAL-D/K2 FM-stereo", 108 + .std = V4L2_STD_PAL_DK, 109 .carr1 = 6500, 110 .carr2 = 6742, 111 .mode = TVAUDIO_FM_BG_STEREO, 112 },{ 113 .name = "PAL-D/K3 FM-stereo", 114 + .std = V4L2_STD_PAL_DK, 115 .carr1 = 6500, 116 .carr2 = 5742, 117 .mode = TVAUDIO_FM_BG_STEREO, 118 },{ 119 .name = "PAL-B/G NICAM", 120 + .std = V4L2_STD_PAL_BG, 121 .carr1 = 5500, 122 .carr2 = 5850, 123 .mode = TVAUDIO_NICAM_FM, 124 },{ 125 .name = "PAL-I NICAM", 126 + .std = V4L2_STD_PAL_I, 127 .carr1 = 6000, 128 .carr2 = 6552, 129 .mode = TVAUDIO_NICAM_FM, 130 },{ 131 .name = "PAL-D/K NICAM", 132 + .std = V4L2_STD_PAL_DK, 133 .carr1 = 6500, 134 .carr2 = 5850, 135 .mode = TVAUDIO_NICAM_FM, 136 },{ 137 .name = "SECAM-L NICAM", 138 + .std = V4L2_STD_SECAM_L, 139 .carr1 = 6500, 140 .carr2 = 5850, 141 .mode = TVAUDIO_NICAM_AM, 142 },{ 143 + .name = "SECAM-D/K NICAM", 144 + .std = V4L2_STD_SECAM_DK, 145 .carr1 = 6500, 146 + .carr2 = 5850, 147 + .mode = TVAUDIO_NICAM_FM, 148 },{ 149 .name = "NTSC-A2 FM-stereo", 150 .std = V4L2_STD_NTSC, 151 .carr1 = 4500, 152 .carr2 = 4724, 153 .mode = TVAUDIO_FM_K_STEREO, 154 + },{ 155 + .name = "NTSC-M", 156 + .std = V4L2_STD_NTSC, 157 + .carr1 = 4500, 158 + .carr2 = -1, 159 + .mode = TVAUDIO_FM_MONO, 160 } 161 }; 162 #define TVAUDIO (sizeof(tvaudio)/sizeof(struct saa7134_tvaudio)) ··· 340 saa_writeb(SAA7134_STEREO_DAC_OUTPUT_SELECT, 0xa1); 341 saa_writeb(SAA7134_NICAM_CONFIG, 0x00); 342 break; 343 case TVAUDIO_FM_SAT_STEREO: 344 /* not implemented (yet) */ 345 break; ··· 390 } 391 printk("\n"); 392 } 393 if (dev->tvnorm->id & scan->std) { 394 tvaudio_setcarrier(dev,scan->carr-90,scan->carr-90); 395 saa_readl(SAA7134_LEVEL_READOUT1 >> 2); ··· 426 427 switch (audio->mode) { 428 case TVAUDIO_FM_MONO: 429 return V4L2_TUNER_SUB_MONO; 430 case TVAUDIO_FM_K_STEREO: 431 case TVAUDIO_FM_BG_STEREO: ··· 495 496 switch (audio->mode) { 497 case TVAUDIO_FM_MONO: 498 /* nothing to do ... */ 499 break; 500 case TVAUDIO_FM_K_STEREO: ··· 556 557 if (1 == nscan) { 558 /* only one candidate -- skip scan ;) */ 559 + dprintk("only one main carrier candidate - skipping scan\n"); 560 max1 = 12345; 561 carrier = default_carrier; 562 } else { ··· 603 dev->automute = 0; 604 saa_andorb(SAA7134_STEREO_DAC_OUTPUT_SELECT, 0x30, 0x00); 605 saa7134_tvaudio_setmute(dev); 606 /* find the exact tv audio norm */ 607 for (audio = UNSET, i = 0; i < TVAUDIO; i++) { 608 if (dev->tvnorm->id != UNSET && ··· 611 continue; 612 if (tvaudio[i].carr1 != carrier) 613 continue; 614 + /* Note: at least the primary carrier is right here */ 615 if (UNSET == audio) 616 audio = i; 617 tvaudio_setmode(dev,&tvaudio[i],"trying"); ··· 626 if (UNSET == audio) 627 continue; 628 tvaudio_setmode(dev,&tvaudio[audio],"using"); 629 + 630 tvaudio_setstereo(dev,&tvaudio[audio],V4L2_TUNER_MODE_MONO); 631 dev->tvaudio = &tvaudio[audio]; 632 ··· 750 int mask; 751 struct saa7134_input *in; 752 753 xbarin = 0x03; 754 switch (dev->input->amux) { 755 case TV: ··· 834 } else { 835 /* (let chip) scan for sound carrier */ 836 norms = 0; 837 + if (dev->tvnorm->id & (V4L2_STD_B | V4L2_STD_GH)) 838 + norms |= 0x04; 839 + if (dev->tvnorm->id & V4L2_STD_PAL_I) 840 + norms |= 0x20; 841 + if (dev->tvnorm->id & V4L2_STD_DK) 842 + norms |= 0x08; 843 + if (dev->tvnorm->id & V4L2_STD_MN) 844 + norms |= 0x40; 845 + if (dev->tvnorm->id & (V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC)) 846 + norms |= 0x10; 847 if (0 == norms) 848 norms = 0x7c; /* all */ 849 dprintk("scanning:%s%s%s%s%s\n", ··· 1034 1035 int saa7134_tvaudio_do_scan(struct saa7134_dev *dev) 1036 { 1037 + if (dev->input->amux != TV) { 1038 + dprintk("sound IF not in use, skipping scan\n"); 1039 + dev->automute = 0; 1040 + saa7134_tvaudio_setmute(dev); 1041 + } else if (dev->thread.pid >= 0) { 1042 dev->thread.mode = UNSET; 1043 dev->thread.scan2++; 1044 wake_up_interruptible(&dev->thread.wq);
+58 -2
drivers/media/video/saa7134/saa7134-video.c
··· 43 static unsigned int noninterlaced = 1; 44 static unsigned int gbufsize = 720*576*4; 45 static unsigned int gbufsize_max = 720*576*4; 46 module_param(video_debug, int, 0644); 47 MODULE_PARM_DESC(video_debug,"enable debug messages [video]"); 48 module_param(gbuffers, int, 0444); 49 MODULE_PARM_DESC(gbuffers,"number of capture buffers, range 2-32"); 50 module_param(noninterlaced, int, 0644); 51 MODULE_PARM_DESC(noninterlaced,"capture non interlaced video"); 52 53 #define dprintk(fmt, arg...) if (video_debug) \ 54 printk(KERN_DEBUG "%s/video: " fmt, dev->name , ## arg) ··· 283 .id = V4L2_STD_SECAM, 284 NORM_625_50, 285 286 - .sync_control = 0x18, /* old: 0x58, */ 287 .luma_control = 0x1b, 288 .chroma_ctrl1 = 0xd1, 289 .chroma_gain = 0x80, ··· 1809 { 1810 v4l2_std_id *id = arg; 1811 unsigned int i; 1812 1813 for (i = 0; i < TVNORMS; i++) 1814 if (*id == tvnorms[i].id) ··· 1820 break; 1821 if (i == TVNORMS) 1822 return -EINVAL; 1823 - 1824 mutex_lock(&dev->lock); 1825 if (res_check(fh, RESOURCE_OVERLAY)) { 1826 spin_lock_irqsave(&dev->slock,flags);
··· 43 static unsigned int noninterlaced = 1; 44 static unsigned int gbufsize = 720*576*4; 45 static unsigned int gbufsize_max = 720*576*4; 46 + static char secam[] = "--"; 47 module_param(video_debug, int, 0644); 48 MODULE_PARM_DESC(video_debug,"enable debug messages [video]"); 49 module_param(gbuffers, int, 0444); 50 MODULE_PARM_DESC(gbuffers,"number of capture buffers, range 2-32"); 51 module_param(noninterlaced, int, 0644); 52 MODULE_PARM_DESC(noninterlaced,"capture non interlaced video"); 53 + module_param_string(secam, secam, sizeof(secam), 0644); 54 + MODULE_PARM_DESC(secam, "force SECAM variant, either DK,L or Lc"); 55 + 56 57 #define dprintk(fmt, arg...) if (video_debug) \ 58 printk(KERN_DEBUG "%s/video: " fmt, dev->name , ## arg) ··· 279 .id = V4L2_STD_SECAM, 280 NORM_625_50, 281 282 + .sync_control = 0x18, 283 + .luma_control = 0x1b, 284 + .chroma_ctrl1 = 0xd1, 285 + .chroma_gain = 0x80, 286 + .chroma_ctrl2 = 0x00, 287 + .vgate_misc = 0x1c, 288 + 289 + },{ 290 + .name = "SECAM-DK", 291 + .id = V4L2_STD_SECAM_DK, 292 + NORM_625_50, 293 + 294 + .sync_control = 0x18, 295 + .luma_control = 0x1b, 296 + .chroma_ctrl1 = 0xd1, 297 + .chroma_gain = 0x80, 298 + .chroma_ctrl2 = 0x00, 299 + .vgate_misc = 0x1c, 300 + 301 + },{ 302 + .name = "SECAM-L", 303 + .id = V4L2_STD_SECAM_L, 304 + NORM_625_50, 305 + 306 + .sync_control = 0x18, 307 + .luma_control = 0x1b, 308 + .chroma_ctrl1 = 0xd1, 309 + .chroma_gain = 0x80, 310 + .chroma_ctrl2 = 0x00, 311 + .vgate_misc = 0x1c, 312 + 313 + },{ 314 + .name = "SECAM-Lc", 315 + .id = V4L2_STD_SECAM_LC, 316 + NORM_625_50, 317 + 318 + .sync_control = 0x18, 319 .luma_control = 0x1b, 320 .chroma_ctrl1 = 0xd1, 321 .chroma_gain = 0x80, ··· 1769 { 1770 v4l2_std_id *id = arg; 1771 unsigned int i; 1772 + v4l2_std_id fixup; 1773 1774 for (i = 0; i < TVNORMS; i++) 1775 if (*id == tvnorms[i].id) ··· 1779 break; 1780 if (i == TVNORMS) 1781 return -EINVAL; 1782 + if ((*id & V4L2_STD_SECAM) && (secam[0] != '-')) { 1783 + if (secam[0] == 'L' || secam[0] == 'l') { 1784 + if (secam[1] == 'C' || secam[1] == 'c') 1785 + fixup = V4L2_STD_SECAM_LC; 1786 + else 1787 + fixup = V4L2_STD_SECAM_L; 1788 + } else { 1789 + if (secam[0] == 'D' || secam[0] == 'd') 1790 + fixup = V4L2_STD_SECAM_DK; 1791 + else 1792 + fixup = V4L2_STD_SECAM; 1793 + } 1794 + for (i = 0; i < TVNORMS; i++) 1795 + if (fixup == tvnorms[i].id) 1796 + break; 1797 + } 1798 mutex_lock(&dev->lock); 1799 if (res_check(fh, RESOURCE_OVERLAY)) { 1800 spin_lock_irqsave(&dev->slock,flags);
+1 -1
drivers/media/video/saa7134/saa7134.h
··· 61 TVAUDIO_FM_K_STEREO = 4, 62 TVAUDIO_NICAM_AM = 5, 63 TVAUDIO_NICAM_FM = 6, 64 - TVAUDIO_AM_MONO = 7 65 }; 66 67 enum saa7134_audio_in { ··· 226 #define SAA7134_BOARD_FLYDVBS_LR300 97 227 #define SAA7134_BOARD_PROTEUS_2309 98 228 #define SAA7134_BOARD_AVERMEDIA_A16AR 99 229 230 #define SAA7134_MAXBOARDS 8 231 #define SAA7134_INPUT_MAX 8
··· 61 TVAUDIO_FM_K_STEREO = 4, 62 TVAUDIO_NICAM_AM = 5, 63 TVAUDIO_NICAM_FM = 6, 64 }; 65 66 enum saa7134_audio_in { ··· 227 #define SAA7134_BOARD_FLYDVBS_LR300 97 228 #define SAA7134_BOARD_PROTEUS_2309 98 229 #define SAA7134_BOARD_AVERMEDIA_A16AR 99 230 + #define SAA7134_BOARD_ASUS_EUROPA2_HYBRID 100 231 232 #define SAA7134_MAXBOARDS 8 233 #define SAA7134_INPUT_MAX 8
+2 -2
drivers/media/video/tveeprom.c
··· 222 { TUNER_TCL_2002MB, "TCL M2523_3DB_E"}, 223 { TUNER_ABSENT, "Philips 8275A"}, 224 { TUNER_ABSENT, "Microtune MT2060"}, 225 - { TUNER_ABSENT, "Philips FM1236 MK5"}, 226 - { TUNER_ABSENT, "Philips FM1216ME MK5"}, 227 { TUNER_ABSENT, "TCL M2523_3DI_E"}, 228 { TUNER_ABSENT, "Samsung THPD5222FG30A"}, 229 /* 120-129 */
··· 222 { TUNER_TCL_2002MB, "TCL M2523_3DB_E"}, 223 { TUNER_ABSENT, "Philips 8275A"}, 224 { TUNER_ABSENT, "Microtune MT2060"}, 225 + { TUNER_PHILIPS_FM1236_MK3, "Philips FM1236 MK5"}, 226 + { TUNER_PHILIPS_FM1216ME_MK3, "Philips FM1216ME MK5"}, 227 { TUNER_ABSENT, "TCL M2523_3DI_E"}, 228 { TUNER_ABSENT, "Samsung THPD5222FG30A"}, 229 /* 120-129 */
+6 -4
drivers/media/video/zoran_card.c
··· 1278 1279 zoran_num = 0; 1280 while (zoran_num < BUZ_MAX && 1281 - (dev = 1282 - pci_find_device(PCI_VENDOR_ID_ZORAN, 1283 - PCI_DEVICE_ID_ZORAN_36057, dev)) != NULL) { 1284 card_num = card[zoran_num]; 1285 zr = &zoran[zoran_num]; 1286 memset(zr, 0, sizeof(struct zoran)); // Just in case if previous cycle failed ··· 1539 goto zr_detach_vfe; 1540 } 1541 } 1542 - 1543 zoran_num++; 1544 continue; 1545 ··· 1562 iounmap(zr->zr36057_mem); 1563 continue; 1564 } 1565 if (zoran_num == 0) { 1566 dprintk(1, KERN_INFO "No known MJPEG cards found.\n"); 1567 }
··· 1278 1279 zoran_num = 0; 1280 while (zoran_num < BUZ_MAX && 1281 + (dev = pci_get_device(PCI_VENDOR_ID_ZORAN, PCI_DEVICE_ID_ZORAN_36057, dev)) != NULL) { 1282 card_num = card[zoran_num]; 1283 zr = &zoran[zoran_num]; 1284 memset(zr, 0, sizeof(struct zoran)); // Just in case if previous cycle failed ··· 1541 goto zr_detach_vfe; 1542 } 1543 } 1544 + /* Success so keep the pci_dev referenced */ 1545 + pci_dev_get(zr->pci_dev); 1546 zoran_num++; 1547 continue; 1548 ··· 1563 iounmap(zr->zr36057_mem); 1564 continue; 1565 } 1566 + if (dev) /* Clean up ref count on early exit */ 1567 + pci_dev_put(dev); 1568 + 1569 if (zoran_num == 0) { 1570 dprintk(1, KERN_INFO "No known MJPEG cards found.\n"); 1571 }
+12 -9
drivers/media/video/zr36120.c
··· 1840 struct zoran *ztv; 1841 struct pci_dev *dev = NULL; 1842 unsigned char revision; 1843 - int zoran_num=0; 1844 1845 - while ((dev = pci_find_device(PCI_VENDOR_ID_ZORAN,PCI_DEVICE_ID_ZORAN_36120, dev))) 1846 { 1847 /* Ok, a ZR36120/ZR36125 found! */ 1848 ztv = &zorans[zoran_num]; 1849 ztv->dev = dev; 1850 1851 if (pci_enable_device(dev)) 1852 - return -EIO; 1853 1854 pci_read_config_byte(dev, PCI_CLASS_REVISION, &revision); 1855 printk(KERN_INFO "zoran: Zoran %x (rev %d) ", ··· 1867 { 1868 iounmap(ztv->zoran_mem); 1869 printk(KERN_ERR "zoran: Bad irq number or handler\n"); 1870 - return -EINVAL; 1871 } 1872 if (result==-EBUSY) 1873 printk(KERN_ERR "zoran: IRQ %d busy, change your PnP config in BIOS\n",dev->irq); 1874 if (result < 0) { 1875 iounmap(ztv->zoran_mem); 1876 - return result; 1877 } 1878 /* Enable bus-mastering */ 1879 pci_set_master(dev); 1880 - 1881 zoran_num++; 1882 } 1883 if(zoran_num) ··· 2042 if (ztv->zoran_mem) 2043 iounmap(ztv->zoran_mem); 2044 2045 video_unregister_device(&ztv->video_dev); 2046 video_unregister_device(&ztv->vbi_dev); 2047 } ··· 2061 2062 handle_chipset(); 2063 zoran_cards = find_zoran(); 2064 - if (zoran_cards<0) 2065 - /* no cards found, no need for a driver */ 2066 return -EIO; 2067 2068 /* initialize Zorans */ 2069 for (card=0; card<zoran_cards; card++) { 2070 - if (init_zoran(card)<0) { 2071 /* only release the zorans we have registered */ 2072 release_zoran(card); 2073 return -EIO;
··· 1840 struct zoran *ztv; 1841 struct pci_dev *dev = NULL; 1842 unsigned char revision; 1843 + int zoran_num = 0; 1844 1845 + while ((dev = pci_get_device(PCI_VENDOR_ID_ZORAN,PCI_DEVICE_ID_ZORAN_36120, dev))) 1846 { 1847 /* Ok, a ZR36120/ZR36125 found! */ 1848 ztv = &zorans[zoran_num]; 1849 ztv->dev = dev; 1850 1851 if (pci_enable_device(dev)) 1852 + continue; 1853 1854 pci_read_config_byte(dev, PCI_CLASS_REVISION, &revision); 1855 printk(KERN_INFO "zoran: Zoran %x (rev %d) ", ··· 1867 { 1868 iounmap(ztv->zoran_mem); 1869 printk(KERN_ERR "zoran: Bad irq number or handler\n"); 1870 + continue; 1871 } 1872 if (result==-EBUSY) 1873 printk(KERN_ERR "zoran: IRQ %d busy, change your PnP config in BIOS\n",dev->irq); 1874 if (result < 0) { 1875 iounmap(ztv->zoran_mem); 1876 + continue; 1877 } 1878 /* Enable bus-mastering */ 1879 pci_set_master(dev); 1880 + /* Keep a reference */ 1881 + pci_dev_get(dev); 1882 zoran_num++; 1883 } 1884 if(zoran_num) ··· 2041 if (ztv->zoran_mem) 2042 iounmap(ztv->zoran_mem); 2043 2044 + /* Drop PCI device */ 2045 + pci_dev_put(ztv->dev); 2046 + 2047 video_unregister_device(&ztv->video_dev); 2048 video_unregister_device(&ztv->vbi_dev); 2049 } ··· 2057 2058 handle_chipset(); 2059 zoran_cards = find_zoran(); 2060 + if (zoran_cards <= 0) 2061 return -EIO; 2062 2063 /* initialize Zorans */ 2064 for (card=0; card<zoran_cards; card++) { 2065 + if (init_zoran(card) < 0) { 2066 /* only release the zorans we have registered */ 2067 release_zoran(card); 2068 return -EIO;