diff mbox

[U-Boot] dm: serial: Move a carriage return before a line feed

Message ID 1456286163-5703-1-git-send-email-b18965@freescale.com
State Accepted
Commit c5917b4b054d60c6c495f06b0538afed39dfe343
Delegated to: Simon Glass
Headers show

Commit Message

Alison Wang Feb. 24, 2016, 3:56 a.m. UTC
In general, a carriage return needs to execute before a line feed.
The patch is to change serial DM driver based on this rule.

Signed-off-by: Alison Wang <alison.wang@nxp.com>
---
 drivers/serial/serial-uclass.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Bin Meng Feb. 24, 2016, 4:40 a.m. UTC | #1
Hi Alison,

On Wed, Feb 24, 2016 at 11:56 AM, Alison Wang <b18965@freescale.com> wrote:
> In general, a carriage return needs to execute before a line feed.
> The patch is to change serial DM driver based on this rule.
>
> Signed-off-by: Alison Wang <alison.wang@nxp.com>
> ---
>  drivers/serial/serial-uclass.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
> index 1c447ff..f154eb1 100644
> --- a/drivers/serial/serial-uclass.c
> +++ b/drivers/serial/serial-uclass.c
> @@ -123,11 +123,12 @@ static void _serial_putc(struct udevice *dev, char ch)
>         struct dm_serial_ops *ops = serial_get_ops(dev);
>         int err;
>
> +       if (ch == '\n')
> +               _serial_putc(dev, '\r');
> +
>         do {
>                 err = ops->putc(dev, ch);
>         } while (err == -EAGAIN);
> -       if (ch == '\n')
> -               _serial_putc(dev, '\r');
>  }
>

We should also clean up all DM serial driver to remove this handling
in their driver. eg: serial_lpuart.c/serial_mxc.c

Regards,
Bin
Alison Wang Feb. 24, 2016, 7:35 a.m. UTC | #2
Hi, Bin,

> On Wed, Feb 24, 2016 at 11:56 AM, Alison Wang <b18965@freescale.com>
> wrote:
> > In general, a carriage return needs to execute before a line feed.
> > The patch is to change serial DM driver based on this rule.
> >
> > Signed-off-by: Alison Wang <alison.wang@nxp.com>
> > ---
> >  drivers/serial/serial-uclass.c | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/serial/serial-uclass.c
> > b/drivers/serial/serial-uclass.c index 1c447ff..f154eb1 100644
> > --- a/drivers/serial/serial-uclass.c
> > +++ b/drivers/serial/serial-uclass.c
> > @@ -123,11 +123,12 @@ static void _serial_putc(struct udevice *dev,
> char ch)
> >         struct dm_serial_ops *ops = serial_get_ops(dev);
> >         int err;
> >
> > +       if (ch == '\n')
> > +               _serial_putc(dev, '\r');
> > +
> >         do {
> >                 err = ops->putc(dev, ch);
> >         } while (err == -EAGAIN);
> > -       if (ch == '\n')
> > -               _serial_putc(dev, '\r');
> >  }
> >
> 
> We should also clean up all DM serial driver to remove this handling in
> their driver. eg: serial_lpuart.c/serial_mxc.c
> 
[Alison Wang] Thanks for your advice. Yes, I agree. This handling in
particular driver is redundant.

It seems only serial_lpuart.c and serial_arc.c has this handling. For
serial_mxc.c, this handling is only in the non-DM .putc function,
but not in the DM .putc function. Do you think it is necessary to change
the non-DM .putc function?

Best Regards,
Alison Wang
Bin Meng Feb. 24, 2016, 9:09 a.m. UTC | #3
Hi Alison,

On Wed, Feb 24, 2016 at 3:35 PM, Huan Wang <alison.wang@nxp.com> wrote:
> Hi, Bin,
>
>> On Wed, Feb 24, 2016 at 11:56 AM, Alison Wang <b18965@freescale.com>
>> wrote:
>> > In general, a carriage return needs to execute before a line feed.
>> > The patch is to change serial DM driver based on this rule.
>> >
>> > Signed-off-by: Alison Wang <alison.wang@nxp.com>
>> > ---
>> >  drivers/serial/serial-uclass.c | 5 +++--
>> >  1 file changed, 3 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/drivers/serial/serial-uclass.c
>> > b/drivers/serial/serial-uclass.c index 1c447ff..f154eb1 100644
>> > --- a/drivers/serial/serial-uclass.c
>> > +++ b/drivers/serial/serial-uclass.c
>> > @@ -123,11 +123,12 @@ static void _serial_putc(struct udevice *dev,
>> char ch)
>> >         struct dm_serial_ops *ops = serial_get_ops(dev);
>> >         int err;
>> >
>> > +       if (ch == '\n')
>> > +               _serial_putc(dev, '\r');
>> > +
>> >         do {
>> >                 err = ops->putc(dev, ch);
>> >         } while (err == -EAGAIN);
>> > -       if (ch == '\n')
>> > -               _serial_putc(dev, '\r');
>> >  }
>> >
>>
>> We should also clean up all DM serial driver to remove this handling in
>> their driver. eg: serial_lpuart.c/serial_mxc.c
>>
> [Alison Wang] Thanks for your advice. Yes, I agree. This handling in
> particular driver is redundant.
>
> It seems only serial_lpuart.c and serial_arc.c has this handling. For
> serial_mxc.c, this handling is only in the non-DM .putc function,
> but not in the DM .putc function. Do you think it is necessary to change
> the non-DM .putc function?
>

No, we should keep the non-DM putc function as it is now. But this
serial_mxc.c, its non-DM putc version has the same issue as the
serial-uclass.c, so it should be fixed. The legacy serial_pxa.c,
serial_s3c24x0.c and usbtty.c also have the same problem.

Regards,
Bin
Alison Wang Feb. 24, 2016, 9:33 a.m. UTC | #4
Hi, Bin,

> On Wed, Feb 24, 2016 at 3:35 PM, Huan Wang <alison.wang@nxp.com> wrote:
> > Hi, Bin,
> >
> >> On Wed, Feb 24, 2016 at 11:56 AM, Alison Wang <b18965@freescale.com>
> >> wrote:
> >> > In general, a carriage return needs to execute before a line feed.
> >> > The patch is to change serial DM driver based on this rule.
> >> >
> >> > Signed-off-by: Alison Wang <alison.wang@nxp.com>
> >> > ---
> >> >  drivers/serial/serial-uclass.c | 5 +++--
> >> >  1 file changed, 3 insertions(+), 2 deletions(-)
> >> >
> >> > diff --git a/drivers/serial/serial-uclass.c
> >> > b/drivers/serial/serial-uclass.c index 1c447ff..f154eb1 100644
> >> > --- a/drivers/serial/serial-uclass.c
> >> > +++ b/drivers/serial/serial-uclass.c
> >> > @@ -123,11 +123,12 @@ static void _serial_putc(struct udevice *dev,
> >> char ch)
> >> >         struct dm_serial_ops *ops = serial_get_ops(dev);
> >> >         int err;
> >> >
> >> > +       if (ch == '\n')
> >> > +               _serial_putc(dev, '\r');
> >> > +
> >> >         do {
> >> >                 err = ops->putc(dev, ch);
> >> >         } while (err == -EAGAIN);
> >> > -       if (ch == '\n')
> >> > -               _serial_putc(dev, '\r');
> >> >  }
> >> >
> >>
> >> We should also clean up all DM serial driver to remove this handling
> >> in their driver. eg: serial_lpuart.c/serial_mxc.c
> >>
> > [Alison Wang] Thanks for your advice. Yes, I agree. This handling in
> > particular driver is redundant.
> >
> > It seems only serial_lpuart.c and serial_arc.c has this handling. For
> > serial_mxc.c, this handling is only in the non-DM .putc function, but
> > not in the DM .putc function. Do you think it is necessary to change
> > the non-DM .putc function?
> >
> 
> No, we should keep the non-DM putc function as it is now. But this
> serial_mxc.c, its non-DM putc version has the same issue as the serial-
> uclass.c, so it should be fixed. The legacy serial_pxa.c,
> serial_s3c24x0.c and usbtty.c also have the same problem.
> 
> 
[Alison Wang] Ok, I get your idea. I will send another patch to fix them.

Thanks.

Best Regards,
Alison Wang
Bin Meng Feb. 25, 2016, 2:58 a.m. UTC | #5
On Wed, Feb 24, 2016 at 11:56 AM, Alison Wang <b18965@freescale.com> wrote:
> In general, a carriage return needs to execute before a line feed.
> The patch is to change serial DM driver based on this rule.
>
> Signed-off-by: Alison Wang <alison.wang@nxp.com>
> ---
>  drivers/serial/serial-uclass.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
diff mbox

Patch

diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
index 1c447ff..f154eb1 100644
--- a/drivers/serial/serial-uclass.c
+++ b/drivers/serial/serial-uclass.c
@@ -123,11 +123,12 @@  static void _serial_putc(struct udevice *dev, char ch)
 	struct dm_serial_ops *ops = serial_get_ops(dev);
 	int err;
 
+	if (ch == '\n')
+		_serial_putc(dev, '\r');
+
 	do {
 		err = ops->putc(dev, ch);
 	} while (err == -EAGAIN);
-	if (ch == '\n')
-		_serial_putc(dev, '\r');
 }
 
 static void _serial_puts(struct udevice *dev, const char *str)