From patchwork Wed Jan 22 08:48:55 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 313169 X-Patchwork-Delegate: jagannadh.teki@gmail.com 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 EABCA2C0082 for ; Wed, 22 Jan 2014 19:49:20 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 8E90A4B5DE; Wed, 22 Jan 2014 09:49:19 +0100 (CET) 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 GJjd41remT-p; Wed, 22 Jan 2014 09:49:19 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 979B74B5E8; Wed, 22 Jan 2014 09:49:17 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 74D464B5E7 for ; Wed, 22 Jan 2014 09:49:11 +0100 (CET) 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 c7f6gexraHuT for ; Wed, 22 Jan 2014 09:49:06 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 BL_NJABL=ERR(-1.5) (only DNSBL check requested) Received: from mail-ee0-f46.google.com (mail-ee0-f46.google.com [74.125.83.46]) by theia.denx.de (Postfix) with ESMTPS id 1B4C74B5DE for ; Wed, 22 Jan 2014 09:48:58 +0100 (CET) Received: by mail-ee0-f46.google.com with SMTP id c13so4480957eek.5 for ; Wed, 22 Jan 2014 00:48:58 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:subject:date:message-id :content-type; bh=XQ6P2MOJhiipkVgGebeXsnZv1JJod0MlaKnRE28EldI=; b=U2CMckTw326lH6am45Y1NIcOt/VeJO2kpNVxpvpZ4pGAp8DPexCyOIPoyWGsK/EU1h 0ju9gvf76UipfiFLshBkuBi4TbY9I8abCDCRMWbxbpN+wih6noKESuFTK9/V0I7cCiJV 4yDjs2DDHqxXQP8vSepB/KLqDvKdS7jIpIOyuiPMZ9mGdVOB9CmC2C5Hj+Id9Y+no6up lkTjgXyPI96P8c49xEWofKaaIran4GvSGlq4s9QUNIRbdFEnMThaPKTsEniIXTKit8V9 HNvYEJ8wuT9bqNCXJAvjM29L/BKRHGj2u67oOeQ6+TSyKXQqCU7RAQNO6ZgeNGjphTbG G/5g== X-Gm-Message-State: ALoCoQmo+gzjrJ3lTTQhNE4T6NnNLwfOxCBc1ZMLsq4+a2M8FHvd8J2IRvPqk2SHZN7tGzuwF7Yw X-Received: by 10.14.98.129 with SMTP id v1mr266774eef.5.1390380538239; Wed, 22 Jan 2014 00:48:58 -0800 (PST) Received: from localhost (nat-63.starnet.cz. [178.255.168.63]) by mx.google.com with ESMTPSA id b41sm24465449eef.16.2014.01.22.00.48.56 for (version=TLSv1.1 cipher=RC4-SHA bits=128/128); Wed, 22 Jan 2014 00:48:56 -0800 (PST) From: Michal Simek To: Jagannadha Sutradharudu Teki , Jagannadha Sutradharudu Teki , u-boot@lists.denx.de Date: Wed, 22 Jan 2014 09:48:55 +0100 Message-Id: <8060cc44105b42f76f5cd8d2cc6b9221540ccff0.1390380532.git.michal.simek@xilinx.com> X-Mailer: git-send-email 1.8.2.3 Subject: [U-Boot] [PATCH] xilinx_spi: Move timeout calculation out of the loop 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 Timeout calculation should be out of the data loop. This patch increase spi bandwidth for 30%. Signed-off-by: Michal Simek --- drivers/spi/xilinx_spi.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) -- 1.8.2.3 diff --git a/drivers/spi/xilinx_spi.c b/drivers/spi/xilinx_spi.c index 5ac0184..56d99d1 100644 --- a/drivers/spi/xilinx_spi.c +++ b/drivers/spi/xilinx_spi.c @@ -149,6 +149,7 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout, const unsigned char *txp = dout; unsigned char *rxp = din; unsigned rxecount = 17; /* max. 16 elements in FIFO, leftover 1 */ + unsigned global_timeout; debug("%s: bus:%i cs:%i bitlen:%i bytes:%i flags:%lx\n", __func__, slave->bus, slave->cs, bitlen, bytes, flags); @@ -176,11 +177,12 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout, if (flags & SPI_XFER_BEGIN) spi_cs_activate(slave); - while (bytes--) { - unsigned timeout = /* at least 1usec or greater, leftover 1 */ - xilspi->freq > XILSPI_MAX_XFER_BITS * 1000000 ? 2 : + /* at least 1usec or greater, leftover 1 */ + global_timeout = xilspi->freq > XILSPI_MAX_XFER_BITS * 1000000 ? 2 : (XILSPI_MAX_XFER_BITS * 1000000 / xilspi->freq) + 1; + while (bytes--) { + unsigned timeout = global_timeout; /* get Tx element from data out buffer and count up */ unsigned char d = txp ? *txp++ : CONFIG_XILINX_SPI_IDLE_VAL; debug("%s: tx:%x ", __func__, d);