Lines Matching refs:btrtl_dev

288 				struct btrtl_device_info *btrtl_dev,  in rtlbt_parse_firmware()  argument
321 if (btrtl_dev->fw_len < min_size) in rtlbt_parse_firmware()
324 fwptr = btrtl_dev->fw_data + btrtl_dev->fw_len - sizeof(extension_sig); in rtlbt_parse_firmware()
336 while (fwptr >= btrtl_dev->fw_data + (sizeof(*epatch_info) + 3)) { in rtlbt_parse_firmware()
367 btrtl_dev->project_id = project_id; in rtlbt_parse_firmware()
377 if (btrtl_dev->ic_info->lmp_subver != in rtlbt_parse_firmware()
381 btrtl_dev->ic_info->lmp_subver); in rtlbt_parse_firmware()
385 epatch_info = (struct rtl_epatch_header *)btrtl_dev->fw_data; in rtlbt_parse_firmware()
402 if (btrtl_dev->fw_len < min_size) in rtlbt_parse_firmware()
405 chip_id_base = btrtl_dev->fw_data + sizeof(struct rtl_epatch_header); in rtlbt_parse_firmware()
411 if (chip_id == btrtl_dev->rom_version + 1) { in rtlbt_parse_firmware()
422 btrtl_dev->rom_version); in rtlbt_parse_firmware()
428 if (btrtl_dev->fw_len < min_size) in rtlbt_parse_firmware()
439 memcpy(buf, btrtl_dev->fw_data + patch_offset, patch_length - 4); in rtlbt_parse_firmware()
537 struct btrtl_device_info *btrtl_dev) in btrtl_setup_rtl8723a() argument
539 if (btrtl_dev->fw_len < 8) in btrtl_setup_rtl8723a()
545 if (!memcmp(btrtl_dev->fw_data, RTL_EPATCH_SIGNATURE, 8)) { in btrtl_setup_rtl8723a()
550 return rtl_download_firmware(hdev, btrtl_dev->fw_data, in btrtl_setup_rtl8723a()
551 btrtl_dev->fw_len); in btrtl_setup_rtl8723a()
555 struct btrtl_device_info *btrtl_dev) in btrtl_setup_rtl8723b() argument
561 ret = rtlbt_parse_firmware(hdev, btrtl_dev, &fw_data); in btrtl_setup_rtl8723b()
565 if (btrtl_dev->cfg_len > 0) { in btrtl_setup_rtl8723b()
566 tbuff = kvzalloc(ret + btrtl_dev->cfg_len, GFP_KERNEL); in btrtl_setup_rtl8723b()
575 memcpy(tbuff + ret, btrtl_dev->cfg_data, btrtl_dev->cfg_len); in btrtl_setup_rtl8723b()
576 ret += btrtl_dev->cfg_len; in btrtl_setup_rtl8723b()
581 rtl_dev_info(hdev, "cfg_sz %d, total sz %d", btrtl_dev->cfg_len, ret); in btrtl_setup_rtl8723b()
590 void btrtl_free(struct btrtl_device_info *btrtl_dev) in btrtl_free() argument
592 kvfree(btrtl_dev->fw_data); in btrtl_free()
593 kvfree(btrtl_dev->cfg_data); in btrtl_free()
594 kfree(btrtl_dev); in btrtl_free()
601 struct btrtl_device_info *btrtl_dev; in btrtl_initialize() local
611 btrtl_dev = kzalloc(sizeof(*btrtl_dev), GFP_KERNEL); in btrtl_initialize()
612 if (!btrtl_dev) { in btrtl_initialize()
632 btrtl_dev->ic_info = btrtl_match_ic(lmp_subver, hci_rev, hci_ver, in btrtl_initialize()
635 if (!btrtl_dev->ic_info) in btrtl_initialize()
636 btrtl_dev->drop_fw = true; in btrtl_initialize()
638 if (btrtl_dev->drop_fw) { in btrtl_initialize()
675 btrtl_dev->ic_info = btrtl_match_ic(lmp_subver, hci_rev, hci_ver, in btrtl_initialize()
681 if (!btrtl_dev->ic_info) { in btrtl_initialize()
684 return btrtl_dev; in btrtl_initialize()
687 if (btrtl_dev->ic_info->has_rom_version) { in btrtl_initialize()
688 ret = rtl_read_rom_version(hdev, &btrtl_dev->rom_version); in btrtl_initialize()
693 btrtl_dev->fw_len = rtl_load_file(hdev, btrtl_dev->ic_info->fw_name, in btrtl_initialize()
694 &btrtl_dev->fw_data); in btrtl_initialize()
695 if (btrtl_dev->fw_len < 0) { in btrtl_initialize()
697 btrtl_dev->ic_info->fw_name); in btrtl_initialize()
698 ret = btrtl_dev->fw_len; in btrtl_initialize()
702 if (btrtl_dev->ic_info->cfg_name) { in btrtl_initialize()
705 btrtl_dev->ic_info->cfg_name, postfix); in btrtl_initialize()
708 btrtl_dev->ic_info->cfg_name); in btrtl_initialize()
710 btrtl_dev->cfg_len = rtl_load_file(hdev, cfg_name, in btrtl_initialize()
711 &btrtl_dev->cfg_data); in btrtl_initialize()
712 if (btrtl_dev->ic_info->config_needed && in btrtl_initialize()
713 btrtl_dev->cfg_len <= 0) { in btrtl_initialize()
715 btrtl_dev->ic_info->cfg_name); in btrtl_initialize()
716 ret = btrtl_dev->cfg_len; in btrtl_initialize()
724 if (btrtl_dev->ic_info->has_msft_ext) in btrtl_initialize()
727 return btrtl_dev; in btrtl_initialize()
730 btrtl_free(btrtl_dev); in btrtl_initialize()
737 struct btrtl_device_info *btrtl_dev) in btrtl_download_firmware() argument
745 if (!btrtl_dev->ic_info) { in btrtl_download_firmware()
750 switch (btrtl_dev->ic_info->lmp_subver) { in btrtl_download_firmware()
752 return btrtl_setup_rtl8723a(hdev, btrtl_dev); in btrtl_download_firmware()
758 return btrtl_setup_rtl8723b(hdev, btrtl_dev); in btrtl_download_firmware()
766 void btrtl_set_quirks(struct hci_dev *hdev, struct btrtl_device_info *btrtl_dev) in btrtl_set_quirks() argument
777 switch (btrtl_dev->project_id) { in btrtl_set_quirks()
796 struct btrtl_device_info *btrtl_dev; in btrtl_setup_realtek() local
799 btrtl_dev = btrtl_initialize(hdev, NULL); in btrtl_setup_realtek()
800 if (IS_ERR(btrtl_dev)) in btrtl_setup_realtek()
801 return PTR_ERR(btrtl_dev); in btrtl_setup_realtek()
803 ret = btrtl_download_firmware(hdev, btrtl_dev); in btrtl_setup_realtek()
805 btrtl_set_quirks(hdev, btrtl_dev); in btrtl_setup_realtek()
807 btrtl_free(btrtl_dev); in btrtl_setup_realtek()
870 struct btrtl_device_info *btrtl_dev, in btrtl_get_uart_settings() argument
879 total_data_len = btrtl_dev->cfg_len - sizeof(*config); in btrtl_get_uart_settings()
885 config = (struct rtl_vendor_config *)btrtl_dev->cfg_data; in btrtl_get_uart_settings()