RE: [PATCH V2 2/5] tty: serial: fsl_lpuart: clear UARTCTRL_LOOPS in lpuart32_shutdown()
From: Sherry Sun
Date: Wed Nov 23 2022 - 08:28:18 EST
> -----Original Message-----
> From: Michael Walle <michael@xxxxxxxx>
> Sent: 2022年11月23日 19:43
> To: Sherry Sun <sherry.sun@xxxxxxx>
> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; jirislaby@xxxxxxxxxx;
> jingchang.lu@xxxxxxxxxxxxx; tomonori.sakita@xxxxxxxxxx;
> atsushi.nemoto@xxxxxxxxxx; linux-serial@xxxxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>
> Subject: Re: [PATCH V2 2/5] tty: serial: fsl_lpuart: clear UARTCTRL_LOOPS in
> lpuart32_shutdown()
>
> Hi Sherry,
>
> Am 2022-11-23 12:30, schrieb Sherry Sun:
> >> -----Original Message-----
> >> From: Michael Walle <michael@xxxxxxxx>
> >> Sent: 2022年11月23日 19:09
> >> To: Sherry Sun <sherry.sun@xxxxxxx>
> >> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; jirislaby@xxxxxxxxxx;
> >> jingchang.lu@xxxxxxxxxxxxx; tomonori.sakita@xxxxxxxxxx;
> >> atsushi.nemoto@xxxxxxxxxx; linux-serial@xxxxxxxxxxxxxxx; linux-
> >> kernel@xxxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>
> >> Subject: Re: [PATCH V2 2/5] tty: serial: fsl_lpuart: clear
> >> UARTCTRL_LOOPS in
> >> lpuart32_shutdown()
> >>
> >> Am 2022-11-23 11:58, schrieb Sherry Sun:
> >> >> -----Original Message-----
> >> >> From: Michael Walle <michael@xxxxxxxx>
> >> >> Sent: 2022年11月23日 18:34
> >> >> To: Sherry Sun <sherry.sun@xxxxxxx>
> >> >> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; jirislaby@xxxxxxxxxx;
> >> >> jingchang.lu@xxxxxxxxxxxxx; tomonori.sakita@xxxxxxxxxx;
> >> >> atsushi.nemoto@xxxxxxxxxx; linux-serial@xxxxxxxxxxxxxxx; linux-
> >> >> kernel@xxxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>
> >> >> Subject: Re: [PATCH V2 2/5] tty: serial: fsl_lpuart: clear
> >> >> UARTCTRL_LOOPS in
> >> >> lpuart32_shutdown()
> >> >>
> >> >> Am 2022-11-10 09:17, schrieb Sherry Sun:
> >> >> > UARTCTRL_LOOPS bit is set in lpuart32_set_mctrl() for loopback
> >> >> > mode, but nowhere clear this bit, it should be cleared when
> >> >> > closing the uart port to avoid the loopback mode been enabled by
> >> >> > default when reopening the uart.
> >> >>
> >> >> It's cleared in set_mctrl(). What is the expectation from the
> >> >> serial core here?
> >> >>
> >> >
> >> > Hi Michael,
> >> >
> >> > If we call .set_mctrl(TIOCM_LOOP), the UARTCTRL_LOOPS will be set.
> >> > Then when we call .shutdown(), serial core won't call .set_mctrl()
> >> > to clear it, so the UARTCTRL_LOOPS need to be cleared here.
> >> > Per my understanding, .shutdown() should clean up all the uart
> >> > flags, as the transmitter and receiver will been disabled, we will
> >> > re-configure all the settings needed when re-open the port.
> >>
> >> Two things,
> >> (1) should the loopback be cleared on a newly opened serial device?
> >> (2) as mentioned in my other reply, this can also be handled in
> >> the startup. Eg. the startup can clear the loopback flag.
> >> (together with possible hardware events).
> >>
> >> I'm not that deep into the serial core, thus my question about the
> >> expectations from the serial core. I guess the answer to
> >> (1) is yes, but better to ask.
> >>
> >
> > Hi Michael,
> >
> > For the (1), I have checked the serial core, seems the answer is no, .
> > startup() won't clean the status, only when the uart device is probed,
> > lpuart will do the global reset to all the registers instead of
> > .startup(). So I think the uart running status cleared in .shutdown()
> > is reasonable.
>
> That's not what I've meant. Even with this patch as it is right now, the
> loopback flag is cleared on a "newly opened serial device". Just with one
> difference, you are clearing the flag in shutdown.
>
> My question was rather, should the loopback (or generally any mctrl
> flags)
> be persistent across close/open cycles. E.g. looking at omap-serial.c, this
> driver doesn't seem to handle the loopback flag at .startup() or .shutdown().
> Same seems to be true for sh-sci.c.
>
> Greg?
>
Hi Michael,
Now got your point, thanks for the clarification.
I have checked some other drivers, maybe you are right, now I am also confused that if the loopback flags should be persistent across close/open cycles. ☹
Best Regards
Sherry