|
@@ -15,6 +15,8 @@
|
|
|
#include <linux/module.h>
|
|
|
#include <linux/slab.h>
|
|
|
#include <linux/rpmsg.h>
|
|
|
+#include <linux/of.h>
|
|
|
+
|
|
|
#include <linux/soc/qcom/wcnss_ctrl.h>
|
|
|
#include <linux/platform_device.h>
|
|
|
|
|
@@ -156,6 +158,15 @@ static int btqcomsmd_probe(struct platform_device *pdev)
|
|
|
if (IS_ERR(btq->cmd_channel))
|
|
|
return PTR_ERR(btq->cmd_channel);
|
|
|
|
|
|
+ /* The local-bd-address property is usually injected by the
|
|
|
+ * bootloader which has access to the allocated BD address.
|
|
|
+ */
|
|
|
+ if (!of_property_read_u8_array(pdev->dev.of_node, "local-bd-address",
|
|
|
+ (u8 *)&btq->bdaddr, sizeof(bdaddr_t))) {
|
|
|
+ dev_info(&pdev->dev, "BD address %pMR retrieved from device-tree",
|
|
|
+ &btq->bdaddr);
|
|
|
+ }
|
|
|
+
|
|
|
hdev = hci_alloc_dev();
|
|
|
if (!hdev)
|
|
|
return -ENOMEM;
|