aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/saa7134
diff options
context:
space:
mode:
authorhermann pitton <hermann-pitton@arcor.de>2008-09-14 16:49:14 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-10-12 07:37:07 -0400
commit301e9d64e0bb00c557d9385474cc9d79db0485d9 (patch)
tree4b198e9dc7c454908fa14dd49d7c9997b4f51ad5 /drivers/media/video/saa7134
parente4aab64cb78a42e45e1d387f272712e06cf89a66 (diff)
V4L/DVB (9028): saa7134: add support for the triple Asus Tiger 3in1
after looking it up, all rants about the 80 columns restriction seem to be in vain. After changing the card's name it are now "only" seven new lines in the tiny DVB-T/DVB-S switch function. saa7130/34: v4l2 driver version 0.2.14 loaded saa7133[0]: found at 0000:02:08.0, rev: 209, irq: 18, latency: 32, mmio: 0xfdef7000 saa7133[0]: subsystem: 1043:4878, board: Asus Tiger 3in1 [card=147,autodetected] saa7133[0]: board init: gpio is 200000 tuner' 2-004b: chip found @ 0x96 (saa7133[0]) saa7133[0]: i2c eeprom 00: 43 10 78 48 54 20 1c 00 43 43 a9 1c 55 d2 b2 92 saa7133[0]: i2c eeprom 10: ff ff ff 0f ff 20 ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 20: 01 40 01 02 03 01 01 03 08 ff 00 d7 ff ff ff ff saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 40: ff 28 00 c2 96 16 03 02 c0 1c ff ff ff ff ff ff saa7133[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c scan: found device @ 0x10 [???] saa7133[0]: i2c scan: found device @ 0x16 [???] saa7133[0]: i2c scan: found device @ 0x1c [???] saa7133[0]: i2c scan: found device @ 0x96 [???] saa7133[0]: i2c scan: found device @ 0xa0 [eeprom] tda829x 2-004b: setting tuner address to 61 tda829x 2-004b: type set to tda8290+75a saa7133[0]: registered device video0 [v4l2] saa7133[0]: registered device vbi0 saa7133[0]: registered device radio0 DVB: registering new adapter (saa7133[0]) DVB: registering frontend 0 (Philips TDA10086 DVB-S)... The board init gpio is 0x0, 0x200000 is from previously unloading with antenna_switch = 1. It needs firmware for the tda10046 and analog sound needs saa7134-alsa. I have support for one more board and need to fix the first revision of the Asus Tiger DVB-T hybrid. DVB-T currently hangs on the male radio antenna input, also some small other stuff. Please report any issues with this patch, the next are depending on this one. saa7134: add support for the triple Asus Tiger 3in1 Signed-off-by: Hermann Pitton <hermann-pitton@arcor.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/saa7134')
-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