From: Mauro Carvalho Chehab <mchehab@redhat.com>
To: Anders Thomson <aeriksson2@gmail.com>
Cc: "linux-media@vger.kernel.org" <linux-media@vger.kernel.org>
Subject: Re: tda8290 regression fix
Date: Tue, 18 Sep 2012 06:53:36 -0300 [thread overview]
Message-ID: <505844A0.30001@redhat.com> (raw)
In-Reply-To: <50559241.6070408@gmail.com>
Em 16-09-2012 05:48, Anders Thomson escreveu:
> On 2012-09-16 00:25, Mauro Carvalho Chehab wrote:
>> Em Sat, 15 Sep 2012 20:12:49 +0200
>> Anders Thomson<aeriksson2@gmail.com> escreveu:
>>
>> > On 2012-09-15 19:58, Mauro Carvalho Chehab wrote:
>> > > Em Sat, 15 Sep 2012 19:39:31 +0200
>> > > Anders Thomson<aeriksson2@gmail.com> escreveu:
>> > >
>> > > > On 2012-09-15 18:34, Mauro Carvalho Chehab wrote:
>> > > > > > $ cat /TV_CARD.diff
>> > > > > > 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;
>> > > > >
>> > > > > No, this is wrong. The I2C address is passed by the bridge driver or by
>> > > > > the tuner_core attachment, being stored at priv->i2c_props.addr.
>> > > > >
>> > > > > What's the driver and card you're using?
>> > > > >
>> > > > lspci -vv:
>> > > > 03:06.0 Multimedia controller: Philips Semiconductors
>> > > > SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (rev d1)
>> > > > Subsystem: Pinnacle Systems Inc. Device 002f
>> > >
>> > > There are lots of Pinnacle device supported by saa7134 driver. Without its
>> > > PCI ID that's not much we can do.
>> > That here, right?
>> > lspci -nvv:
>> > 03:06.0 0480: 1131:7133 (rev d1)
>> > Subsystem: 11bd:002f
>> > 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: 64 (21000ns min, 8000ns max)
>> > Interrupt: pin A routed to IRQ 21
>> > Region 0: Memory at fdeff000 (32-bit, non-prefetchable) [size=2K]
>> > Capabilities: [40] Power Management version 2
>> > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
>> > PME(D0-,D1-,D2-,D3hot-,D3cold-)
>> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
>> > Kernel driver in use: saa7134
>> > Kernel modules: saa7134
>> >
>> >
>> >
>> >
>> > > Also, please post the dmesg showing what happens without and with your patch.
>> > Coming. Hold on...
>>
>> Thanks!
>>
>> Please try the enclosed patch.
>>
>> -
>>
>> [PATCH] tda8290: Fix lna switch address
>>
>> When LNA is configured with config 1 or config 2, tda827x driver
>> will use the LNA switch_addr. However, this is not happening for
>> all devices using such config, as reported by Anders. According
>> to him, he is experiencing bad tuning with this code since
>> Kenrel 2.6.26.
>>
>> Reported-by: Anders Thomson<aeriksson2@gmail.com>
>> Signed-off-by: Mauro Carvalho Chehab<mchehab@redhat.com>
>>
>> diff --git a/drivers/media/tuners/tda8290.c b/drivers/media/tuners/tda8290.c
>> index 8c48521..bedc6ce 100644
>> --- a/drivers/media/tuners/tda8290.c
>> +++ b/drivers/media/tuners/tda8290.c
>> @@ -627,6 +627,9 @@ static int tda829x_find_tuner(struct dvb_frontend *fe)
>> return -EREMOTEIO;
>> }
>>
>> + if (priv->cfg.config == 1 || priv->cfg.config == 2)
>> + priv->cfg.switch_addr = priv->i2c_props.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);
>>
>>
> Hi,
> Which tree should this be applied to? I have no drivers/media/tuners dir here.
I'm always using the very latest development tree:
http://git.linuxtv.org/media_tree.git
You can use the media_build.git tree to compile it against an older Kernel.
> However, it applies cleanly to 3.5.3 as:
> diff --git a/drivers/media/common/tuners/tda8290.c b/drivers/media/common/tuners/tda8290.c
> index 8c48521..bedc6ce 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;
> }
>
> + if (priv->cfg.config == 1 || priv->cfg.config == 2)
> + priv->cfg.switch_addr = priv->i2c_props.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);
>
> 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;
This shouldn't cause any harm for tuners with config 0 or 3, as the switch
address will never be used, anyway.
Regards,
Mauro
next prev parent reply other threads:[~2012-09-18 9:53 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-30 11:27 tda8290 regression fix Anders Thomson
2012-09-15 16:34 ` Mauro Carvalho Chehab
2012-09-15 17:39 ` Anders Thomson
2012-09-15 17:44 ` Anders Thomson
2012-09-15 17:58 ` Mauro Carvalho Chehab
2012-09-15 18:12 ` Anders Thomson
2012-09-15 22:25 ` Mauro Carvalho Chehab
2012-09-16 8:48 ` Anders Thomson
2012-09-18 9:53 ` Mauro Carvalho Chehab [this message]
2012-09-19 13:01 ` Anders Thomson
2012-09-19 16:45 ` Mauro Carvalho Chehab
2012-09-19 19:25 ` Anders Thomson
[not found] ` <CAGncdOae+VoAAUWz3x84zUA-TCMeMmNONf_ktNFd1p7c-o5H_A@mail.gmail.com>
2012-09-21 14:49 ` Mauro Carvalho Chehab
[not found] ` <8ed8c988-fa8c-41fc-9f33-cccdceb1b232@email.android.com>
2012-09-23 11:36 ` Mauro Carvalho Chehab
2012-09-23 17:54 ` Anders Thomson
2012-09-23 18:14 ` Mauro Carvalho Chehab
2012-09-23 18:39 ` Anders Thomson
2012-09-23 21:06 ` Anders Thomson
2012-10-01 16:56 ` Anders Thomson
2012-11-15 20:43 ` Anders Thomson
2012-12-04 11:00 ` Anders Thomson
2012-09-15 18:28 ` Anders Thomson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=505844A0.30001@redhat.com \
--to=mchehab@redhat.com \
--cc=aeriksson2@gmail.com \
--cc=linux-media@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).