Commit 68593af3 authored by Rickard Osser's avatar Rickard Osser Committed by Linus Torvalds
Browse files

V4L/DVB (3446): Saa7134: add support for AVerMedia A169 Dual Analog tuner card



- Added support for AVerMedia A169 Dual Analog tuner card
  (dual saa7134 decoders - only 1 working right now)
- Added autodetection for both parts of the card.
  It shows up like 2 cards, B1 and B
- Enabled tuner B1, SVIDEO on B1 and composite1 through SVIDEO,
  FIXME: B is more or less dead at this point and I suspect the
  FM-radio is on the B part of the board

Signed-off-by: default avatarRickard Osser <ricky@osser.se>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent f3629be8
......@@ -89,3 +89,5 @@
88 -> Tevion/KWorld DVB-T 220RF [17de:7201]
89 -> ELSA EX-VISION 700TV [1048:226c]
90 -> Kworld ATSC110 [17de:7350]
91 -> AVerMedia A169 B [1461:7360]
92 -> AVerMedia A169 B1 [1461:6360]
......@@ -2756,6 +2756,47 @@ struct saa7134_board saa7134_boards[] = {
.amux = LINE2,
}},
},
[SAA7134_BOARD_AVERMEDIA_A169_B] = {
/* AVerMedia A169 */
/* Rickard Osser <ricky@osser.se> */
/* This card has two saa7134 chips on it,
but only one of them is currently working. */
.name = "AVerMedia A169 B",
.audio_clock = 0x02187de7,
.tuner_type = TUNER_LG_TALN,
.radio_type = UNSET,
.tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET,
.tda9887_conf = TDA9887_PRESENT,
.gpiomask = 0x0a60000,
},
[SAA7134_BOARD_AVERMEDIA_A169_B1] = {
/* AVerMedia A169 */
/* Rickard Osser <ricky@osser.se> */
.name = "AVerMedia A169 B1",
.audio_clock = 0x02187de7,
.tuner_type = TUNER_LG_TALN,
.radio_type = UNSET,
.tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET,
.tda9887_conf = TDA9887_PRESENT,
.gpiomask = 0xca60000,
.inputs = {{
.name = name_tv,
.vmux = 4,
.amux = TV,
.tv = 1,
.gpio = 0x04a61000,
},{
.name = name_comp2, /* Composite SVIDEO (B/W if signal is carried with SVIDEO) */
.vmux = 1,
.amux = LINE2,
},{
.name = name_svideo,
.vmux = 9, /* 9 is correct as S-VIDEO1 according to a169.inf! */
.amux = LINE1,
}},
},
};
const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
......@@ -3262,6 +3303,18 @@ struct pci_device_id saa7134_pci_tbl[] = {
.subvendor = 0x17de,
.subdevice = 0x7350,
.driver_data = SAA7134_BOARD_KWORLD_ATSC110,
},{
.vendor = PCI_VENDOR_ID_PHILIPS,
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
.subvendor = 0x1461,
.subdevice = 0x7360,
.driver_data = SAA7134_BOARD_AVERMEDIA_A169_B,
},{
.vendor = PCI_VENDOR_ID_PHILIPS,
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
.subvendor = 0x1461,
.subdevice = 0x6360,
.driver_data = SAA7134_BOARD_AVERMEDIA_A169_B1,
},{
/* --- boards without eeprom + subsystem ID --- */
.vendor = PCI_VENDOR_ID_PHILIPS,
......@@ -3417,6 +3470,12 @@ int saa7134_board_init1(struct saa7134_dev *dev)
case SAA7134_BOARD_UPMOST_PURPLE_TV:
dev->has_remote = SAA7134_REMOTE_I2C;
break;
case SAA7134_BOARD_AVERMEDIA_A169_B:
printk("%s: AVerMedia A169: dual saa7134 broadcast decoders\n"
"%s: Sorry, none of the inputs to this chip are supported yet.\n"
"%s: Dual decoder functionality is disabled for now, use the other chip.\n",
dev->name,dev->name,dev->name);
break;
}
return 0;
}
......
......@@ -218,6 +218,8 @@ struct saa7134_format {
#define SAA7134_BOARD_TEVION_DVBT_220RF 88
#define SAA7134_BOARD_ELSA_700TV 89
#define SAA7134_BOARD_KWORLD_ATSC110 90
#define SAA7134_BOARD_AVERMEDIA_A169_B 91
#define SAA7134_BOARD_AVERMEDIA_A169_B1 92
#define SAA7134_MAXBOARDS 8
#define SAA7134_INPUT_MAX 8
......
Supports Markdown
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