From patchwork Fri Dec 24 05:59:09 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Feng Tang X-Patchwork-Id: 431781 Received: from lists.sourceforge.net (lists.sourceforge.net [216.34.181.88]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id oBO60PRn013097 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 24 Dec 2010 06:00:45 GMT Received: from localhost ([127.0.0.1] helo=sfs-ml-2.v29.ch3.sourceforge.com) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.69) (envelope-from ) id 1PW0hQ-0003Mr-8K; Fri, 24 Dec 2010 06:00:20 +0000 Received: from sog-mx-2.v43.ch3.sourceforge.com ([172.29.43.192] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.69) (envelope-from ) id 1PW0hP-0003Ml-74 for spi-devel-general@lists.sourceforge.net; Fri, 24 Dec 2010 06:00:19 +0000 X-ACL-Warn: Received: from mga14.intel.com ([143.182.124.37]) by sog-mx-2.v43.ch3.sourceforge.com with esmtp (Exim 4.72) id 1PW0hN-0005ma-Q0 for spi-devel-general@lists.sourceforge.net; Fri, 24 Dec 2010 06:00:19 +0000 Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga102.ch.intel.com with ESMTP; 23 Dec 2010 22:00:11 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.60,222,1291622400"; d="scan'208";a="366099422" Received: from feng-i7.sh.intel.com (HELO localhost.localdomain) ([10.239.14.123]) by azsmga001.ch.intel.com with ESMTP; 23 Dec 2010 22:00:10 -0800 From: Feng Tang To: spi-devel-general@lists.sourceforge.net, grant.likely@secretlab.ca, dbrownell@users.sourceforge.net Subject: [Patch v2 1/3] spi/dw_spi: Fix too short timeout in spi polling loop Date: Fri, 24 Dec 2010 13:59:09 +0800 Message-Id: <1293170351-7426-1-git-send-email-feng.tang@intel.com> X-Mailer: git-send-email 1.7.0.4 X-Spam-Score: -0.0 (/) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain X-Headers-End: 1PW0hN-0005ma-Q0 Cc: Arjan van de Ven , linus.walleij@stericsson.com, alan@linux.intel.com 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 X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Fri, 24 Dec 2010 06:00:46 +0000 (UTC) diff --git a/drivers/spi/dw_spi.c b/drivers/spi/dw_spi.c index 0838c79..25238a8 100644 --- a/drivers/spi/dw_spi.c +++ b/drivers/spi/dw_spi.c @@ -164,20 +164,23 @@ static inline void mrst_spi_debugfs_remove(struct dw_spi *dws) static void wait_till_not_busy(struct dw_spi *dws) { - unsigned long end = jiffies + 1 + usecs_to_jiffies(1000); + unsigned long end = jiffies + 1 + usecs_to_jiffies(5000); while (time_before(jiffies, end)) { if (!(dw_readw(dws, sr) & SR_BUSY)) return; + cpu_relax(); } dev_err(&dws->master->dev, - "DW SPI: Status keeps busy for 1000us after a read/write!\n"); + "DW SPI: Status keeps busy for 5000us after a read/write!\n"); } static void flush(struct dw_spi *dws) { - while (dw_readw(dws, sr) & SR_RF_NOT_EMPT) + while (dw_readw(dws, sr) & SR_RF_NOT_EMPT) { dw_readw(dws, dr); + cpu_relax(); + } wait_till_not_busy(dws); }