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

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
...@@ -97,3 +97,4 @@ ...@@ -97,3 +97,4 @@
96 -> Medion Md8800 Quadro [16be:0007,16be:0008] 96 -> Medion Md8800 Quadro [16be:0007,16be:0008]
97 -> LifeView FlyDVB-S /Acorp TV134DS [5168:0300,4e42:0300] 97 -> LifeView FlyDVB-S /Acorp TV134DS [5168:0300,4e42:0300]
98 -> Proteus Pro 2309 [0919:2003] 98 -> Proteus Pro 2309 [0919:2003]
99 -> AVerMedia TV Hybrid A16AR [1461:2c00]
...@@ -2965,6 +2965,35 @@ struct saa7134_board saa7134_boards[] = { ...@@ -2965,6 +2965,35 @@ struct saa7134_board saa7134_boards[] = {
.amux = LINE1, .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); const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
...@@ -3561,6 +3590,12 @@ struct pci_device_id saa7134_pci_tbl[] = { ...@@ -3561,6 +3590,12 @@ struct pci_device_id saa7134_pci_tbl[] = {
.subvendor = 0x0919, /* Philips Proteus PRO 2309 */ .subvendor = 0x0919, /* Philips Proteus PRO 2309 */
.subdevice = 0x2003, .subdevice = 0x2003,
.driver_data = SAA7134_BOARD_PROTEUS_2309, .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 --- */ /* --- boards without eeprom + subsystem ID --- */
.vendor = PCI_VENDOR_ID_PHILIPS, .vendor = PCI_VENDOR_ID_PHILIPS,
...@@ -3703,6 +3738,7 @@ int saa7134_board_init1(struct saa7134_dev *dev) ...@@ -3703,6 +3738,7 @@ int saa7134_board_init1(struct saa7134_dev *dev)
saa_writeb(SAA7134_GPIO_GPMODE3, 0x08); saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x00); saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x00);
break; break;
case SAA7134_BOARD_AVERMEDIA_A16AR:
case SAA7134_BOARD_AVERMEDIA_CARDBUS: case SAA7134_BOARD_AVERMEDIA_CARDBUS:
/* power-up tuner chip */ /* power-up tuner chip */
saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff); saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff);
......
...@@ -1055,6 +1055,7 @@ static int dvb_init(struct saa7134_dev *dev) ...@@ -1055,6 +1055,7 @@ static int dvb_init(struct saa7134_dev *dev)
} }
break; break;
case SAA7134_BOARD_AVERMEDIA_777: case SAA7134_BOARD_AVERMEDIA_777:
case SAA7134_BOARD_AVERMEDIA_A16AR:
printk("%s: avertv 777 dvb setup\n",dev->name); printk("%s: avertv 777 dvb setup\n",dev->name);
dev->dvb.frontend = dvb_attach(mt352_attach, &avermedia_777, dev->dvb.frontend = dvb_attach(mt352_attach, &avermedia_777,
&dev->i2c_adap); &dev->i2c_adap);
......
...@@ -185,6 +185,7 @@ int saa7134_input_init1(struct saa7134_dev *dev) ...@@ -185,6 +185,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
case SAA7134_BOARD_AVERMEDIA_STUDIO_305: case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
case SAA7134_BOARD_AVERMEDIA_STUDIO_307: case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
case SAA7134_BOARD_AVERMEDIA_GO_007_FM: case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
case SAA7134_BOARD_AVERMEDIA_A16AR:
ir_codes = ir_codes_avermedia; ir_codes = ir_codes_avermedia;
mask_keycode = 0x0007C8; mask_keycode = 0x0007C8;
mask_keydown = 0x000010; mask_keydown = 0x000010;
......
...@@ -226,6 +226,7 @@ struct saa7134_format { ...@@ -226,6 +226,7 @@ struct saa7134_format {
#define SAA7134_BOARD_MEDION_MD8800_QUADRO 96 #define SAA7134_BOARD_MEDION_MD8800_QUADRO 96
#define SAA7134_BOARD_FLYDVBS_LR300 97 #define SAA7134_BOARD_FLYDVBS_LR300 97
#define SAA7134_BOARD_PROTEUS_2309 98 #define SAA7134_BOARD_PROTEUS_2309 98
#define SAA7134_BOARD_AVERMEDIA_A16AR 99
#define SAA7134_MAXBOARDS 8 #define SAA7134_MAXBOARDS 8
#define SAA7134_INPUT_MAX 8 #define SAA7134_INPUT_MAX 8
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment