mirror of
				https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
				synced 2025-11-04 08:34:47 +10:00 
			
		
		
		
	V4L/DVB (4671): Support for SAA7134-based AVerTV Hybrid A16AR
This adds support for a hybrid PAL/DVB/FM card. Unfortunately I tested only the DVB since I don't have any proper antenna available and I can receive even the DVB just barely so; I can hear noise in the FM part but I couldn't catch any station, then again I don't have an FM antenna either. The PAL/FM and IR control data are based on what I harvested on the 'net. Perhaps I or someone else will fix them if they turn out to be wrong. Signed-off-by: Petr Baudis <pasky@ucw.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
		
							parent
							
								
									cc7093df3c
								
							
						
					
					
						commit
						515c208db8
					
				@ -97,3 +97,4 @@
 | 
			
		||||
 96 -> Medion Md8800 Quadro                     [16be:0007,16be:0008]
 | 
			
		||||
 97 -> LifeView FlyDVB-S /Acorp TV134DS         [5168:0300,4e42:0300]
 | 
			
		||||
 98 -> Proteus Pro 2309                         [0919:2003]
 | 
			
		||||
 99 -> AVerMedia TV Hybrid A16AR                [1461:2c00]
 | 
			
		||||
 | 
			
		||||
@ -2965,6 +2965,35 @@ struct saa7134_board saa7134_boards[] = {
 | 
			
		||||
			.amux = LINE1,
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	[SAA7134_BOARD_AVERMEDIA_A16AR] = {
 | 
			
		||||
		/* Petr Baudis <pasky@ucw.cz> */
 | 
			
		||||
		.name           = "AVerMedia TV Hybrid A16AR",
 | 
			
		||||
		.audio_clock    = 0x187de7,
 | 
			
		||||
		.tuner_type     = TUNER_PHILIPS_TDA8290, /* untested */
 | 
			
		||||
		.radio_type     = TUNER_TEA5767, /* untested */
 | 
			
		||||
		.tuner_addr     = ADDR_UNSET,
 | 
			
		||||
		.radio_addr     = ADDR_UNSET,
 | 
			
		||||
		.tda9887_conf   = TDA9887_PRESENT,
 | 
			
		||||
		.mpeg           = SAA7134_MPEG_DVB,
 | 
			
		||||
		.inputs         = {{
 | 
			
		||||
			.name = name_tv,
 | 
			
		||||
			.vmux = 1,
 | 
			
		||||
			.amux = TV,
 | 
			
		||||
			.tv   = 1,
 | 
			
		||||
		},{
 | 
			
		||||
			.name = name_comp1,
 | 
			
		||||
			.vmux = 3,
 | 
			
		||||
			.amux = LINE2,
 | 
			
		||||
		},{
 | 
			
		||||
			.name = name_svideo,
 | 
			
		||||
			.vmux = 8,
 | 
			
		||||
			.amux = LINE1,
 | 
			
		||||
		}},
 | 
			
		||||
		.radio = {
 | 
			
		||||
			.name = name_radio,
 | 
			
		||||
			.amux = LINE1,
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
 | 
			
		||||
@ -3561,6 +3590,12 @@ struct pci_device_id saa7134_pci_tbl[] = {
 | 
			
		||||
		.subvendor    = 0x0919, /* Philips Proteus PRO 2309 */
 | 
			
		||||
		.subdevice    = 0x2003,
 | 
			
		||||
		.driver_data  = SAA7134_BOARD_PROTEUS_2309,
 | 
			
		||||
	},{
 | 
			
		||||
		.vendor       = PCI_VENDOR_ID_PHILIPS,
 | 
			
		||||
		.device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
 | 
			
		||||
		.subvendor    = 0x1461,
 | 
			
		||||
		.subdevice    = 0x2c00,
 | 
			
		||||
		.driver_data  = SAA7134_BOARD_AVERMEDIA_A16AR,
 | 
			
		||||
	},{
 | 
			
		||||
		/* --- boards without eeprom + subsystem ID --- */
 | 
			
		||||
		.vendor       = PCI_VENDOR_ID_PHILIPS,
 | 
			
		||||
@ -3703,6 +3738,7 @@ int saa7134_board_init1(struct saa7134_dev *dev)
 | 
			
		||||
		saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
 | 
			
		||||
		saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x00);
 | 
			
		||||
		break;
 | 
			
		||||
	case SAA7134_BOARD_AVERMEDIA_A16AR:
 | 
			
		||||
	case SAA7134_BOARD_AVERMEDIA_CARDBUS:
 | 
			
		||||
		/* power-up tuner chip */
 | 
			
		||||
		saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0xffffffff);
 | 
			
		||||
 | 
			
		||||
@ -1055,6 +1055,7 @@ static int dvb_init(struct saa7134_dev *dev)
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
	case SAA7134_BOARD_AVERMEDIA_777:
 | 
			
		||||
	case SAA7134_BOARD_AVERMEDIA_A16AR:
 | 
			
		||||
		printk("%s: avertv 777 dvb setup\n",dev->name);
 | 
			
		||||
		dev->dvb.frontend = dvb_attach(mt352_attach, &avermedia_777,
 | 
			
		||||
					       &dev->i2c_adap);
 | 
			
		||||
 | 
			
		||||
@ -185,6 +185,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
 | 
			
		||||
	case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
 | 
			
		||||
	case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
 | 
			
		||||
	case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
 | 
			
		||||
	case SAA7134_BOARD_AVERMEDIA_A16AR:
 | 
			
		||||
		ir_codes     = ir_codes_avermedia;
 | 
			
		||||
		mask_keycode = 0x0007C8;
 | 
			
		||||
		mask_keydown = 0x000010;
 | 
			
		||||
 | 
			
		||||
@ -226,6 +226,7 @@ struct saa7134_format {
 | 
			
		||||
#define SAA7134_BOARD_MEDION_MD8800_QUADRO 96
 | 
			
		||||
#define SAA7134_BOARD_FLYDVBS_LR300 97
 | 
			
		||||
#define SAA7134_BOARD_PROTEUS_2309 98
 | 
			
		||||
#define SAA7134_BOARD_AVERMEDIA_A16AR   99
 | 
			
		||||
 | 
			
		||||
#define SAA7134_MAXBOARDS 8
 | 
			
		||||
#define SAA7134_INPUT_MAX 8
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user