Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2747892ybb; Fri, 27 Mar 2020 11:18:27 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuPhShOGSyEzhAFGa0GLhaPNbFntM2pw0u8Tg3lGLah5tUU3vGkCisxk+ENImNY22SG42d7 X-Received: by 2002:a4a:4505:: with SMTP id y5mr575562ooa.29.1585333107525; Fri, 27 Mar 2020 11:18:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585333107; cv=none; d=google.com; s=arc-20160816; b=IlXjEQbljMOCBwvFw1mzH/HxXhTskWq5yDfOl4azGYcrkRjImYkZ+Oqx/kqChOtAi5 fSfbKq9b2qOYP1TnPXHaSHxRNAawy8V8/tUzqN1lNl+1gTMR5xlzc90N8Hfl9GQqBtHi LgnjWStOJQklOqPB9/0PjyeF6dsOP4D/U5OL9kQpSjQp+qULIc41kXd3wpAITqNi1aSX 22kMmE8jk0bq2vcFVnV6cdjxDd1BKC5/KLhP5QTzhDYAU2MbFdNtY2bESjYjKamNsPqq 7ewheb8z+f5pbLAqizuFnpR61NQJTwzMQnSegKJKiHITNI4DVwh71e5SVrkWZm3ZjUC1 PEZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=xR+4f9LMd61Fzt4rmVeLiuz5ar88t0f9HuLDnpp14KQ=; b=cMBSOk5RszQudmp2CGQ4Mcpw/Z9tLQhkUyQtzmmrF+RV6vhHrjRiCaFjolWEi/3T0D dwT2+3jP9iF7RFFRjOFInMhTRCjyTpg6qF2yGh6iFwoEF0b28bPF9uvvJJU2vF/QPd5S YnRRqmAhDc/NwchY1IgOxFhH7QvXkco6syKltP2au81r/cuPRSbIauxvzuxz71QtXWEL cK1/rxb2UPPNKE5OgVbgmvXOoQcCAHSm6NBAKBIQJMRSh516Af6IYlP69jOmSIrgWgSR 6YQQUYHZn4SH5I8QkCdYtbdC5ygbnrJ2cbrjVivzj7BJRli/2U/xKihiqOIT2/ujPesz s+lw== ARC-Authentication-Results: i=1; mx.google.com; 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 c19si2700163otr.276.2020.03.27.11.18.07; Fri, 27 Mar 2020 11:18:27 -0700 (PDT) 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; 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 S1727495AbgC0SRs (ORCPT + 99 others); Fri, 27 Mar 2020 14:17:48 -0400 Received: from relmlor2.renesas.com ([210.160.252.172]:40340 "EHLO relmlie6.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726758AbgC0SRs (ORCPT ); Fri, 27 Mar 2020 14:17:48 -0400 X-IronPort-AV: E=Sophos;i="5.72,313,1580742000"; d="scan'208";a="42831016" Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 28 Mar 2020 03:17:46 +0900 Received: from localhost.localdomain (unknown [10.226.36.204]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id ED9B74012BF2; Sat, 28 Mar 2020 03:17:43 +0900 (JST) From: Kazuhiro Fujita To: Greg Kroah-Hartman , Jiri Slaby Cc: linux-serial@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , linux-kernel@vger.kernel.org, Kazuhiro Fujita , stable@vger.kernel.org, Hao Bui , KAZUMI HARADA , Lad Prabhakar Subject: [PATCH] serial: sh-sci: Make sure status register SCxSR is read in correct sequence Date: Fri, 27 Mar 2020 18:17:28 +0000 Message-Id: <1585333048-31828-1-git-send-email-kazuhiro.fujita.jg@renesas.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org For SCIF and HSCIF interfaces the SCxSR register holds the status of data that is to be read next from SCxRDR register, But where as for SCIFA and SCIFB interfaces SCxSR register holds status of data that is previously read from SCxRDR register. This patch makes sure the status register is read depending on the port types so that errors are caught accordingly. Cc: Signed-off-by: Kazuhiro Fujita Signed-off-by: Hao Bui Signed-off-by: KAZUMI HARADA Signed-off-by: Lad Prabhakar --- drivers/tty/serial/sh-sci.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index 0641a72..d646bc4 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -870,9 +870,16 @@ static void sci_receive_chars(struct uart_port *port) tty_insert_flip_char(tport, c, TTY_NORMAL); } else { for (i = 0; i < count; i++) { - char c = serial_port_in(port, SCxRDR); - - status = serial_port_in(port, SCxSR); + char c; + + if (port->type == PORT_SCIF || + port->type == PORT_HSCIF) { + status = serial_port_in(port, SCxSR); + c = serial_port_in(port, SCxRDR); + } else { + c = serial_port_in(port, SCxRDR); + status = serial_port_in(port, SCxSR); + } if (uart_handle_sysrq_char(port, c)) { count--; i--; continue; -- 2.7.4