summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSelma Bensaid <selma.bensaid@intel.com>2012-06-04 11:15:14 +0200
committerbuildbot <buildbot@intel.com>2012-06-05 11:55:05 -0700
commite39c2b74821ca6b6756abc24a49f8f76c816b30b (patch)
treede3b6a58a1dde08d31e6c5af4b5369519d7902e9
parentd0afdf600fa516206f8c447ad6ef26a09803b43a (diff)
downloadkernel-mfld-blackbay-e39c2b74821ca6b6756abc24a49f8f76c816b30b.tar.gz
kernel-mfld-blackbay-e39c2b74821ca6b6756abc24a49f8f76c816b30b.tar.bz2
kernel-mfld-blackbay-e39c2b74821ca6b6756abc24a49f8f76c816b30b.zip
[AUDIO] Intel MID I2S: Set the SSP in SLAVE MODE when closing the device
BZ: 38025 IN BT SCO Normal Mode the SSP1 is used in MASTER MODE. The SSP1 should be configured in SLAVE MODE when closed to avoid any impact on Modem-MSIC and Modem-BT connection and avoid audio glitches. Change-Id: I6628e82623c6d28e1aa60fa376e305de7c481a2c Signed-off-by: Selma Bensaid <selma.bensaid@intel.com> Reviewed-on: http://android.intel.com:8080/51394 Reviewed-by: De Chivre, Renaud <renaud.de.chivre@intel.com> Reviewed-by: Le Gall, Louis <louis.le.gall@intel.com> Reviewed-by: Di Folco, NeilX <neilx.di.folco@intel.com> Tested-by: Mendi, EduardoX <eduardox.mendi@intel.com> Reviewed-by: buildbot <buildbot@intel.com> Tested-by: buildbot <buildbot@intel.com>
-rw-r--r--sound/pci/intel_mid_i2s/intel_mid_i2s.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sound/pci/intel_mid_i2s/intel_mid_i2s.c b/sound/pci/intel_mid_i2s/intel_mid_i2s.c
index ea6e8942cd6..365967c61a7 100644
--- a/sound/pci/intel_mid_i2s/intel_mid_i2s.c
+++ b/sound/pci/intel_mid_i2s/intel_mid_i2s.c
@@ -986,6 +986,16 @@ void intel_mid_i2s_close(struct intel_mid_i2s_hdl *drv_data)
i2s_disable(drv_data);
put_device(&drv_data->pdev->dev);
write_SSCR0(0, reg);
+ /*
+ * Set the SSP in SLAVE Mode and Enable TX tristate
+ * to ensure that when leaving D0i3 the SSP does
+ * not drive the FS and TX pins.
+ *
+ */
+ write_SSCR1((SSCR1_SFRMDIR_MASK << SSCR1_SFRMDIR_SHIFT)
+ | (SSCR1_SCLKDIR_MASK << SSCR1_SCLKDIR_SHIFT)
+ | (SSCR1_TTE_MASK << SSCR1_TTE_SHIFT),
+ reg);
dev_dbg(&(drv_data->pdev->dev), "SSP Stopped.\n");
clear_bit(I2S_PORT_CLOSING, &drv_data->flags);