Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4547723pxj; Wed, 12 May 2021 07:58:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxGE8BgHZnKC4LRsvEGBWmdZBRfYTiy2Jd1tSWd4LEr10pg3yR5WhS+65scq9MGZ0wYUE2+ X-Received: by 2002:a54:438c:: with SMTP id u12mr27475495oiv.114.1620831539030; Wed, 12 May 2021 07:58:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620831539; cv=none; d=google.com; s=arc-20160816; b=pMDQNq+FS5oh1wyoQft9yIsrf+5nC7k9J5QkEjUjmWJiNj4pJPn+5UlYxHzKMEVswe I7KJNxP2pNpIY7qHdV4+JQTyUyrNmcJbk0A7M6JHYYglLIZh/rIwCMOJhJwSqsMOHLIn 3FjgdIyYa0CmH7rDHGFLASMe93xFyHHT3Caxr96+f1O5gywF+2Xzh49UyqMGFY5wzH8T 5nNq/DXYl4Vnp01wdwYWHVRhLtTrS9OBKOAeL1EblCtPk6TE1U5uVyJ9H7kWBhdCs/hl CV0hSYeGZ2LDC3w3jKefCFAJY1uyjd9aNDe81eBEJSa9Qi3pWCalmzvxAD7vLmGqd23E 16RQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=dQ5ZtaNX5ULYdentzowEwH3B9gjrrxrYAg14E85PfDs=; b=IyVmhcV6D5uSMvwjOaf3+6jv/RBZZv8fVy+mb0qll1x4oEX+3mebseMK63wSdLHOQQ r9zRU8QNCaONkYfUFKJx0ExSGCqeaCsMacomiqbSuWOvWaVmtFdb/r3oOPEVcH4iouSF oi2fw0RTaBrYFhaX49pCmS9/OFPzbjyN1QsyVwxDEW85qd4r42q8uWk74TFBdwIfhUV6 YcKRyDQab/wGg85F4BmTW/XffZYDKYpOtVHR34ppP2gHlvUAig0G5xkPh7AO1tw2/Yt7 DCuTej9EbMrpCx8ME7CDNiOUTIB/jr8NKktJxVrfLimpncJWbMfnfoty80PYjzoCW4Rn /YFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=006xOZyz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z84si236894oia.1.2021.05.12.07.58.45; Wed, 12 May 2021 07:58:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=006xOZyz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232041AbhELO6r (ORCPT + 99 others); Wed, 12 May 2021 10:58:47 -0400 Received: from mail.kernel.org ([198.145.29.99]:42902 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232388AbhELO44 (ORCPT ); Wed, 12 May 2021 10:56:56 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id BC17561442; Wed, 12 May 2021 14:55:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620831324; bh=LE4/1XnMc3SLI3N4ZLnZ7RPt6CtwHqOH1PVIe5JWzeY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=006xOZyzSecHOyUdgedvHJC2UJ2BUPPNSWxw0SVh4nDiaPSS013fL/hs8rY8SOoF6 QC3CKkvC7gCJ6WrQw8bN15s4NGlUF/vq/xqfBCV/jXBu6ZdB+GSSsqp+sojnGhhn24 6JZjxo0kAZQ+k+HrPRBoMktKkZSlbVwHv2NCjZ24= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Erwan Le Ray , Sasha Levin Subject: [PATCH 5.4 073/244] serial: stm32: fix tx_empty condition Date: Wed, 12 May 2021 16:47:24 +0200 Message-Id: <20210512144745.377457199@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210512144743.039977287@linuxfoundation.org> References: <20210512144743.039977287@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Erwan Le Ray [ Upstream commit 3db1d52466dc11dca4e47ef12a6e6e97f846af62 ] In "tx_empty", we should poll TC bit in both DMA and PIO modes (instead of TXE) to check transmission data register has been transmitted independently of the FIFO mode. TC indicates that both transmit register and shift register are empty. When shift register is empty, tx_empty should return TIOCSER_TEMT instead of TC value. Cleans the USART_CR_TC TCCF register define (transmission complete clear flag) as it is duplicate of USART_ICR_TCCF. Fixes: 48a6092fb41f ("serial: stm32-usart: Add STM32 USART Driver") Signed-off-by: Erwan Le Ray Link: https://lore.kernel.org/r/20210304162308.8984-13-erwan.leray@foss.st.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/tty/serial/stm32-usart.c | 5 ++++- drivers/tty/serial/stm32-usart.h | 3 --- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/tty/serial/stm32-usart.c b/drivers/tty/serial/stm32-usart.c index 6756f73fb220..23b7bdae173c 100644 --- a/drivers/tty/serial/stm32-usart.c +++ b/drivers/tty/serial/stm32-usart.c @@ -502,7 +502,10 @@ static unsigned int stm32_tx_empty(struct uart_port *port) struct stm32_port *stm32_port = to_stm32_port(port); struct stm32_usart_offsets *ofs = &stm32_port->info->ofs; - return readl_relaxed(port->membase + ofs->isr) & USART_SR_TXE; + if (readl_relaxed(port->membase + ofs->isr) & USART_SR_TC) + return TIOCSER_TEMT; + + return 0; } static void stm32_set_mctrl(struct uart_port *port, unsigned int mctrl) diff --git a/drivers/tty/serial/stm32-usart.h b/drivers/tty/serial/stm32-usart.h index a175c1094dc8..a0b816e0e89b 100644 --- a/drivers/tty/serial/stm32-usart.h +++ b/drivers/tty/serial/stm32-usart.h @@ -127,9 +127,6 @@ struct stm32_usart_info stm32h7_info = { /* Dummy bits */ #define USART_SR_DUMMY_RX BIT(16) -/* USART_ICR (F7) */ -#define USART_CR_TC BIT(6) - /* USART_DR */ #define USART_DR_MASK GENMASK(8, 0) -- 2.30.2