From: Julian Scheel <julian@jusst.de>
To: Mauro Carvalho Chehab <mchehab@redhat.com>
Cc: Steven Toth <stoth@kernellabs.com>,
Andy Walls <awalls@md.metrocast.net>,
linux-media@vger.kernel.org
Subject: Re: Hauppauge HVR-2200 analog
Date: Fri, 25 Feb 2011 08:38:15 +0100 [thread overview]
Message-ID: <4D675C67.8010704@jusst.de> (raw)
In-Reply-To: <4D480919.4050500@redhat.com>
Am 01.02.2011 14:22, schrieb Mauro Carvalho Chehab:
> Em 08-01-2011 13:40, Julian Scheel escreveu:
>> Am 06.01.2011 23:31, schrieb Julian Scheel:
>>>> Attached is the diff I currently use.
>>>>
>>> Some more process. Attached is a new patch, which allows me to capture video and audio from a PAL tuner. Imho the video has wrong colours though (using PAL-B). Maybe someone would want to test that patch and give some feedback?
>> Ok some hours of debugging later, I figured out that only encoder 1 was not working properly. This was due to a wrong addressing when sending the dif setup commands. The attached new patch fixes this.
>>
> Is this patch already working properly?
>
> If so, please:
> 1) Check its codingstyle with ./scripts/checkpatch.pl
> (there are some issues there, like commenting with //)
> 2) Remove the dead code;
> 3) Provide a patch description and your Signed-off-by:
>
For my purpose it works well, but actually I guess some more
modifications would be needed for other PAL regions. Actually Steven
wanted to take a look at this patch and merge it. What do you think, Steven?
>> saa7164-card-pal.diff
>>
>>
>> Nur in linux-2.6.37/drivers/media/video/saa7164/: modules.order.
>> diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-api.c linux-2.6.37/drivers/media/video/saa7164//saa7164-api.c
>> --- linux-2.6.37.a/drivers/media/video/saa7164//saa7164-api.c 2011-01-05 01:50:19.000000000 +0100
>> +++ linux-2.6.37/drivers/media/video/saa7164//saa7164-api.c 2011-01-08 16:10:32.000000000 +0100
>> @@ -548,7 +548,7 @@
>> tvaudio.std = TU_STANDARD_NTSC_M;
>> tvaudio.country = 1;
>> } else {
>> - tvaudio.std = TU_STANDARD_PAL_I;
>> + tvaudio.std = 0x04; //TU_STANDARD_PAL_I;
> Probably, you need to add a define for 0x04 and use its symbol here.
>
As I have no specification for the card/firmware it's a bit hard to
insert a define here, as I can not say for sure for which standards it
would properly work. Again this is something Steven would have to take a
look at, I think.
>> tvaudio.country = 44;
>> }
>>
>> @@ -608,7 +608,7 @@
>> dprintk(DBGLVL_API, "%s(nr=%d type=%d val=%x)\n", __func__,
>> port->nr, port->type, val);
>>
>> - if (port->nr == 0)
>> + if (port->nr< 3) //== 0)
>> mas = 0xd0;
>> else
>> mas = 0xe0;
>> diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-cards.c linux-2.6.37/drivers/media/video/saa7164//saa7164-cards.c
>> --- linux-2.6.37.a/drivers/media/video/saa7164//saa7164-cards.c 2011-01-05 01:50:19.000000000 +0100
>> +++ linux-2.6.37/drivers/media/video/saa7164//saa7164-cards.c 2011-01-06 16:16:56.000000000 +0100
>> @@ -203,6 +203,66 @@
>> .i2c_reg_len = REGLEN_8bit,
>> } },
>> },
>> + [SAA7164_BOARD_HAUPPAUGE_HVR2200_4] = {
>> + .name = "Hauppauge WinTV-HVR2200",
>> + .porta = SAA7164_MPEG_DVB,
>> + .portb = SAA7164_MPEG_DVB,
>> + .portc = SAA7164_MPEG_ENCODER,
>> + .portd = SAA7164_MPEG_ENCODER,
>> + .porte = SAA7164_MPEG_VBI,
>> + .portf = SAA7164_MPEG_VBI,
>> + .chiprev = SAA7164_CHIP_REV3,
>> + .unit = {{
>> + .id = 0x1d,
>> + .type = SAA7164_UNIT_EEPROM,
>> + .name = "4K EEPROM",
>> + .i2c_bus_nr = SAA7164_I2C_BUS_0,
>> + .i2c_bus_addr = 0xa0>> 1,
>> + .i2c_reg_len = REGLEN_8bit,
>> + }, {
>> + .id = 0x04,
>> + .type = SAA7164_UNIT_TUNER,
>> + .name = "TDA18271-1",
>> + .i2c_bus_nr = SAA7164_I2C_BUS_1,
>> + .i2c_bus_addr = 0xc0>> 1,
>> + .i2c_reg_len = REGLEN_8bit,
>> + }, {
>> + .id = 0x05,
>> + .type = SAA7164_UNIT_ANALOG_DEMODULATOR,
>> + .name = "TDA8290-1",
>> + .i2c_bus_nr = SAA7164_I2C_BUS_1,
>> + .i2c_bus_addr = 0x84>> 1,
>> + .i2c_reg_len = REGLEN_8bit,
>> + }, {
>> + .id = 0x1b,
>> + .type = SAA7164_UNIT_TUNER,
>> + .name = "TDA18271-2",
>> + .i2c_bus_nr = SAA7164_I2C_BUS_2,
>> + .i2c_bus_addr = 0xc0>> 1,
>> + .i2c_reg_len = REGLEN_8bit,
>> + }, {
>> + .id = 0x1c,
>> + .type = SAA7164_UNIT_ANALOG_DEMODULATOR,
>> + .name = "TDA8290-2",
>> + .i2c_bus_nr = SAA7164_I2C_BUS_2,
>> + .i2c_bus_addr = 0x84>> 1,
>> + .i2c_reg_len = REGLEN_8bit,
>> + }, {
>> + .id = 0x1e,
>> + .type = SAA7164_UNIT_DIGITAL_DEMODULATOR,
>> + .name = "TDA10048-1",
>> + .i2c_bus_nr = SAA7164_I2C_BUS_1,
>> + .i2c_bus_addr = 0x10>> 1,
>> + .i2c_reg_len = REGLEN_8bit,
>> + }, {
>> + .id = 0x1f,
>> + .type = SAA7164_UNIT_DIGITAL_DEMODULATOR,
>> + .name = "TDA10048-2",
>> + .i2c_bus_nr = SAA7164_I2C_BUS_2,
>> + .i2c_bus_addr = 0x12>> 1,
>> + .i2c_reg_len = REGLEN_8bit,
>> + } },
>> + },
>> [SAA7164_BOARD_HAUPPAUGE_HVR2250] = {
>> .name = "Hauppauge WinTV-HVR2250",
>> .porta = SAA7164_MPEG_DVB,
>> @@ -426,6 +486,10 @@
>> .subvendor = 0x0070,
>> .subdevice = 0x8851,
>> .card = SAA7164_BOARD_HAUPPAUGE_HVR2250_2,
>> + }, {
>> + .subvendor = 0x0070,
>> + .subdevice = 0x8940,
>> + .card = SAA7164_BOARD_HAUPPAUGE_HVR2200_4,
>> },
>> };
>> const unsigned int saa7164_idcount = ARRAY_SIZE(saa7164_subids);
>> @@ -469,6 +533,7 @@
>> case SAA7164_BOARD_HAUPPAUGE_HVR2200:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
>> + case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2250:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2250_2:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2250_3:
>> @@ -549,6 +614,7 @@
>> case SAA7164_BOARD_HAUPPAUGE_HVR2200:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
>> + case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2250:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2250_2:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2250_3:
>> diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-dvb.c linux-2.6.37/drivers/media/video/saa7164//saa7164-dvb.c
>> --- linux-2.6.37.a/drivers/media/video/saa7164//saa7164-dvb.c 2011-01-05 01:50:19.000000000 +0100
>> +++ linux-2.6.37/drivers/media/video/saa7164//saa7164-dvb.c 2011-01-06 16:16:56.000000000 +0100
>> @@ -475,6 +475,7 @@
>> case SAA7164_BOARD_HAUPPAUGE_HVR2200:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
>> case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
>> + case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
>> i2c_bus =&dev->i2c_bus[port->nr + 1];
>> switch (port->nr) {
>> case 0:
>> diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-encoder.c linux-2.6.37/drivers/media/video/saa7164//saa7164-encoder.c
>> --- linux-2.6.37.a/drivers/media/video/saa7164//saa7164-encoder.c 2011-01-05 01:50:19.000000000 +0100
>> +++ linux-2.6.37/drivers/media/video/saa7164//saa7164-encoder.c 2011-01-08 16:11:04.000000000 +0100
>> @@ -32,7 +32,25 @@
>> }, {
>> .name = "NTSC-JP",
>> .id = V4L2_STD_NTSC_M_JP,
>> - }
>> + }, {
>> + .name = "PAL-I",
>> + .id = V4L2_STD_PAL_I,
>> + }, {
>> + .name = "PAL-M",
>> + .id = V4L2_STD_PAL_M,
>> + }, {
>> + .name = "PAL-N",
>> + .id = V4L2_STD_PAL_N,
>> + }, {
>> + .name = "PAL-Nc",
>> + .id = V4L2_STD_PAL_Nc,
>> + }, {
>> + .name = "PAL-B",
>> + .id = V4L2_STD_PAL_B,
>> + }, {
>> + .name = "PAL-DK",
>> + .id = V4L2_STD_PAL_DK,
>> + }
>> };
>>
>> static const u32 saa7164_v4l2_ctrls[] = {
>> @@ -1359,7 +1377,7 @@
>> .ioctl_ops =&mpeg_ioctl_ops,
>> .minor = -1,
>> .tvnorms = SAA7164_NORMS,
>> - .current_norm = V4L2_STD_NTSC_M,
>> + .current_norm = V4L2_STD_PAL_B,
>> };
>>
>> static struct video_device *saa7164_encoder_alloc(
>> @@ -1407,7 +1425,7 @@
>>
>> /* Establish encoder defaults here */
>> /* Set default TV standard */
>> - port->encodernorm = saa7164_tvnorms[0];
>> + port->encodernorm = saa7164_tvnorms[6];
>> port->width = 720;
>> port->mux_input = 1; /* Composite */
>> port->video_format = EU_VIDEO_FORMAT_MPEG_2;
>> diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-fw.c linux-2.6.37/drivers/media/video/saa7164//saa7164-fw.c
>> --- linux-2.6.37.a/drivers/media/video/saa7164//saa7164-fw.c 2011-01-05 01:50:19.000000000 +0100
>> +++ linux-2.6.37/drivers/media/video/saa7164//saa7164-fw.c 2011-01-08 16:13:11.000000000 +0100
>> @@ -29,6 +29,9 @@
>>
>> #define SAA7164_REV3_FIRMWARE "NXP7164-2010-03-10.1.fw"
>> #define SAA7164_REV3_FIRMWARE_SIZE 4019072
>> +//#define SAA7164_REV3_FIRMWARE "v4l-saa7164-1.0.3-3.fw"
>> +//#define SAA7164_REV3_FIRMWARE_SIZE 4038864
>> +
> Hmm... the above seems weird for me.
Yep, missed that when cleaning up the code, can be removed.
>>
>> struct fw_header {
>> u32 firmwaresize;
>> diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164.h linux-2.6.37/drivers/media/video/saa7164//saa7164.h
>> --- linux-2.6.37.a/drivers/media/video/saa7164//saa7164.h 2011-01-05 01:50:19.000000000 +0100
>> +++ linux-2.6.37/drivers/media/video/saa7164//saa7164.h 2011-01-06 23:13:06.000000000 +0100
>> @@ -83,6 +83,7 @@
>> #define SAA7164_BOARD_HAUPPAUGE_HVR2200_3 6
>> #define SAA7164_BOARD_HAUPPAUGE_HVR2250_2 7
>> #define SAA7164_BOARD_HAUPPAUGE_HVR2250_3 8
>> +#define SAA7164_BOARD_HAUPPAUGE_HVR2200_4 9
>>
>> #define SAA7164_MAX_UNITS 8
>> #define SAA7164_TS_NUMBER_OF_LINES 312
>> @@ -113,7 +114,7 @@
>> #define DBGLVL_THR 4096
>> #define DBGLVL_CPU 8192
>>
>> -#define SAA7164_NORMS (V4L2_STD_NTSC_M | V4L2_STD_NTSC_M_JP | V4L2_STD_NTSC_443)
>> +#define SAA7164_NORMS (V4L2_STD_NTSC_M | V4L2_STD_NTSC_M_JP | V4L2_STD_NTSC_443 | V4L2_STD_PAL_I | V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | V4L2_STD_PAL_B | V4L2_STD_PAL_DK)
> You may eventually simplify the above with things like
> V4L_STD_MN (that covers NTSC/PAL_M/PAL_N and some variants). See videodev2.h
> for the macros that group video standards.
Ok, makes sense. I just followed the existing code scheme.
>>
>> enum port_t {
>> SAA7164_MPEG_UNDEFINED = 0,
>> diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-vbi.c linux-2.6.37/drivers/media/video/saa7164//saa7164-vbi.c
>> --- linux-2.6.37.a/drivers/media/video/saa7164//saa7164-vbi.c 2011-01-05 01:50:19.000000000 +0100
>> +++ linux-2.6.37/drivers/media/video/saa7164//saa7164-vbi.c 2011-01-08 15:30:50.000000000 +0100
>> @@ -28,7 +28,25 @@
>> }, {
>> .name = "NTSC-JP",
>> .id = V4L2_STD_NTSC_M_JP,
>> - }
>> + }, {
>> + .name = "PAL-I",
>> + .id = V4L2_STD_PAL_I,
>> + }, {
>> + .name = "PAL-M",
>> + .id = V4L2_STD_PAL_M,
>> + }, {
>> + .name = "PAL-N",
>> + .id = V4L2_STD_PAL_N,
>> + }, {
>> + .name = "PAL-Nc",
>> + .id = V4L2_STD_PAL_Nc,
>> + }, {
>> + .name = "PAL-B",
>> + .id = V4L2_STD_PAL_B,
>> + }, {
>> + .name = "PAL-DK",
>> + .id = V4L2_STD_PAL_DK,
>> + }
>> };
>>
>> static const u32 saa7164_v4l2_ctrls[] = {
>
-Julian
next prev parent reply other threads:[~2011-02-25 7:53 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4CFE14A1.3040801@jusst.de>
[not found] ` <1291726869.2073.5.camel@morgan.silverblock.net>
2010-12-14 17:23 ` Hauppauge HVR-2200 analog Julian Scheel
2010-12-14 18:41 ` Julian Scheel
2010-12-14 19:51 ` Steven Toth
2010-12-15 7:04 ` Julian Scheel
2011-01-04 2:19 ` Julian Scheel
2011-01-06 22:31 ` Julian Scheel
2011-01-08 15:40 ` Julian Scheel
2011-02-01 13:22 ` Mauro Carvalho Chehab
2011-02-25 7:38 ` Julian Scheel [this message]
2010-12-27 11:48 ` Julian Scheel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D675C67.8010704@jusst.de \
--to=julian@jusst.de \
--cc=awalls@md.metrocast.net \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@redhat.com \
--cc=stoth@kernellabs.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).