From patchwork Tue Sep 4 02:40:18 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 1401041 Return-Path: X-Original-To: patchwork-spi-devel-general@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from lists.sourceforge.net (lists.sourceforge.net [216.34.181.88]) by patchwork1.kernel.org (Postfix) with ESMTP id C8737402E1 for ; Tue, 4 Sep 2012 02:40:45 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=sfs-ml-4.v29.ch3.sourceforge.com) by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1T8j4H-0006QH-7h; Tue, 04 Sep 2012 02:40:45 +0000 Received: from sog-mx-3.v43.ch3.sourceforge.com ([172.29.43.193] helo=mx.sourceforge.net) by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1T8j4F-0006Py-MG for spi-devel-general@lists.sourceforge.net; Tue, 04 Sep 2012 02:40:43 +0000 X-ACL-Warn: Received: from mail-out.m-online.net ([212.18.0.10]) by sog-mx-3.v43.ch3.sourceforge.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) id 1T8j4E-0002p3-OQ for spi-devel-general@lists.sourceforge.net; Tue, 04 Sep 2012 02:40:43 +0000 Received: from frontend1.mail.m-online.net (frontend1.mail.intern.m-online.net [192.168.8.180]) by mail-out.m-online.net (Postfix) with ESMTP id 3X9sjJ69d1z3hhcs; Tue, 4 Sep 2012 04:40:36 +0200 (CEST) X-Auth-Info: WrIM6W1OaxMWbqnerjhBdCEl9up2FWZBMuX0vUFqZGo= Received: from mashiro.lan (unknown [195.140.253.167]) by smtp-auth.mnet-online.de (Postfix) with ESMTPA id 3X9sjJ44rNzbbgH; Tue, 4 Sep 2012 04:40:36 +0200 (CEST) From: Marek Vasut To: spi-devel-general@lists.sourceforge.net Subject: [PATCH 4/4] mxs/spi: Rework the mxs_ssp_timeout to be more readable Date: Tue, 4 Sep 2012 04:40:18 +0200 Message-Id: <1346726418-2856-5-git-send-email-marex@denx.de> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1346726418-2856-1-git-send-email-marex@denx.de> References: <1346726418-2856-1-git-send-email-marex@denx.de> X-Spam-Score: -0.1 (/) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [212.18.0.10 listed in list.dnswl.org] -0.1 AWL AWL: From: address is in the auto white-list X-Headers-End: 1T8j4E-0002p3-OQ Cc: Marek Vasut , Fabio Estevam , Shawn Guo , Mark Brown , Chris Ball , linux-arm-kernel@lists.infradead.org X-BeenThere: spi-devel-general@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: Linux SPI core/device drivers discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: spi-devel-general-bounces@lists.sourceforge.net Rework the mxs_ssp_timeout() function to make it a bit more readable and hopefully less error prone. Also, have only one successful exit from the function and one failing exit instead of two. Finally, discard the udelay() from this function altogether, as this tightloop is quick enough it's pointless. Signed-off-by: Marek Vasut Cc: Chris Ball Cc: Fabio Estevam Cc: Grant Likely Cc: Mark Brown Cc: Shawn Guo --- drivers/spi/spi-mxs.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/drivers/spi/spi-mxs.c b/drivers/spi/spi-mxs.c index 6650ded..2c3665a 100644 --- a/drivers/spi/spi-mxs.c +++ b/drivers/spi/spi-mxs.c @@ -177,25 +177,23 @@ static inline void mxs_spi_disable(struct mxs_spi *spi) static int mxs_ssp_wait(struct mxs_spi *spi, int offset, int mask, bool set) { - unsigned long timeout = jiffies + msecs_to_jiffies(SSP_TIMEOUT); + const unsigned long timeout = jiffies + msecs_to_jiffies(SSP_TIMEOUT); struct mxs_ssp *ssp = &spi->ssp; uint32_t reg; - while (1) { + do { reg = readl_relaxed(ssp->base + offset); - if (set && ((reg & mask) == mask)) - break; + if (!set) + reg = ~reg; - if (!set && ((~reg & mask) == mask)) - break; + reg &= mask; - udelay(1); + if (reg == mask) + return 0; + } while (time_before(jiffies, timeout)); - if (time_after(jiffies, timeout)) - return -ETIMEDOUT; - } - return 0; + return -ETIMEDOUT; } static void mxs_ssp_dma_irq_callback(void *param)