diff options
| -rw-r--r-- | drivers/bluetooth/btfm_slim.h | 1 | ||||
| -rw-r--r-- | drivers/bluetooth/btfm_slim_codec.c | 3 | ||||
| -rw-r--r-- | drivers/bluetooth/btfm_slim_wcn3990.c | 18 |
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, ®_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, ®_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 */ |
