From patchwork Tue Aug 7 02:47:04 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 13654 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from ) id 1SyZqW-000758-KL for patchwork@linuxtv.org; Tue, 07 Aug 2012 04:48:36 +0200 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.75/mailfrontend-2) with esmtp for id 1SyZqW-0005Rq-GL; Tue, 07 Aug 2012 04:48:36 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932570Ab2HGCsa (ORCPT ); Mon, 6 Aug 2012 22:48:30 -0400 Received: from mail-vc0-f174.google.com ([209.85.220.174]:32810 "EHLO mail-vc0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932548Ab2HGCsB (ORCPT ); Mon, 6 Aug 2012 22:48:01 -0400 Received: by mail-vc0-f174.google.com with SMTP id fk26so3432645vcb.19 for ; Mon, 06 Aug 2012 19:48:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=PJjOwpY4i2s8piNxT/a4908PDdCnYWQcG/+Yrw3Taf0=; b=dk9f1lrtUblYQpzEZ0QgSLIr4l9EAdKFgtF5YxkUdxMhbuaEChD6iFAyRD2xDm+j+L wMVa2jdd2P1NyFLV/WC5IPPzuxFIcDIXnj9yoeMnkxLjZdcNJt4oVDOn2blfe969wsEQ hhsjkgm05Pn0zrfDMjlv7MZ9aZXmClObi+arMMT7vQUxny7IiWz4V9Qk3aOVhi5UZ8ZF 8D94BZJCzzAPvGAaXw23GxO+heP8cPIA6aHqR32UU+mYtsvWQ1hEkw1T3mp7KpUGcDg3 Ju3eRcpp7XGywLB1Bw3tSJhVACxlbCQgLdPjQ6q3Al/EJklzTV/OLUDAWXTcJKP6bJ0i mUcA== Received: by 10.220.215.66 with SMTP id hd2mr9714399vcb.55.1344307680737; Mon, 06 Aug 2012 19:48:00 -0700 (PDT) Received: from localhost.localdomain (pool-108-54-72-165.nycmny.fios.verizon.net. [108.54.72.165]) by mx.google.com with ESMTPS id e9sm17555638vdf.21.2012.08.06.19.47.59 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 06 Aug 2012 19:48:00 -0700 (PDT) From: Devin Heitmueller To: linux-media@vger.kernel.org Cc: Devin Heitmueller Subject: [PATCH 14/24] au0828: speed up i2c clock when doing xc5000 firmware load Date: Mon, 6 Aug 2012 22:47:04 -0400 Message-Id: <1344307634-11673-15-git-send-email-dheitmueller@kernellabs.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1344307634-11673-1-git-send-email-dheitmueller@kernellabs.com> References: <1344307634-11673-1-git-send-email-dheitmueller@kernellabs.com> X-Gm-Message-State: ALoCoQn4zIZtHjccpKJsOluS5wQc0O4L/jVisZNF0IN7dOaiwcslRY+/mNqhq6l5yeMDfu9f7pyD Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2012.8.7.23921 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' HTML_00_01 0.05, HTML_00_10 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_1800_1899 0, BODY_SIZE_2000_LESS 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, DATE_TZ_NA 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CP_MEDIA_BODY 0, __CP_URI_IN_BODY 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __MIME_TEXT_ONLY 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_WWW 0, __URI_NS ' Put a hack in place to speed up the firmware load in the case that the xc5000 has just been reset. The chip can safely do 400 KHz in this mode, while in normal operation it can only do 100 KHz. This reduces the firmware load time from 6.9 seconds to 4.2. Signed-off-by: Devin Heitmueller --- drivers/media/video/au0828/au0828-i2c.c | 16 +++++++++++++--- 1 files changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/media/video/au0828/au0828-i2c.c b/drivers/media/video/au0828/au0828-i2c.c index 05c299f..d454555 100644 --- a/drivers/media/video/au0828/au0828-i2c.c +++ b/drivers/media/video/au0828/au0828-i2c.c @@ -26,7 +26,7 @@ #include #include "au0828.h" - +#include "media/tuner.h" #include static int i2c_scan; @@ -147,8 +147,18 @@ static int i2c_sendbytes(struct i2c_adapter *i2c_adap, au0828_write(dev, AU0828_I2C_MULTIBYTE_MODE_2FF, 0x01); /* Set the I2C clock */ - au0828_write(dev, AU0828_I2C_CLK_DIVIDER_202, - dev->board.i2c_clk_divider); + if ((dev->board.tuner_type == TUNER_XC5000) && + (dev->board.tuner_addr == msg->addr) && + (msg->len == 64)) { + /* Hack to speed up firmware load. The xc5000 lets us do up + to 400 KHz when in firmware download mode */ + au0828_write(dev, AU0828_I2C_CLK_DIVIDER_202, + AU0828_I2C_CLK_250KHZ); + } else { + /* Use the i2c clock speed in the board configuration */ + au0828_write(dev, AU0828_I2C_CLK_DIVIDER_202, + dev->board.i2c_clk_divider); + } /* Hardware needs 8 bit addresses */ au0828_write(dev, AU0828_I2C_DEST_ADDR_203, msg->addr << 1);