From patchwork Wed Jun 26 08:44:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Schaefer X-Patchwork-Id: 1122599 X-Patchwork-Delegate: jagannadh.teki@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=kontron.com Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45Yc8L0kRcz9s4V for ; Wed, 26 Jun 2019 18:46:41 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 9857BC21C3F; Wed, 26 Jun 2019 08:46:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id B46D3C21DD7; Wed, 26 Jun 2019 08:46:02 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6DB3FC21D65; Wed, 26 Jun 2019 08:45:55 +0000 (UTC) Received: from skedge03.snt-world.com (skedge03.snt-world.com [91.208.41.68]) by lists.denx.de (Postfix) with ESMTPS id 7C749C21DFA for ; Wed, 26 Jun 2019 08:45:51 +0000 (UTC) Received: from sntmail14r.snt-is.com (unknown [10.203.32.184]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by skedge03.snt-world.com (Postfix) with ESMTPS id A10AB67A91A; Wed, 26 Jun 2019 10:45:50 +0200 (CEST) Received: from DDESAB0033.kontron.local (10.228.0.137) by sntmail14r.snt-is.com (10.203.32.184) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 26 Jun 2019 10:45:50 +0200 From: Thomas Schaefer To: , Date: Wed, 26 Jun 2019 10:44:53 +0200 Message-ID: <20190626084453.1993-3-thomas.schaefer@kontron.com> X-Mailer: git-send-email 2.22.0.windows.1 In-Reply-To: <20190626084453.1993-1-thomas.schaefer@kontron.com> References: <20190626084453.1993-1-thomas.schaefer@kontron.com> MIME-Version: 1.0 X-Originating-IP: [10.228.0.137] X-ClientProxiedBy: sntmail11s.snt-is.com (10.203.32.181) To sntmail14r.snt-is.com (10.203.32.184) X-C2ProcessedOrg: 51b406b7-48a2-4d03-b652-521f56ac89f3 X-SnT-MailScanner-Information: Please contact the ISP for more information X-SnT-MailScanner-ID: A10AB67A91A.AB340 X-SnT-MailScanner: Not scanned: please contact your Internet E-Mail Service Provider for details X-SnT-MailScanner-SpamCheck: X-SnT-MailScanner-From: thomas.schaefer@kontron.com X-SnT-MailScanner-To: festevam@gmail.com, jagan@amarulasolutions.com, sbabic@denx.de, trini@konsulko.com, u-boot@lists.denx.de Cc: trini@konsulko.com, Thomas Schaefer , u-boot@lists.denx.de Subject: [U-Boot] [PATCH 2/2] drivers/spi: fsl_qspi: fix controller busy check X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Use readl_poll_timeout instead of explicit calculation. Signed-off-by: Thomas Schaefer --- drivers/spi/fsl_qspi.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c index 2c5937509f..41abe1996f 100644 --- a/drivers/spi/fsl_qspi.c +++ b/drivers/spi/fsl_qspi.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -150,19 +151,13 @@ static void qspi_write32(u32 flags, u32 *addr, u32 val) static inline int is_controller_busy(const struct fsl_qspi_priv *priv) { u32 val; - const u32 mask = QSPI_SR_BUSY_MASK | QSPI_SR_AHB_ACC_MASK | - QSPI_SR_IP_ACC_MASK; - unsigned long timeout = timer_get_us() + 1000; + u32 mask = QSPI_SR_BUSY_MASK | QSPI_SR_AHB_ACC_MASK | + QSPI_SR_IP_ACC_MASK; - do { - val = qspi_read32(priv->flags, &priv->regs->sr); + if (priv->flags & QSPI_FLAG_REGMAP_ENDIAN_BIG) + mask = (u32)cpu_to_be32(mask); - if ((~val & mask) == mask) - return 0; - - if (timer_get_us() > timeout ) - return -ETIMEDOUT; - } while (1); + return readl_poll_timeout(&priv->regs->sr, val, !(val & mask), 1000); } /* QSPI support swapping the flash read/write data