Messages in this thread Patch in this message | | | Date | Tue, 12 Jul 2005 21:33:56 +0200 | From | thomas schorpp <> | Subject | [PATCH][DVB][2.6.12]Siemens DVB-C PCI: SAA7113 Analog Module Extension: Fix missing Video (CVBS+Y/C) Inputs in AV711X V4L driver |
| |
hello,
this patch enables the before not implemented video inputs of the SAA7113 Analog Cable Extension Module of that "classic" dvb-c card listed:
http://www.vdr-wiki.de/wiki/index.php/DVB-C_full-featured-Karten#Fujitsu-Siemens_DVB-C
- tested O.K. with original Siemens PCI Card + CI + Analog Module - tested O.K. with xawtv (latest 3.xx release at this time) - tested O.K. with gnomemeeting (v4l1 only) - tested O.K. with tvtime 0.9x (NOT OK if tuner is accessed! be careful) - not tested the Y/C input configuration, is guessed from datasheet.
signed-off-by: t.schorpp@gmx.de
y tom
--- linux-2.6.12/drivers/media/dvb/ttpci/av7110_v4l.c 2005-06-17 21:48:29.000000000 +0200 +++ linux-2.6.12/drivers/media/dvb/ttpci/av7110_v4l.c 2005-07-11 01:43:18.000000000 +0200 @@ -70,7 +70,7 @@ return 0; }
-static struct v4l2_input inputs[2] = { +static struct v4l2_input inputs[4] = { { .index = 0, .name = "DVB", @@ -87,6 +87,22 @@ .tuner = 0, .std = V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, .status = 0, + }, { + .index = 2, + .name = "Video", + .type = V4L2_INPUT_TYPE_CAMERA, + .audioset = 0, + .tuner = 0, + .std = V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, + .status = 0, + }, { + .index = 3, + .name = "Y/C", + .type = V4L2_INPUT_TYPE_CAMERA, + .audioset = 0, + .tuner = 0, + .std = V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, + .status = 0, } };
@@ -212,11 +228,17 @@ }
if (0 != av7110->current_input) { + + dprintk(1, "switching to analog TV: \n"); adswitch = 1; source = SAA7146_HPS_SOURCE_PORT_B; sync = SAA7146_HPS_SYNC_PORT_B; memcpy(standard, analog_standard, sizeof(struct saa7146_standard) * 2); - dprintk(1, "switching to analog TV\n"); + + switch (av7110->current_input) { + case 1: + { + dprintk(1, "switching SAA7113 to Analog Tuner Input.\n"); msp_writereg(av7110, MSP_WR_DSP, 0x0008, 0x0000); // loudspeaker source msp_writereg(av7110, MSP_WR_DSP, 0x0009, 0x0000); // headphone source msp_writereg(av7110, MSP_WR_DSP, 0x000a, 0x0000); // SCART 1 source @@ -231,6 +253,37 @@ saa7146_setgpio(dev, 1, SAA7146_GPIO_OUTHI); // TDA9198 pin9(STD) saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTHI); // TDA9198 pin30(VIF) } + + if (i2c_writereg(av7110, 0x48, 0x02, 0xd0) != 1) { + dprintk(1, "saa7113 write failed @ card %d", av7110->dvb_adapter.num); + } + break; + } + + case 2: + { + if (i2c_writereg(av7110, 0x48, 0x02, 0xd2) != 1) { + dprintk(1, "saa7113 write failed @ card %d", av7110->dvb_adapter.num); + } + dprintk(1, "switching SAA7113 to Video AV CVBS Input.\n"); + break; + } + + case 3: + { + if (i2c_writereg(av7110, 0x48, 0x02, 0xd9) != 1) { + dprintk(1, "saa7113 write failed @ card %d", av7110->dvb_adapter.num); + } + dprintk(1, "switching SAA7113 to Video AV Y/C Input.\n"); + break; + } + + default: + { + dprintk(1, "switching SAA7113 to Input: AV7110: SAA7113: invalid input.\n"); + } + } + } else { adswitch = 0; source = SAA7146_HPS_SOURCE_PORT_A; @@ -406,7 +459,7 @@ dprintk(2, "VIDIOC_ENUMINPUT: %d\n", i->index);
if (av7110->analog_tuner_flags) { - if (i->index < 0 || i->index >= 2) + if (i->index < 0 || i->index >= 4) return -EINVAL; } else { if (i->index != 0) @@ -433,7 +486,7 @@ if (!av7110->analog_tuner_flags) return 0;
- if (input < 0 || input >= 2) + if (input < 0 || input >= 4) return -EINVAL;
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |