From patchwork Sun Aug 22 11:32:21 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Igor M. Liplianin" X-Patchwork-Id: 5383 Return-path: Envelope-to: mchehab@gaivota Delivery-date: Fri, 31 Dec 2010 08:15:38 -0200 Received: from mchehab by gaivota with local (Exim 4.72) (envelope-from ) id 1PYc1K-0002RD-8b for mchehab@gaivota; Fri, 31 Dec 2010 08:15:38 -0200 Received: from casper.infradead.org [85.118.1.10] by gaivota with IMAP (fetchmail-6.3.17) for (single-drop); Fri, 31 Dec 2010 08:15:38 -0200 (BRST) Received: from vger.kernel.org ([209.132.180.67]) by casper.infradead.org with esmtp (Exim 4.72 #1 (Red Hat Linux)) id 1PYXcg-00017K-EA; Fri, 31 Dec 2010 05:33:54 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751908Ab0LaFdW (ORCPT + 1 other); Fri, 31 Dec 2010 00:33:22 -0500 Received: from mail-ew0-f46.google.com ([209.85.215.46]:62090 "EHLO mail-ew0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750988Ab0LaFcH (ORCPT ); Fri, 31 Dec 2010 00:32:07 -0500 Received: by mail-ew0-f46.google.com with SMTP id 5so5311700ewy.19 for ; Thu, 30 Dec 2010 21:32:06 -0800 (PST) Received: by 10.213.113.196 with SMTP id b4mr13040374ebq.95.1293773526257; Thu, 30 Dec 2010 21:32:06 -0800 (PST) Received: from useri.localnet ([93.125.74.3]) by mx.google.com with ESMTPS id t5sm11994271eeh.8.2010.12.30.21.32.04 (version=SSLv3 cipher=RC4-MD5); Thu, 30 Dec 2010 21:32:05 -0800 (PST) Message-ID: <4d1d6ad5.857a0e0a.45e5.ffffd91a@mx.google.com> From: Abylay Ospan Date: Sun, 22 Aug 2010 14:32:21 +0300 Subject: [PATCH 08/18] cx23885: Altera FPGA CI interface reworked. To: , linux-media@vger.kernel.org, , Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Sender: Mauro Carvalho Chehab It decreases I2C traffic. Signed-off-by: Abylay Ospan Signed-off-by: Igor M. Liplianin --- drivers/media/video/cx23885/cx23885-dvb.c | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c index 6c144f7..53c2b6d 100644 --- a/drivers/media/video/cx23885/cx23885-dvb.c +++ b/drivers/media/video/cx23885/cx23885-dvb.c @@ -620,29 +620,29 @@ int netup_altera_fpga_rw(void *device, int flag, int data, int read) { struct cx23885_dev *dev = (struct cx23885_dev *)device; unsigned long timeout = jiffies + msecs_to_jiffies(1); - int mem = 0; + uint32_t mem = 0; - cx_set(MC417_RWD, ALT_RD | ALT_WR | ALT_CS); + mem = cx_read(MC417_RWD); if (read) cx_set(MC417_OEN, ALT_DATA); else { cx_clear(MC417_OEN, ALT_DATA);/* D0-D7 out */ - mem = cx_read(MC417_RWD); mem &= ~ALT_DATA; mem |= (data & ALT_DATA); - cx_write(MC417_RWD, mem); } if (flag) - cx_set(MC417_RWD, ALT_AD_RG);/* ADDR */ + mem |= ALT_AD_RG; else - cx_clear(MC417_RWD, ALT_AD_RG);/* VAL */ + mem &= ~ALT_AD_RG; - cx_clear(MC417_RWD, ALT_CS);/* ~CS */ + mem &= ~ALT_CS; if (read) - cx_clear(MC417_RWD, ALT_RD); + mem = (mem & ~ALT_RD) | ALT_WR; else - cx_clear(MC417_RWD, ALT_WR); + mem = (mem & ~ALT_WR) | ALT_RD; + + cx_write(MC417_RWD, mem); /* start RW cycle */ for (;;) { mem = cx_read(MC417_RWD);