Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp750296ybl; Wed, 4 Dec 2019 10:14:01 -0800 (PST) X-Google-Smtp-Source: APXvYqybZN1wBmTxZCd85Zqoam3NZQ1ljCd9KfuU01aCx4XAKiYv+2L2gTsItBWNjID9edmK5jpF X-Received: by 2002:a9d:7e99:: with SMTP id m25mr3434067otp.212.1575483241379; Wed, 04 Dec 2019 10:14:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575483241; cv=none; d=google.com; s=arc-20160816; b=pm2fgZsRiAYETOxvaUiLw+skzebaW3vNpJJRu4hFtm4e4cLA6FZ/GVv/nMiQCecaMc pCowYcItm/ghHaJqAiAx+qs7LfC+h8zfaJTLPgB7nnpALg9BR38JTX/4GmKnQNzfR8VW Bp7YIk3quWjR8/ek5wu+Dm7ZqHBIEVzP27NyiiwsdZ3z721THNp/Q4A+6CIv/DLEBWt4 OqpCNJe5KwYRiLEAxuKZl5VY4bAVPi7UC5AJD/CPowkUM7IqSIfj9XQWAx6tgL4/5URr nk8CjUwF9gD8sjbRkyEzis3DmaXt9W+SMFe+gw6ZVKEKeAxatnfmzZvLByswPlskNqy9 RhXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=BJtgW3aG6hL9nKOGUJo6frsB1feETosuG8FftrBTRxs=; b=SfY9fZ4U4yTjzOLXRgYnXOK1MYC2B8fp0lMFctN7GDVjhBLNJ12IkHlGUxFPbrxYBI EX11j/x8VdvSs9LulxTdYnMfyOX00N/WFwQ6/V/5Bval0duVQf9mnYuBXURF4mrTIUHG k8AH1k3+JYnOyKui4JGLWENoRbp0a5jf18h4tn5GfrnscVLmbPE473IoEJkPbPHjon1I U5Uc2+x5KBO9lakwCGI+aI8fsDGDfVcRHnTaygYUaz1/+mUYckA/duizVnT0lOxyI8kk bWI51e4VuifshjohNJe/N27gWksQrTos7yG+5t+hGAah6qU80wYwOfYiAdW3nMMOqCIC 4+0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="ncGieG/y"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o125si3650710oig.20.2019.12.04.10.13.46; Wed, 04 Dec 2019 10:14:01 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="ncGieG/y"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731503AbfLDSLn (ORCPT + 99 others); Wed, 4 Dec 2019 13:11:43 -0500 Received: from mail.kernel.org ([198.145.29.99]:39998 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731490AbfLDSLl (ORCPT ); Wed, 4 Dec 2019 13:11:41 -0500 Received: from localhost (unknown [217.68.49.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D7D8720674; Wed, 4 Dec 2019 18:11:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1575483101; bh=d0ntVbZyiTVQFUBkfKqRFVdd7wKYeRXw4kRDxXAxktk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ncGieG/yWyrGcUjQkJHNsVvH5hn+hZckYtp3qFrOtScLEJ9lzK6MzqBsXm0I7uP7b fJP+jhoBZvlad9mMsx1N83Gvfcr0whMtwD5IZ/aY6BMzn+1yvRvihBs+w1nHuCjAKX Qp97HMDc3BRxccg1I4qK9QQ1ZM50qYt7ZMU5cank= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alexander Shiyan , Sasha Levin Subject: [PATCH 4.9 053/125] serial: max310x: Fix tx_empty() callback Date: Wed, 4 Dec 2019 18:55:58 +0100 Message-Id: <20191204175322.212044612@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191204175308.377746305@linuxfoundation.org> References: <20191204175308.377746305@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alexander Shiyan [ Upstream commit a8da3c7873ea57acb8f9cea58c0af477522965aa ] Function max310x_tx_empty() accesses the IRQSTS register, which is cleared by IC when reading, so if there is an interrupt status, we will lose it. This patch implement the transmitter check only by the current FIFO level. Signed-off-by: Alexander Shiyan Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/tty/serial/max310x.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c index bacc7e284c0c1..80ab672d61cc4 100644 --- a/drivers/tty/serial/max310x.c +++ b/drivers/tty/serial/max310x.c @@ -769,12 +769,9 @@ static void max310x_start_tx(struct uart_port *port) static unsigned int max310x_tx_empty(struct uart_port *port) { - unsigned int lvl, sts; + u8 lvl = max310x_port_read(port, MAX310X_TXFIFOLVL_REG); - lvl = max310x_port_read(port, MAX310X_TXFIFOLVL_REG); - sts = max310x_port_read(port, MAX310X_IRQSTS_REG); - - return ((sts & MAX310X_IRQ_TXEMPTY_BIT) && !lvl) ? TIOCSER_TEMT : 0; + return lvl ? 0 : TIOCSER_TEMT; } static unsigned int max310x_get_mctrl(struct uart_port *port) -- 2.20.1