Thread (141 messages) 141 messages, 17 authors, 2013-12-12
STALE4579d

[PATCH 17/31] ASoC: tegra: call pm_runtime APIs around register accesses

From: Stephen Warren <hidden>
Date: 2013-11-18 17:25:46
Also in: alsa-devel, linux-tegra

On 11/16/2013 03:02 AM, Mark Brown wrote:
On Fri, Nov 15, 2013 at 01:54:12PM -0700, Stephen Warren wrote:
quoted
From: Stephen Warren <redacted>

Call pm_runtime_get_sync() before all register accesses; the HW requires
clocks to be running when accessing registers.

This hasn't been needed to date, since all register IO was performed
while playback was active, and hence the ASoC core had already called
pm_runtime_get(). However, an imminent future commit will allocate and
set up the FIFOs and routing during probe(), when that "protection"
won't be in place.
Acked-by: Mark Brown <redacted>

However should we fix this at the regmap level in the same way that we
do for clocks?  That would need to be using _put_autosuspend() to avoid
being horrific.
I did wonder about that, but it seemed like rather a lot of overhead?
Or alternatively should the driver be making the device
cache only when runtime PM is disabled?
The regmap is already cache-only when runtime-suspended. However the
registers don't get flushed during resume. I suppose that would require
only adding one extra call to the PM resume function?

For some reason, my gut prefers this current solution, but I could be
persuaded.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help