Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 515c208d authored by Petr Baudis's avatar Petr Baudis Committed by Mauro Carvalho Chehab
Browse files

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: default avatarPetr Baudis <pasky@ucw.cz>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent cc7093df
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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]
+36 −0
Original line number Diff line number Diff line
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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