Lines Matching refs:nxpdev

320 	struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev);  in nxp_drv_send_cmd()  local
321 struct ps_data *psdata = &nxpdev->psdata; in nxp_drv_send_cmd()
334 static void btnxpuart_tx_wakeup(struct btnxpuart_dev *nxpdev) in btnxpuart_tx_wakeup() argument
336 if (schedule_work(&nxpdev->tx_work)) in btnxpuart_tx_wakeup()
337 set_bit(BTNXPUART_TX_STATE_ACTIVE, &nxpdev->tx_state); in btnxpuart_tx_wakeup()
341 static void ps_start_timer(struct btnxpuart_dev *nxpdev) in ps_start_timer() argument
343 struct ps_data *psdata = &nxpdev->psdata; in ps_start_timer()
355 static void ps_cancel_timer(struct btnxpuart_dev *nxpdev) in ps_cancel_timer() argument
357 struct ps_data *psdata = &nxpdev->psdata; in ps_cancel_timer()
365 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in ps_control() local
366 struct ps_data *psdata = &nxpdev->psdata; in ps_control()
370 !test_bit(BTNXPUART_SERDEV_OPEN, &nxpdev->tx_state)) in ps_control()
377 status = serdev_device_set_tiocm(nxpdev->serdev, TIOCM_DTR, 0); in ps_control()
379 status = serdev_device_set_tiocm(nxpdev->serdev, 0, TIOCM_DTR); in ps_control()
384 status = serdev_device_break_ctl(nxpdev->serdev, 0); in ps_control()
386 status = serdev_device_break_ctl(nxpdev->serdev, -1); in ps_control()
397 btnxpuart_tx_wakeup(nxpdev); in ps_control()
414 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in ps_timeout_func() local
416 if (test_bit(BTNXPUART_TX_STATE_ACTIVE, &nxpdev->tx_state)) { in ps_timeout_func()
417 ps_start_timer(nxpdev); in ps_timeout_func()
426 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in ps_setup() local
427 struct ps_data *psdata = &nxpdev->psdata; in ps_setup()
435 static bool ps_wakeup(struct btnxpuart_dev *nxpdev) in ps_wakeup() argument
437 struct ps_data *psdata = &nxpdev->psdata; in ps_wakeup()
452 static void ps_cleanup(struct btnxpuart_dev *nxpdev) in ps_cleanup() argument
454 struct ps_data *psdata = &nxpdev->psdata; in ps_cleanup()
464 ps_cancel_timer(nxpdev); in ps_cleanup()
471 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in send_ps_cmd() local
472 struct ps_data *psdata = &nxpdev->psdata; in send_ps_cmd()
496 ps_start_timer(nxpdev); in send_ps_cmd()
498 ps_wakeup(nxpdev); in send_ps_cmd()
509 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in send_wakeup_method_cmd() local
510 struct ps_data *psdata = &nxpdev->psdata; in send_wakeup_method_cmd()
550 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in ps_init() local
551 struct ps_data *psdata = &nxpdev->psdata; in ps_init()
553 serdev_device_set_tiocm(nxpdev->serdev, 0, TIOCM_RTS); in ps_init()
555 serdev_device_set_tiocm(nxpdev->serdev, TIOCM_RTS, 0); in ps_init()
567 serdev_device_set_tiocm(nxpdev->serdev, 0, TIOCM_DTR); in ps_init()
568 serdev_device_set_tiocm(nxpdev->serdev, TIOCM_DTR, 0); in ps_init()
573 serdev_device_break_ctl(nxpdev->serdev, -1); in ps_init()
575 serdev_device_break_ctl(nxpdev->serdev, 0); in ps_init()
592 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_download_firmware() local
595 nxpdev->fw_dnld_v1_offset = 0; in nxp_download_firmware()
596 nxpdev->fw_v1_sent_bytes = 0; in nxp_download_firmware()
597 nxpdev->fw_v1_expected_len = HDR_LEN; in nxp_download_firmware()
598 nxpdev->boot_reg_offset = 0; in nxp_download_firmware()
599 nxpdev->fw_dnld_v3_offset = 0; in nxp_download_firmware()
600 nxpdev->fw_v3_offset_correction = 0; in nxp_download_firmware()
601 nxpdev->baudrate_changed = false; in nxp_download_firmware()
602 nxpdev->timeout_changed = false; in nxp_download_firmware()
603 nxpdev->helper_downloaded = false; in nxp_download_firmware()
605 serdev_device_set_baudrate(nxpdev->serdev, HCI_NXP_PRI_BAUDRATE); in nxp_download_firmware()
606 serdev_device_set_flow_control(nxpdev->serdev, false); in nxp_download_firmware()
607 nxpdev->current_baudrate = HCI_NXP_PRI_BAUDRATE; in nxp_download_firmware()
610 err = wait_event_interruptible_timeout(nxpdev->fw_dnld_done_wait_q, in nxp_download_firmware()
612 &nxpdev->tx_state), in nxp_download_firmware()
615 release_firmware(nxpdev->fw); in nxp_download_firmware()
616 memset(nxpdev->fw_name, 0, sizeof(nxpdev->fw_name)); in nxp_download_firmware()
620 nxpdev->fw_dnld_v1_offset ? in nxp_download_firmware()
621 nxpdev->fw_dnld_v1_offset : in nxp_download_firmware()
622 nxpdev->fw_dnld_v3_offset); in nxp_download_firmware()
625 if (test_bit(BTNXPUART_FW_DOWNLOAD_ABORT, &nxpdev->tx_state)) { in nxp_download_firmware()
630 serdev_device_set_flow_control(nxpdev->serdev, true); in nxp_download_firmware()
640 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_send_ack() local
649 serdev_device_write_buf(nxpdev->serdev, ack_nak, len); in nxp_send_ack()
654 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_fw_change_baudrate() local
657 u32 clkdivaddr = CLKDIVADDR - nxpdev->boot_reg_offset; in nxp_fw_change_baudrate()
658 u32 uartdivaddr = UARTDIVADDR - nxpdev->boot_reg_offset; in nxp_fw_change_baudrate()
659 u32 uartmcraddr = UARTMCRADDR - nxpdev->boot_reg_offset; in nxp_fw_change_baudrate()
660 u32 uartreinitaddr = UARTREINITADDR - nxpdev->boot_reg_offset; in nxp_fw_change_baudrate()
661 u32 uarticraddr = UARTICRADDR - nxpdev->boot_reg_offset; in nxp_fw_change_baudrate()
662 u32 uartfcraddr = UARTFCRADDR - nxpdev->boot_reg_offset; in nxp_fw_change_baudrate()
672 serdev_device_write_buf(nxpdev->serdev, (u8 *)&nxp_cmd5, sizeof(nxp_cmd5)); in nxp_fw_change_baudrate()
673 nxpdev->fw_v3_offset_correction += req_len; in nxp_fw_change_baudrate()
691 serdev_device_write_buf(nxpdev->serdev, (u8 *)&uart_config, sizeof(uart_config)); in nxp_fw_change_baudrate()
692 serdev_device_wait_until_sent(nxpdev->serdev, 0); in nxp_fw_change_baudrate()
693 nxpdev->fw_v3_offset_correction += req_len; in nxp_fw_change_baudrate()
701 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_fw_change_timeout() local
713 serdev_device_write_buf(nxpdev->serdev, (u8 *)&nxp_cmd7, sizeof(nxp_cmd7)); in nxp_fw_change_timeout()
714 serdev_device_wait_until_sent(nxpdev->serdev, 0); in nxp_fw_change_timeout()
715 nxpdev->fw_v3_offset_correction += req_len; in nxp_fw_change_timeout()
726 static bool is_fw_downloading(struct btnxpuart_dev *nxpdev) in is_fw_downloading() argument
728 return test_bit(BTNXPUART_FW_DOWNLOADING, &nxpdev->tx_state); in is_fw_downloading()
731 static bool process_boot_signature(struct btnxpuart_dev *nxpdev) in process_boot_signature() argument
733 if (test_bit(BTNXPUART_CHECK_BOOT_SIGNATURE, &nxpdev->tx_state)) { in process_boot_signature()
734 clear_bit(BTNXPUART_CHECK_BOOT_SIGNATURE, &nxpdev->tx_state); in process_boot_signature()
735 wake_up_interruptible(&nxpdev->check_boot_sign_wait_q); in process_boot_signature()
738 return is_fw_downloading(nxpdev); in process_boot_signature()
744 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_request_firmware() local
751 if (!strlen(nxpdev->fw_name)) { in nxp_request_firmware()
753 !device_property_read_string(&nxpdev->serdev->dev, in nxp_request_firmware()
757 snprintf(nxpdev->fw_name, MAX_FW_FILE_NAME_LEN, "nxp/%s", fw_name); in nxp_request_firmware()
758 err = request_firmware_direct(&nxpdev->fw, nxpdev->fw_name, &hdev->dev); in nxp_request_firmware()
760 snprintf(nxpdev->fw_name, MAX_FW_FILE_NAME_LEN, "nxp/%s", fw_name_old); in nxp_request_firmware()
761 err = request_firmware_direct(&nxpdev->fw, nxpdev->fw_name, &hdev->dev); in nxp_request_firmware()
764 bt_dev_info(hdev, "Request Firmware: %s", nxpdev->fw_name); in nxp_request_firmware()
766 bt_dev_err(hdev, "Firmware file %s not found", nxpdev->fw_name); in nxp_request_firmware()
767 clear_bit(BTNXPUART_FW_DOWNLOADING, &nxpdev->tx_state); in nxp_request_firmware()
776 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_recv_chip_ver_v1() local
785 if (chip_id == 0xffff && nxpdev->fw_dnld_v1_offset) { in nxp_recv_chip_ver_v1()
786 nxpdev->fw_dnld_v1_offset = 0; in nxp_recv_chip_ver_v1()
787 nxpdev->fw_v1_sent_bytes = 0; in nxp_recv_chip_ver_v1()
788 nxpdev->fw_v1_expected_len = HDR_LEN; in nxp_recv_chip_ver_v1()
789 release_firmware(nxpdev->fw); in nxp_recv_chip_ver_v1()
790 memset(nxpdev->fw_name, 0, sizeof(nxpdev->fw_name)); in nxp_recv_chip_ver_v1()
801 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_recv_fw_req_v1() local
802 struct btnxpuart_data *nxp_data = nxpdev->nxp_data; in nxp_recv_fw_req_v1()
806 if (!process_boot_signature(nxpdev)) in nxp_recv_fw_req_v1()
824 if (!nxpdev->timeout_changed) { in nxp_recv_fw_req_v1()
825 nxpdev->timeout_changed = nxp_fw_change_timeout(hdev, in nxp_recv_fw_req_v1()
829 if (!nxpdev->baudrate_changed) { in nxp_recv_fw_req_v1()
830 nxpdev->baudrate_changed = nxp_fw_change_baudrate(hdev, in nxp_recv_fw_req_v1()
832 if (nxpdev->baudrate_changed) { in nxp_recv_fw_req_v1()
833 serdev_device_set_baudrate(nxpdev->serdev, in nxp_recv_fw_req_v1()
835 serdev_device_set_flow_control(nxpdev->serdev, true); in nxp_recv_fw_req_v1()
836 nxpdev->current_baudrate = HCI_NXP_SEC_BAUDRATE; in nxp_recv_fw_req_v1()
842 if (!nxp_data->helper_fw_name || nxpdev->helper_downloaded) { in nxp_recv_fw_req_v1()
845 } else if (nxp_data->helper_fw_name && !nxpdev->helper_downloaded) { in nxp_recv_fw_req_v1()
852 nxpdev->fw->size); in nxp_recv_fw_req_v1()
853 if (nxp_data->helper_fw_name && !nxpdev->helper_downloaded) { in nxp_recv_fw_req_v1()
854 nxpdev->helper_downloaded = true; in nxp_recv_fw_req_v1()
855 serdev_device_wait_until_sent(nxpdev->serdev, 0); in nxp_recv_fw_req_v1()
856 serdev_device_set_baudrate(nxpdev->serdev, in nxp_recv_fw_req_v1()
858 serdev_device_set_flow_control(nxpdev->serdev, true); in nxp_recv_fw_req_v1()
860 clear_bit(BTNXPUART_FW_DOWNLOADING, &nxpdev->tx_state); in nxp_recv_fw_req_v1()
861 wake_up_interruptible(&nxpdev->fw_dnld_done_wait_q); in nxp_recv_fw_req_v1()
869 len = nxpdev->fw_v1_sent_bytes; in nxp_recv_fw_req_v1()
872 nxpdev->fw_dnld_v1_offset += nxpdev->fw_v1_sent_bytes; in nxp_recv_fw_req_v1()
884 if (len == nxpdev->fw_v1_expected_len) { in nxp_recv_fw_req_v1()
886 nxpdev->fw_v1_expected_len = nxp_get_data_len(nxpdev->fw->data + in nxp_recv_fw_req_v1()
887 nxpdev->fw_dnld_v1_offset); in nxp_recv_fw_req_v1()
889 nxpdev->fw_v1_expected_len = HDR_LEN; in nxp_recv_fw_req_v1()
892 nxpdev->fw_dnld_v1_offset -= nxpdev->fw_v1_sent_bytes; in nxp_recv_fw_req_v1()
893 nxpdev->fw_v1_expected_len = HDR_LEN; in nxp_recv_fw_req_v1()
897 if (nxpdev->fw_dnld_v1_offset + len <= nxpdev->fw->size) in nxp_recv_fw_req_v1()
898 serdev_device_write_buf(nxpdev->serdev, nxpdev->fw->data + in nxp_recv_fw_req_v1()
899 nxpdev->fw_dnld_v1_offset, len); in nxp_recv_fw_req_v1()
900 nxpdev->fw_v1_sent_bytes = len; in nxp_recv_fw_req_v1()
910 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_get_fw_name_from_chipid() local
925 nxpdev->boot_reg_offset = 1; in nxp_get_fw_name_from_chipid()
981 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_recv_chip_ver_v3() local
987 if (!process_boot_signature(nxpdev)) in nxp_recv_chip_ver_v3()
1005 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_handle_fw_download_error() local
1018 serdev_device_write_buf(nxpdev->serdev, nak_tx_buf.buf, in nxp_handle_fw_download_error()
1031 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_recv_fw_req_v3() local
1036 if (!process_boot_signature(nxpdev)) in nxp_recv_fw_req_v3()
1040 if (!req || !nxpdev->fw) in nxp_recv_fw_req_v3()
1052 if (!nxpdev->timeout_changed) { in nxp_recv_fw_req_v3()
1053 nxpdev->timeout_changed = nxp_fw_change_timeout(hdev, len); in nxp_recv_fw_req_v3()
1057 if (!nxpdev->baudrate_changed) { in nxp_recv_fw_req_v3()
1058 nxpdev->baudrate_changed = nxp_fw_change_baudrate(hdev, len); in nxp_recv_fw_req_v3()
1059 if (nxpdev->baudrate_changed) { in nxp_recv_fw_req_v3()
1060 serdev_device_set_baudrate(nxpdev->serdev, in nxp_recv_fw_req_v3()
1062 serdev_device_set_flow_control(nxpdev->serdev, true); in nxp_recv_fw_req_v3()
1063 nxpdev->current_baudrate = HCI_NXP_SEC_BAUDRATE; in nxp_recv_fw_req_v3()
1070 nxpdev->fw->size); in nxp_recv_fw_req_v3()
1071 clear_bit(BTNXPUART_FW_DOWNLOADING, &nxpdev->tx_state); in nxp_recv_fw_req_v3()
1072 wake_up_interruptible(&nxpdev->fw_dnld_done_wait_q); in nxp_recv_fw_req_v3()
1077 if (offset < nxpdev->fw_v3_offset_correction) { in nxp_recv_fw_req_v3()
1086 nxpdev->fw_dnld_v3_offset = offset - nxpdev->fw_v3_offset_correction; in nxp_recv_fw_req_v3()
1087 serdev_device_write_buf(nxpdev->serdev, nxpdev->fw->data + in nxp_recv_fw_req_v3()
1088 nxpdev->fw_dnld_v3_offset, len); in nxp_recv_fw_req_v3()
1097 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_set_baudrate_cmd() local
1098 __le32 new_baudrate = __cpu_to_le32(nxpdev->new_baudrate); in nxp_set_baudrate_cmd()
1099 struct ps_data *psdata = &nxpdev->psdata; in nxp_set_baudrate_cmd()
1115 serdev_device_set_baudrate(nxpdev->serdev, nxpdev->new_baudrate); in nxp_set_baudrate_cmd()
1116 nxpdev->current_baudrate = nxpdev->new_baudrate; in nxp_set_baudrate_cmd()
1119 *status, nxpdev->new_baudrate); in nxp_set_baudrate_cmd()
1126 static int nxp_check_boot_sign(struct btnxpuart_dev *nxpdev) in nxp_check_boot_sign() argument
1128 serdev_device_set_baudrate(nxpdev->serdev, HCI_NXP_PRI_BAUDRATE); in nxp_check_boot_sign()
1129 if (test_bit(BTNXPUART_IR_IN_PROGRESS, &nxpdev->tx_state)) in nxp_check_boot_sign()
1130 serdev_device_set_flow_control(nxpdev->serdev, false); in nxp_check_boot_sign()
1132 serdev_device_set_flow_control(nxpdev->serdev, true); in nxp_check_boot_sign()
1133 set_bit(BTNXPUART_CHECK_BOOT_SIGNATURE, &nxpdev->tx_state); in nxp_check_boot_sign()
1135 return wait_event_interruptible_timeout(nxpdev->check_boot_sign_wait_q, in nxp_check_boot_sign()
1137 &nxpdev->tx_state), in nxp_check_boot_sign()
1161 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_setup() local
1164 if (nxp_check_boot_sign(nxpdev)) { in nxp_setup()
1171 clear_bit(BTNXPUART_FW_DOWNLOADING, &nxpdev->tx_state); in nxp_setup()
1174 serdev_device_set_baudrate(nxpdev->serdev, nxpdev->fw_init_baudrate); in nxp_setup()
1175 nxpdev->current_baudrate = nxpdev->fw_init_baudrate; in nxp_setup()
1177 if (nxpdev->current_baudrate != HCI_NXP_SEC_BAUDRATE) { in nxp_setup()
1178 nxpdev->new_baudrate = HCI_NXP_SEC_BAUDRATE; in nxp_setup()
1184 if (test_and_clear_bit(BTNXPUART_IR_IN_PROGRESS, &nxpdev->tx_state)) in nxp_setup()
1192 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_hw_err() local
1196 set_bit(BTNXPUART_IR_IN_PROGRESS, &nxpdev->tx_state); in nxp_hw_err()
1206 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_shutdown() local
1211 if (test_bit(BTNXPUART_IR_IN_PROGRESS, &nxpdev->tx_state)) { in nxp_shutdown()
1218 serdev_device_set_flow_control(nxpdev->serdev, false); in nxp_shutdown()
1219 set_bit(BTNXPUART_FW_DOWNLOADING, &nxpdev->tx_state); in nxp_shutdown()
1229 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in btnxpuart_queue_skb() local
1233 skb_queue_tail(&nxpdev->txq, skb); in btnxpuart_queue_skb()
1234 btnxpuart_tx_wakeup(nxpdev); in btnxpuart_queue_skb()
1240 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in nxp_enqueue() local
1241 struct ps_data *psdata = &nxpdev->psdata; in nxp_enqueue()
1293 nxpdev->new_baudrate = __le32_to_cpu(baudrate_parm); in nxp_enqueue()
1318 struct btnxpuart_dev *nxpdev = (struct btnxpuart_dev *)data; in nxp_dequeue() local
1320 ps_start_timer(nxpdev); in nxp_dequeue()
1321 return skb_dequeue(&nxpdev->txq); in nxp_dequeue()
1327 struct btnxpuart_dev *nxpdev = container_of(work, struct btnxpuart_dev, in btnxpuart_tx_work() local
1329 struct serdev_device *serdev = nxpdev->serdev; in btnxpuart_tx_work()
1330 struct hci_dev *hdev = nxpdev->hdev; in btnxpuart_tx_work()
1334 if (ps_wakeup(nxpdev)) in btnxpuart_tx_work()
1337 while ((skb = nxp_dequeue(nxpdev))) { in btnxpuart_tx_work()
1343 skb_queue_head(&nxpdev->txq, skb); in btnxpuart_tx_work()
1361 clear_bit(BTNXPUART_TX_STATE_ACTIVE, &nxpdev->tx_state); in btnxpuart_tx_work()
1366 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in btnxpuart_open() local
1369 err = serdev_device_open(nxpdev->serdev); in btnxpuart_open()
1372 dev_name(&nxpdev->serdev->dev)); in btnxpuart_open()
1374 set_bit(BTNXPUART_SERDEV_OPEN, &nxpdev->tx_state); in btnxpuart_open()
1381 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in btnxpuart_close() local
1383 serdev_device_close(nxpdev->serdev); in btnxpuart_close()
1384 skb_queue_purge(&nxpdev->txq); in btnxpuart_close()
1385 if (!IS_ERR_OR_NULL(nxpdev->rx_skb)) { in btnxpuart_close()
1386 kfree_skb(nxpdev->rx_skb); in btnxpuart_close()
1387 nxpdev->rx_skb = NULL; in btnxpuart_close()
1389 clear_bit(BTNXPUART_SERDEV_OPEN, &nxpdev->tx_state); in btnxpuart_close()
1395 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); in btnxpuart_flush() local
1398 serdev_device_write_flush(nxpdev->serdev); in btnxpuart_flush()
1399 skb_queue_purge(&nxpdev->txq); in btnxpuart_flush()
1401 cancel_work_sync(&nxpdev->tx_work); in btnxpuart_flush()
1403 if (!IS_ERR_OR_NULL(nxpdev->rx_skb)) { in btnxpuart_flush()
1404 kfree_skb(nxpdev->rx_skb); in btnxpuart_flush()
1405 nxpdev->rx_skb = NULL; in btnxpuart_flush()
1425 struct btnxpuart_dev *nxpdev = serdev_device_get_drvdata(serdev); in btnxpuart_receive_buf() local
1427 ps_start_timer(nxpdev); in btnxpuart_receive_buf()
1429 nxpdev->rx_skb = h4_recv_buf(nxpdev->hdev, nxpdev->rx_skb, data, count, in btnxpuart_receive_buf()
1431 if (IS_ERR(nxpdev->rx_skb)) { in btnxpuart_receive_buf()
1432 int err = PTR_ERR(nxpdev->rx_skb); in btnxpuart_receive_buf()
1434 if (!is_fw_downloading(nxpdev)) in btnxpuart_receive_buf()
1435 bt_dev_err(nxpdev->hdev, "Frame reassembly failed (%d)", err); in btnxpuart_receive_buf()
1438 if (!is_fw_downloading(nxpdev)) in btnxpuart_receive_buf()
1439 nxpdev->hdev->stat.byte_rx += count; in btnxpuart_receive_buf()
1456 struct btnxpuart_dev *nxpdev; in nxp_serdev_probe() local
1458 nxpdev = devm_kzalloc(&serdev->dev, sizeof(*nxpdev), GFP_KERNEL); in nxp_serdev_probe()
1459 if (!nxpdev) in nxp_serdev_probe()
1462 nxpdev->nxp_data = (struct btnxpuart_data *)device_get_match_data(&serdev->dev); in nxp_serdev_probe()
1464 nxpdev->serdev = serdev; in nxp_serdev_probe()
1465 serdev_device_set_drvdata(serdev, nxpdev); in nxp_serdev_probe()
1469 INIT_WORK(&nxpdev->tx_work, btnxpuart_tx_work); in nxp_serdev_probe()
1470 skb_queue_head_init(&nxpdev->txq); in nxp_serdev_probe()
1472 init_waitqueue_head(&nxpdev->fw_dnld_done_wait_q); in nxp_serdev_probe()
1473 init_waitqueue_head(&nxpdev->check_boot_sign_wait_q); in nxp_serdev_probe()
1475 device_property_read_u32(&nxpdev->serdev->dev, "fw-init-baudrate", in nxp_serdev_probe()
1476 &nxpdev->fw_init_baudrate); in nxp_serdev_probe()
1477 if (!nxpdev->fw_init_baudrate) in nxp_serdev_probe()
1478 nxpdev->fw_init_baudrate = FW_INIT_BAUDRATE; in nxp_serdev_probe()
1480 set_bit(BTNXPUART_FW_DOWNLOADING, &nxpdev->tx_state); in nxp_serdev_probe()
1491 nxpdev->hdev = hdev; in nxp_serdev_probe()
1494 hci_set_drvdata(hdev, nxpdev); in nxp_serdev_probe()
1519 struct btnxpuart_dev *nxpdev = serdev_device_get_drvdata(serdev); in nxp_serdev_remove() local
1520 struct hci_dev *hdev = nxpdev->hdev; in nxp_serdev_remove()
1522 if (is_fw_downloading(nxpdev)) { in nxp_serdev_remove()
1523 set_bit(BTNXPUART_FW_DOWNLOAD_ABORT, &nxpdev->tx_state); in nxp_serdev_remove()
1524 clear_bit(BTNXPUART_FW_DOWNLOADING, &nxpdev->tx_state); in nxp_serdev_remove()
1525 wake_up_interruptible(&nxpdev->check_boot_sign_wait_q); in nxp_serdev_remove()
1526 wake_up_interruptible(&nxpdev->fw_dnld_done_wait_q); in nxp_serdev_remove()
1532 if (nxpdev->current_baudrate != nxpdev->fw_init_baudrate) { in nxp_serdev_remove()
1533 nxpdev->new_baudrate = nxpdev->fw_init_baudrate; in nxp_serdev_remove()
1537 ps_cleanup(nxpdev); in nxp_serdev_remove()
1545 struct btnxpuart_dev *nxpdev = dev_get_drvdata(dev); in nxp_serdev_suspend() local
1546 struct ps_data *psdata = &nxpdev->psdata; in nxp_serdev_suspend()
1554 struct btnxpuart_dev *nxpdev = dev_get_drvdata(dev); in nxp_serdev_resume() local
1555 struct ps_data *psdata = &nxpdev->psdata; in nxp_serdev_resume()