Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1399382pxb; Thu, 4 Mar 2021 10:16:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJzfOCMyZ4vGFOBUOjOhqZG4KzaQPRxPGELRqfR5HK4oqUCGiyk9JzM749h/Wz0LdH1Kvw7R X-Received: by 2002:a05:6402:304b:: with SMTP id bu11mr5596908edb.157.1614881800613; Thu, 04 Mar 2021 10:16:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614881800; cv=none; d=google.com; s=arc-20160816; b=VnjcjC4cRR7wggOWIZU0Udjzpighk1ttTuVTwghzSb6+amt91LGRIhj/sQog1EQvI6 +jeQ4Z73TJf5Xm/pO0333kMu8DyCnLcpxaUiK3W3BTYE4AmhnUhuG8UbYOBp6jSfCc87 QZ9qzqi5i5SBlVZbA9emxYQQ/qg3PVDuR0rwAcnHb06gu/XjwX8bPo15vRSd6dERUAXX u1AQbN6x6PSIkA9MJRSLjpUNJGSvTuRv+S/j1x91jGSjhCZr68kiddbUI26cb/e8uDDN li6dA1r4gBnwYUDNeAYIj0ukb3jaFFvaNwwmXmDEmvlMnltBCOtehkc5pN5ViusMdhI/ P5Pw== 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=kpTnAz2tFF6F3ba7HirJS5UTfUaqmXA6Wz4x0lm0VD0=; b=wiFSDPgyzHkVSKQMYBsCG1vWEyKcpKDb4RDALoaIf3dAB5nakf3yoynh2XYb7KI6Ej VfGe+dC8DeWbQZzPLhsv+mhXd1BIJcAAPrnY8VqHaqpjkzDG4x3OER7RfezYfJpwb+j/ /ia5EExg5tqsEX3vzt5zqWW1Syk1DJtXKg/aT02zBVULCsxp5eSvG/LeiEpv6teO/2R5 FGpa5iGKilw1B4XvInEAoQg4+v1ufaaS5bjVbPxk1n5itOroH/tqHG1CCSo4DK6eLmDy loci2Z+xF2kHhC6Lk2FKvA0rVY41ZmQbsziSrVQ01vDAjIkOhsPbsmKI04bKNJbCGl3q fD2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@foss.st.com header.s=selector1 header.b=gIoKAHED; 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 c26si53315eds.593.2021.03.04.10.16.17; Thu, 04 Mar 2021 10:16:40 -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=gIoKAHED; 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 S237390AbhCDQYg (ORCPT + 99 others); Thu, 4 Mar 2021 11:24:36 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:28322 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S237040AbhCDQYK (ORCPT ); Thu, 4 Mar 2021 11:24:10 -0500 Received: from pps.filterd (m0046660.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 124GC6UK025839; Thu, 4 Mar 2021 17:23:21 +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=kpTnAz2tFF6F3ba7HirJS5UTfUaqmXA6Wz4x0lm0VD0=; b=gIoKAHEDrRhFkN6JYkoLEDtIS1KqFXdiXVxgZNCIwM3WRQ72LtjUVBnh30b8L7FkT9On CB2407TbcQ/s5IuLGXvOkA79XjJigOBsJfsdlWW1MmRVWsdZV9pGZlqk9vTCYg6rQvHu SqUG53mLp8C85f2fMuhvGwIQad51fFPc0rCk7hL/YR4/CbLAPjXNX5ZwEEpbjLslRBaf yDiuTOHrozhfpv56pkzvGcEFScwCcQsUXXCglqbXwhNzWXgdSiljlIMpLZaZ0a5BsmGG bUf2F+JyMoAig7Gz19qH6JrLim7RSFsOoIbcxUtjdeCrWqYlaAyna9gaZNGHYcYmpAX8 KQ== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 36yfdygh46-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 04 Mar 2021 17:23:21 +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 D5404100034; Thu, 4 Mar 2021 17:23:20 +0100 (CET) Received: from Webmail-eu.st.com (sfhdag2node3.st.com [10.75.127.6]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id C94B120741B; Thu, 4 Mar 2021 17:23:20 +0100 (CET) Received: from localhost (10.75.127.51) by SFHDAG2NODE3.st.com (10.75.127.6) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 4 Mar 2021 17:23:20 +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 v2 12/13] serial: stm32: fix tx_empty condition Date: Thu, 4 Mar 2021 17:23:07 +0100 Message-ID: <20210304162308.8984-13-erwan.leray@foss.st.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210304162308.8984-1-erwan.leray@foss.st.com> References: <20210304162308.8984-1-erwan.leray@foss.st.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.75.127.51] X-ClientProxiedBy: SFHDAG2NODE3.st.com (10.75.127.6) 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-03-04_05:2021-03-03,2021-03-04 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 d205fce1950a..99dfa884cbef 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); const 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 cb4f327c46db..94b568aa46bb 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