aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/saa7134/saa7134-cards.c44
-rw-r--r--drivers/media/video/saa7134/saa7134-dvb.c39
-rw-r--r--drivers/media/video/saa7134/saa7134.h1
3 files changed, 84 insertions, 0 deletions
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c
index 98364d171def..3c2f09fb0446 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -4409,6 +4409,36 @@ struct saa7134_board saa7134_boards[] = {
4409 /* no DVB support for now */ 4409 /* no DVB support for now */
4410 /* .mpeg = SAA7134_MPEG_DVB, */ 4410 /* .mpeg = SAA7134_MPEG_DVB, */
4411 }, 4411 },
4412 [SAA7134_BOARD_ASUSTeK_TIGER_3IN1] = {
4413 .name = "Asus Tiger 3in1",
4414 .audio_clock = 0x00187de7,
4415 .tuner_type = TUNER_PHILIPS_TDA8290,
4416 .radio_type = UNSET,
4417 .tuner_addr = ADDR_UNSET,
4418 .radio_addr = ADDR_UNSET,
4419 .tuner_config = 2,
4420 .gpiomask = 1 << 21,
4421 .mpeg = SAA7134_MPEG_DVB,
4422 .inputs = {{
4423 .name = name_tv,
4424 .vmux = 1,
4425 .amux = TV,
4426 .tv = 1,
4427 }, {
4428 .name = name_comp,
4429 .vmux = 0,
4430 .amux = LINE2,
4431 }, {
4432 .name = name_svideo,
4433 .vmux = 8,
4434 .amux = LINE2,
4435 } },
4436 .radio = {
4437 .name = name_radio,
4438 .amux = TV,
4439 .gpio = 0x0200000,
4440 },
4441 },
4412}; 4442};
4413 4443
4414const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); 4444const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
@@ -5432,6 +5462,12 @@ struct pci_device_id saa7134_pci_tbl[] = {
5432 .subdevice = 0xf636, 5462 .subdevice = 0xf636,
5433 .driver_data = SAA7134_BOARD_AVERMEDIA_M103, 5463 .driver_data = SAA7134_BOARD_AVERMEDIA_M103,
5434 }, { 5464 }, {
5465 .vendor = PCI_VENDOR_ID_PHILIPS,
5466 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
5467 .subvendor = 0x1043,
5468 .subdevice = 0x4878, /* REV:1.02G */
5469 .driver_data = SAA7134_BOARD_ASUSTeK_TIGER_3IN1,
5470 }, {
5435 /* --- boards without eeprom + subsystem ID --- */ 5471 /* --- boards without eeprom + subsystem ID --- */
5436 .vendor = PCI_VENDOR_ID_PHILIPS, 5472 .vendor = PCI_VENDOR_ID_PHILIPS,
5437 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 5473 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
@@ -6002,6 +6038,14 @@ int saa7134_board_init2(struct saa7134_dev *dev)
6002 i2c_transfer(&dev->i2c_adap, &msg, 1); 6038 i2c_transfer(&dev->i2c_adap, &msg, 1);
6003 break; 6039 break;
6004 } 6040 }
6041 case SAA7134_BOARD_ASUSTeK_TIGER_3IN1:
6042 {
6043 u8 data[] = { 0x3c, 0x33, 0x60};
6044 struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data,
6045 .len = sizeof(data)};
6046 i2c_transfer(&dev->i2c_adap, &msg, 1);
6047 break;
6048 }
6005 case SAA7134_BOARD_FLYDVB_TRIO: 6049 case SAA7134_BOARD_FLYDVB_TRIO:
6006 { 6050 {
6007 u8 data[] = { 0x3c, 0x33, 0x62}; 6051 u8 data[] = { 0x3c, 0x33, 0x62};
diff --git a/drivers/media/video/saa7134/saa7134-dvb.c b/drivers/media/video/saa7134/saa7134-dvb.c
index be48b9b66a67..7fa6ce76642b 100644
--- a/drivers/media/video/saa7134/saa7134-dvb.c
+++ b/drivers/media/video/saa7134/saa7134-dvb.c
@@ -799,6 +799,20 @@ static struct tda1004x_config twinhan_dtv_dvb_3056_config = {
799 .request_firmware = philips_tda1004x_request_firmware 799 .request_firmware = philips_tda1004x_request_firmware
800}; 800};
801 801
802static struct tda1004x_config asus_tiger_3in1_config = {
803 .demod_address = 0x0b,
804 .invert = 1,
805 .invert_oclk = 0,
806 .xtal_freq = TDA10046_XTAL_16M,
807 .agc_config = TDA10046_AGC_TDA827X,
808 .gpio_config = TDA10046_GP11_I,
809 .if_freq = TDA10046_FREQ_045,
810 .i2c_gate = 0x4b,
811 .tuner_address = 0x61,
812 .antenna_switch = 1,
813 .request_firmware = philips_tda1004x_request_firmware
814};
815
802/* ------------------------------------------------------------------ 816/* ------------------------------------------------------------------
803 * special case: this card uses saa713x GPIO22 for the mode switch 817 * special case: this card uses saa713x GPIO22 for the mode switch
804 */ 818 */
@@ -1300,6 +1314,31 @@ static int dvb_init(struct saa7134_dev *dev)
1300 &dev->i2c_adap); 1314 &dev->i2c_adap);
1301 attach_xc3028 = 1; 1315 attach_xc3028 = 1;
1302 break; 1316 break;
1317 case SAA7134_BOARD_ASUSTeK_TIGER_3IN1:
1318 if (!use_frontend) { /* terrestrial */
1319 if (configure_tda827x_fe(dev, &asus_tiger_3in1_config,
1320 &tda827x_cfg_2) < 0)
1321 goto dettach_frontend;
1322 } else { /* satellite */
1323 dev->dvb.frontend = dvb_attach(tda10086_attach,
1324 &flydvbs, &dev->i2c_adap);
1325 if (dev->dvb.frontend) {
1326 if (dvb_attach(tda826x_attach,
1327 dev->dvb.frontend, 0x60,
1328 &dev->i2c_adap, 0) == NULL) {
1329 wprintk("%s: Asus Tiger 3in1, no "
1330 "tda826x found!\n", __func__);
1331 goto dettach_frontend;
1332 }
1333 if (dvb_attach(lnbp21_attach, dev->dvb.frontend,
1334 &dev->i2c_adap, 0, 0) == NULL) {
1335 wprintk("%s: Asus Tiger 3in1, no lnbp21"
1336 " found!\n", __func__);
1337 goto dettach_frontend;
1338 }
1339 }
1340 }
1341 break;
1303 default: 1342 default:
1304 wprintk("Huh? unknown DVB card?\n"); 1343 wprintk("Huh? unknown DVB card?\n");
1305 break; 1344 break;
diff --git a/drivers/media/video/saa7134/saa7134.h b/drivers/media/video/saa7134/saa7134.h
index 5e7fc731fab1..cbfdac27b69e 100644
--- a/drivers/media/video/saa7134/saa7134.h
+++ b/drivers/media/video/saa7134/saa7134.h
@@ -269,6 +269,7 @@ struct saa7134_format {
269#define SAA7134_BOARD_BEHOLD_M6_EXTRA 144 269#define SAA7134_BOARD_BEHOLD_M6_EXTRA 144
270#define SAA7134_BOARD_AVERMEDIA_M103 145 270#define SAA7134_BOARD_AVERMEDIA_M103 145
271#define SAA7134_BOARD_ASUSTeK_P7131_ANALOG 146 271#define SAA7134_BOARD_ASUSTeK_P7131_ANALOG 146
272#define SAA7134_BOARD_ASUSTeK_TIGER_3IN1 147
272 273
273#define SAA7134_MAXBOARDS 8 274#define SAA7134_MAXBOARDS 8
274#define SAA7134_INPUT_MAX 8 275#define SAA7134_INPUT_MAX 8