diff options
| author | Rupesh Tatiya <rtatiya@codeaurora.org> | 2017-04-18 19:25:11 +0530 |
|---|---|---|
| committer | Rupesh Tatiya <rtatiya@codeaurora.org> | 2017-04-26 13:19:14 +0530 |
| commit | 6737311d223cc3df336d8e7f79b7e2dbb18e2ec2 (patch) | |
| tree | 14a83678c4b56cfd655d7dea2cf9727c50c8f0af | |
| parent | 048c70075fecb8f92d923fc5595efa00f2a00082 (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.c | 24 |
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, ®_val, IFD); |
