summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/bluetooth/btfm_slim.h1
-rw-r--r--drivers/bluetooth/btfm_slim_codec.c3
-rw-r--r--drivers/bluetooth/btfm_slim_wcn3990.c18
3 files changed, 7 insertions, 15 deletions
diff --git a/drivers/bluetooth/btfm_slim.h b/drivers/bluetooth/btfm_slim.h
index e67c6964ee65..c7b2b45eb19d 100644
--- a/drivers/bluetooth/btfm_slim.h
+++ b/drivers/bluetooth/btfm_slim.h
@@ -68,6 +68,7 @@ struct btfmslim {
uint32_t num_rx_port;
uint32_t num_tx_port;
+ uint32_t sample_rate;
struct btfmslim_ch *rx_chs;
struct btfmslim_ch *tx_chs;
diff --git a/drivers/bluetooth/btfm_slim_codec.c b/drivers/bluetooth/btfm_slim_codec.c
index 4dd8e6833ccf..05da1fb1f975 100644
--- a/drivers/bluetooth/btfm_slim_codec.c
+++ b/drivers/bluetooth/btfm_slim_codec.c
@@ -134,6 +134,9 @@ int btfm_slim_dai_prepare(struct snd_pcm_substream *substream,
BTFMSLIM_DBG("dai->name: %s, dai->id: %d, dai->rate: %d", dai->name,
dai->id, dai->rate);
+ /* save sample rate */
+ btfmslim->sample_rate = dai->rate;
+
switch (dai->id) {
case BTFM_FM_SLIM_TX:
grp = true; nchan = 2;
diff --git a/drivers/bluetooth/btfm_slim_wcn3990.c b/drivers/bluetooth/btfm_slim_wcn3990.c
index a451ff33103c..77e2973e023c 100644
--- a/drivers/bluetooth/btfm_slim_wcn3990.c
+++ b/drivers/bluetooth/btfm_slim_wcn3990.c
@@ -88,12 +88,12 @@ int btfm_slim_chrk_enable_port(struct btfmslim *btfmslim, uint8_t port_num,
BTFMSLIM_DBG("port(%d) enable(%d)", port_num, enable);
if (rxport) {
- if (enable) {
- /* For SCO Rx, A2DP Rx */
+ if (enable && btfmslim->sample_rate == 48000) {
+ /* For A2DP Rx */
reg_val = 0x1;
port_bit = port_num - 0x10;
reg = CHRK_SB_PGD_RX_PORTn_MULTI_CHNL_0(port_bit);
- BTFMSLIM_DBG("writing reg_val (%d) to reg(%x)",
+ BTFMSLIM_DBG("writing reg_val (%d) to reg(%x) for A2DP",
reg_val, reg);
ret = btfm_slim_write(btfmslim, reg, 1, &reg_val, IFD);
if (ret) {
@@ -120,18 +120,6 @@ int btfm_slim_chrk_enable_port(struct btfmslim *btfmslim, uint8_t port_num,
BTFMSLIM_ERR("failed to write (%d) reg 0x%x", ret, reg);
goto error;
}
- } else if (port_num == CHRK_SB_PGD_PORT_TX_SCO) {
- /* SCO Tx */
- reg_val = 0x1 << CHRK_SB_PGD_PORT_TX_SCO;
- reg = CHRK_SB_PGD_TX_PORTn_MULTI_CHNL_0(port_num);
- BTFMSLIM_DBG("writing reg_val (%d) to reg(%x)",
- reg_val, reg);
- ret = btfm_slim_write(btfmslim, reg, 1, &reg_val, IFD);
- if (ret) {
- BTFMSLIM_ERR("failed to write (%d) reg 0x%x",
- ret, reg);
- goto error;
- }
}
/* Enable Tx port hw auto recovery for underrun or overrun error */