From patchwork Sun Sep 16 08:48:01 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anders Thomson X-Patchwork-Id: 1462691 Return-Path: X-Original-To: patchwork-linux-media@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id C26A0DF28C for ; Sun, 16 Sep 2012 08:48:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751480Ab2IPIsJ (ORCPT ); Sun, 16 Sep 2012 04:48:09 -0400 Received: from mail-lpp01m010-f46.google.com ([209.85.215.46]:65349 "EHLO mail-lpp01m010-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751228Ab2IPIsH (ORCPT ); Sun, 16 Sep 2012 04:48:07 -0400 Received: by lagy9 with SMTP id y9so3582329lag.19 for ; Sun, 16 Sep 2012 01:48:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:disposition-notification-to:date:from:user-agent :mime-version:to:cc:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=WvuDArjTcokQXuiC52WCaeNOCxHF00BnwCNM11VRUhY=; b=upLtEOkDBZWVL4U3Gw3OkzD6uQTMyKaM5YpjSDm5LG9A9h/HZqip9/rgoZPBWoa2pH xMY8FpuaaP/5EvPqJtMzikT6NqYRFmVk00r8sq+3b5RM2S6HLn6GIuaElFoKZBrsrpbX C73yGPB89Gs2l/6F8+7cTYsAzIZooiH7X+PUXndwO9bpYxV78+5uvVDlWF7FOQisd/li BvcKyP5mspUUWSsH9a2H1JSUACyjs9mzgu+YjHPy9IPaUI3rMxo5DSkItnd8GbB/PwLc eLTzBDNJixM3ATJkcW9bA1d4sIuGp2bc2Iwj27pXY4sTJ6jpRCGfyXmTPJOKm5LOXZvh gJlw== Received: by 10.152.123.133 with SMTP id ma5mr6972618lab.8.1347785284897; Sun, 16 Sep 2012 01:48:04 -0700 (PDT) Received: from [192.168.1.100] (c83-252-237-27.bredband.comhem.se. [83.252.237.27]) by mx.google.com with ESMTPS id lx11sm1920525lab.4.2012.09.16.01.48.03 (version=SSLv3 cipher=OTHER); Sun, 16 Sep 2012 01:48:04 -0700 (PDT) Message-ID: <50559241.6070408@gmail.com> Date: Sun, 16 Sep 2012 10:48:01 +0200 From: Anders Thomson User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.6esrpre) Gecko/20120808 Thunderbird/10.0.6 MIME-Version: 1.0 To: Mauro Carvalho Chehab CC: "linux-media@vger.kernel.org" Subject: Re: tda8290 regression fix References: <503F4E19.1050700@gmail.com> <20120915133417.27cb82a1@redhat.com> <5054BD53.7060109@gmail.com> <20120915145834.0b763f73@redhat.com> <5054C521.1090200@gmail.com> <20120915192530.74aedaa6@redhat.com> In-Reply-To: <20120915192530.74aedaa6@redhat.com> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org On 2012-09-16 00:25, Mauro Carvalho Chehab wrote: > Em Sat, 15 Sep 2012 20:12:49 +0200 > Anders Thomson escreveu: > > > On 2012-09-15 19:58, Mauro Carvalho Chehab wrote: > > > Em Sat, 15 Sep 2012 19:39:31 +0200 > > > Anders Thomson 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-SERR- > 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 > Signed-off-by: Mauro Carvalho Chehab > > 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. 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 It doesn't make any difference though :-( I still have the layer of noise... -A --- 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 --- 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);