From patchwork Mon Jan 23 16:04:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulrich Hecht X-Patchwork-Id: 9532909 X-Patchwork-Delegate: geert@linux-m68k.org 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 E7E596020B for ; Mon, 23 Jan 2017 16:04:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D700A2845D for ; Mon, 23 Jan 2017 16:04:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CBE5728460; Mon, 23 Jan 2017 16:04:39 +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.3 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, 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 C32072845E for ; Mon, 23 Jan 2017 16:04:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751528AbdAWQEi (ORCPT ); Mon, 23 Jan 2017 11:04:38 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:33061 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750951AbdAWQEh (ORCPT ); Mon, 23 Jan 2017 11:04:37 -0500 Received: by mail-wm0-f65.google.com with SMTP id r144so27427041wme.0; Mon, 23 Jan 2017 08:04:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=HKprDFyUimBhLVC/Zp90yQyllB0MpiBY75A26X5yNRg=; b=HtmLc296bvf1/VcIb/P4t2Vt0KAN4J5XBTvPrqqJiwIugInMOLo1i5SN9dCw/ZyAQz CWrMf0N6kI85x9kJHwdlI5D8sD8TJRQG6KX1vxjRi4lcJBsqv9MOAun5AwuVloChBDHE TmxFnGS1n3IDaLpxdnIIsYoHaLVHzhL+HUbg4pjkDg6BjOYG3SvOqvzLQ0Upx/v5CUnt DNr5QJ1vNMMux8YR53Xn7BmctNoQJLsx0Nedok5kAQ+KSiDJUM1hcxVL9TD/mIvEG/Vi 88KjQVB47XYeJQjDTxYTZ8ktwhdm21DvlDg8kSkY5mIZhMEyrahwxUr4H8E/bmjW/aRZ kaRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=HKprDFyUimBhLVC/Zp90yQyllB0MpiBY75A26X5yNRg=; b=AmDbIfkdNG6TrNVgs0PTJM3G7UeWunwaIpIOflFASPKVbZTnkK6a9AK6K6/R/gE6s0 5yYSM+i9f/La35UdtOkw4qmC7Zu5ORfbVY2RFXcPIiEpZ1pzWmwHhAK2P0K4C8znEotK udBdnaH88mAONm48onKuaRms20QvnwSd948KWVELNhRTvICvDkZ+l3y79c4YOyvjMFDC bhuHlCmFUs7prWvR6QG7lUUS2YqC2Q9gCEViNtsTr2vnc342YTbI6uXyV0/3N3yjUe+1 BzMuYyNy4G/Upgxz7HRxAhzCxv7A0UV4sE3ogfgA2XzpF34/j5RXnjhOFObGBBsefZSg wKUw== X-Gm-Message-State: AIkVDXIlUdOE6tAPlWEju1tS3OuSAWYPkDN2bF9PlW3ULT0RTGjbgmiGB4C0DbTbCv5a6w== X-Received: by 10.28.13.16 with SMTP id 16mr13673877wmn.101.1485187476226; Mon, 23 Jan 2017 08:04:36 -0800 (PST) Received: from groucho.site (ipbcc0353e.dynamic.kabel-deutschland.de. [188.192.53.62]) by smtp.gmail.com with ESMTPSA id 204sm21788033wmj.7.2017.01.23.08.04.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 23 Jan 2017 08:04:35 -0800 (PST) From: Ulrich Hecht To: linux-renesas-soc@vger.kernel.org, wsa@the-dreams.de, geert@linux-m68k.org Cc: linux-serial@vger.kernel.org, magnus.damm@gmail.com, sergei.shtylyov@cogentembedded.com, Ulrich Hecht Subject: [PATCH v2 3/7] serial: sh-sci: implement FIFO threshold register setting Date: Mon, 23 Jan 2017 17:04:14 +0100 Message-Id: <1485187458-8195-4-git-send-email-ulrich.hecht+renesas@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1485187458-8195-1-git-send-email-ulrich.hecht+renesas@gmail.com> References: <1485187458-8195-1-git-send-email-ulrich.hecht+renesas@gmail.com> Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Sets the closest match for a desired RX trigger level. Signed-off-by: Ulrich Hecht Reviewed-by: Geert Uytterhoeven --- drivers/tty/serial/sh-sci.c | 59 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index 3a9c001..39734cc 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -1102,6 +1102,65 @@ static int sci_handle_breaks(struct uart_port *port) return copied; } +static int scif_set_rtrg(struct uart_port *port, int rx_trig) +{ + unsigned int bits; + + if (rx_trig < 1) + rx_trig = 1; + if (rx_trig >= port->fifosize) + rx_trig = port->fifosize; + + /* HSCIF can be set to an arbitrary level. */ + if (sci_getreg(port, HSRTRGR)->size) { + serial_port_out(port, HSRTRGR, rx_trig); + return rx_trig; + } + + switch (port->type) { + case PORT_SCIF: + if (rx_trig < 4) { + bits = 0; + rx_trig = 1; + } else if (rx_trig < 8) { + bits = SCFCR_RTRG0; + rx_trig = 4; + } else if (rx_trig < 14) { + bits = SCFCR_RTRG1; + rx_trig = 8; + } else { + bits = SCFCR_RTRG0 | SCFCR_RTRG1; + rx_trig = 14; + } + break; + case PORT_SCIFA: + case PORT_SCIFB: + if (rx_trig < 16) { + bits = 0; + rx_trig = 1; + } else if (rx_trig < 32) { + bits = SCFCR_RTRG0; + rx_trig = 16; + } else if (rx_trig < 48) { + bits = SCFCR_RTRG1; + rx_trig = 32; + } else { + bits = SCFCR_RTRG0 | SCFCR_RTRG1; + rx_trig = 48; + } + break; + default: + WARN(1, "unknown FIFO configuration"); + return 1; + } + + serial_port_out(port, SCFCR, + (serial_port_in(port, SCFCR) & + ~(SCFCR_RTRG1 | SCFCR_RTRG0)) | bits); + + return rx_trig; +} + #ifdef CONFIG_SERIAL_SH_SCI_DMA static void sci_dma_tx_complete(void *arg) {