[linux-dvb] unstable tda1004x firmware loading

Hartmut Hackmann hartmut.hackmann at t-online.de
Fri Jun 20 00:49:42 CEST 2008


HI, Francesco

Francesco schrieb:
> Hartmut Hackmann ha scritto:
>  > Hi, Francesco
>  >
>  > Francesco schrieb:
>  >>> Looks like there currently are many people having problems. Allow
>  >>>  me to give some background info:
>  >>>
>  >>> Something that is not in the datasheet: The tda10046
>  >>> automatically tries to load the firmware from an eeprom at the
>  >>> second I2C port. This does *not* need to be triggered by the
>  >>> driver. The timeout seems to be very long. In the past, this
>  >>> happened: If the driver tries to access the tuner while the
>  >>> download is not finished, there is a collision on the I2C bus.
>  >>> This can corrupt both, the firmware and the tuner initialization.
>  >>>  In the case of the tda8275a, the result can be that it turns off
>  >>>  its 16MHz reference output which is used for the tda10046 as
>  >>> well. This blocks the i2c bus and the only way to recover is a
>  >>> complete power cycle. This is why i made the driver try to get
>  >>> the firmware as soon as possible. Otherwise it is not possible to
>  >>>  access the tuner - at least on some boards.
>  >>>
>  >>> Few days ago, a user reported that the firmware download seems to
>  >>>  be retriggered in some cases. This might occur if something
>  >>> opens the dvb device while the download is not finished. If it is
>  >>>  the case, we need to lock the download. Another dangerous thing
>  >>> is the address mapping of the firmware eeprom: it is controlled
>  >>> by a GPIO pin. If this pin changes while the download is running,
>  >>>  we are lost.
>  >>>
>  >>> Best regards Hartmut
>  >>
>  >> I've found a little workaround (not a solution, but...) for this
>  >> problem for my Asus7131H...
>  >>
>  >> Simply adding "saa7134-dvb" to /etc/modules, make a successful
>  >> firmware loading on boot. (My system is an Ubuntu 7.10)
>  >>
>  >>
>  > Could you post the relevant sections of the kernel log for both
>  > cases, successful and unsuccessful firmware load? Please extract the
>  >  entire board initialization. Also: do you run a client / server
>  > based application (with early start of the server)?
>  >
>  > Hartmut
>  >
>  >
> 
> 
> These are extract of boot log for "saa" and "tda" text... later I'll send
> all system logs in both cases.
> 
> 
> Relevant row for "tda" part seems is:
> "[   54.297295] tda1004x: setting up plls for 48MHz sampling clock"
> the second one, wich prevent on my opinion, to load firmware correctly.
> 
> 
Yes, this is what i meant!  Looks like we need to "lock" the initialization
procedure. I haven't done such things before so i need to do a little research
first.

> 
> tda / before:
> [   35.412245] tda829x 0-004b: setting tuner address to 61
> [   35.492199] tda829x 0-004b: type set to tda8290+75a
> [   39.621806] tda1004x: setting up plls for 48MHz sampling clock
> [   41.912490] tda1004x: found firmware revision 0 -- invalid
> [   41.912495] tda1004x: trying to boot from eeprom
> [   44.283116] tda1004x: found firmware revision 0 -- invalid
> [   44.283122] tda1004x: waiting for firmware upload...
> [   54.297295] tda1004x: setting up plls for 48MHz sampling clock
> [   56.583964] tda1004x: found firmware revision 0 -- invalid
> [   56.583968] tda1004x: trying to boot from eeprom
> [   58.950592] tda1004x: found firmware revision 0 -- invalid
> [   58.950597] tda1004x: waiting for firmware upload...
> [   71.443661] tda1004x: found firmware revision 0 -- invalid
> [   71.443665] tda1004x: firmware upload failed
> [   73.543492] tda1004x: found firmware revision 80 -- invalid
> [   73.543496] tda1004x: firmware upload failed
> 
> tda / after:
> [   35.101428] tda829x 0-004b: setting tuner address to 61
> [   35.185381] tda829x 0-004b: type set to tda8290+75a
> [   39.295055] tda1004x: setting up plls for 48MHz sampling clock
> [   41.581753] tda1004x: found firmware revision 0 -- invalid
> [   41.581756] tda1004x: trying to boot from eeprom
> [   43.948412] tda1004x: found firmware revision 0 -- invalid
> [   43.948415] tda1004x: waiting for firmware upload...
> [   56.405359] tda1004x: found firmware revision 20 -- ok
> [   71.360886] tda1004x: setting up plls for 48MHz sampling clock
> [   71.664713] tda1004x: found firmware revision 20 -- ok
> 
> 

<snip>
Thanks for the info!

Best regards
   Hartmut



More information about the linux-dvb mailing list