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 |
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
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
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 --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; } /*
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(-)