From patchwork Tue Jul 19 07:43:05 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bhuvanchandra DV X-Patchwork-Id: 9236347 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id B1FE9600CB for ; Tue, 19 Jul 2016 08:17:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A1BF02026B for ; Tue, 19 Jul 2016 08:17:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 960B22074F; Tue, 19 Jul 2016 08:17:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1B7272026B for ; Tue, 19 Jul 2016 08:17:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752618AbcGSIRM (ORCPT ); Tue, 19 Jul 2016 04:17:12 -0400 Received: from mail-db5eur01on0103.outbound.protection.outlook.com ([104.47.2.103]:56138 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752551AbcGSIRJ (ORCPT ); Tue, 19 Jul 2016 04:17:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=toradex.onmicrosoft.com; s=selector1-toradex-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=qwxrJ6nbxanWkljL767SHIHA/Fki31GzbGy+HJrKSG4=; b=Tj+2qQhSv2qKspt2gr8IniesIz1JDZ04APBqTMvlJOkIwoh6pcFHwCk+HdjR+d5RRpvAP46eBmR/rKg6I2KgO6kUhP7drlhWMTIPraAnkroIQM9PeezAj+R7l/XviUMlAkdeK7WIwnY0NB2zbbUmScbucT4OOKPraf0TyTH2zPg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=bhuvanchandra.dv@toradex.com; Received: from tdx-in-nb-0014.toradex.ext (115.115.243.34) by DB6PR0501MB2087.eurprd05.prod.outlook.com (10.168.9.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.544.10; Tue, 19 Jul 2016 07:44:43 +0000 From: Bhuvanchandra DV To: CC: , , , , , , , , , , "Bhuvanchandra DV" Subject: [PATCH RESEND v2 3/8] tty: serial: fsl_lpuart: fix clearing of receive flag Date: Tue, 19 Jul 2016 13:13:05 +0530 Message-ID: <20160719074310.16872-4-bhuvanchandra.dv@toradex.com> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160719074310.16872-1-bhuvanchandra.dv@toradex.com> References: <20160719074310.16872-1-bhuvanchandra.dv@toradex.com> MIME-Version: 1.0 X-Originating-IP: [115.115.243.34] X-ClientProxiedBy: MA1PR01CA0045.INDPRD01.PROD.OUTLOOK.COM (10.164.116.145) To DB6PR0501MB2087.eurprd05.prod.outlook.com (10.168.9.139) X-MS-Office365-Filtering-Correlation-Id: 0c025f33-7662-4afe-bc43-08d3afa88e08 X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2087; 2:S6RdK628zgjTdJG07HhlVmjFJnCix/pd1iC9y1P8ECONJ2nsz8sOoDyahBRIkWqNWLNrHqtciDLqvkmAmpZ1cltOxZT2Tb/DSP0yLkZnYhLdet9d6y/JKs2VEnC5gzioJN1GqRt9Um3nQigFpvuPF3mPqsBqRRH1v+cd+IZbcGP6H19eN+1v7GNNUnJE97ZM; 3:MPGWlgV0oIWCChSU8FUsmp6kO5B2VCShj+pGjS9CD6OjxYhJcNi8A+MS3/0kPnePNgURFnzwmECk6TQCjNroc1NgjpniGTri8IDg8yLfPCOi4IDkj7gaZXR3pfE6IWf+ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0501MB2087; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2087; 25:zt874/n1PucS3FvWt4HG+JJ6Kx511Nz+04NTop+NR/Z7LxX7UFxwvSUBAE7kLo04wHZl9JHJP9YhsOvCKqtcBqH2qe+8eJQeP5skrT8eUb5a2V2KzLhP8SNvuIwd/jw1sf4eNoXrgiD8wXqawR8++ITnWwKxh0XSlZGXZij5a68G+EkGyNEiDfrMSE+sK1OZKCJwfUsEMFp2idsEZJ7LsD9iISUgBEa3hELR857/XBRMGK1z7BqGbdMIk9mI8CDTqpuc3lPIg8z3BV0ktAHrKkvbO30NWF+FvnH+8TaZrtbgF5XraIsGD9FKwXJVhVoXYp987lyEQ6bufE6sGtIrBNLx7S2QT3tfFXdCiWQwvXAqLmh5pKF+ALqLnXtBio5JUvc9WJv/VPzl6BQoWoRnkBUBEcYZ2mVp96spdaMc8Myy7TTDq8TTIewDrZcFebdvcBPMTNKlXzjKN2jvtcSKq+L6kRDQSLvu/sy4n0fJeOik5LEZ9KDtQqsV4HlsXZDjgcY8X38TUU+XrkIuOiujThCvYSDoW63KLVe9ZroPpBu+mVfUA98PDt02i2YrpTN1it/KrVXKoXw5geJ1a2lEiKnUt2lTRLuNqclf3hBAbDiqa4a5ZaQcCdH1I2xoRWXriO6CQop4NecKtCc/doxBUWeiZ8P/F/jotQ5nVxs6AU+MD7RJcMc5WSIwnY9ScaWwvRFq8VPtzvav80jwo3l7v8I3BKDfDzkEq7bLOHKA2oZEyosKXcCKZp1cDHgqr1fF X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2087; 31:AcY+aj42/1DVifPM5SuQqa/1TRswU0b9XcUXckZqjvKM+M6gnZvB1PIdk6+Qj277nWrQfxRADlRsd2fE3VGH/U/v0PWWt6TI7LmSwwj6OuKVNXjjH0DQYbYO3W2B5y6D1/+HiKROp3I75zOb64hPni5bt1Cgrc8KRTVD3ZIaefXPISO0PSYindMuw/RjFQCXhQJEzO2dfxMgpaVsM00rCg==; 20:ojSsZDNqis72Ex64hggO45lFxqdNZxzhQ6LK2GjAsvBfqxGEG3l+z36DhxnqQw28hnxriRwHpboAC9t2+4JGpfGREzhtQeYpmB3lVSKbxHXu6oLHSIeASOKvfJT4yF+yJ5vPQkBTkdWGj6Ew75PsbVvNgwn9TAkCLU6rHTyI41dGx4xzhS8CAxNAuXFx6MYZ7kztvZ2TRRP47pCl6Pvj1wEaLLeHlx6lKCwqwjZPrbHnzKbWyw21mmj7GtuWfYXr4oxHXfRR8YXU3JRlUYJouv6QKkafm3OVf6OPFQh6htKYoaSZrM8zfrEg9gDyWq2+ZW0OvXWslL8HXKrpthWw6Q==; 4:xy8RUbG6G8Lh8SC5QOkcEAcmjqOBux/qvNpwSdIA82YlvYXFVtbz5DMqcFxOadeSFdgdPOZoT3jmBvyMJ/Gu/BHpw6kNHGQvmDdZ7gcqny2QTnAFSQDe/yjS8j4HrEtnJQgBAtaDEe7n+AcbwL+BPIrHy7tTTDYT9vig3rPCAHEU2S8vP1ecAZ/NaK9f/8aLtikwkyT6TdrejspilsoLDFeP3uwF2/iKQwNcB+8JSTwRsr3LYE4On0YCSDLzmp1YrUKSDLM06Xi/cB/tApWVPO5NcLCqnib3DQgwtNHc/9xqgGRjAXA4hm0d69Iv67um/jnP8OR575FvrAwMwMxu2jiAeX/SZ+R4ggYHgsGLUteUCGIr m99rzDd/i5oPEx8c X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046); SRVR:DB6PR0501MB2087; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2087; X-Forefront-PRVS: 000800954F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(199003)(189002)(77096005)(36756003)(42186005)(69596002)(4001430100002)(19580395003)(86362001)(7736002)(19580405001)(47776003)(5003940100001)(2950100001)(92566002)(50466002)(66066001)(76176999)(50986999)(50226002)(4326007)(48376002)(6116002)(3846002)(1076002)(586003)(97736004)(305945005)(68736007)(189998001)(105586002)(8676002)(110136002)(107886002)(53416004)(101416001)(2906002)(2351001)(81156014)(81166006)(229853001)(106356001)(7846002)(33646002)(217873001); DIR:OUT; SFP:1102; SCL:1; SRVR:DB6PR0501MB2087; H:tdx-in-nb-0014.toradex.ext; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: toradex.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0501MB2087; 23:VFXZTA+d9SPp7LAigsUVE06J7Fn/jRj7iTW7zpt?= =?us-ascii?Q?Ocu5PX9xOL00Ws6y6Ceig4yo+2ypvfegtRdCga1IuhARuL2o+Kk0nIHAOGE7?= =?us-ascii?Q?ht3R/4MRVCOg1Gj41deT4JyzFDW3+1fROUNMgLE1swN3fe7rQ8iXUjrwAyLY?= =?us-ascii?Q?e0Y0wCFpod8/zxDhc05fetC+DHInHXWlwkMK65O5zny4x6jyGO32mPI47PmK?= =?us-ascii?Q?yOFerIBVZypXy0K0fqKYbkS3b+sefVCzv7GISOt/O3t5o3r14+mDJYYxK/tS?= =?us-ascii?Q?umJM81jJVWKqDgUPRv/cfw04KGVI17ROpMNuEy+eesHH8TxdXiYdL348tu8B?= =?us-ascii?Q?nRFykwgzxyK/Pnp3pCZzzIDHpXmG5eLgApLL1/jkprzrLGV+XC19mizRzvoV?= =?us-ascii?Q?LZUyWniIq3y5R8t3rGffvsC06mnSVYNATbLg6M5gYATN6O1R430aZYgU9hjz?= =?us-ascii?Q?oP1cbirwyfSG+7kWLN4c4op1WQtdZTN0cnncycyxQv4y1KpAkUgUkAQeYrak?= =?us-ascii?Q?QrRUzheM0s6Km+I/RnqdZJNLvGT8S0rkTp97zA0DxIovOWowLja6unfrrmye?= =?us-ascii?Q?vnYLalHKJXWojiu5Ic0Hk5lnACy81k9cJwhBwScJM61bTy/ol6uDdXpmG06J?= =?us-ascii?Q?8RdNIPArXvEK4TssFjsNV2J5NIMw/leO897EDJvvge+iDWPhMn8rbApAUCSp?= =?us-ascii?Q?vOdXuVKe2ksjb+0o/AO9QPOCt07S9OW7S281jDrmssV9NsjCL7HioH/2Xp/1?= =?us-ascii?Q?eNRdPshq5BqHmUUEneU3p5C7JmHykCOjwIFll8BA7UxHf4ziiaxw8SeWUxZJ?= =?us-ascii?Q?tcl/uHaLE2rtQjF8coXbVrKY/Vb0zF/XnnbVZjmM9XHKCYTsPGAA15oJjkz+?= =?us-ascii?Q?8Ag9tEjITvxLhbn5E2wO61iwim6cV8Jw7JfZ3QBi9cPEA61ex4HQ73AAzF/X?= =?us-ascii?Q?yK8r9S9iBcJrvb43rt3gpkbp6e/vtXikaJ1LA6/8LEfZnLkV944XzyAcTQ9U?= =?us-ascii?Q?76lFHAj322xCCeafgXe+SpnDkkwiVKqHk5sktf46FZjCUadKDfOykWp24Rjr?= =?us-ascii?Q?WxeEUvqwavlp7qBbEHNp1x8yq+/iyvuaRlcl+TR99ZzZzMXk006TGDqViHZR?= =?us-ascii?Q?ipmIRZkQpfrnhS//VkINIilV6kfN63Fp56047kjubpR4bLWO8H1F8iUC1Qhh?= =?us-ascii?Q?W3s7Bp7r9kBMxKXQVkDmjZy9l6cfgL+vLyRSE?= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2087; 6:jHakXuOEaPX2W9Q1OWDLOh9naziYwiaXJ4h/wSFyBZahx7Z7KJVThpe12SuDkXLIpoYuOW0Z7WGL0WJDaNam7/nkqUAWsyxz78E3a52Nno6JK9vHtDTPtZ2HT2MLOTmGJ4Kpo+2Rpuhd7Tk6iLnv8D3wj0nnGNQ74osgvjR4R2PRbrReBq/Yr2mRyVVwV9ba33LJqC3Euy7VdgShhzFP3F19ZwM+mJ1Lvw8vIDGY82Gzc4D0HsIPS8tRKO+b1H3Keqn1W4ayuseZVvtAKoobfAXhLKJlDrcsLUofQpNuB/U=; 5:agTi5w3Shud9R/t4Q76o4/XkpfEppRofbXXG3F14qTQt45+OdlkSGe1xIE9bibsn5V3X1KpKlGJikjd2EGyaPlWXSoNjYIcEyCBa8J5q4a3IeC9x3QoGU/RnZiS7TCMSZ3iq4AzdgWqs7mo4inRUyw==; 24:33Us9+clYqJ8uN2fXwBI+os0wNpPNBBta1Rrplip3ZNcWe33PUYzgj74EndHory8sGwYEdYyNBXJrjV9XRtegFGkHvHYTKtDOnwIC8GbDYI=; 7:budFG0sOHHPrA7gNJfziNoqnE/durOAFH1Q70Io6Ub5PXLuRQCoWnRCUz8WnVqOc9ZV69+bu9ZH02b/InD/KqB+tOsui6pwZ/MAMRCRroPRuV/1WXXM66WYDDQZE06nv432XK3yb55tiupCKIbmBm4CAfJCcT96lW0aGgDFsRVVZyALVepPQhmD+x0oKxGPUF3/4l+cDp8bCUXYx1vqv8WMGTv/o5xnoBZNfcSLVdNrfgIkJo6uwV7HeRLH/kdKu SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: toradex.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jul 2016 07:44:43.8516 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2087 Sender: linux-clk-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Stefan Agner Commit 8e4934c6d6c6 ("tty: serial: fsl_lpuart: clear receive flag on FIFO flush") implemented clearing of the receive flag by reading the status register only. It turned out that even though we flush the FIFO afterwards, a explicit read of the data register is still required. This leads to a FIFO underrun. To avoid this, follow the advice in the overrun "Operation section": Unconditionally clear RXUF after using RXFLUSH. Signed-off-by: Stefan Agner Signed-off-by: Bhuvanchandra DV --- drivers/tty/serial/fsl_lpuart.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index 75a2098..97c1fda 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -935,13 +935,16 @@ static void lpuart_setup_watermark(struct lpuart_port *sport) writeb(val | UARTPFIFO_TXFE | UARTPFIFO_RXFE, sport->port.membase + UARTPFIFO); - /* explicitly clear RDRF */ - readb(sport->port.membase + UARTSR1); - /* flush Tx and Rx FIFO */ writeb(UARTCFIFO_TXFLUSH | UARTCFIFO_RXFLUSH, sport->port.membase + UARTCFIFO); + /* explicitly clear RDRF */ + if (readb(sport->port.membase + UARTSR1) & UARTSR1_RDRF) { + readb(sport->port.membase + UARTDR); + writeb(UARTSFIFO_RXUF, sport->port.membase + UARTSFIFO); + } + writeb(0, sport->port.membase + UARTTWFIFO); writeb(1, sport->port.membase + UARTRWFIFO);