Loading drivers/bluetooth/bluetooth-power.c +1 −0 Original line number Diff line number Diff line Loading @@ -708,6 +708,7 @@ static long bt_ioctl(struct file *file, unsigned int cmd, unsigned long arg) } else { BT_PWR_ERR("BT chip state is already :%d no change d\n" , pwr_state); ret = 0; } break; default: Loading drivers/bluetooth/btfm_slim.h +2 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ #define BTFM_SLIM_H #include <linux/slimbus/slimbus.h> #define BTFMSLIM_DBG(fmt, arg...) pr_debug(fmt "\n", ## arg) #define BTFMSLIM_DBG(fmt, arg...) pr_debug("%s: " fmt "\n", __func__, ## arg) #define BTFMSLIM_INFO(fmt, arg...) pr_info("%s: " fmt "\n", __func__, ## arg) #define BTFMSLIM_ERR(fmt, arg...) pr_err("%s: " fmt "\n", __func__, ## arg) Loading Loading @@ -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; Loading drivers/bluetooth/btfm_slim_codec.c +6 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,9 @@ static 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; Loading Loading @@ -332,6 +335,9 @@ static int btfm_slim_dai_get_channel_map(struct snd_soc_dai *dai, *tx_num = 0; *rx_num = num; break; default: BTFMSLIM_ERR("Unsupported DAI %d", dai->id); return -EINVAL; } do { Loading drivers/bluetooth/btfm_slim_wcn3990.c +34 −9 Original line number Diff line number Diff line Loading @@ -69,28 +69,49 @@ int btfm_slim_chrk_hw_init(struct btfmslim *btfmslim) 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) { int ret = 0; uint8_t reg_val = 0; uint8_t port_bit = 0; uint16_t reg; BTFMSLIM_DBG("port(%d) enable(%d)", port_num, enable); if (rxport) { 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) for A2DP", 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; } } /* Port enable */ reg = CHRK_SB_PGD_PORT_RX_CFGN(port_num - 0x10); goto enable_disable_rxport; } /* txport */ if (!enable) 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) { /* txport */ /* Multiple Channel Setting */ 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); Loading @@ -116,10 +137,14 @@ int btfm_slim_chrk_enable_port(struct btfmslim *btfmslim, uint8_t port_num, 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; 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); Loading Loading
drivers/bluetooth/bluetooth-power.c +1 −0 Original line number Diff line number Diff line Loading @@ -708,6 +708,7 @@ static long bt_ioctl(struct file *file, unsigned int cmd, unsigned long arg) } else { BT_PWR_ERR("BT chip state is already :%d no change d\n" , pwr_state); ret = 0; } break; default: Loading
drivers/bluetooth/btfm_slim.h +2 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ #define BTFM_SLIM_H #include <linux/slimbus/slimbus.h> #define BTFMSLIM_DBG(fmt, arg...) pr_debug(fmt "\n", ## arg) #define BTFMSLIM_DBG(fmt, arg...) pr_debug("%s: " fmt "\n", __func__, ## arg) #define BTFMSLIM_INFO(fmt, arg...) pr_info("%s: " fmt "\n", __func__, ## arg) #define BTFMSLIM_ERR(fmt, arg...) pr_err("%s: " fmt "\n", __func__, ## arg) Loading Loading @@ -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; Loading
drivers/bluetooth/btfm_slim_codec.c +6 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,9 @@ static 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; Loading Loading @@ -332,6 +335,9 @@ static int btfm_slim_dai_get_channel_map(struct snd_soc_dai *dai, *tx_num = 0; *rx_num = num; break; default: BTFMSLIM_ERR("Unsupported DAI %d", dai->id); return -EINVAL; } do { Loading
drivers/bluetooth/btfm_slim_wcn3990.c +34 −9 Original line number Diff line number Diff line Loading @@ -69,28 +69,49 @@ int btfm_slim_chrk_hw_init(struct btfmslim *btfmslim) 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) { int ret = 0; uint8_t reg_val = 0; uint8_t port_bit = 0; uint16_t reg; BTFMSLIM_DBG("port(%d) enable(%d)", port_num, enable); if (rxport) { 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) for A2DP", 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; } } /* Port enable */ reg = CHRK_SB_PGD_PORT_RX_CFGN(port_num - 0x10); goto enable_disable_rxport; } /* txport */ if (!enable) 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) { /* txport */ /* Multiple Channel Setting */ 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); Loading @@ -116,10 +137,14 @@ int btfm_slim_chrk_enable_port(struct btfmslim *btfmslim, uint8_t port_num, 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; 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); Loading