Return-Path: From: Bing Zhao To: CC: Marcel Holtmann , Gustavo Padovan , Johan Hedberg , Amitkumar Karwar , Avinash Patil , Chin-Ran Lo , Xinming Hu , Bing Zhao Subject: [PATCH 2/2] Bluetooth: btmrvl: add public address configuration support Date: Wed, 16 Jul 2014 12:21:26 -0700 Message-ID: <1405538486-23533-2-git-send-email-bzhao@marvell.com> In-Reply-To: <1405538486-23533-1-git-send-email-bzhao@marvell.com> References: <1405538486-23533-1-git-send-email-bzhao@marvell.com> MIME-Version: 1.0 Content-Type: text/plain List-ID: From: Amitkumar Karwar .set_bdaddr handler is implemented for public address configuration. Signed-off-by: Amitkumar Karwar Signed-off-by: Bing Zhao --- drivers/bluetooth/btmrvl_drv.h | 1 + drivers/bluetooth/btmrvl_main.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/drivers/bluetooth/btmrvl_drv.h b/drivers/bluetooth/btmrvl_drv.h index caf6841..38ad662 100644 --- a/drivers/bluetooth/btmrvl_drv.h +++ b/drivers/bluetooth/btmrvl_drv.h @@ -91,6 +91,7 @@ struct btmrvl_private { /* Vendor specific Bluetooth commands */ #define BT_CMD_PSCAN_WIN_REPORT_ENABLE 0xFC03 +#define BT_CMD_SET_BDADDR 0xFC22 #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 cc65fd2..1a325fe 100644 --- a/drivers/bluetooth/btmrvl_main.c +++ b/drivers/bluetooth/btmrvl_main.c @@ -539,6 +539,20 @@ static int btmrvl_setup(struct hci_dev *hdev) return 0; } +static int btmrvl_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr) +{ + struct btmrvl_private *priv = hci_get_drvdata(hdev); + long ret; + u8 buf[8]; + + buf[0] = MRVL_VENDOR_PKT; + buf[1] = sizeof(bdaddr_t); + bacpy((bdaddr_t *)&buf[2], bdaddr); + ret = btmrvl_send_sync_cmd(priv, BT_CMD_SET_BDADDR, buf, sizeof(buf)); + + return 0; +} + /* * This function handles the event generated by firmware, rx data * received from firmware, and tx data sent from kernel. @@ -632,6 +646,7 @@ int btmrvl_register_hdev(struct btmrvl_private *priv) hdev->flush = btmrvl_flush; hdev->send = btmrvl_send_frame; hdev->setup = btmrvl_setup; + hdev->set_bdaddr = btmrvl_set_bdaddr; hdev->dev_type = priv->btmrvl_dev.dev_type; -- 1.8.2.3