summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRupesh Tatiya <rtatiya@codeaurora.org>2017-04-18 19:25:11 +0530
committerRupesh Tatiya <rtatiya@codeaurora.org>2017-04-26 13:19:14 +0530
commit6737311d223cc3df336d8e7f79b7e2dbb18e2ec2 (patch)
tree14a83678c4b56cfd655d7dea2cf9727c50c8f0af
parent048c70075fecb8f92d923fc5595efa00f2a00082 (diff)
btfm: set watermark level to 3 for wcn3990 slimbus FM slave ports
Without this, we hear silence or delay in sound during FM playback in following use cases - 1. Switching between FM and media applications like YouTube 2. Changing volume during FM FTM Change-Id: I51072ab70e6bc34e1ed10222ee289d987ed9ffbf Signed-off-by: Rupesh Tatiya <rtatiya@codeaurora.org>
-rw-r--r--drivers/bluetooth/btfm_slim_wcn3990.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/drivers/bluetooth/btfm_slim_wcn3990.c b/drivers/bluetooth/btfm_slim_wcn3990.c
index d61454ac6e84..c93b29281e35 100644
--- a/drivers/bluetooth/btfm_slim_wcn3990.c
+++ b/drivers/bluetooth/btfm_slim_wcn3990.c
@@ -69,6 +69,14 @@ error:
return ret;
}
+static inline int is_fm_port(uint8_t port_num)
+{
+ if (port_num == CHRK_SB_PGD_PORT_TX1_FM ||
+ port_num == CHRK_SB_PGD_PORT_TX2_FM)
+ return 1;
+ else
+ return 0;
+}
int btfm_slim_chrk_enable_port(struct btfmslim *btfmslim, uint8_t port_num,
uint8_t rxport, uint8_t enable)
@@ -88,9 +96,7 @@ int btfm_slim_chrk_enable_port(struct btfmslim *btfmslim, uint8_t port_num,
goto enable_disable_txport;
/* Multiple Channel Setting - only for FM Tx */
- if (port_num == CHRK_SB_PGD_PORT_TX1_FM ||
- port_num == CHRK_SB_PGD_PORT_TX2_FM) {
-
+ if (is_fm_port(port_num)) {
reg_val = (0x1 << CHRK_SB_PGD_PORT_TX1_FM) |
(0x1 << CHRK_SB_PGD_PORT_TX2_FM);
reg = CHRK_SB_PGD_TX_PORTn_MULTI_CHNL_0(port_num);
@@ -116,10 +122,14 @@ enable_disable_txport:
reg = CHRK_SB_PGD_PORT_TX_CFGN(port_num);
enable_disable_rxport:
- if (enable)
- /* Set water mark to 1 and enable the port */
- reg_val = CHRK_SB_PGD_PORT_ENABLE | CHRK_SB_PGD_PORT_WM_LB;
- else
+ if (enable) {
+ if (is_fm_port(port_num))
+ reg_val = CHRK_SB_PGD_PORT_ENABLE |
+ CHRK_SB_PGD_PORT_WM_L3;
+ else
+ reg_val = CHRK_SB_PGD_PORT_ENABLE |
+ CHRK_SB_PGD_PORT_WM_LB;
+ } else
reg_val = CHRK_SB_PGD_PORT_DISABLE;
ret = btfm_slim_write(btfmslim, reg, 1, &reg_val, IFD);