ASoC: fsl_ssi: Fix clock control issue in master mode
authorShengjiu Wang <shengjiu.wang@nxp.com>
Wed, 28 Aug 2019 17:20:17 +0000 (13:20 -0400)
committerMark Brown <broonie@kernel.org>
Thu, 29 Aug 2019 19:14:11 +0000 (20:14 +0100)
commit696d05225cebffd172008d212657be90e823eac0
treea1faf374f9c9c50c8790910c22fa4ce4ec108cf5
parentd2ac1fe0342ce2b44621f60d053800e2d94f1d21
ASoC: fsl_ssi: Fix clock control issue in master mode

The test case is
arecord -Dhw:0 -d 10 -f S16_LE -r 48000 -c 2 temp.wav &
aplay -Dhw:0 -d 30 -f S16_LE -r 48000 -c 2 test.wav

There will be error after end of arecord:
aplay: pcm_write:2051: write error: Input/output error

Capture and Playback work in parallel in master mode, one
substream stops, the other substream is impacted, the
reason is that clock is disabled wrongly.

The clock's reference count is not increased when second
substream starts, the hw_param() function returns in the
beginning because first substream is enabled, then in end
of first substream, the hw_free() disables the clock.

This patch is to move the clock enablement to the place
before checking of the device enablement in hw_param().

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://lore.kernel.org/r/1567012817-12625-1-git-send-email-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/fsl/fsl_ssi.c