Re: When xc3028/xc2028 will be supported?
- Date: Tue, 29 Jan 2008 02:50:20 -0200
- From: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxx>
- Subject: Re: When xc3028/xc2028 will be supported?
On Tue, 29 Jan 2008 02:19:04 -0200
Dâniel Fraga <fragabr@xxxxxxxxx> wrote:
> On Tue, 29 Jan 2008 00:41:04 -0200
> Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxx> wrote:
>
> > The newest firmware, AFAIK, is version 2.7. There are some hardwares that
> > might require an older firmware version (this is the case of my tm6000 10moons
> > device, that requires firmware version 1.e). The in-kernel driver supports
> > older firmware, but some extracting tool is needed for older firmwares.
> >
> > The windows .sys file contains the firmware + xc3028 code + device-specific
> > code + vendor-specific code. So, your .sys file is likely to be different
> > between two different cards, even if they have the same Xceive firmware version.
> >
> > In your case, if your .sys is supplied with firmware version 2.7, you can
> > extract the firmware from hcw85bda.sys, and this should work properly for your
> > board.
>
> Ditto! I got the
> http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip,
> extracted the firmware and I have a partial good result:
>
> Linux video capture interface: v2.00
> cx88/0: cx2388x v4l2 driver version 0.0.6 loaded
> cx88[0]: subsystem: 14f1:ea3d, board: PowerColor Real Angel 330 [card=61,autodetected]
> cx88[0]: TV tuner type 71, Radio tuner type 0
> tuner' 3-0061: chip found @ 0xc2 (cx88[0])
> xc2028 3-0061: type set to XCeive xc2028/xc3028 tuner
> xc2028 3-0061: xc2028/3028 firmware name not set!
> cx88[0]/0: found at 0000:01:08.0, rev: 5, irq: 18, latency: 32, mmio: 0xfc000000
> cx88[0]/0: registered device video0 [v4l2]
> cx88[0]/0: registered device vbi0
> cx88[0]/0: registered device radio0
> xc2028 3-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
> xc2028 3-0061: Loading firmware for type=BASE MTS (5), id 0000000000000000.
> xc2028 3-0061: Loading firmware for type=MTS (4), id 000000000000b700.
> xc2028 3-0061: Device is Xceive 3028 version 1.0, firmware version 2.7
Great!
> 1) I can use my camera, although it seems to be stuck in PAL-BG (as Aidan
> Thornton wrote before) and I can see a (although black & white) perfect picture.
>
> PAL-M and NTSC support isn't implemented yet, am I right?
Both are supported. I have several cx88 devices here working with PAL/M. I also
have several devices with xc3028.
Unfortunately, I don't have any device with both cx88 and xc3028 ;)
For you to have a colored image, both things are needed:
1) you need to select the proper standard. The driver doesn't auto-detect
between PAL/M and NTSC/M. You need to inform the standard via V4L2 API. All
applications have some way to select the video standard. You may also use qv4l2
(available at v4l2-apps/util dir).
2) the driver should load the STD/MN xc3028 firmware. This should happen
automagically ;) The firmware is this one:
Firmware 41, type: STD FIRM (0x00000000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
From your log, the proper firmware were selected. So, maybe you're just
selecting the wrong standard on your application.
> 2) radio isn't working:
>
> xc2028 3-0061: Loading firmware for type=BASE FM (401), id 0000000000000000.
> xc2028 3-0061: Loading firmware for type=FM (400), id 0000000000000000.
> xc2028 3-0061: Loading SCODE for type=SCODE HAS_IF_3280 (60000000), id 0000000000000000.
> xc2028 3-0061: Device is Xceive 3028 version 1.0, firmware version 2.7
>
> But with xc3028_specific_radio.fw from Markus' provided
> firmwares, radio worked great. Unfortunately i can't use it with your approach.
>
> Any hints about radio?
I don't have any xc3028 device with radio support. There are two different
radio firmwares: one for INPUT1 and another for INPUT2. Those are the radio
firmwares:
Firmware 2, type: BASE FM (0x00000401), id: (0000000000000000), size: 8562
Firmware 3, type: BASE FM INPUT1 (0x00000c01), id: (0000000000000000), size: 8576
Firmware 31, type: FM (0x00000400), id: (0000000000000000), size: 135
Maybe your device requires the input1 firmware. This can be selected by adding
this to xc3028 initialization code, at cx88_card_setup (on em28xx-cards.c):
ctl.input1 = 1;
I suspect that the SCODE line is wrong. I did a patch to fix (untested).
A wrong SCODE load shouldn't generate any issues. in theory, it would just
move the stations to wrong frequencies.
Please, notice that station scan might not work, or their frequencies may be
shifted.
> 3) the above .sys file has 2 .sys versions: 32 and 64 bit versions. I
> tried to extract from both and both worked the same way. I use x86-64.
> Should I stick with the firmware extracted from the 64 bit .sys file or
> it doesn't make any difference?
No. The firmware is not dependent on 32 or 64 bit machines.
> At least something has worked, which is a good news for owners
> of xceive based devices. If it got merged in 2.6.25 it would be fantastic!
Having this tested is a very good news! I'll need to merge this patch with two
other patches that adds DVB support for cx88/xc3028. If I can manage to have
some time for this merge, I'll commit and ask Linus to add this to 2.6.25.
> Ps: I want to collaborate with testing as much as possible. So feel
> free to ask for more testing, if needed.
Please try the enclosed patch. It would prevent xc3028 to load SCODE for radio.
---
Prevents loading SCODE for radio
Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxx>
diff -r 6e91eabd5d66 linux/drivers/media/video/tuner-xc2028.c
--- a/linux/drivers/media/video/tuner-xc2028.c Mon Jan 28 18:43:02 2008
-0200 +++ b/linux/drivers/media/video/tuner-xc2028.c Tue Jan 29 02:42:30
2008 -0200 @@ -770,10 +770,12 @@ skip_std_specific:
}
/* Load SCODE firmware, if exists */
- tuner_dbg("Trying to load scode %d\n", new_fw.scode_nr);
-
- rc = load_scode(fe, new_fw.type | new_fw.scode_table, &new_fw.id,
- new_fw.int_freq, new_fw.scode_nr);
+ if (!new_fw.type & FM) {
+ tuner_dbg("Trying to load scode %d\n", new_fw.scode_nr);
+
+ rc = load_scode(fe, new_fw.type | new_fw.scode_table,
+ &new_fw.id, new_fw.int_freq, new_fw.scode_nr);
+ }
check_device:
if (xc2028_get_reg(priv, 0x0004, &version) < 0 ||
Cheers,
Mauro
diff -r 6e91eabd5d66 linux/drivers/media/video/tuner-xc2028.c
--- a/linux/drivers/media/video/tuner-xc2028.c Mon Jan 28 18:43:02 2008 -0200
+++ b/linux/drivers/media/video/tuner-xc2028.c Tue Jan 29 02:42:30 2008 -0200
@@ -770,10 +770,12 @@ skip_std_specific:
}
/* Load SCODE firmware, if exists */
- tuner_dbg("Trying to load scode %d\n", new_fw.scode_nr);
-
- rc = load_scode(fe, new_fw.type | new_fw.scode_table, &new_fw.id,
- new_fw.int_freq, new_fw.scode_nr);
+ if (!new_fw.type & FM) {
+ tuner_dbg("Trying to load scode %d\n", new_fw.scode_nr);
+
+ rc = load_scode(fe, new_fw.type | new_fw.scode_table,
+ &new_fw.id, new_fw.int_freq, new_fw.scode_nr);
+ }
check_device:
if (xc2028_get_reg(priv, 0x0004, &version) < 0 ||
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@xxxxxxxxxx?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list