• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/media/dvb/ttpci/

Lines Matching refs:av7110

2  * av7110_v4l.c: av7110 video4linux interface for DVB and Siemens DVB-C analog module
35 #include "av7110.h"
39 int msp_writereg(struct av7110 *av7110, u8 dev, u16 reg, u16 val)
44 switch (av7110->adac_type) {
55 if (i2c_transfer(&av7110->i2c_adap, &msgs, 1) != 1) {
57 av7110->dvb_adapter.num, reg, val);
63 static int msp_readreg(struct av7110 *av7110, u8 dev, u16 reg, u16 *val)
72 switch (av7110->adac_type) {
85 if (i2c_transfer(&av7110->i2c_adap, &msgs[0], 2) != 2) {
87 av7110->dvb_adapter.num, reg);
184 struct av7110 *av7110 = (struct av7110*)dev->ext_priv;
205 if (av7110->fe->ops.i2c_gate_ctrl)
206 av7110->fe->ops.i2c_gate_ctrl(av7110->fe, 1);
226 struct av7110 *av7110 = (struct av7110*)dev->ext_priv;
230 dprintk(4, "%p\n", av7110);
241 if (0 != av7110->current_input) {
248 switch (av7110->current_input) {
251 msp_writereg(av7110, MSP_WR_DSP, 0x0008, 0x0000); // loudspeaker source
252 msp_writereg(av7110, MSP_WR_DSP, 0x0009, 0x0000); // headphone source
253 msp_writereg(av7110, MSP_WR_DSP, 0x000a, 0x0000); // SCART 1 source
254 msp_writereg(av7110, MSP_WR_DSP, 0x000e, 0x3000); // FM matrix, mono
255 msp_writereg(av7110, MSP_WR_DSP, 0x0000, 0x4f00); // loudspeaker + headphone
256 msp_writereg(av7110, MSP_WR_DSP, 0x0007, 0x4f00); // SCART 1 volume
258 if (av7110->analog_tuner_flags & ANALOG_TUNER_VES1820) {
261 } else if (av7110->analog_tuner_flags & ANALOG_TUNER_STV0297) {
265 if (i2c_writereg(av7110, 0x48, 0x02, 0xd0) != 1)
266 dprintk(1, "saa7113 write failed @ card %d", av7110->dvb_adapter.num);
270 if (i2c_writereg(av7110, 0x48, 0x02, 0xd2) != 1)
271 dprintk(1, "saa7113 write failed @ card %d", av7110->dvb_adapter.num);
275 if (i2c_writereg(av7110, 0x48, 0x02, 0xd9) != 1)
276 dprintk(1, "saa7113 write failed @ card %d", av7110->dvb_adapter.num);
287 msp_writereg(av7110, MSP_WR_DSP, 0x0008, 0x0220); // loudspeaker source
288 msp_writereg(av7110, MSP_WR_DSP, 0x0009, 0x0220); // headphone source
289 msp_writereg(av7110, MSP_WR_DSP, 0x000a, 0x0220); // SCART 1 source
290 msp_writereg(av7110, MSP_WR_DSP, 0x000e, 0x3000); // FM matrix, mono
291 msp_writereg(av7110, MSP_WR_DSP, 0x0000, 0x7f00); // loudspeaker + headphone
292 msp_writereg(av7110, MSP_WR_DSP, 0x0007, 0x7f00); // SCART 1 volume
294 if (av7110->analog_tuner_flags & ANALOG_TUNER_VES1820) {
297 } else if (av7110->analog_tuner_flags & ANALOG_TUNER_STV0297) {
304 if (av7110_fw_cmd(av7110, COMTYPE_AUDIODAC, ADSwitch, 1, adswitch))
320 struct av7110 *av7110 = (struct av7110*) dev->ext_priv;
332 if (!av7110->analog_tuner_flags || t->index != 0)
346 msp_readreg(av7110, MSP_RD_DEM, 0x007e, &stereo_det);
348 msp_readreg(av7110, MSP_RD_DSP, 0x0018, &stereo_det);
372 if (!av7110->analog_tuner_flags || av7110->current_input != 1)
402 msp_writereg(av7110, MSP_WR_DSP, 0x000e, fm_matrix);
403 msp_writereg(av7110, MSP_WR_DSP, 0x0008, src);
404 msp_writereg(av7110, MSP_WR_DSP, 0x0009, src);
405 msp_writereg(av7110, MSP_WR_DSP, 0x000a, src);
414 if (!av7110->analog_tuner_flags || av7110->current_input != 1)
419 f->frequency = av7110->current_freq;
428 if (!av7110->analog_tuner_flags || av7110->current_input != 1)
434 msp_writereg(av7110, MSP_WR_DSP, 0x0000, 0xffe0); // fast mute
435 msp_writereg(av7110, MSP_WR_DSP, 0x0007, 0xffe0);
438 if (av7110->analog_tuner_flags & ANALOG_TUNER_VES1820) {
440 } else if (av7110->analog_tuner_flags & ANALOG_TUNER_STV0297) {
443 av7110->current_freq = f->frequency;
445 msp_writereg(av7110, MSP_WR_DSP, 0x0015, 0x003f); // start stereo detection
446 msp_writereg(av7110, MSP_WR_DSP, 0x0015, 0x0000);
447 msp_writereg(av7110, MSP_WR_DSP, 0x0000, 0x4f00); // loudspeaker + headphone
448 msp_writereg(av7110, MSP_WR_DSP, 0x0007, 0x4f00); // SCART 1 volume
457 if (av7110->analog_tuner_flags) {
472 *input = av7110->current_input;
482 if (!av7110->analog_tuner_flags)
488 av7110->current_input = input;
512 if (FW_VERSION(av7110->arm_app) >= 0x2623) {
523 FW_VERSION(av7110->arm_app) < 0x2623)
526 if (av7110->wssMode) {
538 FW_VERSION(av7110->arm_app) < 0x2623)
544 av7110->wssMode = 0;
545 av7110->wssData = 0;
546 return av7110_fw_cmd(av7110, COMTYPE_ENCODER,
554 av7110->wssMode = 1;
555 av7110->wssData = 0;
570 struct av7110 *av7110 = (struct av7110*) dev->ext_priv;
573 av7110->wssMode = 0;
574 av7110->wssData = 0;
575 if (FW_VERSION(av7110->arm_app) < 0x2623)
578 return av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetWSSConfig, 1, 0);
585 struct av7110 *av7110 = (struct av7110*) dev->ext_priv;
590 if (FW_VERSION(av7110->arm_app) < 0x2623 || !av7110->wssMode || count != sizeof d)
597 av7110->wssData = ((d.data[1] << 8) & 0x3f00) | d.data[0];
599 av7110->wssData = 0x8000;
600 rc = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetWSSConfig, 2, 1, av7110->wssData);
686 int av7110_init_analog_module(struct av7110 *av7110)
690 if (i2c_writereg(av7110, 0x80, 0x0, 0x80) == 1 &&
691 i2c_writereg(av7110, 0x80, 0x0, 0) == 1) {
693 av7110->dvb_adapter.num);
694 av7110->adac_type = DVB_ADAC_MSP34x0;
695 } else if (i2c_writereg(av7110, 0x84, 0x0, 0x80) == 1 &&
696 i2c_writereg(av7110, 0x84, 0x0, 0) == 1) {
698 av7110->dvb_adapter.num);
699 av7110->adac_type = DVB_ADAC_MSP34x5;
704 msp_readreg(av7110, MSP_RD_DSP, 0x001e, &version1);
705 msp_readreg(av7110, MSP_RD_DSP, 0x001f, &version2);
707 av7110->dvb_adapter.num, version1, version2);
708 msp_writereg(av7110, MSP_WR_DSP, 0x0013, 0x0c00);
709 msp_writereg(av7110, MSP_WR_DSP, 0x0000, 0x7f00); // loudspeaker + headphone
710 msp_writereg(av7110, MSP_WR_DSP, 0x0008, 0x0220); // loudspeaker source
711 msp_writereg(av7110, MSP_WR_DSP, 0x0009, 0x0220); // headphone source
712 msp_writereg(av7110, MSP_WR_DSP, 0x0004, 0x7f00); // loudspeaker volume
713 msp_writereg(av7110, MSP_WR_DSP, 0x000a, 0x0220); // SCART 1 source
714 msp_writereg(av7110, MSP_WR_DSP, 0x0007, 0x7f00); // SCART 1 volume
715 msp_writereg(av7110, MSP_WR_DSP, 0x000d, 0x1900); // prescale SCART
717 if (i2c_writereg(av7110, 0x48, 0x01, 0x00)!=1) {
722 if ((av7110->dev->pci->subsystem_vendor == 0x110a) && (av7110->dev->pci->subsystem_device == 0x0000)) {
724 av7110->analog_tuner_flags |= ANALOG_TUNER_VES1820;
725 } else if ((av7110->dev->pci->subsystem_vendor == 0x13c2) && (av7110->dev->pci->subsystem_device == 0x0002)) {
727 av7110->analog_tuner_flags |= ANALOG_TUNER_VES1820;
728 } else if ((av7110->dev->pci->subsystem_vendor == 0x13c2) && (av7110->dev->pci->subsystem_device == 0x000A)) {
730 av7110->analog_tuner_flags |= ANALOG_TUNER_STV0297;
734 if (av7110->analog_tuner_flags & ANALOG_TUNER_VES1820) {
735 if (ves1820_writereg(av7110->dev, 0x09, 0x0f, 0x20))
737 } else if (av7110->analog_tuner_flags & ANALOG_TUNER_STV0297) {
738 saa7146_setgpio(av7110->dev, 1, SAA7146_GPIO_OUTLO); // TDA9819 pin9(STD)
739 saa7146_setgpio(av7110->dev, 3, SAA7146_GPIO_OUTLO); // TDA9819 pin30(VIF)
744 if (i2c_writereg(av7110, 0x48, i[0], i[1]) != 1) {
745 dprintk(1, "saa7113 initialization failed @ card %d", av7110->dvb_adapter.num);
751 msp_writereg(av7110, MSP_WR_DEM, 0x00bb, 0x02d0); // AD_CV
752 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 3); // FIR1
753 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 18); // FIR1
754 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 27); // FIR1
755 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 48); // FIR1
756 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 66); // FIR1
757 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 72); // FIR1
758 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 4); // FIR2
759 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 64); // FIR2
760 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 0); // FIR2
761 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 3); // FIR2
762 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 18); // FIR2
763 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 27); // FIR2
764 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 48); // FIR2
765 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 66); // FIR2
766 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 72); // FIR2
767 msp_writereg(av7110, MSP_WR_DEM, 0x0083, 0xa000); // MODE_REG
768 msp_writereg(av7110, MSP_WR_DEM, 0x0093, 0x00aa); // DCO1_LO 5.74MHz
769 msp_writereg(av7110, MSP_WR_DEM, 0x009b, 0x04fc); // DCO1_HI
770 msp_writereg(av7110, MSP_WR_DEM, 0x00a3, 0x038e); // DCO2_LO 5.5MHz
771 msp_writereg(av7110, MSP_WR_DEM, 0x00ab, 0x04c6); // DCO2_HI
772 msp_writereg(av7110, MSP_WR_DEM, 0x0056, 0); // LOAD_REG 1/2
777 saa7146_write(av7110->dev, DD1_STREAM_B, 0x00000000);
778 saa7146_write(av7110->dev, DD1_INIT, 0x03000700);
779 saa7146_write(av7110->dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26));
784 int av7110_init_v4l(struct av7110 *av7110)
786 struct saa7146_dev* dev = av7110->dev;
792 if (av7110->analog_tuner_flags)
802 if (saa7146_register_device(&av7110->v4l_dev, dev, "av7110", VFL_TYPE_GRABBER)) {
807 if (saa7146_register_device(&av7110->vbi_dev, dev, "av7110", VFL_TYPE_VBI))
812 int av7110_exit_v4l(struct av7110 *av7110)
814 struct saa7146_dev* dev = av7110->dev;
816 saa7146_unregister_device(&av7110->v4l_dev, av7110->dev);
817 saa7146_unregister_device(&av7110->vbi_dev, av7110->dev);
870 struct av7110 *av7110 = (struct av7110*) dev->ext_priv;
873 av7110->vidmode = VIDEO_MODE_PAL;
874 av7110_set_vidmode(av7110, av7110->vidmode);
877 av7110->vidmode = VIDEO_MODE_NTSC;
878 av7110_set_vidmode(av7110, av7110->vidmode);