From patchwork Mon Aug 6 14:07:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 10557209 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 71901A65F for ; Mon, 6 Aug 2018 14:08:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6174F295A5 for ; Mon, 6 Aug 2018 14:08:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 55DBB295A9; Mon, 6 Aug 2018 14:08:07 +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=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI 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 E0956295B5 for ; Mon, 6 Aug 2018 14:08:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729749AbeHFQRW (ORCPT ); Mon, 6 Aug 2018 12:17:22 -0400 Received: from baptiste.telenet-ops.be ([195.130.132.51]:48196 "EHLO baptiste.telenet-ops.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730195AbeHFQRV (ORCPT ); Mon, 6 Aug 2018 12:17:21 -0400 Received: from ramsan.of.borg ([84.194.111.163]) by baptiste.telenet-ops.be with bizsmtp id Kq821y0063XaVaC01q824F; Mon, 06 Aug 2018 16:08:03 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtp (Exim 4.86_2) (envelope-from ) id 1fmgB0-0000Nk-3n; Mon, 06 Aug 2018 16:08:02 +0200 Received: from geert by rox.of.borg with local (Exim 4.90_1) (envelope-from ) id 1fmgB0-0006HZ-2V; Mon, 06 Aug 2018 16:08:02 +0200 From: Geert Uytterhoeven To: Chris Brandt , Laurent Pinchart , Ulrich Hecht , Yoshinori Sato Cc: Greg Kroah-Hartman , Jiri Slaby , linux-renesas-soc@vger.kernel.org, linux-sh@vger.kernel.org, linux-serial@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH/RFC 3/4] Revert "serial: sh-sci: Compute the regshift value for SCI ports" Date: Mon, 6 Aug 2018 16:07:54 +0200 Message-Id: <20180806140755.24087-4-geert+renesas@glider.be> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180806140755.24087-1-geert+renesas@glider.be> References: <20180806140755.24087-1-geert+renesas@glider.be> Sender: linux-sh-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sh@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This reverts commit dfc80387aefb78161f83732804c6d01c89c24595. Deriving the proper regshift value from the register block size is fragile, as it may have been rounded up. Furthermore we will need plat_sci_port.regshift again. Signed-off-by: Geert Uytterhoeven --- arch/sh/kernel/cpu/sh3/setup-sh770x.c | 1 + arch/sh/kernel/cpu/sh4/setup-sh7750.c | 3 ++- arch/sh/kernel/cpu/sh4/setup-sh7760.c | 10 ++-------- drivers/tty/serial/sh-sci.c | 8 +------- include/linux/serial_sci.h | 1 + 5 files changed, 7 insertions(+), 16 deletions(-) diff --git a/arch/sh/kernel/cpu/sh3/setup-sh770x.c b/arch/sh/kernel/cpu/sh3/setup-sh770x.c index 59a88611df55ac8f..592cd9ab30c4272f 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh770x.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh770x.c @@ -111,6 +111,7 @@ static struct platform_device rtc_device = { static struct plat_sci_port scif0_platform_data = { .type = PORT_SCI, .ops = &sh770x_sci_port_ops, + .regshift = 1, }; static struct resource scif0_resources[] = { diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7750.c b/arch/sh/kernel/cpu/sh4/setup-sh7750.c index 57d30689204d03b9..d98a55416306baef 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh7750.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh7750.c @@ -39,10 +39,11 @@ static struct platform_device rtc_device = { static struct plat_sci_port sci_platform_data = { .type = PORT_SCI, + .regshift = 2, }; static struct resource sci_resources[] = { - DEFINE_RES_MEM(0xffe00000, 0x20), + DEFINE_RES_MEM(0xffe00000, 0x100), DEFINE_RES_IRQ(evt2irq(0x4e0)), }; diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7760.c b/arch/sh/kernel/cpu/sh4/setup-sh7760.c index e51fe1734e1368e8..0c0cdfc69dcc3e33 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh7760.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh7760.c @@ -200,18 +200,12 @@ static struct platform_device scif2_device = { }; static struct plat_sci_port scif3_platform_data = { - /* - * This is actually a SIM card module serial port, based on an SCI with - * additional registers. The sh-sci driver doesn't support the SIM port - * type, declare it as a SCI. Don't declare the additional registers in - * the memory resource or the driver will compute an incorrect regshift - * value. - */ .type = PORT_SCI, + .regshift = 2, }; static struct resource scif3_resources[] = { - DEFINE_RES_MEM(0xfe480000, 0x10), + DEFINE_RES_MEM(0xfe480000, 0x100), DEFINE_RES_IRQ(evt2irq(0xc00)), DEFINE_RES_IRQ(evt2irq(0xc20)), DEFINE_RES_IRQ(evt2irq(0xc40)), diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index caf4422d9e2e59e4..955c057dff6e8c78 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -2895,15 +2895,9 @@ static int sci_init_single(struct platform_device *dev, port->type = p->type; port->flags = UPF_FIXED_PORT | UPF_BOOT_AUTOCONF | p->flags; + port->regshift = p->regshift; port->fifosize = sci_port->params->fifosize; - if (port->type == PORT_SCI) { - if (sci_port->reg_size >= 0x20) - port->regshift = 2; - else - port->regshift = 1; - } - if (regtype == SCIx_SH4_SCIF_REGTYPE) if (sci_port->reg_size >= 0x20) port->regshift = 1; diff --git a/include/linux/serial_sci.h b/include/linux/serial_sci.h index c0e795d95477daea..eebb12fc473f49a2 100644 --- a/include/linux/serial_sci.h +++ b/include/linux/serial_sci.h @@ -57,6 +57,7 @@ struct plat_sci_port { /* * Platform overrides if necessary, defaults otherwise. */ + unsigned char regshift; unsigned char regtype; struct plat_sci_port_ops *ops;