From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6234019007D; Tue, 11 Mar 2025 03:44:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741664678; cv=none; b=JGvstN8u2JHi15XQs4vYUOFixJC811ThakCBjS5FMJUIQZ/jGuqdUmQO6Eltg+0uLgLEYJ1k67/5Bq+5xjUGCTHdWabxDZ/2nipaFQXA9hTG15bt5ssUObpGy7ZzdnXp8/QdH+z8aYGFtI7P8/x8oeUAAdtz+6N4OM5zm159QuY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741664678; c=relaxed/simple; bh=Gr1weptT628Ct95wEtdi6qW2k8b3nY1kEXSz/3UDyqQ=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=YO6q3dO5b8g1LtD5ElZcqaCk6lsxyeX/PD/HBgkq6Qw+DCpPit7ulhVpdxG8cpu3ezi9GGRenrbinNJ/m3C5qVaEAHpBVgOwuEkO8tRJJvlmzWmydsaKIrM7Cn050dVuE6lNJZDldU0vkSfMXPmo1ME9vSS+VHzSQypiL23GmQ0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HyrkWsO7; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HyrkWsO7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 688AAC4CEEF; Tue, 11 Mar 2025 03:44:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741664677; bh=Gr1weptT628Ct95wEtdi6qW2k8b3nY1kEXSz/3UDyqQ=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=HyrkWsO7MGkLeO7FZCpuIMuITSvoWYyKL+2Xu8PcpJyfbgvHpMGJmwaBTC7T/Jvmp JhqLW6dgZT5jLCXGcl/Qe+m/A3gpeTL9E5I6MSR3YvIvJGcB1cnUavXwTGMR3nUKph yjlJ0RYQlXOve6C50rZ9tqwpimsB405m7aF0AMFdC7rEfIqodln4aKfirT9pGRjGyU 414h8VjF7DU5KKHRfvxwqZrTSS6Mwsnl5tyrEPU6E5eFvTtVZIBC/JPGGu4jF37XHj W6uX+Zh+t61qooi2h098Jvf8XNZnN1YvtlIfyjRfBhWLDYxzJZgJDDi3tUCHu8GYm2 mJbDuJ6CRvs4Q== Message-ID: Date: Tue, 11 Mar 2025 04:44:34 +0100 Precedence: bulk X-Mailing-List: imx@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH V2] tty: serial: fsl_lpuart: disable transmitter before changing RS485 related registers To: Sherry Sun , gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, shenwei.wang@nxp.com, frank.li@nxp.com References: <20250311025550.1243569-1-sherry.sun@nxp.com> Content-Language: en-US From: Jiri Slaby Autocrypt: addr=jirislaby@kernel.org; keydata= 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 In-Reply-To: <20250311025550.1243569-1-sherry.sun@nxp.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 11. 03. 25, 3:55, Sherry Sun wrote: > According to the LPUART reference manual, TXRTSE and TXRTSPOL of MODIR > register only can be changed when the transmitter is disabled. > So disable the transmitter before changing RS485 related registers and > re-enable it after the change is done. > > Fixes: 67b01837861c ("tty: serial: lpuart: Add RS485 support for 32-bit uart flavour") > Signed-off-by: Sherry Sun > Reviewed-by: Frank Li > --- > Changes in V2: > 1. Add TE bit polling read to ensure TE is really become 0 before proceeding. > 2. Add Reviewed-by tag. > --- > drivers/tty/serial/fsl_lpuart.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c > index 91d02c55c470..6b2f3a73a367 100644 > --- a/drivers/tty/serial/fsl_lpuart.c > +++ b/drivers/tty/serial/fsl_lpuart.c > @@ -1484,6 +1484,19 @@ static int lpuart32_config_rs485(struct uart_port *port, struct ktermios *termio > > unsigned long modem = lpuart32_read(&sport->port, UARTMODIR) > & ~(UARTMODIR_TXRTSPOL | UARTMODIR_TXRTSE); This is unrelated, but why is the above ulong? > + u32 ctrl; > + > + /* TXRTSE and TXRTSPOL only can be changed when transmitter is disabled. */ > + ctrl = lpuart32_read(&sport->port, UARTCTRL); > + if (ctrl & UARTCTRL_TE) { > + /* wait transmit engin complete */ wait for the transmit engine to complete > + lpuart32_wait_bit_set(&sport->port, UARTSTAT, UARTSTAT_TC); Both this ^^ and: > + lpuart32_write(&sport->port, ctrl & ~UARTCTRL_TE, UARTCTRL); > + > + while (lpuart32_read(&sport->port, UARTCTRL) & UARTCTRL_TE) > + cpu_relax(); this ^^ are unbound loops in case the hardware gets mad :(. Anyway, IIUC, after the TE clear from CTRL by the above write, the TE bit is really cleared by the HW from CTRL only after it is really disabled, so has to be checked? > + } > + thanks, -- js suse labs