ASoC: Tegra: Improve capture stopping logic
authorSumit Bhattacharya <sumitb@nvidia.com>
Wed, 17 Apr 2013 12:43:04 +0000 (17:43 +0530)
committerMrutyunjay Sawant <msawant@nvidia.com>
Mon, 29 Apr 2013 09:47:28 +0000 (02:47 -0700)
commitaf3d0654d5048906417cfb71853ec02e6e82a310
tree3d086f994fabb6fceeb70e01e3314f5980e9c4c9
parentf6126d396e3fd6ea0cff0a341d0e8a303946f9b4
ASoC: Tegra: Improve capture stopping logic

During stopping capture session when I2s RX port is disabled I2S
FIFO may contain 2 bytes of data. In case of stereo capture done
in I2S mode I2S CIF will be configured for stereo and it will not
transmit residual 2 byte I2S FIFO data. As a result when next
capture session starts audio channel will get reversed due to
residual 2 bytes of data.

To solve this issue do a SOFT_RESET of I2S channel if after
disabling of I2S RX port I2S FIFO does not get empty. Also disable
APBIF FIFO after I2S RX port is disabled to follow source to
destination disabling sequence.

As a precaution similar check is also added form playback stop path.

Bug 1255915

Change-Id: I8ab74c96ca00e2a1fda0abfeb73244a83b847005
Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-on: http://git-master/r/220203
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Scott Peterson <speterson@nvidia.com>
GVS: Gerrit_Virtual_Submit
sound/soc/tegra/tegra30_i2s.c