Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp3245565imm; Sun, 13 May 2018 07:17:05 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpzbACYsBtuJPneWmS851iEvHMu2tJkTyzNsRyaa1k0PicuEErHJAE9TdD4B6eqztCHTtDc X-Received: by 2002:a65:4083:: with SMTP id t3-v6mr5503958pgp.129.1526221025534; Sun, 13 May 2018 07:17:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526221025; cv=none; d=google.com; s=arc-20160816; b=zTe3E8EhcazMS/UgXV76jCcDp+cgHPUUEmtXDw/RTZjn3MJWY/Ppx0HSQYy5glW8P+ oVIE1T1nwz0u22GCF6Nu32dBsFHoi2esuJgTTGYxxmN9SXKQqghDqRKNTGpqVbHpDRD7 qBD+bggrjZPJX9/2PPtG6uz3Lsij27OweR/ivUO/A4dCPodErBU8UDNQjQYXWPE9i+Y4 0J8kaQMV0F+XN94OqII5t0sfebkO8o/hINYRynP/OpHjD5jjVIdGRWFwYx+t7yPcChoF hPf8p0f03DOpDzTo1gmc9Ui0l06mMYGDoVfdD5jNcLHi0uVUWAHxfTg0zvfrSqRrOBFR 8J3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=HCKn0B+c0YLBXSoFoL13j6R1dzlpahIbbEDm2bYilDs=; b=T2a1usbOLzxjI9hRQzQe/q3zqR/JPELwY3EGKyhVghth2jga09/DotSpIn0uupRy7u FYgg4P/fvN6dXpLxb39gjR0JzCD5rHklHwHFHp0y1sOjXmgWiBGFzdluVey5OcYwfyHa xX1MUCydqS0N9rQtnoTl6ZfLAJS7vGlBj4algPt0rGGh+jjF4gAf4EBsvutEDIYdxDT1 MIWBDLg54wXzjXy5Tnl1fpiHG26GAqh8/lnBA9EC8SLHSufcnMUmvknhOSJmOcmxtbdY u5AHaXrRsVB28mQuPNdpOprx73ecjHajH4i1GhHspE8BL6pPc/Fv9eUFun6RPS6A39Cz YdgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=VybkLJyf; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w22-v6si7321126plq.196.2018.05.13.07.16.50; Sun, 13 May 2018 07:17:05 -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=@gmail.com header.s=20161025 header.b=VybkLJyf; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751690AbeEMOQk (ORCPT + 99 others); Sun, 13 May 2018 10:16:40 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:33968 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751295AbeEMOQh (ORCPT ); Sun, 13 May 2018 10:16:37 -0400 Received: by mail-qk0-f196.google.com with SMTP id p186-v6so8050733qkd.1; Sun, 13 May 2018 07:16:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=HCKn0B+c0YLBXSoFoL13j6R1dzlpahIbbEDm2bYilDs=; b=VybkLJyfUVXIN8gyLHK1GDaAGHNnFC4grAdAXvaL6h/SvcNf9+PRQE7KUz5zsQL+Dm ygXjdOYerbA24L8bxjuPktU6Qi4edpUZWUNP5J+6THCYh/9ftmCdkbK58SEjhiI9AeRw 65h8QJmvxUTyAlo2VBJt6uKC5LIdywPlK92ec+rIM6uhWlQdYKiLfEDzUBEdqHtNeIZ2 CpYJ61UOUNkaMt+Rt5rvK7er36n6tJGuMgkO9sg81h6n7ozIkhNv/Q1CXfl188+YWgxo MMibv81ulq4NFcwRrtOHMYyPyxxh58fLCCc5fOdJ8KkyHlTiGinZknWNP0s7zshkG93N h02w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=HCKn0B+c0YLBXSoFoL13j6R1dzlpahIbbEDm2bYilDs=; b=qiZPQ3YT63IUM/dEHVW35pDBt6aSjXqoU1VWjMfFJosGyAu8lX14LavtIzKty55vWF qVLDN6IBMYV+gOJMcqg1I7gG3PtsMA5pW5nWr4Bysg99hHBJRUtn1bdt0P3ckbbaasHL 53Aw55DbBxTM0AWYTzq1p23GI/spDcj/uoUXXYPCTR7K9eMpx1iXmKpEOmJn/C9j9AYb cGeLQOmRPT/qpWaxC55fIITQ1mhJy7vPMsr8mFwEsLTPGhOzFbBCKgO8Cwo2mqBM3E2e 38la/p8acax8MqSaZyGrVGw+8QPh8KXOnyBX5KTVNCp0y6ssNAj6S+j46rMX51WmvS8U JWRg== X-Gm-Message-State: ALKqPwdU+Jj06cIsWl5B5JPuiPlEDkA/c3m5QsMsIN44gGiVWGLJxBL/ xMb9u8BJvCZOC8bAU1naOTIgImRSE239qiMsWg4= X-Received: by 2002:a37:ae05:: with SMTP id x5-v6mr3767984qke.185.1526220996973; Sun, 13 May 2018 07:16:36 -0700 (PDT) MIME-Version: 1.0 Received: by 10.12.152.150 with HTTP; Sun, 13 May 2018 07:16:36 -0700 (PDT) In-Reply-To: <20180508114403.14499-7-mperttunen@nvidia.com> References: <20180508114403.14499-1-mperttunen@nvidia.com> <20180508114403.14499-7-mperttunen@nvidia.com> From: Andy Shevchenko Date: Sun, 13 May 2018 17:16:36 +0300 Message-ID: Subject: Re: [PATCH 6/8] serial: Add Tegra Combined UART driver To: Mikko Perttunen Cc: Rob Herring , Mark Rutland , Jassi Brar , Greg Kroah-Hartman , Thierry Reding , Jon Hunter , araza@nvidia.com, devicetree , "open list:SERIAL DRIVERS" , linux-tegra@vger.kernel.org, linux-arm Mailing List , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 8, 2018 at 2:44 PM, Mikko Perttunen wrote: > The Tegra Combined UART (TCU) is a mailbox-based mechanism that allows > multiplexing multiple "virtual UARTs" into a single hardware serial > port. The TCU is the primary serial port on Tegra194 devices. > > Add a TCU driver utilizing the mailbox framework, as the used mailboxes > are part of Tegra HSP blocks that are already controlled by the Tegra > HSP mailbox driver. First question, can it be done utilizing SERDEV framework? > +static void tegra_tcu_uart_set_mctrl(struct uart_port *port, unsigned int mctrl) > +{ > + (void)port; > + (void)mctrl; Huh? > +} > +static void tegra_tcu_uart_stop_tx(struct uart_port *port) > +{ > + (void)port; > +} Ditto. > + if (written == 3) { > + value |= 3 << 24; > + value |= BIT(26); > + mbox_send_message(tcu->tx, &value); > + } (1) > + } > + > + if (written) { > + value |= written << 24; > + value |= BIT(26); > + mbox_send_message(tcu->tx, &value); > + } (2) These are code duplications. > +static void tegra_tcu_uart_stop_rx(struct uart_port *port) > +{ > + (void)port; > +} > + > +static void tegra_tcu_uart_break_ctl(struct uart_port *port, int ctl) > +{ > + (void)port; > + (void)ctl; > +} > + > +static int tegra_tcu_uart_startup(struct uart_port *port) > +{ > + (void)port; > + > + return 0; > +} > + > +static void tegra_tcu_uart_shutdown(struct uart_port *port) > +{ > + (void)port; > +} > + > +static void tegra_tcu_uart_set_termios(struct uart_port *port, > + struct ktermios *new, > + struct ktermios *old) > +{ > + (void)port; > + (void)new; > + (void)old; > +} Remove those unused stub contents. > + return uart_set_options(&tegra_tcu_uart_port, cons, > + 115200, 'n', 8, 'n'); Can't it be one line? > +static void tegra_tcu_receive(struct mbox_client *client, void *msg_p) > +{ > + struct tty_port *port = &tegra_tcu_uart_port.state->port; > + uint32_t msg = *(uint32_t *)msg_p; Redundant casting. > + unsigned int num_bytes; > + int i; > + > + num_bytes = (msg >> 24) & 0x3; Two magic numbers. > + for (i = 0; i < num_bytes; i++) > + tty_insert_flip_char(port, (msg >> (i*8)) & 0xff, TTY_NORMAL); > + > + tty_flip_buffer_push(port); > +} > +MODULE_AUTHOR("Mikko Perttunen "); > +MODULE_LICENSE("GPL v2"); > +MODULE_DESCRIPTION("NVIDIA Tegra Combined UART driver"); > diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h > index dce5f9dae121..eaf3c303cba6 100644 > --- a/include/uapi/linux/serial_core.h > +++ b/include/uapi/linux/serial_core.h > @@ -281,4 +281,7 @@ > /* MediaTek BTIF */ > #define PORT_MTK_BTIF 117 > > +/* NVIDIA Tegra Combined UART */ > +#define PORT_TEGRA_TCU 118 Check if there is an unused gap. IIRC we still have one near to 40ish. -- With Best Regards, Andy Shevchenko