N810 audio driver has stopped working at some point. Probably when OMAP2 was converted to common clock framework since now call to clk_enable dumps the stack trace in drivers/clk/clk.c: __clk_enable() due clk->prepare_count is zero.
Fix this by converting clk_enable/_disable calls to those that take care of clock prepare/unprepare.
I'm not queueing this to linux-stable since OMAP2 common clock framework conversion in commit ed1ebc4948fd ("ARM: OMAP2: clock: Convert to common clk") happened before N810 was really usable in mainline and user base for N810 is anyway small. Potential linux-stable candidates are only those after commit 3d3a6d18abc6 ("watchdog: introduce retu_wdt driver").
Signed-off-by: Jarkko Nikula jarkko.nikula@bitmer.com --- sound/soc/omap/n810.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/omap/n810.c b/sound/soc/omap/n810.c index 6d216cb6c19b..3fde9e402710 100644 --- a/sound/soc/omap/n810.c +++ b/sound/soc/omap/n810.c @@ -100,12 +100,12 @@ static int n810_startup(struct snd_pcm_substream *substream) SNDRV_PCM_HW_PARAM_CHANNELS, 2, 2);
n810_ext_control(&codec->dapm); - return clk_enable(sys_clkout2); + return clk_prepare_enable(sys_clkout2); }
static void n810_shutdown(struct snd_pcm_substream *substream) { - clk_disable(sys_clkout2); + clk_disable_unprepare(sys_clkout2); }
static int n810_hw_params(struct snd_pcm_substream *substream,