Archived:AVerMedia AVerTV Hybrid+FM Cardbus (E506R)-V4L: Difference between revisions
No edit summary |
No edit summary |
||
Line 77: | Line 77: | ||
<pre><nowiki> |
<pre><nowiki> |
||
--- |
--- saa7134-cards.c.org 2006-10-18 06:10:22.000000000 +0400 |
||
+++ |
+++ saa7134-cards.c 2006-10-18 06:45:23.000000000 +0400 |
||
@@ -1591,6 +1591,33 @@ struct saa7134_board saa7134_boards[] = |
@@ -1591,6 +1591,33 @@ struct saa7134_board saa7134_boards[] = |
||
.amux = LINE1, |
.amux = LINE1, |
||
Line 113: | Line 113: | ||
.name = "Terratec Cinergy 400 mobile", |
.name = "Terratec Cinergy 400 mobile", |
||
.audio_clock = 0x187de7, |
.audio_clock = 0x187de7, |
||
@@ -3002,6 +3029,13 @@ struct pci_device_id saa7134_pci_tbl[] = |
|||
.subdevice = 0xd6ee, |
|||
.driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS, |
|||
},{ |
|||
+ /* AVerMedia CardBus E506R */ |
|||
+ .vendor = PCI_VENDOR_ID_PHILIPS, |
|||
+ .device = PCI_DEVICE_ID_PHILIPS_SAA7134, |
|||
+ .subvendor = 0x1461, /* Avermedia Technologies Inc */ |
|||
+ .subdevice = 0xf436, |
|||
+ .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS_506, |
|||
+ },{ |
|||
/* TransGear 3000TV */ |
|||
.vendor = PCI_VENDOR_ID_PHILIPS, |
|||
.device = PCI_DEVICE_ID_PHILIPS_SAA7130, |
|||
@@ -3435,6 +3469,7 @@ int saa7134_board_init1(struct saa7134_d |
|||
saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x00); |
|||
break; |
|||
case SAA7134_BOARD_AVERMEDIA_CARDBUS: |
|||
+ case SAA7134_BOARD_AVERMEDIA_CARDBUS_506: |
|||
/* power-up tuner chip */ |
|||
saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff); |
|||
saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff); |
|||
</nowiki></pre> |
</nowiki></pre> |
||
Revision as of 02:45, 18 October 2006
AVerMedia TV+FM CardBus E506R
AVermedia released their card with binary only driver for Mandriva and FC3/4. For ancient kernels of course. Due to licensing from chip vendor and the fact that AVerMedia is a proud GPL violator -- they do not bother publishing source for their driver that is actually based on V4L.
Looking inside the card we can see that it is:
- Philips SAA7135HL PCI Audio/Video Broadcast Decoder - Xceive XC3028 Silicon Tuner - Zarlink MT352 Digital Terrestrial TV Demodulator
So...
Excuse me for beeing dumb and stupid, but I just took Marcus' code for Em2880 from his repository at http://linuxtv.org/hg/~mrechberger/v4l-dvb
And added XC3028 tuner defintion to SAA7134 code, leaving gpio initialization as for AverMedia E500 card.
Guess what? It worked :)
Screenshot is here
Dmesg follows:
Linux video capture interface: v1.00 em28xx v4l2 driver version 0.0.1 loaded usbcore: registered new driver em28xx /home/lesha/dev/e506r/v4l-dvb/v4l/mt2060-tuner.c: mt2060_module_init saa7130/34: v4l2 driver version 0.2.14 loaded ACPI: PCI Interrupt 0000:03:00.0[A] -> Link [LNKB] -> GSI 11 (level, low) -> IRQ 11 saa7133[0]: found at 0000:03:00.0, rev: 209, irq: 11, latency: 64, mmio: 0x58000000 saa7133[0]: subsystem: 1461:f436, board: AVerMedia Cardbus TV/Radio (E506) [card=99,insmod option] saa7133[0]: board init: gpio is effffff tuner 0-0061: chip found @ 0xc2 (saa7133[0]) xc3028-tuner.c: only analogue and DVB-T are supported at the moment saa7133[0]: i2c eeprom 00: 61 14 36 f4 00 00 00 00 00 00 00 00 00 00 00 00 saa7133[0]: i2c eeprom 10: 00 ff e2 0e ff 20 ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 20: 01 40 01 02 02 01 01 03 08 ff 00 ff ff ff ff ff saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 40: ff 65 00 ff c2 1e ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff xc3028-tuner.c: selected videostandard PAL-B/G xc3028-tuner.c: ANALOG Mode! xc3028-tuner.c: loading new firmware xc3028-tuner.c: Successfully loaded Firmware: 1027 xc3028-tuner.c: V4L2_STD_PAL xc3028-tuner.c: V4L2_STD_PAL saa7133[0]: registered device video0 [v4l2] saa7133[0]: registered device vbi0 saa7133[0]: registered device radio0 saa7134 ALSA driver for DMA sound loaded saa7133[0]/alsa: saa7133[0] at 0x58000000 irq 11 registered as card -1
The patches (dirty way, sorry, I'm not a programmer)
--- v4l-dvb/linux/drivers/media/video/saa7134/saa7134.h 2006-10-18 06:10:22.000000000 +0400 +++ /home/lesha/saa7134.h 2006-10-18 06:09:20.000000000 +0400 @@ -229,6 +229,8 @@ #define SAA7134_BOARD_ELSA_700TV 89 #define SAA7134_BOARD_KWORLD_ATSC110 90 +#define SAA7134_BOARD_AVERMEDIA_CARDBUS_506 99 + #define SAA7134_MAXBOARDS 8 #define SAA7134_INPUT_MAX 8
--- saa7134-cards.c.org 2006-10-18 06:10:22.000000000 +0400 +++ saa7134-cards.c 2006-10-18 06:45:23.000000000 +0400 @@ -1591,6 +1591,33 @@ struct saa7134_board saa7134_boards[] = .amux = LINE1, }, }, + [SAA7134_BOARD_AVERMEDIA_CARDBUS_506] = { + /* Kees.Blom@cwi.nl */ + .name = "AVerMedia Cardbus TV/Radio (E506R)", + .audio_clock = 0x187de7, + .tuner_type = TUNER_XCEIVE_XC3028, + .radio_type = UNSET, + .tuner_addr = ADDR_UNSET, + .radio_addr = ADDR_UNSET, + .inputs = {{ + .name = name_tv, + .vmux = 1, + .amux = TV, + .tv = 1, + },{ + .name = name_comp1, + .vmux = 3, + .amux = LINE2, + },{ + .name = name_svideo, + .vmux = 8, + .amux = LINE1, + }}, + .radio = { + .name = name_radio, + .amux = LINE1, + }, + }, [SAA7134_BOARD_CINERGY400_CARDBUS] = { .name = "Terratec Cinergy 400 mobile", .audio_clock = 0x187de7, @@ -3002,6 +3029,13 @@ struct pci_device_id saa7134_pci_tbl[] = .subdevice = 0xd6ee, .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS, },{ + /* AVerMedia CardBus E506R */ + .vendor = PCI_VENDOR_ID_PHILIPS, + .device = PCI_DEVICE_ID_PHILIPS_SAA7134, + .subvendor = 0x1461, /* Avermedia Technologies Inc */ + .subdevice = 0xf436, + .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS_506, + },{ /* TransGear 3000TV */ .vendor = PCI_VENDOR_ID_PHILIPS, .device = PCI_DEVICE_ID_PHILIPS_SAA7130, @@ -3435,6 +3469,7 @@ int saa7134_board_init1(struct saa7134_d saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x00); break; case SAA7134_BOARD_AVERMEDIA_CARDBUS: + case SAA7134_BOARD_AVERMEDIA_CARDBUS_506: /* power-up tuner chip */ saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff); saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
Also you should use saa7134-tvaudio.c patch from AVerMedia_Cardbus_Plus_E501R if we need SECAM sound.
So... someone, please assign E506R valid card id insted 99, cleanup and include this code to the tree, etc.
Respect товарищу Hayova за 501R ;)))