Re: [linux-dvb] ASUS 'My Cinema Europa Hybrid' (P7131 DVB-T) [SAA7134] Firmware oddities

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sam Spilsbury wrote:
Hi everyone,

So It's my first time to LinuxTV hacking, debugging etc, so I
apologize if I've failed to provide anything essential.

Anyways, I've just bought a ASUS 'My Cinema Europa Hybrid' (P7131
DVB-T) which has the Phillips saa7131 chipset in it (supported by the
saa7131 module et al). There is a problem getting the firmware in this
card to boot correctly - I may have the wrong card number and I cannot
use i2c because it detects it as UNKNOWN/GENERIC (i.e type 0) which
doesn't work.

According to /usr/share/doc/linux/video4linux etc my card number
should be either 78, 111 or 112. Specifying card=x seems to make the
module somewhat recognize the card, and even though I have the
firmware - it won't actually boot. This is shown by the fact that all
dvb operations essentially just time out and the fact that I cannot
scan channels in software like tvtime. I might be wrong though.

Here is relevant output which might assist in helping the problem:

==== dmesg log ====c

saa7130/34: v4l2 driver version 0.2.14 loaded
saa7134[0]: found at 0000:00:09.0, rev: 1, irq: 18, latency: 32, mmio:
0xeb007000
saa7134[0]: subsystem: 1043:4847, board: ASUSTeK P7131 Dual
[card=78,insmod option]
saa7134[0]: board init: gpio is 200000
input: saa7134 IR (ASUSTeK P7131 Dual) as
/devices/pci0000:00/0000:00:09.0/input/input7
tuner' 3-0043: chip found @ 0x86 (saa7134[0])
tda9887 3-0043: creating new instance
tda9887 3-0043: tda988[5/6/7] found
saa7134[0]: i2c eeprom 00: 43 10 47 48 54 20 1c 00 43 43 a9 1c 55 d2 b2 92
saa7134[0]: i2c eeprom 10: 00 ff 82 0e ff 20 ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 20: 01 40 01 02 03 ff 03 04 08 ff 00 2a ff ff ff ff
saa7134[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 40: ff 02 00 c2 86 10 ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: registered device video0 [v4l2]
saa7134[0]: registered device vbi0
saa7134[0]: registered device radio0
DVB: registering new adapter (saa7134[0])
DVB: registering frontend 0 (Philips TDA10046H DVB-T)...
tda1004x: setting up plls for 48MHz sampling clock
tda1004x: timeout waiting for DSP ready
tda1004x: found firmware revision 0 -- invalid
tda1004x: trying to boot from eeprom
tda1004x: found firmware revision 26 -- ok
saa7134[0]/dvb: could not access tda8290 I2C gate
tda827x_probe_version: could not read from tuner at addr: 0xc2

===== Relevant bits of lspci =====

00:09.0 Multimedia controller: Philips Semiconductors
SAA7134/SAA7135HL Video Broadcast Decoder (rev 01)
	Subsystem: ASUSTeK Computer Inc. Device 4847
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 32 (21000ns min, 8000ns max)
	Interrupt: pin A routed to IRQ 18
	Region 0: Memory at eb007000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: [40] Power Management version 1
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=1 PME-
	Kernel driver in use: saa7134
	Kernel modules: saa7134


Any help would be greatly appreciated however I understand if this
isn't a fixable issue. If so it would be nice to know where I could
buy (online) TV Tuner cards with a composite input, are the old PCI
type and of course work well with Linux (Fedora 10 at least).

Thanks in advance,

Sam

Hi Sam and everyone

First off I'm new to the LinuxTV mailing list and just like Sam this is my first time hacking, debugging etc.

I also have an ASUS 'My Cinema Europa Hybrid' and it is currently unsupported right now.
However looking over the hardware component's on the card itself, it seems that the individual components seem to be supported
and we merely have to get all the components "interacting" with each other.

The card has a:
	* Philips SAA7134HL video decoder, which is supported by the saa7134 driver
	* Philips TDA10046A digital demodulator, which is supported by the tda1004x driver
	* Philips TDA9886TS analog demodulator, which is supported by the tda9887 driver

I went and compiled and installed the recent 2.6.30 kernel and also a recent v4l-dvb snapshot.
So i can make sure that i have the most recent drivers. It still seems to be unsupported in recent kernels and also v4l-dvb snapshots
I done a modprobe saa7134 i2c_scan=1 so any attached/associated components are scanned and detect.
It seems that the TDA9886TS analog demodulator is detected and i believe the device at 0x10 is the TDA10046A digital demodulator as shown by the dmesg output:

=================================================================================
Linux video capture interface: v2.00
saa7130/34: v4l2 driver version 0.2.15 loaded
saa7134[0]: found at 0000:06:05.0, rev: 1, irq: 20, latency: 64, mmio: 0xfebffc00
saa7134[0]: subsystem: 1043:4847, board: UNKNOWN/GENERIC [card=0,autodetected]
saa7134[0]: board init: gpio is 0
IRQ 20/saa7134[0]: IRQF_DISABLED is not guaranteed on shared IRQs
saa7134[0]: i2c eeprom 00: 43 10 47 48 54 20 1c 00 43 43 a9 1c 55 d2 b2 92
saa7134[0]: i2c eeprom 10: 00 ff 82 0e ff 20 ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 20: 01 40 01 02 03 ff 03 04 08 ff 00 2a ff ff ff ff
saa7134[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 40: ff 02 00 c2 86 10 ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c scan: found device @ 0x10  [???]
saa7134[0]: i2c scan: found device @ 0x86  [tda9887]
saa7134[0]: i2c scan: found device @ 0xa0  [eeprom]
saa7134[0]: registered device video0 [v4l2]
saa7134[0]: registered device vbi0
saa7134 ALSA driver for DMA sound loaded
IRQ 20/saa7134[0]: IRQF_DISABLED is not guaranteed on shared IRQs
saa7134[0]/alsa: saa7134[0] at 0xfebffc00 irq 20 registered as card -2
=================================================================================

According to this wiki entry: http://www.linuxtv.org/wiki/index.php/Development:_How_to_add_support_for_a_device
To add support for a new saa7134 card we just need to modify saa7134-cards.c and saa7134.h and add any card specific details such as vendor/device id, tuner and inputs etc.
So started by modifying those two files, i highly doubt the card will work with just the modifications i have made.
Anyway here's a patch containing  what i have modified,
it's mostly copied and pasted from the SAA7134_BOARD_ASUS_EUROPA2_HYBRID section but changed to suit the card

======================================================================================
diff -r bff77ec33116 linux/drivers/media/video/saa7134/saa7134-cards.c
--- a/linux/drivers/media/video/saa7134/saa7134-cards.c Thu Jun 11 18:44:23 2009 -0300
+++ b/linux/drivers/media/video/saa7134/saa7134-cards.c Sat Jun 13 00:12:26 2009 +1000
@@ -5155,6 +5155,22 @@
                       .gpio = 0x00,
               },
       },
+       [SAA7134_BOARD_ASUS_EUROPA_HYBRID] = {
+               .name           = "Asus Europa Hybrid OEM",
+               .audio_clock    = 0x00187de7,
+               .tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
+               .radio_type     = UNSET,
+               .tuner_addr     = ADDR_UNSET,
+               .radio_addr     = ADDR_UNSET,
+               .tda9887_conf   = TDA9887_PRESENT,
+               .mpeg           = SAA7134_MPEG_DVB,
+               .inputs = {{
+                       .name   = name_tv,
+                       .vmux   = 1,
+                       .amux   = TV,
+                       .tv     = 1,
+               }},
+       },
};

const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
@@ -6257,7 +6273,13 @@
               .subdevice    = 0xf31d,
               .driver_data  = SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS,

-       }, {
+       },{
+               .vendor       = PCI_VENDOR_ID_PHILIPS,
+               .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
+               .subvendor    = 0x1043,
+               .subdevice    = 0x4847,
+               .driver_data  = SAA7134_BOARD_ASUS_EUROPA_HYBRID,
+       },{
               /* --- boards without eeprom + subsystem ID --- */
               .vendor       = PCI_VENDOR_ID_PHILIPS,
               .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
diff -r bff77ec33116 linux/drivers/media/video/saa7134/saa7134.h
--- a/linux/drivers/media/video/saa7134/saa7134.h       Thu Jun 11 18:44:23 2009 -0300
+++ b/linux/drivers/media/video/saa7134/saa7134.h       Sat Jun 13 00:12:26 2009 +1000
@@ -293,6 +293,7 @@
#define SAA7134_BOARD_BEHOLD_607RDS_MK5     166
#define SAA7134_BOARD_BEHOLD_609RDS_MK3     167
#define SAA7134_BOARD_BEHOLD_609RDS_MK5     168
+#define SAA7134_BOARD_ASUS_EUROPA_HYBRID    169

#define SAA7134_MAXBOARDS 32
#define SAA7134_INPUT_MAX 8
======================================================================================

When you compile and load the saa7134 module with my modification the dmesg out looks like this:

======================================================================================================
[ 3133.621063] Linux video capture interface: v2.00
[ 3133.665786] saa7130/34: v4l2 driver version 0.2.15 loaded
[ 3133.666477] saa7134[0]: found at 0000:06:05.0, rev: 1, irq: 20, latency: 64, mmio: 0xfebffc00
[ 3133.666492] saa7134[0]: subsystem: 1043:4847, board: Asus Europa Hybrid OEM [card=169,autodetected]
[ 3133.666534] saa7134[0]: board init: gpio is 0
[ 3133.666554] IRQ 20/saa7134[0]: IRQF_DISABLED is not guaranteed on shared IRQs
[ 3133.816516] saa7134[0]: i2c eeprom 00: 43 10 47 48 54 20 1c 00 43 43 a9 1c 55 d2 b2 92
[ 3133.816534] saa7134[0]: i2c eeprom 10: 00 ff 82 0e ff 20 ff ff ff ff ff ff ff ff ff ff
[ 3133.816550] saa7134[0]: i2c eeprom 20: 01 40 01 02 03 ff 03 04 08 ff 00 2a ff ff ff ff
[ 3133.816565] saa7134[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816580] saa7134[0]: i2c eeprom 40: ff 02 00 c2 86 10 ff ff ff ff ff ff ff ff ff ff
[ 3133.816595] saa7134[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816610] saa7134[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816626] saa7134[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816641] saa7134[0]: i2c eeprom 80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816656] saa7134[0]: i2c eeprom 90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816671] saa7134[0]: i2c eeprom a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816686] saa7134[0]: i2c eeprom b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816701] saa7134[0]: i2c eeprom c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816716] saa7134[0]: i2c eeprom d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816732] saa7134[0]: i2c eeprom e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816747] saa7134[0]: i2c eeprom f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 3133.816765] i2c-adapter i2c-1: Invalid 7-bit address 0x7a
[ 3133.876679] tuner 1-0043: chip found @ 0x86 (saa7134[0])
[ 3133.892053] tda9887 1-0043: creating new instance
[ 3133.892059] tda9887 1-0043: tda988[5/6/7] found
[ 3133.916628] saa7134[0]: registered device video0 [v4l2]
[ 3133.916676] saa7134[0]: registered device vbi0
[ 3133.927331] saa7134 ALSA driver for DMA sound loaded
[ 3133.927355] IRQ 20/saa7134[0]: IRQF_DISABLED is not guaranteed on shared IRQs
[ 3133.927397] saa7134[0]/alsa: saa7134[0] at 0xfebffc00 irq 20 registered as card -2
[ 3134.047574] dvb_init() allocating 1 frontend
[ 3134.047584] saa7134[0]/dvb: Huh? unknown DVB card?
[ 3134.047589] saa7134[0]/dvb: frontend initialization failed
======================================================================================================

Right now with my modifications it is able to pick it up as a "Asus Europa Hybrid OEM" card and also load the drivers for the analog tuner.
My modification has a number of problems such as:
	* Not being able to recognise the TDA10046A digital demodulator and load the tda1004x driver.
	  I believe i have to specify it in the ".tuner_type" line but i don't know what exactly to specify.
	* Not being able to recognise/initilze the frontend.
	* Analog/Digital scanning fails.

Anyway it's a start, hopefully a developer can help me fix some of the problems mentioned above and get this card supported

Thanks

Chatura
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux