Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp733647ybl; Wed, 4 Dec 2019 10:00:17 -0800 (PST) X-Google-Smtp-Source: APXvYqyFn5B7QBiKknlb9gnSQYcMUYJGuHk39sdffyigF59RzKo3KcFYTBFFHWha2IpoRIgux9Ic X-Received: by 2002:a9d:58c9:: with SMTP id s9mr3433017oth.182.1575482416989; Wed, 04 Dec 2019 10:00:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575482416; cv=none; d=google.com; s=arc-20160816; b=xf8sNwfmhB4WaDdbaoAgqmrp3WShI4c2Epax4irpze9ODhiiffUm3u/qm/hjb85tky ZqAiWaMfdiZoY8RBb3BFgsH034EjP/A8sdmD9PwKtTVRGobMjvDXyj+8vYa8nNf+naFw urPjgYH9PCOvCb4SPTKaAfi/HWd3aAxKv6JQzfjzcSPpmHXa3u4umaa5/x/10ILwxVLU rMFnjd2eGffvizfxCg7/SsNuzZG7n77M4IZVEOsuMkawzXWAe2PgXY8rsNxJRdUvDzEt WEQNERzC+ofHxxaJgL1GxvGu3TwmXsPB5p5pGfnKj7PtrZ8cdYqL5lY605agvIaihWOu GLlQ== 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=KMV23IiPQf7VXOpk7HkwphQH5vWyi+4lAFIhZDpVKcc=; b=eJNofOAUm8bLvpLNd+qm0tJGfJn4d124OnrkuD2kaf/I22T+wQ8muyqo6JSAs4ClVn QIDRnbcy6Q/vEOrazZ5hKy+hyznj6xA/0rXFLowGc+d5pDgI4aBRaOegPuOgeAMJ8XL4 0CN0v7zr0Yu2lSXLr4ZbDTU19Wy/b12qkYtksXzuhf+SaJaDk7QaODN6U8XLdUTdE/93 7LvKW8dGywQncJ/IRCnzyXm6cDndj0Oip7l+fpo7FTNW0CahIkOEazxhhSTaHbetFf/u REFieomdj64InqIvO6qiBRPgZ5aLXZqlnvpn46pBJ1q0nr6Am/4B6x24sefY1jG252wq DDVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=YqO8vHEY; 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 j13si3672645otq.146.2019.12.04.10.00.03; Wed, 04 Dec 2019 10:00:16 -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=YqO8vHEY; 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 S1729021AbfLDR7F (ORCPT + 99 others); Wed, 4 Dec 2019 12:59:05 -0500 Received: from mail.kernel.org ([198.145.29.99]:34702 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729008AbfLDR7B (ORCPT ); Wed, 4 Dec 2019 12:59:01 -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 AAD092073B; Wed, 4 Dec 2019 17:59:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1575482341; bh=jzremZJt9uCCXqYmgSJYucLdl1Qtl9dFmP4sQefk5tQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YqO8vHEYdvJ8TmGXkoiktfXAKv6UvNknJjRZg82CvYyQf/jyx0KSRFtNNmTc9GRFr FLa5zAo0lk7E1MWxdjgyG62L2xamtWd4pE+nad7aPaa1ktQgkgISwnXaa2z87UKXeC exQlOb3JthV8Gf81ZZWd4kjXfTaWXXpIPN1P+afU= 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.4 41/92] serial: max310x: Fix tx_empty() callback Date: Wed, 4 Dec 2019 18:49:41 +0100 Message-Id: <20191204174333.005303985@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191204174327.215426506@linuxfoundation.org> References: <20191204174327.215426506@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 a66fb7afecc71..e13e95733fa3c 100644 --- a/drivers/tty/serial/max310x.c +++ b/drivers/tty/serial/max310x.c @@ -763,12 +763,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