Lines Matching defs:av7110

3  * av7110_v4l.c: av7110 video4linux interface for DVB and Siemens DVB-C analog module
23 #include "av7110.h"
27 int msp_writereg(struct av7110 *av7110, u8 dev, u16 reg, u16 val)
32 switch (av7110->adac_type) {
43 if (i2c_transfer(&av7110->i2c_adap, &msgs, 1) != 1) {
45 av7110->dvb_adapter.num, reg, val);
51 static int msp_readreg(struct av7110 *av7110, u8 dev, u16 reg, u16 *val)
60 switch (av7110->adac_type) {
73 if (i2c_transfer(&av7110->i2c_adap, &msgs[0], 2) != 2) {
75 av7110->dvb_adapter.num, reg);
124 struct av7110 *av7110 = dev->ext_priv;
130 if (1 != i2c_transfer(&av7110->i2c_adap, &msg, 1))
137 struct av7110 *av7110 = dev->ext_priv;
142 if (1 != i2c_transfer(&av7110->i2c_adap, &msg, 1))
178 struct av7110 *av7110 = (struct av7110*)dev->ext_priv;
199 if (av7110->fe->ops.i2c_gate_ctrl)
200 av7110->fe->ops.i2c_gate_ctrl(av7110->fe, 1);
220 struct av7110 *av7110 = (struct av7110*)dev->ext_priv;
224 dprintk(4, "%p\n", av7110);
235 if (0 != av7110->current_input) {
242 switch (av7110->current_input) {
245 msp_writereg(av7110, MSP_WR_DSP, 0x0008, 0x0000); // loudspeaker source
246 msp_writereg(av7110, MSP_WR_DSP, 0x0009, 0x0000); // headphone source
247 msp_writereg(av7110, MSP_WR_DSP, 0x000a, 0x0000); // SCART 1 source
248 msp_writereg(av7110, MSP_WR_DSP, 0x000e, 0x3000); // FM matrix, mono
249 msp_writereg(av7110, MSP_WR_DSP, 0x0000, 0x4f00); // loudspeaker + headphone
250 msp_writereg(av7110, MSP_WR_DSP, 0x0007, 0x4f00); // SCART 1 volume
252 if (av7110->analog_tuner_flags & ANALOG_TUNER_VES1820) {
255 } else if (av7110->analog_tuner_flags & ANALOG_TUNER_STV0297) {
259 if (i2c_writereg(av7110, 0x48, 0x02, 0xd0) != 1)
260 dprintk(1, "saa7113 write failed @ card %d", av7110->dvb_adapter.num);
264 if (i2c_writereg(av7110, 0x48, 0x02, 0xd2) != 1)
265 dprintk(1, "saa7113 write failed @ card %d", av7110->dvb_adapter.num);
269 if (i2c_writereg(av7110, 0x48, 0x02, 0xd9) != 1)
270 dprintk(1, "saa7113 write failed @ card %d", av7110->dvb_adapter.num);
281 msp_writereg(av7110, MSP_WR_DSP, 0x0008, 0x0220); // loudspeaker source
282 msp_writereg(av7110, MSP_WR_DSP, 0x0009, 0x0220); // headphone source
283 msp_writereg(av7110, MSP_WR_DSP, 0x000a, 0x0220); // SCART 1 source
284 msp_writereg(av7110, MSP_WR_DSP, 0x000e, 0x3000); // FM matrix, mono
285 msp_writereg(av7110, MSP_WR_DSP, 0x0000, 0x7f00); // loudspeaker + headphone
286 msp_writereg(av7110, MSP_WR_DSP, 0x0007, 0x7f00); // SCART 1 volume
288 if (av7110->analog_tuner_flags & ANALOG_TUNER_VES1820) {
291 } else if (av7110->analog_tuner_flags & ANALOG_TUNER_STV0297) {
298 if (av7110_fw_cmd(av7110, COMTYPE_AUDIODAC, ADSwitch, 1, adswitch))
314 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
320 if (!av7110->analog_tuner_flags || t->index != 0)
336 msp_readreg(av7110, MSP_RD_DEM, 0x007e, &stereo_det);
338 msp_readreg(av7110, MSP_RD_DSP, 0x0018, &stereo_det);
358 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
362 if (!av7110->analog_tuner_flags || av7110->current_input != 1)
392 msp_writereg(av7110, MSP_WR_DSP, 0x000e, fm_matrix);
393 msp_writereg(av7110, MSP_WR_DSP, 0x0008, src);
394 msp_writereg(av7110, MSP_WR_DSP, 0x0009, src);
395 msp_writereg(av7110, MSP_WR_DSP, 0x000a, src);
402 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
406 if (!av7110->analog_tuner_flags || av7110->current_input != 1)
411 f->frequency = av7110->current_freq;
418 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
422 if (!av7110->analog_tuner_flags || av7110->current_input != 1)
428 msp_writereg(av7110, MSP_WR_DSP, 0x0000, 0xffe0); /* fast mute */
429 msp_writereg(av7110, MSP_WR_DSP, 0x0007, 0xffe0);
432 if (av7110->analog_tuner_flags & ANALOG_TUNER_VES1820)
434 else if (av7110->analog_tuner_flags & ANALOG_TUNER_STV0297)
436 av7110->current_freq = f->frequency;
438 msp_writereg(av7110, MSP_WR_DSP, 0x0015, 0x003f); /* start stereo detection */
439 msp_writereg(av7110, MSP_WR_DSP, 0x0015, 0x0000);
440 msp_writereg(av7110, MSP_WR_DSP, 0x0000, 0x4f00); /* loudspeaker + headphone */
441 msp_writereg(av7110, MSP_WR_DSP, 0x0007, 0x4f00); /* SCART 1 volume */
448 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
452 if (av7110->analog_tuner_flags) {
468 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
470 *input = av7110->current_input;
478 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
482 if (!av7110->analog_tuner_flags)
488 av7110->current_input = input;
504 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
509 if (av7110->current_input >= 2)
518 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
521 if (av7110->current_input >= 2)
530 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
535 if (FW_VERSION(av7110->arm_app) >= 0x2623) {
546 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
549 if (FW_VERSION(av7110->arm_app) < 0x2623)
552 if (av7110->wssMode) {
564 struct av7110 *av7110 = (struct av7110 *)dev->ext_priv;
567 if (FW_VERSION(av7110->arm_app) < 0x2623)
573 av7110->wssMode = 0;
574 av7110->wssData = 0;
575 return av7110_fw_cmd(av7110, COMTYPE_ENCODER,
583 av7110->wssMode = 1;
584 av7110->wssData = 0;
593 struct av7110 *av7110 = (struct av7110*) dev->ext_priv;
596 av7110->wssMode = 0;
597 av7110->wssData = 0;
598 if (FW_VERSION(av7110->arm_app) < 0x2623)
601 return av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetWSSConfig, 1, 0);
608 struct av7110 *av7110 = (struct av7110*) dev->ext_priv;
613 if (FW_VERSION(av7110->arm_app) < 0x2623 || !av7110->wssMode || count != sizeof d)
620 av7110->wssData = ((d.data[1] << 8) & 0x3f00) | d.data[0];
622 av7110->wssData = 0x8000;
623 rc = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetWSSConfig, 2, 1, av7110->wssData);
693 int av7110_init_analog_module(struct av7110 *av7110)
697 if (i2c_writereg(av7110, 0x80, 0x0, 0x80) == 1 &&
698 i2c_writereg(av7110, 0x80, 0x0, 0) == 1) {
700 av7110->dvb_adapter.num);
701 av7110->adac_type = DVB_ADAC_MSP34x0;
702 } else if (i2c_writereg(av7110, 0x84, 0x0, 0x80) == 1 &&
703 i2c_writereg(av7110, 0x84, 0x0, 0) == 1) {
705 av7110->dvb_adapter.num);
706 av7110->adac_type = DVB_ADAC_MSP34x5;
711 msp_readreg(av7110, MSP_RD_DSP, 0x001e, &version1);
712 msp_readreg(av7110, MSP_RD_DSP, 0x001f, &version2);
714 av7110->dvb_adapter.num, version1, version2);
715 msp_writereg(av7110, MSP_WR_DSP, 0x0013, 0x0c00);
716 msp_writereg(av7110, MSP_WR_DSP, 0x0000, 0x7f00); // loudspeaker + headphone
717 msp_writereg(av7110, MSP_WR_DSP, 0x0008, 0x0220); // loudspeaker source
718 msp_writereg(av7110, MSP_WR_DSP, 0x0009, 0x0220); // headphone source
719 msp_writereg(av7110, MSP_WR_DSP, 0x0004, 0x7f00); // loudspeaker volume
720 msp_writereg(av7110, MSP_WR_DSP, 0x000a, 0x0220); // SCART 1 source
721 msp_writereg(av7110, MSP_WR_DSP, 0x0007, 0x7f00); // SCART 1 volume
722 msp_writereg(av7110, MSP_WR_DSP, 0x000d, 0x1900); // prescale SCART
724 if (i2c_writereg(av7110, 0x48, 0x01, 0x00)!=1) {
729 if ((av7110->dev->pci->subsystem_vendor == 0x110a) && (av7110->dev->pci->subsystem_device == 0x0000)) {
731 av7110->analog_tuner_flags |= ANALOG_TUNER_VES1820;
732 } else if ((av7110->dev->pci->subsystem_vendor == 0x13c2) && (av7110->dev->pci->subsystem_device == 0x0002)) {
734 av7110->analog_tuner_flags |= ANALOG_TUNER_VES1820;
735 } else if ((av7110->dev->pci->subsystem_vendor == 0x13c2) && (av7110->dev->pci->subsystem_device == 0x000A)) {
737 av7110->analog_tuner_flags |= ANALOG_TUNER_STV0297;
741 if (av7110->analog_tuner_flags & ANALOG_TUNER_VES1820) {
742 if (ves1820_writereg(av7110->dev, 0x09, 0x0f, 0x20))
744 } else if (av7110->analog_tuner_flags & ANALOG_TUNER_STV0297) {
745 saa7146_setgpio(av7110->dev, 1, SAA7146_GPIO_OUTLO); // TDA9819 pin9(STD)
746 saa7146_setgpio(av7110->dev, 3, SAA7146_GPIO_OUTLO); // TDA9819 pin30(VIF)
751 if (i2c_writereg(av7110, 0x48, i[0], i[1]) != 1) {
752 dprintk(1, "saa7113 initialization failed @ card %d", av7110->dvb_adapter.num);
758 msp_writereg(av7110, MSP_WR_DEM, 0x00bb, 0x02d0); // AD_CV
759 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 3); // FIR1
760 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 18); // FIR1
761 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 27); // FIR1
762 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 48); // FIR1
763 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 66); // FIR1
764 msp_writereg(av7110, MSP_WR_DEM, 0x0001, 72); // FIR1
765 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 4); // FIR2
766 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 64); // FIR2
767 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 0); // FIR2
768 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 3); // FIR2
769 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 18); // FIR2
770 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 27); // FIR2
771 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 48); // FIR2
772 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 66); // FIR2
773 msp_writereg(av7110, MSP_WR_DEM, 0x0005, 72); // FIR2
774 msp_writereg(av7110, MSP_WR_DEM, 0x0083, 0xa000); // MODE_REG
775 msp_writereg(av7110, MSP_WR_DEM, 0x0093, 0x00aa); // DCO1_LO 5.74MHz
776 msp_writereg(av7110, MSP_WR_DEM, 0x009b, 0x04fc); // DCO1_HI
777 msp_writereg(av7110, MSP_WR_DEM, 0x00a3, 0x038e); // DCO2_LO 5.5MHz
778 msp_writereg(av7110, MSP_WR_DEM, 0x00ab, 0x04c6); // DCO2_HI
779 msp_writereg(av7110, MSP_WR_DEM, 0x0056, 0); // LOAD_REG 1/2
784 saa7146_write(av7110->dev, DD1_STREAM_B, 0x00000000);
785 saa7146_write(av7110->dev, DD1_INIT, 0x03000700);
786 saa7146_write(av7110->dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26));
791 int av7110_init_v4l(struct av7110 *av7110)
793 struct saa7146_dev* dev = av7110->dev;
800 if (av7110->analog_tuner_flags)
831 if (FW_VERSION(av7110->arm_app) < 0x2623)
834 if (saa7146_register_device(&av7110->v4l_dev, dev, "av7110", VFL_TYPE_VIDEO)) {
839 if (FW_VERSION(av7110->arm_app) >= 0x2623) {
840 if (saa7146_register_device(&av7110->vbi_dev, dev, "av7110", VFL_TYPE_VBI))
846 int av7110_exit_v4l(struct av7110 *av7110)
848 struct saa7146_dev* dev = av7110->dev;
850 saa7146_unregister_device(&av7110->v4l_dev, av7110->dev);
851 saa7146_unregister_device(&av7110->vbi_dev, av7110->dev);
906 struct av7110 *av7110 = (struct av7110*) dev->ext_priv;
909 av7110->vidmode = AV7110_VIDEO_MODE_PAL;
910 av7110_set_vidmode(av7110, av7110->vidmode);
913 av7110->vidmode = AV7110_VIDEO_MODE_NTSC;
914 av7110_set_vidmode(av7110, av7110->vidmode);