From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 37D12C433DB for ; Mon, 15 Feb 2021 18:28:07 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E6E6B64E27 for ; Mon, 15 Feb 2021 18:28:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E6E6B64E27 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=jF/DvPzrNYwc8waurrk6F3JvxXRSi/KXcKC9IULWKns=; b=VjVZsWxRLzdyNdJKSYecxQl5t XDMgOLnLoLNKF6Lj82I7BaxVfUrtmslaV4CsDFM4NRvWpTY3FslrS1i7Hz8+KCMAfC9Ji6cehJUQi +oggLy8ye4BCBPF9URk8+0FiYt781xOA2nJ5yUyOrvooCogmucs4DVVT4q+j6A7eR2r+AUl82VONk UGJg6/CS1frqwjrrPdCGASsho0NIhry3l0cOzVaEAu8pD/HuVFs/7afd3sjMKCM1JSZZ/RmOnFajZ cWyOoFf70PFAku9NIfkAoj9Mj9Ci1NFU8ZXIAYDKCDsr2LKrxoCdrqzdsv60xPrIHoY2G449YRhSY VjEeLIX/g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lBiaJ-00031l-28; Mon, 15 Feb 2021 18:26:59 +0000 Received: from mail-wr1-f45.google.com ([209.85.221.45]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1lBiaG-000317-FT for linux-arm-kernel@lists.infradead.org; Mon, 15 Feb 2021 18:26:57 +0000 Received: by mail-wr1-f45.google.com with SMTP id n8so10079844wrm.10 for ; Mon, 15 Feb 2021 10:26:55 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=gP2xDtB3lcxU0X3FyErwAwrTvvvz5qh3O7yckuSfJh8=; b=kbBldCQAuRrwG5OsTXJ8QY3umBFA3V2a0dPvAMVbkxeXDzdr6bu8xEwbEgiB6vr8wS t/dW49bbxC9o/LVzOExDyGqwDyg3Qs7kxqQj6lzJBMqlydc8d5O68iJeT+QpX0n/KtEU IANNMPpsc7DGvoj9J731qaH4fm0D7gY6YGVix+/L1CPkdhcH+u/Hxgf63UpJ+YsF86cH 3gK8NA8fDVDTMo6UxgMuy/ksHZ+4agRZCGwRPD/r9DaZSfkd9XkxLoAYfm7Fz2syhbGH K6WTOJkBWRm134ijsZOkjVjIMKxHD8B5tiQOuEh4f7JzPLY7hb5iCWoZ6iXZPwdfXr9a 5XHg== X-Gm-Message-State: AOAM531Z1kcN1e902qPzWEjVSW2WXJ8ooM1F1cCraXAXhvwR8lvTxByx VqpQOdk5os5HOc8xu8diYnA= X-Google-Smtp-Source: ABdhPJzGPxk3WgZQkTrsPDsc4z3IRJaKsPKYZ8PmYi1n1RpgogPpFnHx9f2zdSNKSKKCEVGzjOMYMA== X-Received: by 2002:a5d:5603:: with SMTP id l3mr4018054wrv.381.1613413614702; Mon, 15 Feb 2021 10:26:54 -0800 (PST) Received: from kozik-lap (adsl-84-226-167-205.adslplus.ch. [84.226.167.205]) by smtp.googlemail.com with ESMTPSA id k11sm24292745wrv.51.2021.02.15.10.26.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Feb 2021 10:26:53 -0800 (PST) Date: Mon, 15 Feb 2021 19:26:51 +0100 From: Krzysztof Kozlowski To: Hector Martin Subject: Re: [PATCH v2 18/25] tty: serial: samsung_tty: add s3c24xx_port_type Message-ID: <20210215182651.rjte67udhk3vhbsk@kozik-lap> References: <20210215121713.57687-1-marcan@marcan.st> <20210215121713.57687-19-marcan@marcan.st> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210215121713.57687-19-marcan@marcan.st> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210215_132656_570898_2393A382 X-CRM114-Status: GOOD ( 27.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Arnd Bergmann , Rob Herring , Tony Lindgren , Marc Zyngier , Linus Walleij , linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Alexander Graf , Olof Johansson , Mohamed Mediouni , Stan Skowronek , Will Deacon , linux-arm-kernel@lists.infradead.org, Mark Kettenis Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Mon, Feb 15, 2021 at 09:17:06PM +0900, Hector Martin wrote: > This decouples the TTY layer PORT_ types, which are exposed to > userspace, from the driver-internal flag of what kind of port this is. > > This removes s3c24xx_serial_has_interrupt_mask, which was just checking > for a specific type anyway, and adds the ucon_mask port info member to > avoid having S3C2440 as a distinct type. Please split setting the ucon_mask to separate patch. It's a nice code simplification on its own. > > Signed-off-by: Hector Martin > --- > drivers/tty/serial/samsung_tty.c | 131 ++++++++++++++++++------------- > 1 file changed, 77 insertions(+), 54 deletions(-) > > diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c > index 6b661f3ec1ae..21955be680a4 100644 > --- a/drivers/tty/serial/samsung_tty.c > +++ b/drivers/tty/serial/samsung_tty.c > @@ -56,9 +56,15 @@ > /* flag to ignore all characters coming in */ > #define RXSTAT_DUMMY_READ (0x10000000) > > +enum s3c24xx_port_type { > + TYPE_S3C24XX, > + TYPE_S3C6400, > +}; > + > struct s3c24xx_uart_info { > char *name; > - unsigned int type; > + enum s3c24xx_port_type type; > + unsigned int port_type; > unsigned int fifosize; > unsigned long rx_fifomask; > unsigned long rx_fifoshift; > @@ -70,6 +76,7 @@ struct s3c24xx_uart_info { > unsigned long num_clks; > unsigned long clksel_mask; > unsigned long clksel_shift; > + unsigned long ucon_mask; > > /* uart port features */ > > @@ -228,16 +235,6 @@ static int s3c24xx_serial_txempty_nofifo(struct uart_port *port) > return rd_regl(port, S3C2410_UTRSTAT) & S3C2410_UTRSTAT_TXE; > } > > -/* > - * s3c64xx and later SoC's include the interrupt mask and status registers in > - * the controller itself, unlike the s3c24xx SoC's which have these registers > - * in the interrupt controller. Check if the port type is s3c64xx or higher. > - */ > -static int s3c24xx_serial_has_interrupt_mask(struct uart_port *port) > -{ > - return to_ourport(port)->info->type == PORT_S3C6400; > -} > - > static void s3c24xx_serial_rx_enable(struct uart_port *port) > { > struct s3c24xx_uart_port *ourport = to_ourport(port); > @@ -289,10 +286,14 @@ static void s3c24xx_serial_stop_tx(struct uart_port *port) > if (!ourport->tx_enabled) > return; > > - if (s3c24xx_serial_has_interrupt_mask(port)) > + switch (ourport->info->type) { > + case TYPE_S3C6400: > s3c24xx_set_bit(port, S3C64XX_UINTM_TXD, S3C64XX_UINTM); > - else > + break; > + default: > disable_irq_nosync(ourport->tx_irq); > + break; > + } > > if (dma && dma->tx_chan && ourport->tx_in_progress == S3C24XX_TX_DMA) { > dmaengine_pause(dma->tx_chan); > @@ -353,10 +354,14 @@ static void enable_tx_dma(struct s3c24xx_uart_port *ourport) > u32 ucon; > > /* Mask Tx interrupt */ > - if (s3c24xx_serial_has_interrupt_mask(port)) > + switch (ourport->info->type) { > + case TYPE_S3C6400: > s3c24xx_set_bit(port, S3C64XX_UINTM_TXD, S3C64XX_UINTM); > - else > + break; > + default: > disable_irq_nosync(ourport->tx_irq); > + break; > + } > > /* Enable tx dma mode */ > ucon = rd_regl(port, S3C2410_UCON); > @@ -386,11 +391,14 @@ static void enable_tx_pio(struct s3c24xx_uart_port *ourport) > wr_regl(port, S3C2410_UCON, ucon); > > /* Unmask Tx interrupt */ > - if (s3c24xx_serial_has_interrupt_mask(port)) > - s3c24xx_clear_bit(port, S3C64XX_UINTM_TXD, > - S3C64XX_UINTM); > - else > + switch (ourport->info->type) { > + case TYPE_S3C6400: > + s3c24xx_clear_bit(port, S3C64XX_UINTM_TXD, S3C64XX_UINTM); Please do not re-wrap. It makes reviewing more difficult. You can perform proper re-wrapping as a separate cleanup patch. > + break; > + default: > enable_irq(ourport->tx_irq); > + break; > + } > > ourport->tx_mode = S3C24XX_TX_PIO; > } > @@ -513,11 +521,14 @@ static void s3c24xx_serial_stop_rx(struct uart_port *port) > > if (ourport->rx_enabled) { > dev_dbg(port->dev, "stopping rx\n"); > - if (s3c24xx_serial_has_interrupt_mask(port)) > - s3c24xx_set_bit(port, S3C64XX_UINTM_RXD, > - S3C64XX_UINTM); The same. Best regards, Krzysztof _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel