From patchwork Fri May 15 09:18:27 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anders Eriksson X-Patchwork-Id: 1065 Return-path: Envelope-to: mchehab@infradead.org Delivery-date: Fri, 15 May 2009 09:19:22 +0000 Received: from bombadil.infradead.org [18.85.46.34] by pedra.chehab.org with IMAP (fetchmail-6.3.6) for (single-drop); Fri, 15 May 2009 06:23:36 -0300 (BRT) Received: from vger.kernel.org ([209.132.176.167]) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1M4tZZ-0003J2-9z; Fri, 15 May 2009 09:19:22 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760723AbZEOJSl (ORCPT + 1 other); Fri, 15 May 2009 05:18:41 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1757795AbZEOJSl (ORCPT ); Fri, 15 May 2009 05:18:41 -0400 Received: from ch-smtp01.sth.basefarm.net ([80.76.149.212]:47114 "EHLO ch-smtp01.sth.basefarm.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757027AbZEOJSj (ORCPT ); Fri, 15 May 2009 05:18:39 -0400 Received: from c83-252-236-9.bredband.comhem.se ([83.252.236.9]:51904 helo=tippex.mynet.homeunix.org) by ch-smtp01.sth.basefarm.net with esmtp (Exim 4.69) (envelope-from ) id 1M4tYn-0002aI-5Q; Fri, 15 May 2009 11:18:36 +0200 Received: from tippex.mynet.homeunix.org (localhost [127.0.0.1]) by tippex.mynet.homeunix.org (Postfix) with ESMTP id 864A12C4167; Fri, 15 May 2009 11:18:27 +0200 (CEST) X-Mailer: exmh version 2.7.2 04/02/2003 (gentoo 2.7.2) with nmh-1.3 to: hermann pitton , linux-media@vger.kernel.org, video4linux-list@redhat.com, Hartmut Hackmann Subject: Fixed (Was:Re: saa7134/2.6.26 regression, noisy output) In-reply-to: <20090510141614.D4A9C2C416C@tippex.mynet.homeunix.org> References: <20090503075609.0A73B2C4152@tippex.mynet.homeunix.org> <1241389925.4912.32.camel@pc07.localdom.local> <20090504091049.D931B2C4147@tippex.mynet.homeunix.org> <1241438755.3759.100.camel@pc07.localdom.local> <20090504195201.6ECF52C415B@tippex.mynet.homeunix.org> <1241565988.16938.15.camel@pc07.localdom.local> <20090507130055.E49D32C4165@tippex.mynet.homeunix.org> <20090510141614.D4A9C2C416C@tippex.mynet.homeunix.org> Comments: In-reply-to Anders Eriksson message dated "Sun, 10 May 2009 16:16:14 +0200." Mime-Version: 1.0 Date: Fri, 15 May 2009 11:18:27 +0200 From: Anders Eriksson Message-Id: <20090515091827.864A12C4167@tippex.mynet.homeunix.org> X-Originating-IP: 83.252.236.9 X-Scan-Result: No virus found in message 1M4tYn-0002aI-5Q. X-Scan-Signature: ch-smtp01.sth.basefarm.net 1M4tYn-0002aI-5Q 832bcb12c2b6b114a788691004b73bbb Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Success! I've tracked down the offending change. switch_addr takes on the wrong value and setting the LNA fails. Here's a i2c dump: saa7133[0]: i2c eeprom e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c xfer: < 20 ERROR: NO_DEVICE saa7133[0]: i2c xfer: < 84 ERROR: NO_DEVICE saa7133[0]: i2c xfer: < 86 ERROR: NO_DEVICE saa7133[0]: i2c xfer: < 94 ERROR: NO_DEVICE saa7133[0]: i2c xfer: < 96 > saa7133[0]: i2c xfer: < 96 00 > saa7133[0]: i2c xfer: < 97 =01 =01 =00 =11 =01 =04 =01 =85 > saa7133[0]: i2c xfer: < 96 1f > saa7133[0]: i2c xfer: < 97 =89 > tda8290_probe: tda8290 detected @ 1-004b tuner' 1-004b: tda829x detected tuner' 1-004b: Setting mode_mask to 0x0e tuner' 1-004b: chip found @ 0x96 (saa7133[0]) tuner' 1-004b: tuner 0x4b: Tuner type absent tuner' i2c attach [addr=0x4b,client=(tuner unset)] tuner' 1-004b: Calling set_type_addr for type=54, addr=0xff, mode=0x04, config=0x01 tuner' 1-004b: set addr for type -1 tuner' 1-004b: defining GPIO callback saa7133[0]: i2c xfer: < 96 1f > saa7133[0]: i2c xfer: < 97 =89 > tda8290_probe: tda8290 detected @ 1-004b saa7133[0]: i2c xfer: < 96 2f > saa7133[0]: i2c xfer: < 97 =00 > saa7133[0]: i2c xfer: < 96 21 c0 > saa7133[0]: i2c xfer: < c1 ERROR: NO_DEVICE saa7133[0]: i2c xfer: < c3 =88 > saa7133[0]: i2c xfer: < c5 ERROR: NO_DEVICE saa7133[0]: i2c xfer: < c7 ERROR: NO_DEVICE saa7133[0]: i2c xfer: < 96 21 00 > tda829x 1-004b: setting tuner address to 61 saa7133[0]: i2c xfer: < 96 21 c0 > saa7133[0]: i2c xfer: < c3 =08 > tda827x: tda827x_attach: tda827x: type set to Philips TDA827X saa7133[0]: i2c xfer: < c3 =08 > tda827x: tda827xa tuner found tda827x: tda827x_init: tda827x: tda827xa_sleep: saa7133[0]: i2c xfer: < c2 30 90 > saa7133[0]: i2c xfer: < 96 21 00 > tda829x 1-004b: type set to tda8290+75a saa7133[0]: i2c xfer: < 96 21 c0 > saa7133[0]: i2c xfer: < c2 00 00 00 00 dc 05 8b 0c 04 20 ff 00 00 4b > saa7133[0]: i2c xfer: < 96 21 00 > saa7133[0]: i2c xfer: < 96 20 01 > saa7133[0]: i2c xfer: < 96 30 6f > tuner' 1-004b: type set to tda8290+75a tuner' 1-004b: tv freq set to 400.00 tda829x 1-004b: setting tda829x to system xx tda829x 1-004b: tda827xa config is 0x01 saa7133[0]: i2c xfer: < 96 01 00 > saa7133[0]: i2c xfer: < 96 02 00 > saa7133[0]: i2c xfer: < 96 00 00 > saa7133[0]: i2c xfer: < 96 01 90 > saa7133[0]: i2c xfer: < 96 28 14 > saa7133[0]: i2c xfer: < 96 0f 88 > saa7133[0]: i2c xfer: < 96 05 04 > saa7133[0]: i2c xfer: < 96 0d 47 > saa7133[0]: i2c xfer: < 96 21 c0 > tda827x: setting tda827x to system xx tda827x: setting LNA to high gain saa7133[0]: i2c xfer: < 96 22 00 > ^ This address is c2 in all kernels <= 5823b3a63c7661272ea7fef7635955e2a50d17eb saa7133[0]: i2c xfer: < c2 00 32 f8 00 16 3b bb 1c 04 20 00 > saa7133[0]: i2c xfer: < c2 90 ff e0 00 99 > saa7133[0]: i2c xfer: < c2 a0 c0 > saa7133[0]: i2c xfer: < c2 30 10 > saa7133[0]: i2c xfer: < c3 =49 =a4 > tda827x: AGC2 gain is: 10 ^ The gain reported on good kernels is 3 Looking at the source, the switch_addr to use in the later kernels is somehow autodetected. How that's done, I've yet to fully understand, but somehow it comes up with the wrong address. This patch (which obviously needs improvement) hardwires the address back to its original value, and works for 2.6.30-rc5. Could you please help me out and shed some light on what the proper fix is for setting switch_addr? Thanks, /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 --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);