From patchwork Tue Jul 2 06:30:24 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Huang Shijie X-Patchwork-Id: 2810931 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id BF59DBF4A1 for ; Tue, 2 Jul 2013 06:57:59 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id DC7B72014C for ; Tue, 2 Jul 2013 06:57:58 +0000 (UTC) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 885D020136 for ; Tue, 2 Jul 2013 06:57:57 +0000 (UTC) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1UtuWk-0002Uh-Ky; Tue, 02 Jul 2013 06:57:26 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1UtuWd-00088b-8r; Tue, 02 Jul 2013 06:57:19 +0000 Received: from co9ehsobe005.messaging.microsoft.com ([207.46.163.28] helo=co9outboundpool.messaging.microsoft.com) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1UtuWU-00086u-8q for linux-arm-kernel@lists.infradead.org; Tue, 02 Jul 2013 06:57:12 +0000 Received: from mail100-co9-R.bigfish.com (10.236.132.247) by CO9EHSOBE013.bigfish.com (10.236.130.76) with Microsoft SMTP Server id 14.1.225.23; Tue, 2 Jul 2013 06:56:44 +0000 Received: from mail100-co9 (localhost [127.0.0.1]) by mail100-co9-R.bigfish.com (Postfix) with ESMTP id 3C52F84035D; Tue, 2 Jul 2013 06:56:44 +0000 (UTC) X-Forefront-Antispam-Report: CIP:70.37.183.190; KIP:(null); UIP:(null); IPV:NLI; H:mail.freescale.net; RD:none; EFVD:NLI X-SpamScore: 3 X-BigFish: VS3(zzzz1f42h1ee6h1de0h1fdah2073h1202h1e76h1d1ah1d2ah1fc6h1082kzz8275bhz2dh2a8h668h839hd24he5bhf0ah1288h12a5h12a9h12bdh12e5h137ah139eh13b6h1441h1504h1537h162dh1631h1758h1898h18e1h1946h19b5h1ad9h1b0ah1d0ch1d2eh1d3fh1dfeh1dffh1e23h1155h) Received: from mail100-co9 (localhost.localdomain [127.0.0.1]) by mail100-co9 (MessageSwitch) id 1372748201798278_8395; Tue, 2 Jul 2013 06:56:41 +0000 (UTC) Received: from CO9EHSMHS027.bigfish.com (unknown [10.236.132.227]) by mail100-co9.bigfish.com (Postfix) with ESMTP id B56EE780064; Tue, 2 Jul 2013 06:56:41 +0000 (UTC) Received: from mail.freescale.net (70.37.183.190) by CO9EHSMHS027.bigfish.com (10.236.130.37) with Microsoft SMTP Server (TLS) id 14.1.225.23; Tue, 2 Jul 2013 06:56:41 +0000 Received: from tx30smr01.am.freescale.net (10.81.153.31) by 039-SN1MMR1-005.039d.mgd.msft.net (10.84.1.17) with Microsoft SMTP Server (TLS) id 14.2.328.11; Tue, 2 Jul 2013 06:56:40 +0000 Received: from shlinux2.ap.freescale.net (shlinux2.ap.freescale.net [10.192.224.44]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id r626uYXv030011; Mon, 1 Jul 2013 23:56:38 -0700 From: Huang Shijie To: Subject: [PATCH 1/5] serial: imx: distinguish the imx6 uart from the others Date: Tue, 2 Jul 2013 14:30:24 +0800 Message-ID: <1372746628-20092-2-git-send-email-b32955@freescale.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1372746628-20092-1-git-send-email-b32955@freescale.com> References: <1372746628-20092-1-git-send-email-b32955@freescale.com> MIME-Version: 1.0 X-OriginatorOrg: freescale.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130702_025710_507293_EF3650B6 X-CRM114-Status: GOOD ( 14.46 ) X-Spam-Score: -4.2 (----) Cc: Huang Shijie , s.hauer@pengutronix.de, shawn.guo@linaro.org, linux-arm-kernel@lists.infradead.org, linux-serial@vger.kernel.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP We will add the DMA support for the imx uart. For the firmware's limit, only the imx6 uart can supports the DMA. This patch adds the necessary macro and helper to distinguish the imx6 uart from the other imx uart. Signed-off-by: Huang Shijie --- drivers/tty/serial/imx.c | 17 +++++++++++++++-- 1 files changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index 48bace0..d215fa9 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@ -187,6 +187,7 @@ enum imx_uart_type { IMX1_UART, IMX21_UART, + IMX6_UART, }; /* device type dependent stuff */ @@ -232,6 +233,10 @@ static struct imx_uart_data imx_uart_devdata[] = { .uts_reg = IMX21_UTS, .devtype = IMX21_UART, }, + [IMX6_UART] = { + .uts_reg = IMX21_UTS, + .devtype = IMX6_UART, + }, }; static struct platform_device_id imx_uart_devtype[] = { @@ -242,6 +247,9 @@ static struct platform_device_id imx_uart_devtype[] = { .name = "imx21-uart", .driver_data = (kernel_ulong_t) &imx_uart_devdata[IMX21_UART], }, { + .name = "imx6-uart", + .driver_data = (kernel_ulong_t) &imx_uart_devdata[IMX6_UART], + }, { /* sentinel */ } }; @@ -250,6 +258,7 @@ MODULE_DEVICE_TABLE(platform, imx_uart_devtype); static struct of_device_id imx_uart_dt_ids[] = { { .compatible = "fsl,imx1-uart", .data = &imx_uart_devdata[IMX1_UART], }, { .compatible = "fsl,imx21-uart", .data = &imx_uart_devdata[IMX21_UART], }, + { .compatible = "fsl,imx6-uart", .data = &imx_uart_devdata[IMX6_UART], }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, imx_uart_dt_ids); @@ -269,6 +278,10 @@ static inline int is_imx21_uart(struct imx_port *sport) return sport->devdata->devtype == IMX21_UART; } +static inline int is_imx6_uart(struct imx_port *sport) +{ + return sport->devdata->devtype == IMX6_UART; +} /* * Save and restore functions for UCR1, UCR2 and UCR3 registers */ @@ -801,7 +814,7 @@ static int imx_startup(struct uart_port *port) } } - if (is_imx21_uart(sport)) { + if (is_imx21_uart(sport) || is_imx6_uart(sport)) { temp = readl(sport->port.membase + UCR3); temp |= IMX21_UCR3_RXDMUXSEL; writel(temp, sport->port.membase + UCR3); @@ -1044,7 +1057,7 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios, writel(num, sport->port.membase + UBIR); writel(denom, sport->port.membase + UBMR); - if (is_imx21_uart(sport)) + if (is_imx21_uart(sport) || is_imx6_uart(sport)) writel(sport->port.uartclk / div / 1000, sport->port.membase + IMX21_ONEMS);