| .. | .. |
|---|
| 122 | 122 | return 0; |
|---|
| 123 | 123 | } |
|---|
| 124 | 124 | |
|---|
| 125 | +static int btqcomsmd_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr) |
|---|
| 126 | +{ |
|---|
| 127 | + int ret; |
|---|
| 128 | + |
|---|
| 129 | + ret = qca_set_bdaddr_rome(hdev, bdaddr); |
|---|
| 130 | + if (ret) |
|---|
| 131 | + return ret; |
|---|
| 132 | + |
|---|
| 133 | + /* The firmware stops responding for a while after setting the bdaddr, |
|---|
| 134 | + * causing timeouts for subsequent commands. Sleep a bit to avoid this. |
|---|
| 135 | + */ |
|---|
| 136 | + usleep_range(1000, 10000); |
|---|
| 137 | + return 0; |
|---|
| 138 | +} |
|---|
| 139 | + |
|---|
| 125 | 140 | static int btqcomsmd_probe(struct platform_device *pdev) |
|---|
| 126 | 141 | { |
|---|
| 127 | 142 | struct btqcomsmd *btq; |
|---|
| .. | .. |
|---|
| 162 | 177 | hdev->close = btqcomsmd_close; |
|---|
| 163 | 178 | hdev->send = btqcomsmd_send; |
|---|
| 164 | 179 | hdev->setup = btqcomsmd_setup; |
|---|
| 165 | | - hdev->set_bdaddr = qca_set_bdaddr_rome; |
|---|
| 180 | + hdev->set_bdaddr = btqcomsmd_set_bdaddr; |
|---|
| 166 | 181 | |
|---|
| 167 | 182 | ret = hci_register_dev(hdev); |
|---|
| 168 | 183 | if (ret < 0) |
|---|