Thread (66 messages) 66 messages, 10 authors, 2014-09-04

[PATCH 15/15] tty: serial: 8250: omap: add dma support

From: bigeasy@linutronix.de (Sebastian Andrzej Siewior)
Date: 2014-08-28 19:37:15
Also in: linux-omap, linux-serial, lkml

On 08/28/2014 06:46 PM, Tony Lindgren wrote:
quoted
To use DMA you don't have to enable it in SCR register you can also use
the FCR register. The manual says that you can only write this DMA
enable bit in the FCR register if the baud clock is not running. And
guess what: same thing: I only *toggle* the DMA enable bit here (it
remains 0 later) and the core won't hit idle.
Same effect if I toggle this bit while the baud clock is running (the
manual says that this bit can only be written if the baud clock is not
running). Seems like the UART is following its own specification and it
remains blocking once the DMA was enabled.
It would be nice if someone from the UART-IP team could ACK this.
Sounds like there should be some way to clear that state.. I wonder
if omap-serial.c had something before it's DMA support was removed?
Its DMA was removed? Like there was DMA support?
I'd assume when the UART is powered down by runtime PM it's state
is completetely reset and we could restore the non-DMA state?
I tried that by canceling the RX-DMA request and removing the DMA-enable
bits from UART but it didn't help. Then I noticed that once that DMA en
bit is set, the UART won't do any idle.
Maybe post your current patches and a test patch to try to toggle
the DMA on and off?
Oh. I pushed my dirty tree to
 git://git.breakpoint.cc/bigeasy/linux.git uart_v8_wip

The top most commit does not setup dma at all and adds commented out
code how to enable DMA via SCR or FCR register. With this I hit
core-off. Once _one_ of the modes are enabled, it doesn't work anymore.

I will try to address review comments tomorrow and hopefully post a v8
based on -rc2. The same goes for your patch (which I will try tomorrow).
quoted
Bah. Does it make sense to use runtime-PM if we can't hit core-off? I'm
thinking to add a printk once dma is enabled says that runtime-pm is
switched off.
Well if we can't find a way to unset the DMA registers in the UART,
how about only enable it if a kernel cmdline option is specified?
Hmmm. So removing DMA properties from DT is not an option? Currently I
added a message that DMA might forbid low power mode so people might
remove "dma-names" from DT (or assign "") and DMA is off. However if
this is no good, then I guess I could add kernel module which enables
DMA.
We do have runtime PM working without it, and the serial console
super important for any kind of debugging no matter what idle
mode the SoC hits.. So let's not break that.
Yeah, I know. I've been debugging while I broke something which means
uart wasn't working :)
Regards,

Tony
Sebastian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help