Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp8205801pxb; Fri, 19 Feb 2021 09:56:20 -0800 (PST) X-Google-Smtp-Source: ABdhPJwuao+5+ApoIGuH1iTYUTIWQmoOB/cXaWEboeKLt++h5o5CeBarcyI+HzVJVvHK/Ooqck1q X-Received: by 2002:a50:e183:: with SMTP id k3mr10536726edl.45.1613757380705; Fri, 19 Feb 2021 09:56:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613757380; cv=none; d=google.com; s=arc-20160816; b=mTzbh4C2JP/XyE0opto8QFgl9fpQa+1qEpEHfynYlphUq8zCZv0dD3/z6lOnhKTpK4 UZKOkIF12IggG1MtE/nuwfIZFqkSwuzpD03aztzKMtsU+qOg+ZlGE3xMcM65+UtIRiJf 0B3kQDFWh7tCFWsQzZbigOPnKcsWH42l4etGFlp5tZH5Wb9+18vOsgzXhW8uofxv2CsS HD6QDeCSWWsTpDQV/GhsWrDWj/qqVByzkbwRSoMlfBZ52znH7iLuYKTdbxdP3jnAsNl8 mLY22Hr+T1jYDQL9yJA7Cg7zTXQqx8v5yg31vGC9ubR3/WwGJnTZ56BtYpbcRZffoshi UhHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=K2uTlfei1P+sErSac4XVVp+eTsZmAZZ9mEtyxUIwD98=; b=Xts1nKnc8zgaAU+fmABDxdV+saW0LM0BEe7trEUdN0jKPIKQHHBy4zyiAJ6Eymzv0D z3/r5GkZCZlc5wG5S2MbfoagRjqzFo+DG/K+1l108UZxM58CX9dMqpgfWNsNNeABr2+Q y6/CIyDlNC25SdhJxoL8wbJa49smwHBRTuvNTDekXQtyj8fhewxu1QTRmC0BAxn4FARB TyAEaHLXobP8ipuXZRfHb6d70H3swbtdBBKx+WOmyAiQCUeB1d8f/Hcj6pLXc+1mIkM8 7JTAxFe8hwwFQs/ISABVlp0PV0pF0rz2mqVui9qUeDjQnWdD4Inm5d13QXIu54Nu9rFm C9wA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@foss.st.com header.s=selector1 header.b=CPlA6AdT; 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=foss.st.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dn4si7957683ejc.686.2021.02.19.09.55.44; Fri, 19 Feb 2021 09:56:20 -0800 (PST) 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=@foss.st.com header.s=selector1 header.b=CPlA6AdT; 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=foss.st.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230179AbhBSRwJ (ORCPT + 99 others); Fri, 19 Feb 2021 12:52:09 -0500 Received: from mx07-00178001.pphosted.com ([185.132.182.106]:23748 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230081AbhBSRsk (ORCPT ); Fri, 19 Feb 2021 12:48:40 -0500 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 11JHgJkq007987; Fri, 19 Feb 2021 18:47:52 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=selector1; bh=K2uTlfei1P+sErSac4XVVp+eTsZmAZZ9mEtyxUIwD98=; b=CPlA6AdT3/bDvjYTxpna/wdnSVOmb5suuz6MpBP2SzDWT2IffKEkyGqu7wsKrjEzIziY pYe/9T69cPh5/5Ds1r0zrBPmLNlxoFBLbpkIF2LBTGAmM1W7DowsaZntSm8tuwOktaCb iYYRGpgyoKP3m3zR7TDEosDHjoLT4Os8u94wi3lWRH06afdLFGFYkkTNcF5Zx756V7X7 2WbVapTMmsTBDVGvVlJo0lKTbAtYNAiqytGPGKUbuWTQv/tq/ciiwpT7ocm2W4WdRmyz XzoL8Rki3zJXEbQZNor8k4XsqXWoxCjaQUef6W49/J5JGD2UHHd2JSf16RRbdh0Wjy++ gw== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 36sqadhaxq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 19 Feb 2021 18:47:52 +0100 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id BCCA710002A; Fri, 19 Feb 2021 18:47:51 +0100 (CET) Received: from Webmail-eu.st.com (sfhdag2node3.st.com [10.75.127.6]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id B163925F3FD; Fri, 19 Feb 2021 18:47:51 +0100 (CET) Received: from localhost (10.75.127.47) by SFHDAG2NODE3.st.com (10.75.127.6) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Fri, 19 Feb 2021 18:47:51 +0100 From: Erwan Le Ray To: Greg Kroah-Hartman , Jiri Slaby , Maxime Coquelin , Alexandre Torgue CC: , , , , Erwan Le Ray , Fabrice Gasnier , Valentin Caron Subject: [PATCH 12/13] serial: stm32: fix tx_empty condition Date: Fri, 19 Feb 2021 18:47:35 +0100 Message-ID: <20210219174736.1022-13-erwan.leray@foss.st.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210219174736.1022-1-erwan.leray@foss.st.com> References: <20210219174736.1022-1-erwan.leray@foss.st.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.75.127.47] X-ClientProxiedBy: SFHDAG1NODE3.st.com (10.75.127.3) To SFHDAG2NODE3.st.com (10.75.127.6) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369,18.0.761 definitions=2021-02-19_08:2021-02-18,2021-02-19 signatures=0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 diff --git a/drivers/tty/serial/stm32-usart.c b/drivers/tty/serial/stm32-usart.c index dcc309fd5d2f..114408f3892a 100644 --- a/drivers/tty/serial/stm32-usart.c +++ b/drivers/tty/serial/stm32-usart.c @@ -515,7 +515,10 @@ static unsigned int stm32_usart_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_usart_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 d4c916e78d40..e305462d0de6 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.17.1