On Friday 10 June 2011 14:28:55 Jarkko Nikula wrote:
Attempt to change McBSP CLKS source while another stream is active is not safe after commit d135865 ("OMAP: McBSP: implement functional clock switching via clock framework") in 2.6.37.
CLKS parent clock switching using clock framework have to idle the McBSP before switching and then activate it again. This short break can cause a DMA transaction error to already running stream which halts and recovers only by closing and restarting the stream.
This goes more fatal after commit e2fa61d ("OMAP3: l3: Introduce l3-interconnect error handling driver") in 2.6.39 where l3 driver detects a severe timeout error and does BUG_ON().
Fix this by checking is the McBSP active in omap_mcbsp_dai_set_dai_sysclk before attempting to change any clocking configuration. This test should have been here just from the beginning anyway.
Signed-off-by: Jarkko Nikula jhnikula@gmail.com Cc: stable@kernel.org
Acked-by: Peter Ujfalusi peter.ujfalusi@ti.com