RE: [PATCH] Bluetooth: btmrvl: indicate pscan scheduling instant in a debug event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Marcel,

Could you please review this patch when you get the chance?

Thanks,
Bing

> A vendor specific command is sent to firmware during
> initialization to enable this feature. This command is for
> SD8897 only.
> 
> Signed-off-by: Bing Zhao <bzhao@xxxxxxxxxxx>
> ---
>  drivers/bluetooth/btmrvl_drv.h  |  1 +
>  drivers/bluetooth/btmrvl_main.c | 19 +++++++++++++++++++
>  drivers/bluetooth/btmrvl_sdio.c |  5 +++++
>  drivers/bluetooth/btmrvl_sdio.h |  2 ++
>  4 files changed, 27 insertions(+)
> 
> diff --git a/drivers/bluetooth/btmrvl_drv.h b/drivers/bluetooth/btmrvl_drv.h
> index 199ff49..16d136f 100644
> --- a/drivers/bluetooth/btmrvl_drv.h
> +++ b/drivers/bluetooth/btmrvl_drv.h
> @@ -89,6 +89,7 @@ struct btmrvl_private {
>  #define MRVL_VENDOR_PKT			0xFE
> 
>  /* Vendor specific Bluetooth commands */
> +#define BT_CMD_PSCAN_WIN_REPORT_ENABLE	0xFC03
>  #define BT_CMD_AUTO_SLEEP_MODE		0xFC23
>  #define BT_CMD_HOST_SLEEP_CONFIG	0xFC59
>  #define BT_CMD_HOST_SLEEP_ENABLE	0xFC5A
> diff --git a/drivers/bluetooth/btmrvl_main.c b/drivers/bluetooth/btmrvl_main.c
> index 5c0b944..4f05e39 100644
> --- a/drivers/bluetooth/btmrvl_main.c
> +++ b/drivers/bluetooth/btmrvl_main.c
> @@ -214,6 +214,23 @@ int btmrvl_send_module_cfg_cmd(struct btmrvl_private *priv, int subcmd)
>  }
>  EXPORT_SYMBOL_GPL(btmrvl_send_module_cfg_cmd);
> 
> +int btmrvl_pscan_window_reporting(struct btmrvl_private *priv, u8 subcmd)
> +{
> +	struct btmrvl_sdio_card *card = priv->btmrvl_dev.card;
> +	int ret;
> +
> +	if (!card->support_pscan_win_report)
> +		return 0;
> +
> +	ret = btmrvl_send_sync_cmd(priv, BT_CMD_PSCAN_WIN_REPORT_ENABLE,
> +				   &subcmd, 1);
> +	if (ret)
> +		BT_ERR("PSCAN_WIN_REPORT_ENABLE command failed: %#x", ret);
> +
> +	return ret;
> +}
> +EXPORT_SYMBOL_GPL(btmrvl_pscan_window_reporting);
> +
>  int btmrvl_send_hscfg_cmd(struct btmrvl_private *priv)
>  {
>  	int ret;
> @@ -489,6 +506,8 @@ static int btmrvl_setup(struct hci_dev *hdev)
> 
>  	btmrvl_cal_data_dt(priv);
> 
> +	btmrvl_pscan_window_reporting(priv, 0x01);
> +
>  	priv->btmrvl_dev.psmode = 1;
>  	btmrvl_enable_ps(priv);
> 
> diff --git a/drivers/bluetooth/btmrvl_sdio.c b/drivers/bluetooth/btmrvl_sdio.c
> index 9dedca5..efff064 100644
> --- a/drivers/bluetooth/btmrvl_sdio.c
> +++ b/drivers/bluetooth/btmrvl_sdio.c
> @@ -108,6 +108,7 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8688 = {
>  	.helper		= "mrvl/sd8688_helper.bin",
>  	.firmware	= "mrvl/sd8688.bin",
>  	.reg		= &btmrvl_reg_8688,
> +	.support_pscan_win_report = false,
>  	.sd_blksz_fw_dl	= 64,
>  };
> 
> @@ -115,6 +116,7 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8787 = {
>  	.helper		= NULL,
>  	.firmware	= "mrvl/sd8787_uapsta.bin",
>  	.reg		= &btmrvl_reg_87xx,
> +	.support_pscan_win_report = false,
>  	.sd_blksz_fw_dl	= 256,
>  };
> 
> @@ -122,6 +124,7 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8797 = {
>  	.helper		= NULL,
>  	.firmware	= "mrvl/sd8797_uapsta.bin",
>  	.reg		= &btmrvl_reg_87xx,
> +	.support_pscan_win_report = false,
>  	.sd_blksz_fw_dl	= 256,
>  };
> 
> @@ -129,6 +132,7 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8897 = {
>  	.helper		= NULL,
>  	.firmware	= "mrvl/sd8897_uapsta.bin",
>  	.reg		= &btmrvl_reg_88xx,
> +	.support_pscan_win_report = true,
>  	.sd_blksz_fw_dl	= 256,
>  };
> 
> @@ -1067,6 +1071,7 @@ static int btmrvl_sdio_probe(struct sdio_func *func,
>  		card->firmware = data->firmware;
>  		card->reg = data->reg;
>  		card->sd_blksz_fw_dl = data->sd_blksz_fw_dl;
> +		card->support_pscan_win_report = data->support_pscan_win_report;
>  	}
> 
>  	if (btmrvl_sdio_register_dev(card) < 0) {
> diff --git a/drivers/bluetooth/btmrvl_sdio.h b/drivers/bluetooth/btmrvl_sdio.h
> index d4dd3b0..453559f 100644
> --- a/drivers/bluetooth/btmrvl_sdio.h
> +++ b/drivers/bluetooth/btmrvl_sdio.h
> @@ -89,6 +89,7 @@ struct btmrvl_sdio_card {
>  	const char *helper;
>  	const char *firmware;
>  	const struct btmrvl_sdio_card_reg *reg;
> +	bool support_pscan_win_report;
>  	u16 sd_blksz_fw_dl;
>  	u8 rx_unit;
>  	struct btmrvl_private *priv;
> @@ -98,6 +99,7 @@ struct btmrvl_sdio_device {
>  	const char *helper;
>  	const char *firmware;
>  	const struct btmrvl_sdio_card_reg *reg;
> +	const bool support_pscan_win_report;
>  	u16 sd_blksz_fw_dl;
>  };
> 
> --
> 1.8.0

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux