From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753108AbbGNRdN (ORCPT ); Tue, 14 Jul 2015 13:33:13 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:62357 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751958AbbGNRdL (ORCPT ); Tue, 14 Jul 2015 13:33:11 -0400 Date: Tue, 14 Jul 2015 19:33:04 +0200 (CEST) From: Stefan Wahren Reply-To: Stefan Wahren To: Juergen Borleis Cc: linux-serial@vger.kernel.org, kernel@pengutronix.de, Greg Kroah-Hartman , Jiri Slaby , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Message-ID: <1463261573.74606.1436895184420.JavaMail.open-xchange@oxbsltgw03.schlund.de> In-Reply-To: <1436884864-6782-1-git-send-email-jbe@pengutronix.de> References: <1436884864-6782-1-git-send-email-jbe@pengutronix.de> Subject: Re: [PATCH] serial: mxs-auart: keep the AUART unit in reset state when not in use MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Priority: 3 Importance: Medium X-Mailer: Open-Xchange Mailer v7.6.2-Rev20 X-Originating-Client: com.openexchange.ox.gui.dhtml X-Provags-ID: V03:K0:LY9b8G6wZGmXUTe/6TUWZrOIHKYL1LPWNpim/RJLclL5CsOLMpC Y7mA4L9X0PHGDjcGsLQb+DEJIiSy5BjrMzuP94UEhRfxmjvSJAHGw3i4JZKaAssrFfMozaa beQ7RNoCy+mfzIa347HMAPtsJMPeGV/pU3RmM+aLKZwqNaBctMhzK5Za4gYHmIOzwFTxQbb WMG2rax+v9g0mzb3ZcDHg== X-UI-Out-Filterresults: notjunk:1;V01:K0:HFMFBapwIFA=:RgmMf+XOmO2zu6GBMX54sC yVwQP9raJond30OkjepxjS/mKGmoF3CQU9NZh4zdHU+aSm1Tmy+eK4FUFYo5+PRYhTCpvMJ1/ MjJSlUxwdrOFI9CZJ3eWVW0I23nFAF3n6sWI0XQjrFQNP+utj2X8FJKlvzRz2N2yU5oIKQYTA fpbobr8+pAODNtrWlSpA5SOoiO+GcxLZsLLrUE/Q7ff4gqXxMLly6AMDesO+BXeOYISrBBbcZ YTaKMwaW/RVg2VoYC75rW0p8GHLQwXxawLCI/wxGIyicjPJqmO1+gk+74sD8LZwzy+8r9AZ+W If8bZg1eaiYkhPUBrea++PjJt5slHlmUsg7viK2w7NRYlE7iuaYuHv9mjaiwqtZggdZgSf0Kh 8DreHHU2PLYFomIQXbpv6zabOKDEVaxD6lbjxYtn2Crv/zjN3CVFVdYtQUVrz8t6RLlKakK94 VrSS2bfSWIWkVPwDNP2LVVwTtTzwBSuCBKFZ+RbI4wnW+tJt/SzGv+EZK6dA///lrU+gPLveT nXoWPxngyQ4CBmOlbtPmLxNwVfNccbBwoq+jxrN5Fib8kTGB9ihp2s9JRBvwOKUQCpJh+XARD uOnNEesmIAh9cBFrBO2Xf0yuvnLZQkiE0Sp3myk2535nvhS8PphGWt2fyidSvAmb+ttEIZ6zo tLtF93FAni9j82rtDw/x1DmcpINGIeaPxu6GEt7JwTQxhbw== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello Juergen, > Juergen Borleis hat am 14. Juli 2015 um 16:41 > geschrieben: > > > [...] > --- > drivers/tty/serial/mxs-auart.c | 38 ++++++++++++++++++++++++++++++-------- > 1 file changed, 30 insertions(+), 8 deletions(-) > > diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c > index 13cf773..f42b6ad 100644 > --- a/drivers/tty/serial/mxs-auart.c > +++ b/drivers/tty/serial/mxs-auart.c > @@ -858,6 +858,30 @@ static void mxs_auart_reset(struct uart_port *u) > writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_CLR); > } > > +static void mxs_auart_do_reset(struct uart_port *u) i think the naming of this new function is too similiar to mxs_auart_reset() and doesn't represent the exact behavior. How about mxs_auart_keep_reset() or mxs_auart_gate()? > +{ > + int i; > + u32 reg; > + > + reg = readl(u->membase + AUART_CTRL0); > + /* if already in reset state, keep it untouched */ > + if (reg & AUART_CTRL0_SFTRST) > + return; > + > + writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_CLR); > + writel(AUART_CTRL0_SFTRST, u->membase + AUART_CTRL0_SET); > + > + for (i = 0; i < 1000; i++) { > + reg = readl(u->membase + AUART_CTRL0); > + /* reset is finished when the clock is gated */ > + if (reg & AUART_CTRL0_CLKGATE) > + return; > + udelay(10); The delay in mxs_auart_reset() has a value of 3 microseconds. Why not the same here? > + } > + > + dev_err(u->dev, "Failed to reset the unit."); > +} > + > static int mxs_auart_startup(struct uart_port *u) > { > int ret; > @@ -867,7 +891,10 @@ static int mxs_auart_startup(struct uart_port *u) > if (ret) > return ret; > > - writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_CLR); > + /* reset the unit if not aready done */ Just a typo: already? Thanks Stefan