diff mbox series

[v2] serial: sh-sci: byte allocated register support

Message ID 20180722130214.19572-1-ysato@users.sourceforge.jp (mailing list archive)
State New, archived
Headers show
Series [v2] serial: sh-sci: byte allocated register support | expand

Commit Message

Yoshinori Sato July 22, 2018, 1:02 p.m. UTC
H8/300 SCI registers allocated byte address.
It must support to the case where shift count is 0.

Changes v2.
more simply code.

Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
 drivers/tty/serial/sh-sci.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

Comments

Geert Uytterhoeven July 23, 2018, 8:17 a.m. UTC | #1
CC gregkh, linux-serial

On Sun, Jul 22, 2018 at 3:02 PM Yoshinori Sato
<ysato@users.sourceforge.jp> wrote:
>
> H8/300 SCI registers allocated byte address.
> It must support to the case where shift count is 0.
>
> Changes v2.
> more simply code.
>
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

> --- a/drivers/tty/serial/sh-sci.c
> +++ b/drivers/tty/serial/sh-sci.c
> @@ -2863,10 +2863,12 @@ static int sci_init_single(struct platform_device *dev,
>         port->fifosize          = sci_port->params->fifosize;
>
>         if (port->type == PORT_SCI) {
> -               if (sci_port->reg_size >= 0x20)
> -                       port->regshift = 2;
> -               else
> -                       port->regshift = 1;
> +               /*
> +                * reg_size < 0x10: BYTE aligned (scale factor=1).
> +                * reg_size >= 0x10 and < 0x20: WORD aligned (scale factor=2).
> +                * reg_size >= 0x20: DWORD aligned (scale factor=4).
> +                */
> +               port->regshift = sci_port->reg_size >> 4;
>         }
>
>         /*

Gr{oetje,eeting}s,

                        Geert
Geert Uytterhoeven Aug. 8, 2018, 5:52 p.m. UTC | #2
Hi Sato-san,

On Mon, Jul 23, 2018 at 10:17 AM Geert Uytterhoeven
<geert@linux-m68k.org> wrote:
> CC gregkh, linux-serial
>
> On Sun, Jul 22, 2018 at 3:02 PM Yoshinori Sato
> <ysato@users.sourceforge.jp> wrote:
> >
> > H8/300 SCI registers allocated byte address.
> > It must support to the case where shift count is 0.
> >
> > Changes v2.
> > more simply code.
> >
> > Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
>
> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
>
> > --- a/drivers/tty/serial/sh-sci.c
> > +++ b/drivers/tty/serial/sh-sci.c
> > @@ -2863,10 +2863,12 @@ static int sci_init_single(struct platform_device *dev,
> >         port->fifosize          = sci_port->params->fifosize;
> >
> >         if (port->type == PORT_SCI) {
> > -               if (sci_port->reg_size >= 0x20)
> > -                       port->regshift = 2;
> > -               else
> > -                       port->regshift = 1;
> > +               /*
> > +                * reg_size < 0x10: BYTE aligned (scale factor=1).
> > +                * reg_size >= 0x10 and < 0x20: WORD aligned (scale factor=2).
> > +                * reg_size >= 0x20: DWORD aligned (scale factor=4).
> > +                */
> > +               port->regshift = sci_port->reg_size >> 4;
> >         }
> >
> >         /*

Considering the regshift issues introduced by RZ/A2 SCIF support, I think it's
better to not rely on the reg_size value, and change the check to

       if (!dev->dev.of_node && port->type == PORT_SCI)

If/when SuperH receives DT support, SCI ports with regshift 1 or 2 instantiated
from DT can be supported using "reg-shift = <1>" or "reg-shift = <2>" in DT.

Reference: https://www.spinics.net/lists/linux-serial/msg31573.html

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Yoshinori Sato Aug. 9, 2018, 2:41 p.m. UTC | #3
On Thu, 09 Aug 2018 02:52:10 +0900,
Geert Uytterhoeven wrote:
> 
> Hi Sato-san,
> 
> On Mon, Jul 23, 2018 at 10:17 AM Geert Uytterhoeven
> <geert@linux-m68k.org> wrote:
> > CC gregkh, linux-serial
> >
> > On Sun, Jul 22, 2018 at 3:02 PM Yoshinori Sato
> > <ysato@users.sourceforge.jp> wrote:
> > >
> > > H8/300 SCI registers allocated byte address.
> > > It must support to the case where shift count is 0.
> > >
> > > Changes v2.
> > > more simply code.
> > >
> > > Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> >
> > Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
> >
> > > --- a/drivers/tty/serial/sh-sci.c
> > > +++ b/drivers/tty/serial/sh-sci.c
> > > @@ -2863,10 +2863,12 @@ static int sci_init_single(struct platform_device *dev,
> > >         port->fifosize          = sci_port->params->fifosize;
> > >
> > >         if (port->type == PORT_SCI) {
> > > -               if (sci_port->reg_size >= 0x20)
> > > -                       port->regshift = 2;
> > > -               else
> > > -                       port->regshift = 1;
> > > +               /*
> > > +                * reg_size < 0x10: BYTE aligned (scale factor=1).
> > > +                * reg_size >= 0x10 and < 0x20: WORD aligned (scale factor=2).
> > > +                * reg_size >= 0x20: DWORD aligned (scale factor=4).
> > > +                */
> > > +               port->regshift = sci_port->reg_size >> 4;
> > >         }
> > >
> > >         /*
> 
> Considering the regshift issues introduced by RZ/A2 SCIF support, I think it's
> better to not rely on the reg_size value, and change the check to
> 
>        if (!dev->dev.of_node && port->type == PORT_SCI)
> 
> If/when SuperH receives DT support, SCI ports with regshift 1 or 2 instantiated
> from DT can be supported using "reg-shift = <1>" or "reg-shift = <2>" in DT.
> 
> Reference: https://www.spinics.net/lists/linux-serial/msg31573.html
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
>

OK.
Thanks.

> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds
diff mbox series

Patch

diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
index c181eb37f985..3c7326e11d37 100644
--- a/drivers/tty/serial/sh-sci.c
+++ b/drivers/tty/serial/sh-sci.c
@@ -2863,10 +2863,12 @@  static int sci_init_single(struct platform_device *dev,
 	port->fifosize		= sci_port->params->fifosize;
 
 	if (port->type == PORT_SCI) {
-		if (sci_port->reg_size >= 0x20)
-			port->regshift = 2;
-		else
-			port->regshift = 1;
+		/*
+		 * reg_size < 0x10: BYTE aligned (scale factor=1).
+		 * reg_size >= 0x10 and < 0x20: WORD aligned (scale factor=2).
+		 * reg_size >= 0x20: DWORD aligned (scale factor=4).
+		 */
+		port->regshift = sci_port->reg_size >> 4;
 	}
 
 	/*