From patchwork Thu Jul 5 19:53:43 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Troy Kisky X-Patchwork-Id: 169250 X-Patchwork-Delegate: hs@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 6B4242C007B for ; Fri, 6 Jul 2012 05:55:46 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 8640728192; Thu, 5 Jul 2012 21:55:21 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8tj10CrLMe1y; Thu, 5 Jul 2012 21:55:21 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id A4A2C28135; Thu, 5 Jul 2012 21:54:24 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 11924280F9 for ; Thu, 5 Jul 2012 21:54:14 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id B8LBVsSED26l for ; Thu, 5 Jul 2012 21:54:13 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-pb0-f44.google.com (mail-pb0-f44.google.com [209.85.160.44]) by theia.denx.de (Postfix) with ESMTPS id 64FD9280FC for ; Thu, 5 Jul 2012 21:54:04 +0200 (CEST) Received: by pbcwy7 with SMTP id wy7so12330726pbc.3 for ; Thu, 05 Jul 2012 12:54:02 -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=44oqfHF2uzZoRPJIIpk1mOdaTrewT+uBmsU1hHIL25Q=; b=CIazojojm1erM7HnKybdQiq2I89w19q0uvf8jejg9U5T8uYiDejcVA1ZTK/Jlh/eqm qLCPkHDF7uWeTYg/U31PzZaMtBXu+C0w6CPcT6wgh67JSghv2Czf/eyQ5GQdMefpH60H TNy5uz5Rj2lJUQwNJ5xLGQ5TGyeUVkW5Byhniw2M2xd7pwSJDNdeRfKck8MJuzRlqXyg OJt8q4JI4UojxsLCw86/FI48bn/eYlx5Zw7P16lGub4sDKxx1IZUbbnG9BiK7j4DQ384 EXo8p38i3sTaScPVifzg8qzRstgthVi4Y+JJMUK1Zv/v0mYR3PYoODx/gToBKBZKjcTL iVGQ== Received: by 10.68.234.104 with SMTP id ud8mr30317568pbc.163.1341518041910; Thu, 05 Jul 2012 12:54:01 -0700 (PDT) Received: from officeserver-2 ([70.96.116.236]) by mx.google.com with ESMTPS id pq5sm20317455pbb.30.2012.07.05.12.54.00 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 05 Jul 2012 12:54:01 -0700 (PDT) Received: from tkisky by officeserver-2 with local (Exim 4.76) (envelope-from ) id 1Sms7p-0006pX-JQ; Thu, 05 Jul 2012 12:54:05 -0700 From: Troy Kisky To: u-boot@lists.denx.de, Heiko Schocher , sbabic@denx.de Date: Thu, 5 Jul 2012 12:53:43 -0700 Message-Id: <1341518043-26191-5-git-send-email-troy.kisky@boundarydevices.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1341518043-26191-1-git-send-email-troy.kisky@boundarydevices.com> References: <1341518043-26191-1-git-send-email-troy.kisky@boundarydevices.com> X-Gm-Message-State: ALoCoQnTs3912dcyn6XFoAFM52LG/HCm6lnZuII1oxWhybu5UwKru64kOUuxUkjL51bBYq90Qozq Cc: r49496@freescale.com Subject: [U-Boot] [PATCH V2 05/25] mxc_i2c: create i2c_init_transfer X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de Initial code of i2c_read and i2c_write is identical, move to subroutine. Signed-off-by: Troy Kisky Acked-by: Marek Vasut Acked-by: Stefano Babic --- v2: add ack --- drivers/i2c/mxc_i2c.c | 44 ++++++++++++++++++-------------------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c index 57027ad..4ce695a 100644 --- a/drivers/i2c/mxc_i2c.c +++ b/drivers/i2c/mxc_i2c.c @@ -275,19 +275,29 @@ void i2c_imx_stop(void) } /* - * Write register address + * Send start signal, chip address and + * write register address */ -int i2c_imx_set_reg_addr(uint addr, int alen) +static int i2c_init_transfer(struct mxc_i2c_regs *i2c_regs, + uchar chip, uint addr, int alen) { - struct mxc_i2c_regs *i2c_regs = (struct mxc_i2c_regs *)I2C_BASE; - int ret = 0; + int ret = i2c_imx_start(); + if (ret) + goto exit; + + /* write slave address */ + ret = tx_byte(i2c_regs, chip << 1); + if (ret < 0) + goto exit; while (alen--) { ret = tx_byte(i2c_regs, (addr >> (alen * 8)) & 0xff); if (ret < 0) - break; + goto exit; } - + return 0; +exit: + i2c_imx_stop(); return ret; } @@ -318,19 +328,10 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len) unsigned int temp; int i; - ret = i2c_imx_start(); - if (ret) - return ret; - - /* write slave address */ - ret = tx_byte(i2c_regs, chip << 1); + ret = i2c_init_transfer(i2c_regs, chip, addr, alen); if (ret < 0) return ret; - ret = i2c_imx_set_reg_addr(addr, alen); - if (ret) - return ret; - temp = readb(&i2c_regs->i2cr); temp |= I2CR_RSTA; writeb(temp, &i2c_regs->i2cr); @@ -387,19 +388,10 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buf, int len) int ret; int i; - ret = i2c_imx_start(); - if (ret) - return ret; - - /* write slave address */ - ret = tx_byte(i2c_regs, chip << 1); + ret = i2c_init_transfer(i2c_regs, chip, addr, alen); if (ret < 0) return ret; - ret = i2c_imx_set_reg_addr(addr, alen); - if (ret) - return ret; - for (i = 0; i < len; i++) { ret = tx_byte(i2c_regs, buf[i]); if (ret < 0)