Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp3668656ybl; Mon, 12 Aug 2019 04:30:13 -0700 (PDT) X-Google-Smtp-Source: APXvYqygtjzeUkP9UMDsglHLN1+PlDrma5dNcHr3AYhi39Xf+HYB2OnX9JU3dro0Kbj6sXCwh1xM X-Received: by 2002:aa7:8f2e:: with SMTP id y14mr5896504pfr.113.1565609413370; Mon, 12 Aug 2019 04:30:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565609413; cv=none; d=google.com; s=arc-20160816; b=ArJc/mwds/BH8caLBS/Auw9O2g2CRT+aSCGAla3qCq7zBAmNhEAGPxLw2hB7ljhUfh qy2+cvV/P90kLSpo01oMEG0uuzxIFsjKUAG8AwtvW3snOMgrE3we2cW6+/BqV2l5Dm5P NbR8bkMX06mGAJdFcBbExBabYB6xQay4IfyDnqrYyM4gOq+TZGGwsZ9ecrTrwLx7d5vJ 6Uh3KoiXfCB5FXLaQbKY3VLoVTqJGnwasodKS2DT0tWETkDOXE/fmGJcpqQ2mCdeBcna Sj/WX1P2GYDcp895hlCcuRlAAty+5AghWakmjlF7z8bhbR8TakhEQufEC9UVIVl7sahi NDfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:dkim-signature:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from; bh=lg7+2FM3LWtjdJ00yRSfWkWg11JYeWHpFHZ5bmji6R8=; b=IZ8L4aDyi+9Y9AlIPLVB+/pxqvjv85OcuZRG2rdk4Y0vvnXYNNYmSyOCJZaD6ryJi0 lsnTOlQb0bca+n7Sa6yV32PwFTiAenb5SA3QiEOaSrrehct+mzBJnffH7NwUp4bNzx26 w/L0Yp1Fe4mz19VA0M2yjpjuz6/PKqRdf8nOB5rKj/3XPMes1Wox1piaMKuz5A6TNV5Y 8oFZTphXh2T9t5oRqIYku7dB6t2vjVrdEQHdoEddc4BASD2I70lS1hb2e8s17t+JvKNx 7soSJ2qdrHiFElvnE9Qhaw2h7nx26gI3P2EahLUMDNNnqQoeEnRwJ95pucmybEozs38f 3QYw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=jVCm+sga; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b16si66018992pfd.126.2019.08.12.04.29.58; Mon, 12 Aug 2019 04:30:13 -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; dkim=pass header.i=@nvidia.com header.s=n1 header.b=jVCm+sga; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728533AbfHLL3E (ORCPT + 99 others); Mon, 12 Aug 2019 07:29:04 -0400 Received: from hqemgate16.nvidia.com ([216.228.121.65]:17358 "EHLO hqemgate16.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727936AbfHLL3A (ORCPT ); Mon, 12 Aug 2019 07:29:00 -0400 Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqemgate16.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Mon, 12 Aug 2019 04:29:02 -0700 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Mon, 12 Aug 2019 04:28:59 -0700 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Mon, 12 Aug 2019 04:28:59 -0700 Received: from HQMAIL111.nvidia.com (172.20.187.18) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 12 Aug 2019 11:28:59 +0000 Received: from HQMAIL107.nvidia.com (172.20.187.13) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 12 Aug 2019 11:28:59 +0000 Received: from hqnvemgw02.nvidia.com (172.16.227.111) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Mon, 12 Aug 2019 11:28:59 +0000 Received: from kyarlagadda-linux.nvidia.com (Not Verified[10.19.64.169]) by hqnvemgw02.nvidia.com with Trustwave SEG (v7,5,8,10121) id ; Mon, 12 Aug 2019 04:28:58 -0700 From: Krishna Yarlagadda To: , , , , , , CC: , , , , "Krishna Yarlagadda" , Shardar Shariff Md Subject: [PATCH 06/14] serial: tegra: report error to upper tty layer Date: Mon, 12 Aug 2019 16:58:15 +0530 Message-ID: <1565609303-27000-7-git-send-email-kyarlagadda@nvidia.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1565609303-27000-1-git-send-email-kyarlagadda@nvidia.com> References: <1565609303-27000-1-git-send-email-kyarlagadda@nvidia.com> X-NVConfidentiality: public MIME-Version: 1.0 Content-Type: text/plain DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1565609342; bh=lg7+2FM3LWtjdJ00yRSfWkWg11JYeWHpFHZ5bmji6R8=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:X-NVConfidentiality:MIME-Version: Content-Type; b=jVCm+sgaK0YWRNK/meHcf2zRZyRaDgzt61Kjp4RORDCO0dJ7jkEvcqitZHjc6besD fP9cAbp6FqSip9JeguyKRbjPucIzfGkujdF4WR5W5fM6MMwX6rW/+3DPA4MwyRGmKI gTPx/ptB9k2q7E5Zer7nAvmlaBN4Av0pe+DE30TRjEDnNUwQLFL7J73KTBvsJEYv7p YvqnxPLne134/2bam0DNwMT93mtCMyfXNEMTA7rlSoC0inRfeVrUTGet53BOuxnEeM 2eJ9PeHs6vLbbI3+0n0hrRDV4/oQDOuXeyP7oB85YYhwyX+xVBz8GsG9n48tMV2R5z OpYtR2ZcoC76A== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Report overrun/parity/frame/break errors to top tty layer. Add support to ignore break character if IGNBRK is set. Signed-off-by: Shardar Shariff Md Signed-off-by: Krishna Yarlagadda --- drivers/tty/serial/serial-tegra.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/serial-tegra.c b/drivers/tty/serial/serial-tegra.c index f6a3f4e..7ab81bb 100644 --- a/drivers/tty/serial/serial-tegra.c +++ b/drivers/tty/serial/serial-tegra.c @@ -374,13 +374,21 @@ static char tegra_uart_decode_rx_error(struct tegra_uart_port *tup, tup->uport.icount.frame++; dev_err(tup->uport.dev, "Got frame errors\n"); } else if (lsr & UART_LSR_BI) { - dev_err(tup->uport.dev, "Got Break\n"); - tup->uport.icount.brk++; - /* If FIFO read error without any data, reset Rx FIFO */ + /* + * Break error + * If FIFO read error without any data, reset Rx FIFO + */ if (!(lsr & UART_LSR_DR) && (lsr & UART_LSR_FIFOE)) tegra_uart_fifo_reset(tup, UART_FCR_CLEAR_RCVR); + if (tup->uport.ignore_status_mask & UART_LSR_BI) + return TTY_BREAK; + flag = TTY_BREAK; + tup->uport.icount.brk++; + dev_err(tup->uport.dev, "Got Break\n"); } + uart_insert_char(&tup->uport, lsr, UART_LSR_OE, 0, flag); } + return flag; } @@ -562,6 +570,9 @@ static void tegra_uart_handle_rx_pio(struct tegra_uart_port *tup, break; flag = tegra_uart_decode_rx_error(tup, lsr); + if (flag != TTY_NORMAL) + continue; + ch = (unsigned char) tegra_uart_read(tup, UART_RX); tup->uport.icount.rx++; @@ -1224,6 +1235,8 @@ static void tegra_uart_set_termios(struct uart_port *u, /* Ignore all characters if CREAD is not set */ if ((termios->c_cflag & CREAD) == 0) tup->uport.ignore_status_mask |= UART_LSR_DR; + if (termios->c_iflag & IGNBRK) + tup->uport.ignore_status_mask |= UART_LSR_BI; spin_unlock_irqrestore(&u->lock, flags); } -- 2.7.4