diff mbox

tda8290 regression fix

Message ID 505A1C16.40507@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Anders Thomson Sept. 19, 2012, 7:25 p.m. UTC
On 2012-09-19 18:45, Mauro Carvalho Chehab wrote:
> Em 19-09-2012 10:01, Anders Thomson escreveu:
> >  On 2012-09-18 11:53, Mauro Carvalho Chehab wrote:
> >>  Em 16-09-2012 05:48, Anders Thomson escreveu:
> >>  >   It doesn't make any difference though :-( I still have the layer of noise...
> >>
> >>  That's weird. Hmm... perhaps priv->cfg.config is being initialized
> >>  latter. Maybe you can then do, instead:
> >>
> >>                    return -EREMOTEIO;
> >>            }
> >>
> >>  +        priv->cfg.switch_addr = priv->i2c_props.addr;
> >>            if ((data == 0x83) || (data == 0x84)) {
> >>                    priv->ver |= TDA18271;
> >>                    tda829x_tda18271_config.config = priv->cfg.config;
> >>
> >>
> >  No dice:
> >   $ git diff | cat
> >  diff --git a/drivers/media/common/tuners/tda8290.c b/drivers/media/common/tuners/tda8290.c
> >  index 8c48521..16d7ff7 100644
> >  --- a/drivers/media/common/tuners/tda8290.c
> >  +++ b/drivers/media/common/tuners/tda8290.c
> >  @@ -627,6 +627,9 @@ static int tda829x_find_tuner(struct dvb_frontend *fe)
> >                  return -EREMOTEIO;
> >          }
> >
> >  +       tuner_info("ANDERS: old priv->cfg.switch_addr %x\n", priv->cfg.switch_addr);
> >  +       priv->cfg.switch_addr = priv->i2c_props.addr;
> >  +       tuner_info("ANDERS: new priv->cfg.switch_addr %x\n", priv->cfg.switch_addr);
> >          if ((data == 0x83) || (data == 0x84)) {
> >                  priv->ver |= TDA18271;
> >                  tda829x_tda18271_config.config = priv->cfg.config;
> >  @@ -640,7 +643,6 @@ static int tda829x_find_tuner(struct dvb_frontend *fe)
> >
> >                  dvb_attach(tda827x_attach, fe, priv->tda827x_addr,
> >                             priv->i2c_props.adap,&priv->cfg);
> >  -               priv->cfg.switch_addr = priv->i2c_props.addr;
> >          }
> >          if (fe->ops.tuner_ops.init)
> >                  fe->ops.tuner_ops.init(fe);
> >  anders@tv /usr/src/linux $ dmesg | grep ANDERS
> >  [    5.667022] tda829x 4-004b: ANDERS: old priv->cfg.switch_addr 0
> >  [    5.667025] tda829x 4-004b: ANDERS: new priv->cfg.switch_addr 4b
>
> switch_addr got properly filled here.
Well, it got filled with 4b, but that it not what is needed. Recall my 
own patch:
# cat /TV_CARD.diff
                 fe->ops.tuner_ops.init(fe);
It needs to be filled with 0xc2 / 2. I'm not sure where I got that 
expression from, but it is the sum of my efforts tracing code changes 
around 2.6.26.
> >
> >  Whereas to work, I need:
> >  anders@tv /usr/src/linux $ grep ANDERS /3.3.8-d.patched
> >  [    6.565254] tda829x 5-004b: ANDERS: setting switch_addr. was 0x00, new 0x4b
>
> What looks weird here is that the device number changed from 4 to 5.
I have a webcam permanently on USB, so it ends up as two v4l2 devices 
(with device enumeration changing between boots)
>
> Do you have more than one board on your machine?
>
> >  [    6.565265] tda829x 5-004b: ANDERS: new 0x61
>
>
> The 0x61 address should be filled already by the existing code, otherwise
> you wouldn't be able to switch from one channel to another one.
>
> If you're in doubt, you could add an extra printk at the initialization code,
> in order to see what's happening there.
Not sure I follow here. Which code should set the ox61 address? I'd be 
more than happy to add printks. Where? I recall getting lost in how this 
stuff uses the i2c code in the past.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Mauro Carvalho Chehab Sept. 21, 2012, 2:49 p.m. UTC | #1
Em 21-09-2012 10:59, Anders Eriksson escreveu:
> 
> 
> On Wed, Sep 19, 2012 at 9:25 PM, Anders Thomson <aeriksson2@gmail.com <mailto:aeriksson2@gmail.com>> wrote:
> 
>     diff --git a/drivers/media/common/tuners/tda8290.c b/drivers/media/common/tuners/tda8290.c
>     index 064d14c..498cc7b 100644
>     --- a/drivers/media/common/tuners/__tda8290.c
>     +++ b/drivers/media/common/tuners/__tda8290.c
>     @@ -635,7 +635,11 @@ static int tda829x_find_tuner(struct dvb_frontend *fe)
> 
> 
>                     dvb_attach(tda827x_attach, fe, priv->tda827x_addr,
>                                priv->i2c_props.adap, &priv->cfg);
>     +               tuner_info("ANDERS: setting switch_addr. was 0x%02x, new 0x%02x\n",priv->cfg.switch___addr,priv->i2c_props.addr);
>                     priv->cfg.switch_addr = priv->i2c_props.addr;
>     +               priv->cfg.switch_addr = 0xc2 / 2;
>     +               tuner_info("ANDERS: new 0x%02x\n",priv->cfg.switch___addr);
>     +
>             }
>             if (fe->ops.tuner_ops.init)
>                     fe->ops.tuner_ops.init(fe);
>     It needs to be filled with 0xc2 / 2. I'm not sure where I got that expression from, but it is the sum of my efforts tracing code changes around 2.6.26.
> 
>         >
>         >  Whereas to work, I need:
>         >  anders@tv /usr/src/linux $ grep ANDERS /3.3.8-d.patched
>         >  [    6.565254] tda829x 5-004b: ANDERS: setting switch_addr. was 0x00, new 0x4b
> 
>         What looks weird here is that the device number changed from 4 to 5.
> 
> 
>         If you're in doubt, you could add an extra printk at the initialization code,
>         in order to see what's happening there.
> 
>     Not sure I follow here. Which code should set the ox61 address? I'd be more than happy to add printks. Where? I recall getting lost in how this stuff uses the i2c code in the past.
> 
> 
> Hi,
> Dusting off my memory, I realized that there was a thread on this way back when I discovered the breakage:
> You can find the archived thread here:
> http://www.mail-archive.com/linux-media@vger.kernel.org/msg05332.html
> 
> Still puzzled as to how I can pursue this further.

Are you using the active antena that came with this device[1]?


[1] http://www.mail-archive.com/linux-media@vger.kernel.org/msg07234.html

> 
> -Anders

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

Patch

diff --git a/drivers/media/common/tuners/tda8290.c 
b/drivers/media/common/tuners/tda8290.c
index 064d14c..498cc7b 100644
--- a/drivers/media/common/tuners/tda8290.c
+++ b/drivers/media/common/tuners/tda8290.c
@@ -635,7 +635,11 @@  static int tda829x_find_tuner(struct dvb_frontend *fe)

                 dvb_attach(tda827x_attach, fe, priv->tda827x_addr,
                            priv->i2c_props.adap, &priv->cfg);
+               tuner_info("ANDERS: setting switch_addr. was 0x%02x, new 
0x%02x\n",priv->cfg.switch_addr,priv->i2c_props.addr);
                 priv->cfg.switch_addr = priv->i2c_props.addr;
+               priv->cfg.switch_addr = 0xc2 / 2;
+               tuner_info("ANDERS: new 0x%02x\n",priv->cfg.switch_addr);
+
         }
         if (fe->ops.tuner_ops.init)