Lines Matching refs:fw_info
163 firmware_info *fw_info; member
173 int download_patch(firmware_info *fw_info, int cached);
174 int reset_controller(firmware_info* fw_info);
196 static int download_suspend_patch(firmware_info *fw_info, int cached);
199 static void set_wakeup_device_from_conf(firmware_info *fw_info);
200 int set_wakeup_device(firmware_info* fw_info, uint8_t* wakeup_bdaddr);
1179 firmware_info *fw_info; in btchr_ioctl() local
1197 fw_info = data->fw_info; in btchr_ioctl()
1207 ret = download_patch(fw_info,1); in btchr_ioctl()
1232 reset_controller(fw_info); in btchr_ioctl()
1330 int send_hci_cmd(firmware_info *fw_info) in send_hci_cmd() argument
1337 fw_info->udev, fw_info->pipe_out, in send_hci_cmd()
1339 (void *)(fw_info->send_pkt), in send_hci_cmd()
1340 fw_info->pkt_len, MSG_TO); in send_hci_cmd()
1345 int rcv_hci_evt(firmware_info *fw_info) in rcv_hci_evt() argument
1353 fw_info->udev, fw_info->pipe_in, in rcv_hci_evt()
1354 (void *)(fw_info->rcv_pkt), PKT_LEN, in rcv_hci_evt()
1363 if (CMD_CMP_EVT == fw_info->evt_hdr->evt) { in rcv_hci_evt()
1364 if (fw_info->cmd_hdr->opcode == fw_info->cmd_cmp->opcode) in rcv_hci_evt()
1370 int set_bt_onoff(firmware_info *fw_info, uint8_t onoff) in set_bt_onoff() argument
1377 patch_entry = fw_info->patch_entry; in set_bt_onoff()
1381 fw_info->cmd_hdr->opcode = cpu_to_le16(BTOFF_OPCODE); in set_bt_onoff()
1382 fw_info->cmd_hdr->plen = 1; in set_bt_onoff()
1383 fw_info->pkt_len = CMD_HDR_LEN + 1; in set_bt_onoff()
1384 fw_info->send_pkt[CMD_HDR_LEN] = onoff; in set_bt_onoff()
1386 ret_val = send_hci_cmd(fw_info); in set_bt_onoff()
1393 ret_val = rcv_hci_evt(fw_info); in set_bt_onoff()
1488 int reset_controller(firmware_info* fw_info) in reset_controller() argument
1493 if (!fw_info) in reset_controller()
1496 fw_info->cmd_hdr->opcode = cpu_to_le16(HCI_VENDOR_FORCE_RESET_AND_PATCHABLE); in reset_controller()
1497 fw_info->cmd_hdr->plen = 0; in reset_controller()
1498 fw_info->pkt_len = CMD_HDR_LEN; in reset_controller()
1499 ret_val = send_hci_cmd(fw_info); in reset_controller()
1503 __func__, fw_info->cmd_hdr->opcode, ret_val); in reset_controller()
1521 int check_fw_version(firmware_info* fw_info) in check_fw_version() argument
1527 fw_info->cmd_hdr->opcode = cpu_to_le16(HCI_OP_READ_LOCAL_VERSION); in check_fw_version()
1528 fw_info->cmd_hdr->plen = 0; in check_fw_version()
1529 fw_info->pkt_len = CMD_HDR_LEN; in check_fw_version()
1531 ret_val = send_hci_cmd(fw_info); in check_fw_version()
1534 __func__, fw_info->cmd_hdr->opcode, ret_val); in check_fw_version()
1538 ret_val = rcv_hci_evt(fw_info); in check_fw_version()
1545 patch_entry = fw_info->patch_entry; in check_fw_version()
1546 read_ver_rsp = (struct hci_rp_read_local_version *)(fw_info->rsp_para); in check_fw_version()
1566 int set_wakeup_device(firmware_info* fw_info, uint8_t* wakeup_bdaddr) in set_wakeup_device() argument
1571 if (!fw_info) in set_wakeup_device()
1574 fw_info->cmd_hdr->opcode = cpu_to_le16(HCI_VENDOR_ADD_WAKE_UP_DEVICE); in set_wakeup_device()
1575 fw_info->cmd_hdr->plen = 7; in set_wakeup_device()
1576 memcpy(fw_info->req_para, wakeup_bdaddr, 7); in set_wakeup_device()
1577 fw_info->pkt_len = CMD_HDR_LEN + 7; in set_wakeup_device()
1579 ret_val = send_hci_cmd(fw_info); in set_wakeup_device()
1582 __func__, fw_info->cmd_hdr->opcode, ret_val); in set_wakeup_device()
1586 ret_val = rcv_hci_evt(fw_info); in set_wakeup_device()
1592 ever_evt = (struct rtk_eversion_evt *)(fw_info->rsp_para); in set_wakeup_device()
1601 int reset_channel(firmware_info* fw_info) in reset_channel() argument
1606 if (!fw_info) in reset_channel()
1609 fw_info->cmd_hdr->opcode = cpu_to_le16(HCI_VENDOR_RESET); in reset_channel()
1610 fw_info->cmd_hdr->plen = 0; in reset_channel()
1611 fw_info->pkt_len = CMD_HDR_LEN; in reset_channel()
1613 ret_val = send_hci_cmd(fw_info); in reset_channel()
1616 __func__, fw_info->cmd_hdr->opcode, ret_val); in reset_channel()
1620 ret_val = rcv_hci_evt(fw_info); in reset_channel()
1627 ever_evt = (struct rtk_reset_evt *)(fw_info->rsp_para); in reset_channel()
1638 int read_localversion(firmware_info* fw_info) in read_localversion() argument
1643 if (!fw_info) in read_localversion()
1646 fw_info->cmd_hdr->opcode = cpu_to_le16(HCI_VENDOR_READ_LMP_VERISION); in read_localversion()
1647 fw_info->cmd_hdr->plen = 0; in read_localversion()
1648 fw_info->pkt_len = CMD_HDR_LEN; in read_localversion()
1650 ret_val = send_hci_cmd(fw_info); in read_localversion()
1653 __func__, fw_info->cmd_hdr->opcode, ret_val); in read_localversion()
1657 ret_val = rcv_hci_evt(fw_info); in read_localversion()
1664 ever_evt = (struct rtk_localversion_evt *)(fw_info->rsp_para); in read_localversion()
1679 int get_eversion(firmware_info* fw_info) in get_eversion() argument
1684 if (!fw_info) in get_eversion()
1687 fw_info->cmd_hdr->opcode = cpu_to_le16(HCI_VENDOR_READ_RTK_ROM_VERISION); in get_eversion()
1688 fw_info->cmd_hdr->plen = 0; in get_eversion()
1689 fw_info->pkt_len = CMD_HDR_LEN; in get_eversion()
1691 ret_val = send_hci_cmd(fw_info); in get_eversion()
1694 __func__, fw_info->cmd_hdr->opcode, ret_val); in get_eversion()
1698 ret_val = rcv_hci_evt(fw_info); in get_eversion()
1705 ever_evt = (struct rtk_eversion_evt *)(fw_info->rsp_para); in get_eversion()
1710 fw_info->patch_entry->eversion = 0; in get_eversion()
1712 fw_info->patch_entry->eversion = ever_evt->version; in get_eversion()
1793 int load_firmware(firmware_info *fw_info, uint8_t **buff) in load_firmware() argument
1814 udev = fw_info->udev; in load_firmware()
1815 patch_entry = fw_info->patch_entry; in load_firmware()
1888 ret_val = reset_channel(fw_info); in load_firmware()
1896 ret_val = get_eversion(fw_info); in load_firmware()
1994 static int load_suspend_firmware(firmware_info *fw_info, uint8_t **buff) in load_suspend_firmware() argument
2015 udev = fw_info->udev; in load_suspend_firmware()
2016 patch_entry = fw_info->patch_entry; in load_suspend_firmware()
2057 ret_val = get_eversion(fw_info); in load_suspend_firmware()
2165 int get_firmware(firmware_info *fw_info, int cached) in get_firmware() argument
2167 patch_info *patch_entry = fw_info->patch_entry; in get_firmware()
2173 fw_info->fw_data = kzalloc(patch_entry->fw_len, GFP_KERNEL); in get_firmware()
2174 if (!fw_info->fw_data) in get_firmware()
2176 memcpy(fw_info->fw_data, patch_entry->fw_cache, patch_entry->fw_len); in get_firmware()
2177 fw_info->fw_len = patch_entry->fw_len; in get_firmware()
2179 fw_info->fw_len = load_firmware(fw_info, &fw_info->fw_data); in get_firmware()
2180 if (fw_info->fw_len <= 0) in get_firmware()
2184 fw_info->fw_len = load_firmware(fw_info, &fw_info->fw_data); in get_firmware()
2185 if (fw_info->fw_len <= 0) in get_firmware()
2193 static int get_suspend_firmware(firmware_info *fw_info, int cached) in get_suspend_firmware() argument
2195 patch_info *patch_entry = fw_info->patch_entry; in get_suspend_firmware()
2201 fw_info->fw_data = kzalloc(patch_entry->fw_len, GFP_KERNEL); in get_suspend_firmware()
2202 if (!fw_info->fw_data) in get_suspend_firmware()
2204 memcpy(fw_info->fw_data, patch_entry->fw_cache, patch_entry->fw_len); in get_suspend_firmware()
2205 fw_info->fw_len = patch_entry->fw_len; in get_suspend_firmware()
2207 fw_info->fw_len = load_suspend_firmware(fw_info, &fw_info->fw_data); in get_suspend_firmware()
2208 if (fw_info->fw_len <= 0) in get_suspend_firmware()
2212 fw_info->fw_len = load_suspend_firmware(fw_info, &fw_info->fw_data); in get_suspend_firmware()
2213 if (fw_info->fw_len <= 0) in get_suspend_firmware()
2225 int download_data(firmware_info *fw_info) in download_data() argument
2236 cmd_para = (download_cp *)fw_info->req_para; in download_data()
2237 evt_para = (download_rp *)fw_info->rsp_para; in download_data()
2238 pcur = fw_info->fw_data; in download_data()
2240 frag_num = fw_info->fw_len / PATCH_SEG_MAX + 1; in download_data()
2247 frag_len = fw_info->fw_len % PATCH_SEG_MAX; in download_data()
2250 fw_info->cmd_hdr->opcode = cpu_to_le16(DOWNLOAD_OPCODE); in download_data()
2251 fw_info->cmd_hdr->plen = sizeof(uint8_t) + frag_len; in download_data()
2252 fw_info->pkt_len = pkt_len; in download_data()
2256 ret_val = send_hci_cmd(fw_info); in download_data()
2271 ret_val = rcv_hci_evt(fw_info); in download_data()
2292 ncmd = step = fw_info->cmd_cmp->ncmd; in download_data()
2306 ret_val = rcv_hci_evt(fw_info); in download_data()
2320 return fw_info->fw_len; in download_data()
2323 int download_patch(firmware_info *fw_info, int cached) in download_patch() argument
2329 if (!fw_info || !fw_info->patch_entry) { in download_patch()
2330 RTKBT_ERR("%s: No patch entry exists(fw_info %p)", __func__, fw_info); in download_patch()
2340 ret_val = get_firmware(fw_info, cached); in download_patch()
2358 …RTKBT_DBG("%s: Check fw_info->fw_len:%d max_patch_size %d", __func__, fw_info->fw_len, fw_info->pa… in download_patch()
2359 if (fw_info->fw_len > fw_info->patch_entry->max_patch_size) { in download_patch()
2360 …f fw&config(%08x) larger than max_patch_size 0x%08x", __func__, fw_info->fw_len, fw_info->patch_en… in download_patch()
2365 ret_val = check_fw_version(fw_info); in download_patch()
2369 ret_val = download_data(fw_info); in download_patch()
2374 ret_val = reset_controller(fw_info); in download_patch()
2376 ret_val = download_data(fw_info); in download_patch()
2384 kfree(fw_info->fw_data); in download_patch()
2385 fw_info->fw_data = NULL; in download_patch()
2392 static int download_suspend_patch(firmware_info *fw_info, int cached) in download_suspend_patch() argument
2398 if (!fw_info || !fw_info->patch_entry) { in download_suspend_patch()
2399 RTKBT_ERR("%s: No patch entry exists(fw_info %p)", __func__, fw_info); in download_suspend_patch()
2405 RTKBT_DBG("%s:Check RTK_PATCH_LENGTH fw_info->fw_len:%d", __func__,fw_info->fw_len); in download_suspend_patch()
2406 if (fw_info->fw_len > RTK_PATCH_LENGTH_MAX || fw_info->fw_len == 0) { in download_suspend_patch()
2407 …%s: Total length of fw&config larger than allowed 24K or no fw len:%d", __func__, fw_info->fw_len); in download_suspend_patch()
2412 ret_val = check_fw_version(fw_info); in download_suspend_patch()
2416 ret_val = download_data(fw_info); in download_suspend_patch()
2421 ret_val = reset_controller(fw_info); in download_suspend_patch()
2423 ret_val = download_data(fw_info); in download_suspend_patch()
2431 kfree(fw_info->fw_data); in download_suspend_patch()
2432 fw_info->fw_data = NULL; in download_suspend_patch()
2438 static void suspend_firmware_info_init(firmware_info *fw_info) in suspend_firmware_info_init() argument
2441 if(!fw_info) in suspend_firmware_info_init()
2444 fw_info_4_suspend= kzalloc(sizeof(*fw_info), GFP_KERNEL); in suspend_firmware_info_init()
2461 fw_info_4_suspend->patch_entry = get_suspend_fw_table_entry(fw_info->udev); in suspend_firmware_info_init()
2469 fw_info_4_suspend->intf = fw_info->intf; in suspend_firmware_info_init()
2470 fw_info_4_suspend->udev = fw_info->udev; in suspend_firmware_info_init()
2476 fw_info_4_suspend->pipe_in = fw_info->pipe_in; in suspend_firmware_info_init()
2477 fw_info_4_suspend->pipe_out = fw_info->pipe_out; in suspend_firmware_info_init()
2488 static void set_wakeup_device_from_conf(firmware_info *fw_info) in set_wakeup_device_from_conf() argument
2512 set_wakeup_device(fw_info, paired_wakeup_bdaddr); in set_wakeup_device_from_conf()
2527 firmware_info *fw_info; in firmware_info_init() local
2531 fw_info = kzalloc(sizeof(*fw_info), GFP_KERNEL); in firmware_info_init()
2532 if (!fw_info) in firmware_info_init()
2535 fw_info->send_pkt = kzalloc(PKT_LEN, GFP_KERNEL); in firmware_info_init()
2536 if (!fw_info->send_pkt) { in firmware_info_init()
2537 kfree(fw_info); in firmware_info_init()
2541 fw_info->rcv_pkt = kzalloc(PKT_LEN, GFP_KERNEL); in firmware_info_init()
2542 if (!fw_info->rcv_pkt) { in firmware_info_init()
2543 kfree(fw_info->send_pkt); in firmware_info_init()
2544 kfree(fw_info); in firmware_info_init()
2548 fw_info->patch_entry = get_fw_table_entry(udev); in firmware_info_init()
2549 if (!fw_info->patch_entry) { in firmware_info_init()
2550 kfree(fw_info->rcv_pkt); in firmware_info_init()
2551 kfree(fw_info->send_pkt); in firmware_info_init()
2552 kfree(fw_info); in firmware_info_init()
2556 fw_info->intf = intf; in firmware_info_init()
2557 fw_info->udev = udev; in firmware_info_init()
2558 fw_info->pipe_in = usb_rcvintpipe(fw_info->udev, INTR_EP); in firmware_info_init()
2559 fw_info->pipe_out = usb_sndctrlpipe(fw_info->udev, CTRL_EP); in firmware_info_init()
2560 fw_info->cmd_hdr = (struct hci_command_hdr *)(fw_info->send_pkt); in firmware_info_init()
2561 fw_info->evt_hdr = (struct hci_event_hdr *)(fw_info->rcv_pkt); in firmware_info_init()
2562 fw_info->cmd_cmp = (struct hci_ev_cmd_complete *)(fw_info->rcv_pkt + EVT_HDR_LEN); in firmware_info_init()
2563 fw_info->req_para = fw_info->send_pkt + CMD_HDR_LEN; in firmware_info_init()
2564 fw_info->rsp_para = fw_info->rcv_pkt + EVT_HDR_LEN + CMD_CMP_LEN; in firmware_info_init()
2567 suspend_firmware_info_init(fw_info); in firmware_info_init()
2583 return fw_info; in firmware_info_init()
2588 firmware_info *fw_info; in firmware_info_destroy() local
2595 fw_info = data->fw_info; in firmware_info_destroy()
2596 if (!fw_info) in firmware_info_destroy()
2607 kfree(fw_info->rcv_pkt); in firmware_info_destroy()
2608 kfree(fw_info->send_pkt); in firmware_info_destroy()
2609 kfree(fw_info); in firmware_info_destroy()
3629 firmware_info *fw_info;
3635 fw_info = data->fw_info;
3636 patch_entry = fw_info->patch_entry;
3638 patch_entry->fw_len = load_firmware(fw_info, &patch_entry->fw_cache);
3648 firmware_info *fw_info;
3654 fw_info = data->fw_info;
3655 patch_entry = fw_info->patch_entry;
3668 firmware_info *fw_info; in bt_pm_notify() local
3675 fw_info = data->fw_info; in bt_pm_notify()
3676 patch_entry = fw_info->patch_entry; in bt_pm_notify()
3677 udev = fw_info->udev; in bt_pm_notify()
3683 patch_entry->fw_len = load_firmware(fw_info, &patch_entry->fw_cache); in bt_pm_notify()
3693 fw_info->intf->needs_binding = 1; in bt_pm_notify()
3728 firmware_info *fw_info; in bt_reboot_notify() local
3735 fw_info = data->fw_info; in bt_reboot_notify()
3736 patch_entry = fw_info->patch_entry; in bt_reboot_notify()
3737 udev = fw_info->udev; in bt_reboot_notify()
4113 firmware_info *fw_info; in btusb_probe() local
4176 fw_info = firmware_info_init(intf); in btusb_probe()
4177 if (fw_info) in btusb_probe()
4178 data->fw_info = fw_info; in btusb_probe()
4357 firmware_info *fw_info = data->fw_info; in btusb_suspend() local
4366 set_bt_onoff(fw_info, 1); in btusb_suspend()
4431 firmware_info *fw_info = data->fw_info; in btusb_resume() local
4443 err = check_fw_version(fw_info); in btusb_resume()