From patchwork Fri Nov 14 18:09:44 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Kleine-Budde X-Patchwork-Id: 40840 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-wi0-f200.google.com (mail-wi0-f200.google.com [209.85.212.200]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 287FF240ED for ; Fri, 14 Nov 2014 18:10:03 +0000 (UTC) Received: by mail-wi0-f200.google.com with SMTP id ex7sf1328696wid.3 for ; Fri, 14 Nov 2014 10:10:02 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:cc:subject :date:message-id:in-reply-to:references:sender:precedence:list-id :x-original-sender:x-original-authentication-results:mailing-list :list-post:list-help:list-archive:list-unsubscribe; bh=EpsRszxrEgum3d9VNBz73pS9HLnTYZup9MM0NE8W9WM=; b=XMNzQJZ11I487c6ATNgDJOZXhYFVTV9MJET2EITctWmklIQgil7yQdAsIT9RhBTIny v2q6DHPVVgBzbRZymD7CXMde6vfLU+lW4sXUw/d/Cw+mHeiEEX/pOeYassHVge0siWhQ T2YKM4P0AtVE+VgeVUWSuuz7V/RfaBSPnThMZ+/HgWN6PRX2Fq1AiyM7EJA6S9YKNhIt hV9JpWoX6/q+eq6F751ZodjgHbn1++ZZ8jH9fdS07LTL6lr1b1Jg21V3JyVCqZFM65g5 62iTm2iCvmmIN1/ENFHib9caeOMlziJcB5X97y6vEB6zHCHuzCjsreq5hvuTAlaCCjV4 WVew== X-Gm-Message-State: ALoCoQl/njjPjxGpOvTEIgjHbAG+GXoH+M26PQZMPzRa743fGY8Gn2GnPeqZWon6hbS8sUF/71j5 X-Received: by 10.180.219.40 with SMTP id pl8mr1371245wic.3.1415988602450; Fri, 14 Nov 2014 10:10:02 -0800 (PST) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.36.169 with SMTP id r9ls761375laj.57.gmail; Fri, 14 Nov 2014 10:10:02 -0800 (PST) X-Received: by 10.112.140.135 with SMTP id rg7mr2946024lbb.100.1415988602269; Fri, 14 Nov 2014 10:10:02 -0800 (PST) Received: from mail-la0-f52.google.com (mail-la0-f52.google.com. [209.85.215.52]) by mx.google.com with ESMTPS id ol9si16643840lbb.2.2014.11.14.10.10.02 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 14 Nov 2014 10:10:02 -0800 (PST) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.52 as permitted sender) client-ip=209.85.215.52; Received: by mail-la0-f52.google.com with SMTP id pv20so15201629lab.39 for ; Fri, 14 Nov 2014 10:10:01 -0800 (PST) X-Received: by 10.152.87.100 with SMTP id w4mr9443497laz.27.1415988601894; Fri, 14 Nov 2014 10:10:01 -0800 (PST) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.112.184.201 with SMTP id ew9csp809389lbc; Fri, 14 Nov 2014 10:10:01 -0800 (PST) X-Received: by 10.70.96.68 with SMTP id dq4mr11794543pdb.61.1415988600179; Fri, 14 Nov 2014 10:10:00 -0800 (PST) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id kj7si29059118pab.98.2014.11.14.10.09.59 for ; Fri, 14 Nov 2014 10:10:00 -0800 (PST) Received-SPF: none (google.com: linux-omap-owner@vger.kernel.org does not designate permitted sender hosts) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161693AbaKNSJ6 (ORCPT + 5 others); Fri, 14 Nov 2014 13:09:58 -0500 Received: from metis.ext.pengutronix.de ([92.198.50.35]:51586 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1161516AbaKNSJ5 (ORCPT ); Fri, 14 Nov 2014 13:09:57 -0500 Received: from gallifrey.ext.pengutronix.de ([2001:6f8:1178:4:5054:ff:fe8d:eefb] helo=hardanger.do.blackshift.org) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1XpLJi-00039L-Kh; Fri, 14 Nov 2014 19:09:54 +0100 From: Marc Kleine-Budde To: linux-can@vger.kernel.org Cc: wsa@the-dreams.de, linux-omap@vger.kernel.org, rogerq@ti.com, kernel@pengutronix.de, Marc Kleine-Budde Subject: [PATCH v8 1/8] can: c_can: Add timeout to c_can_hw_raminit_ti() Date: Fri, 14 Nov 2014 19:09:44 +0100 Message-Id: <1415988591-6032-2-git-send-email-mkl@pengutronix.de> X-Mailer: git-send-email 2.1.1 In-Reply-To: <1415988591-6032-1-git-send-email-mkl@pengutronix.de> References: <1415988591-6032-1-git-send-email-mkl@pengutronix.de> X-SA-Exim-Connect-IP: 2001:6f8:1178:4:5054:ff:fe8d:eefb X-SA-Exim-Mail-From: mkl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-omap@vger.kernel.org Sender: linux-omap-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-omap@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: mkl@pengutronix.de X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.52 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , From: Roger Quadros TI's RAMINIT DONE mechanism is buggy on AM43xx SoC and may not always be set after the START bit is set. Although it seems to work fine even in that case. So add a timeout mechanism to c_can_hw_raminit_wait_ti(). Don't bail out in that failure case but just print an error message. Signed-off-by: Roger Quadros Signed-off-by: Marc Kleine-Budde --- drivers/net/can/c_can/c_can_platform.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/net/can/c_can/c_can_platform.c b/drivers/net/can/c_can/c_can_platform.c index fb279d6ae484..106c203fc5eb 100644 --- a/drivers/net/can/c_can/c_can_platform.c +++ b/drivers/net/can/c_can/c_can_platform.c @@ -75,10 +75,19 @@ static void c_can_plat_write_reg_aligned_to_32bit(const struct c_can_priv *priv, static void c_can_hw_raminit_wait_ti(const struct c_can_priv *priv, u32 mask, u32 val) { + int timeout = 0; + /* We look only at the bits of our instance. */ val &= mask; - while ((readl(priv->raminit_ctrlreg) & mask) != val) + while ((readl(priv->raminit_ctrlreg) & mask) != val) { udelay(1); + timeout++; + + if (timeout == 1000) { + dev_err(&priv->dev->dev, "%s: time out\n", __func__); + break; + } + } } static void c_can_hw_raminit_ti(const struct c_can_priv *priv, bool enable)