Lines Matching refs:hdev

30 static int rome_patch_ver_req(struct hci_dev *hdev, u32 *rome_version)  in rome_patch_ver_req()  argument
38 BT_DBG("%s: ROME Patch Version Request", hdev->name); in rome_patch_ver_req()
41 skb = __hci_cmd_sync_ev(hdev, EDL_PATCH_CMD_OPCODE, EDL_PATCH_CMD_LEN, in rome_patch_ver_req()
45 BT_ERR("%s: Failed to read version of ROME (%d)", hdev->name, in rome_patch_ver_req()
51 BT_ERR("%s: Version size mismatch len %d", hdev->name, in rome_patch_ver_req()
59 BT_ERR("%s: TLV with no header or no data", hdev->name); in rome_patch_ver_req()
66 BT_ERR("%s: Wrong packet received %d %d", hdev->name, in rome_patch_ver_req()
74 BT_DBG("%s: Product:0x%08x", hdev->name, le32_to_cpu(ver->product_id)); in rome_patch_ver_req()
75 BT_DBG("%s: Patch :0x%08x", hdev->name, le16_to_cpu(ver->patch_ver)); in rome_patch_ver_req()
76 BT_DBG("%s: ROM :0x%08x", hdev->name, le16_to_cpu(ver->rome_ver)); in rome_patch_ver_req()
77 BT_DBG("%s: SOC :0x%08x", hdev->name, le32_to_cpu(ver->soc_id)); in rome_patch_ver_req()
92 static int rome_reset(struct hci_dev *hdev) in rome_reset() argument
97 BT_DBG("%s: ROME HCI_RESET", hdev->name); in rome_reset()
99 skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT); in rome_reset()
102 BT_ERR("%s: Reset failed (%d)", hdev->name, err); in rome_reset()
197 static int rome_tlv_send_segment(struct hci_dev *hdev, int idx, int seg_size, in rome_tlv_send_segment() argument
206 BT_DBG("%s: Download segment #%d size %d", hdev->name, idx, seg_size); in rome_tlv_send_segment()
212 skb = __hci_cmd_sync_ev(hdev, EDL_PATCH_CMD_OPCODE, seg_size + 2, cmd, in rome_tlv_send_segment()
216 BT_ERR("%s: Failed to send TLV segment (%d)", hdev->name, err); in rome_tlv_send_segment()
221 BT_ERR("%s: TLV response size mismatch", hdev->name); in rome_tlv_send_segment()
228 BT_ERR("%s: TLV with no header or no data", hdev->name); in rome_tlv_send_segment()
238 hdev->name, edl->cresp, edl->rtype, tlv_resp->result); in rome_tlv_send_segment()
248 static int rome_tlv_download_request(struct hci_dev *hdev, in rome_tlv_download_request() argument
262 hdev->name, total_segment, remain_size, fw->size); in rome_tlv_download_request()
267 ret = rome_tlv_send_segment(hdev, i, MAX_SIZE_PER_TLV_SEGMENT, in rome_tlv_download_request()
275 ret = rome_tlv_send_segment(hdev, total_segment, remain_size, in rome_tlv_download_request()
284 static int rome_download_firmware(struct hci_dev *hdev, in rome_download_firmware() argument
290 BT_INFO("%s: ROME Downloading %s", hdev->name, config->fwname); in rome_download_firmware()
292 ret = request_firmware(&fw, config->fwname, &hdev->dev); in rome_download_firmware()
294 BT_ERR("%s: Failed to request file: %s (%d)", hdev->name, in rome_download_firmware()
301 ret = rome_tlv_download_request(hdev, fw); in rome_download_firmware()
303 BT_ERR("%s: Failed to download file: %s (%d)", hdev->name, in rome_download_firmware()
312 int qca_set_bdaddr_rome(struct hci_dev *hdev, const bdaddr_t *bdaddr) in qca_set_bdaddr_rome() argument
322 skb = __hci_cmd_sync_ev(hdev, EDL_NVM_ACCESS_OPCODE, sizeof(cmd), cmd, in qca_set_bdaddr_rome()
327 hdev->name, err); in qca_set_bdaddr_rome()
337 int qca_uart_setup_rome(struct hci_dev *hdev, uint8_t baudrate) in qca_uart_setup_rome() argument
343 BT_DBG("%s: ROME setup on UART", hdev->name); in qca_uart_setup_rome()
348 err = rome_patch_ver_req(hdev, &rome_ver); in qca_uart_setup_rome()
350 BT_ERR("%s: Failed to get version 0x%x", hdev->name, err); in qca_uart_setup_rome()
354 BT_INFO("%s: ROME controller version 0x%08x", hdev->name, rome_ver); in qca_uart_setup_rome()
360 err = rome_download_firmware(hdev, &config); in qca_uart_setup_rome()
362 BT_ERR("%s: Failed to download patch (%d)", hdev->name, err); in qca_uart_setup_rome()
370 err = rome_download_firmware(hdev, &config); in qca_uart_setup_rome()
372 BT_ERR("%s: Failed to download NVM (%d)", hdev->name, err); in qca_uart_setup_rome()
377 err = rome_reset(hdev); in qca_uart_setup_rome()
379 BT_ERR("%s: Failed to run HCI_RESET (%d)", hdev->name, err); in qca_uart_setup_rome()
383 BT_INFO("%s: ROME setup on UART is completed", hdev->name); in qca_uart_setup_rome()