+Shubhrajyoti.
On 17. 04. 19 15:20, Jean-Francois Dagenais wrote:
> Hi all,
>
> In the last year, in xilinx_uartps.c, this loop appeared at the top of
> cdns_uart_set_termios
>
> /* Wait for the transmit FIFO to empty before making changes */
> if (!(readl(port->membase + CDNS_UART_CR) &
> CDNS_UART_CR_TX_DIS)) {
> while (!(readl(port->membase + CDNS_UART_SR) &
> CDNS_UART_SR_TXEMPTY)) {
> cpu_relax();
> }
> }
>
>
> When (and this happens by default for us) ttyPS0 is a console for init or
> Systemd, it goes into this function, then, if no cable is connected, it will
> wait forever, essentially looking like the system doesn't boot since Systemd
> is very early in it's process and doesn't do anything else.
>
> My current workaround is to add "console=tty0" (a virtual console) to the
> kernel command line. But this is a hassle when the console is required since
> I need to hack my boot parameters to switch the console back to ttyPS0. But
> when I do, then this system absolutely needs this cable sucking the bytes off
> the tx fifo otherwise the system doesn't reboot or completely boots.
>
> This loop seems quite odd since it has no out. Would it be reasonable to add
> a timed out where if some amount of time has passed, the code can assume
> no-one cares about the bytes in the FIFO and we can proceed anyway? Or
> better, a way to detect no cable is connected and thus the loop will run
> forever?
>
>
> Thanks!
>
--
_______________________________________________
meta-xilinx mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/meta-xilinx