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

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
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -89,3 +89,5 @@
 88 -> Tevion/KWorld DVB-T 220RF                [17de:7201]
 88 -> Tevion/KWorld DVB-T 220RF                [17de:7201]
 89 -> ELSA EX-VISION 700TV                     [1048:226c]
 89 -> ELSA EX-VISION 700TV                     [1048:226c]
 90 -> Kworld ATSC110                           [17de:7350]
 90 -> Kworld ATSC110                           [17de:7350]
 91 -> AVerMedia A169 B                         [1461:7360]
 92 -> AVerMedia A169 B1                        [1461:6360]
+59 −0
Original line number Original line Diff line number Diff line
@@ -2756,6 +2756,47 @@ struct saa7134_board saa7134_boards[] = {
			.amux = LINE2,
			.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);
const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
@@ -3262,6 +3303,18 @@ struct pci_device_id saa7134_pci_tbl[] = {
		.subvendor    = 0x17de,
		.subvendor    = 0x17de,
		.subdevice    = 0x7350,
		.subdevice    = 0x7350,
		.driver_data  = SAA7134_BOARD_KWORLD_ATSC110,
		.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 --- */
		/* --- boards without eeprom + subsystem ID --- */
		.vendor       = PCI_VENDOR_ID_PHILIPS,
		.vendor       = PCI_VENDOR_ID_PHILIPS,
@@ -3417,6 +3470,12 @@ int saa7134_board_init1(struct saa7134_dev *dev)
	case SAA7134_BOARD_UPMOST_PURPLE_TV:
	case SAA7134_BOARD_UPMOST_PURPLE_TV:
		dev->has_remote = SAA7134_REMOTE_I2C;
		dev->has_remote = SAA7134_REMOTE_I2C;
		break;
		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;
	return 0;
}
}
+2 −0
Original line number Original line Diff line number Diff line
@@ -218,6 +218,8 @@ struct saa7134_format {
#define SAA7134_BOARD_TEVION_DVBT_220RF 88
#define SAA7134_BOARD_TEVION_DVBT_220RF 88
#define SAA7134_BOARD_ELSA_700TV       89
#define SAA7134_BOARD_ELSA_700TV       89
#define SAA7134_BOARD_KWORLD_ATSC110   90
#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_MAXBOARDS 8
#define SAA7134_INPUT_MAX 8
#define SAA7134_INPUT_MAX 8