Message ID | 20140721093528.GS18374@atomide.com |
---|---|
State | New |
Headers | show |
On 07/21/2014 11:35 AM, Tony Lindgren wrote: > Looks like the following is needed to avoid the error, no idea why.. > But this is what we also do in omap-serial.c. It may be needed in > other places too? Yes, there was a third one on shutdown. > Also, no luck yet on runtime PM. If the console is enabled omap won't > idle, and if no serial console is enabled, it just hangs. Will try > to debug this part further, it may be also related to the above. My beaglebone xm won't do idle: | omap3_pm_off_mode_enable: Core OFF disabled due to errata i583 but it would if it could, right? That means that I can't test the wake via UART on this one? So I will try to fix the tx-pm, fold patches and then prepare another batch. And I could verify that DMA works on that omap3 :) > Regards, > > Tony Sebastian
* Sebastian Andrzej Siewior <bigeasy@linutronix.de> [140813 09:23]: > On 07/21/2014 11:35 AM, Tony Lindgren wrote: > > > Looks like the following is needed to avoid the error, no idea why.. > > But this is what we also do in omap-serial.c. It may be needed in > > other places too? > > Yes, there was a third one on shutdown. OK > > Also, no luck yet on runtime PM. If the console is enabled omap won't > > idle, and if no serial console is enabled, it just hangs. Will try > > to debug this part further, it may be also related to the above. > > My beaglebone xm won't do idle: > > | omap3_pm_off_mode_enable: Core OFF disabled due to errata i583 > > but it would if it could, right? That means that I can't test the wake > via UART on this one? Hmm OK yes that's disabled for some earlier ES revisions. I guess you could comment out the limitations for PM_SDRC_WAKEUP_ERRATUM_i583 in both cpuidle34xx.c and pm34xx.c and see if off-idle is usable for your tests :) It might be flakey but still usable for testing. > So I will try to fix the tx-pm, fold patches and then prepare another > batch. OK great, let me know if you need more help. > And I could verify that DMA works on that omap3 :) OK Regards, Tony
--- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -2066,8 +2066,8 @@ int serial8250_do_startup(struct uart_port *port) /* * Clear the interrupt registers. */ - serial_port_in(port, UART_LSR); - serial_port_in(port, UART_RX); + if (serial_port_in(port, UART_LSR) & UART_LSR_DR) + serial_port_in(port, UART_RX); serial_port_in(port, UART_IIR); serial_port_in(port, UART_MSR); @@ -2228,8 +2228,8 @@ dont_test_tx_en: * saved flags to avoid getting false values from polling * routines or the previous session. */ - serial_port_in(port, UART_LSR); - serial_port_in(port, UART_RX); + if (serial_port_in(port, UART_LSR) & UART_LSR_DR) + serial_port_in(port, UART_RX); serial_port_in(port, UART_IIR); serial_port_in(port, UART_MSR); up->lsr_saved_flags = 0;