On Fri, 3 Feb 2012 19:06:19 -0700 (MST) Paul Walmsley <paul@xxxxxxxxx> wrote: > Hi Neil > > On Sat, 4 Feb 2012, NeilBrown wrote: > > > Guess what happens if I set autosuspend_delay_ms to 0? > > Massive transmit problems. Driver can hardly get anything out before the > > UART's fclk is cut... > > Just reproduced this on 35xx BeagleBoard. Looks like the UART is indeed > going idle while the TX FIFO has bytes in it. That makes me happy :-) > > Here's a patch that helps. It seems to work down to an > autosuspend_delay_ms of 1 ms. Without it, the best I can get is 8 ms. > > Of course, ideally it should work fine at autosuspend_delay_ms = 0, so > likely there's some other infelicity that we're currently missing. > > Neil, care to give this a test and confirm it on your setup? Yes, that seems to make the output corruption go away. Even with small autosuspend_delay_ms down to 0 it doesn't corrupt output, but as the first input byte is corrupted, I cannot really type with those setting (so I ssh to gain control again). The patch disables the IDLEMODE_SMART setting that happens on runtime suspend/resume so that the IDLEMODE_NO setting stays in force. So it clearly isn't "stopping the clocks" that is the problem - as I first imagined - but rather the SIDLE handshake isn't doing what we think it should do. Thanks, NeilBrown
Attachment:
signature.asc
Description: PGP signature