|
Subject: Re: DVB-T on quad TV tuner card from Medion PC MD8800 Newsgroups: gmane.comp.video.video4linux Date: 2006-04-02 21:02:14 GMT (2 years, 35 weeks, 18 hours and 41 minutes ago)
Hi, folks
Here is a patch that should add support for the Medion MD8800. Since i don't
have such a card, i need your help for debugging.
The following should work
- auto detection
- analog tv via tuner
- analog CVBS and s-video
- DVB-T
The patch applies to my personal repository or the official repository of
april, 1st at linuxtv.org
Please test and report.
A question: should the board support FM-radio?
Best regards
Hartmut
diff -uNr v4l-dvb.mar/linux/drivers/media/video/saa7134/saa7134-cards.c v4l-dvb/linux/drivers/media/video/saa7134/saa7134-cards.c
--- v4l-dvb.mar/linux/drivers/media/video/saa7134/saa7134-cards.c 2006-04-01
21:15:29.000000000 +0200
+++ v4l-dvb/linux/drivers/media/video/saa7134/saa7134-cards.c 2006-04-02 00:52:12.000000000 +0200
@@ -2883,6 +2883,29 @@
.gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
},
},
+ [SAA7134_BOARD_MEDION_MD8800_QUADRO] = {
+ .name = "Medion Md8800 Quadro",
+ .audio_clock = 0x00187de7,
+ .tuner_type = TUNER_PHILIPS_TDA8290,
+ .radio_type = UNSET,
+ .tuner_addr = ADDR_UNSET,
+ .radio_addr = ADDR_UNSET,
+ .mpeg = SAA7134_MPEG_DVB,
+ .inputs = {{
+ .name = name_tv,
+ .vmux = 1,
+ .amux = TV,
+ .tv = 1,
+ },{
+ .name = name_comp1,
+ .vmux = 0,
+ .amux = LINE2,
+ },{
+ .name = name_svideo,
+ .vmux = 8,
+ .amux = LINE2,
+ }},
+ },
};
const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
@@ -3432,6 +3455,18 @@
.subdevice = 0x3502, /* whats the difference to 0x3306 ?*/
.driver_data = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
},{
+ .vendor = PCI_VENDOR_ID_PHILIPS,
+ .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
+ .subvendor = 0x16be,
+ .subdevice = 0x0007,
+ .driver_data = SAA7134_BOARD_MEDION_MD8800_QUADRO,
+ },{
+ .vendor = PCI_VENDOR_ID_PHILIPS,
+ .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
+ .subvendor = 0x16be,
+ .subdevice = 0x0008,
+ .driver_data = SAA7134_BOARD_MEDION_MD8800_QUADRO,
+ },{
/* --- boards without eeprom + subsystem ID --- */
.vendor = PCI_VENDOR_ID_PHILIPS,
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
diff -uNr v4l-dvb.mar/linux/drivers/media/video/saa7134/saa7134-dvb.c v4l-dvb/linux/drivers/media/video/saa7134/saa7134-dvb.c
--- v4l-dvb.mar/linux/drivers/media/video/saa7134/saa7134-dvb.c 2006-04-01
21:15:29.000000000 +0200
+++ v4l-dvb/linux/drivers/media/video/saa7134/saa7134-dvb.c 2006-04-02 00:47:20.000000000 +0200
@@ -956,6 +956,64 @@
.request_firmware = NULL,
};
+/* ------------------------------------------------------------------ */
+
+static int md8800_dvbt_mode(struct dvb_frontend *fe)
+{
+ struct saa7134_dev *dev = fe->dvb->priv;
+ static u8 data[] = { 0x3c, 0x33, 0x6a};
+ struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
+
+ if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
+ return -EIO;
+ return 0;
+}
+
+static void md8800_dvbt_analog_mode(struct dvb_frontend *fe)
+{
+ struct saa7134_dev *dev = fe->dvb->priv;
+ static u8 data[] = { 0x3c, 0x33, 0x68};
+ struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
+
+ i2c_transfer(&dev->i2c_adap, &msg, 1);
+ philips_tda827xa_pll_sleep( 0x60, fe);
+}
+
+static int md8800_dvbt_pll_set(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+{
+ int ret;
+ struct saa7134_dev *dev = fe->dvb->priv;
+ static u8 tda8290_close[] = { 0x21, 0xc0};
+ static u8 tda8290_open[] = { 0x21, 0x80};
+ struct i2c_msg tda8290_msg = {.addr = 0x4b,.flags = 0, .len = 2};
+ /* close tda8290 i2c bridge */
+ tda8290_msg.buf = tda8290_close;
+ ret = i2c_transfer(&dev->i2c_adap, &tda8290_msg, 1);
+ if (ret != 1)
+ return -EIO;
+ msleep(20);
+ ret = philips_tda827xa_pll_set(0x60, fe, params);
+ if (ret != 0)
+ return ret;
+ /* open tda8290 i2c bridge */
+ tda8290_msg.buf = tda8290_open;
+ i2c_transfer(&dev->i2c_adap, &tda8290_msg, 1);
+ return ret;
+}
+
+static struct tda1004x_config md8800_dvbt_config = {
+ .demod_address = 0x08,
+ .invert = 1,
+ .invert_oclk = 0,
+ .xtal_freq = TDA10046_XTAL_16M,
+ .agc_config = TDA10046_AGC_TDA827X,
+ .if_freq = TDA10046_FREQ_045,
+ .pll_init = md8800_dvbt_mode,
+ .pll_set = md8800_dvbt_pll_set,
+ .pll_sleep = md8800_dvbt_analog_mode,
+ .request_firmware = NULL,
+};
+
#endif
/* ------------------------------------------------------------------ */
@@ -1070,6 +1128,10 @@
dev->dvb.frontend = tda10046_attach(&ads_tech_duo_config,
&dev->i2c_adap);
break;
+ case SAA7134_BOARD_MEDION_MD8800_QUADRO:
+ dev->dvb.frontend = tda10046_attach(&md8800_dvbt_config,
+ &dev->i2c_adap);
+ break;
#endif
#ifdef HAVE_NXT200X
case SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180:
diff -uNr v4l-dvb.mar/linux/drivers/media/video/saa7134/saa7134.h v4l-dvb/linux/drivers/media/video/saa7134/saa7134.h
--- v4l-dvb.mar/linux/drivers/media/video/saa7134/saa7134.h 2006-04-01 21:15:29.000000000 +0200
+++ v4l-dvb/linux/drivers/media/video/saa7134/saa7134.h 2006-04-02 00:27:14.000000000 +0200
@@ -231,6 +231,7 @@
#define SAA7134_BOARD_AVERMEDIA_A169_B1 92
#define SAA7134_BOARD_MD7134_BRIDGE_2 93
#define SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS 94
+#define SAA7134_BOARD_MEDION_MD8800_QUADRO 95
#define SAA7134_MAXBOARDS 8
#define SAA7134_INPUT_MAX 8
-- video4linux-list mailing list Unsubscribe mailto:video4linux-list-request <at> redhat.com?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list |
|
|