Lines Matching refs:dev
151 typedef int (*pn533_send_async_complete_t) (struct pn533 *dev, void *arg,
430 bool (*rx_is_frame_valid)(void *frame, struct pn533 *dev);
505 static bool pn533_acr122_is_rx_frame_valid(void *_frame, struct pn533 *dev) in pn533_acr122_is_rx_frame_valid() argument
606 static bool pn533_std_rx_frame_is_valid(void *_frame, struct pn533 *dev) in pn533_std_rx_frame_is_valid() argument
616 dev->ops->rx_header_len = PN533_STD_FRAME_HEADER_LEN; in pn533_std_rx_frame_is_valid()
629 dev->ops->rx_header_len = PN533_EXT_FRAME_HEADER_LEN; in pn533_std_rx_frame_is_valid()
699 static bool pn533_rx_frame_is_cmd_response(struct pn533 *dev, void *frame) in pn533_rx_frame_is_cmd_response() argument
701 return (dev->ops->get_cmd_code(frame) == in pn533_rx_frame_is_cmd_response()
702 PN533_CMD_RESPONSE(dev->cmd->code)); in pn533_rx_frame_is_cmd_response()
707 struct pn533 *dev = urb->context; in pn533_recv_response() local
708 struct pn533_cmd *cmd = dev->cmd; in pn533_recv_response()
718 dev_dbg(&dev->interface->dev, in pn533_recv_response()
724 nfc_err(&dev->interface->dev, in pn533_recv_response()
729 in_frame = dev->in_urb->transfer_buffer; in pn533_recv_response()
731 dev_dbg(&dev->interface->dev, "Received a frame\n"); in pn533_recv_response()
733 dev->ops->rx_frame_size(in_frame), false); in pn533_recv_response()
735 if (!dev->ops->rx_is_frame_valid(in_frame, dev)) { in pn533_recv_response()
736 nfc_err(&dev->interface->dev, "Received an invalid frame\n"); in pn533_recv_response()
741 if (!pn533_rx_frame_is_cmd_response(dev, in_frame)) { in pn533_recv_response()
742 nfc_err(&dev->interface->dev, in pn533_recv_response()
749 queue_work(dev->wq, &dev->cmd_complete_work); in pn533_recv_response()
752 static int pn533_submit_urb_for_response(struct pn533 *dev, gfp_t flags) in pn533_submit_urb_for_response() argument
754 dev->in_urb->complete = pn533_recv_response; in pn533_submit_urb_for_response()
756 return usb_submit_urb(dev->in_urb, flags); in pn533_submit_urb_for_response()
761 struct pn533 *dev = urb->context; in pn533_recv_ack() local
762 struct pn533_cmd *cmd = dev->cmd; in pn533_recv_ack()
773 dev_dbg(&dev->interface->dev, in pn533_recv_ack()
779 nfc_err(&dev->interface->dev, in pn533_recv_ack()
784 in_frame = dev->in_urb->transfer_buffer; in pn533_recv_ack()
787 nfc_err(&dev->interface->dev, "Received an invalid ack\n"); in pn533_recv_ack()
792 rc = pn533_submit_urb_for_response(dev, GFP_ATOMIC); in pn533_recv_ack()
794 nfc_err(&dev->interface->dev, in pn533_recv_ack()
803 queue_work(dev->wq, &dev->cmd_complete_work); in pn533_recv_ack()
806 static int pn533_submit_urb_for_ack(struct pn533 *dev, gfp_t flags) in pn533_submit_urb_for_ack() argument
808 dev->in_urb->complete = pn533_recv_ack; in pn533_submit_urb_for_ack()
810 return usb_submit_urb(dev->in_urb, flags); in pn533_submit_urb_for_ack()
813 static int pn533_send_ack(struct pn533 *dev, gfp_t flags) in pn533_send_ack() argument
819 dev->out_urb->transfer_buffer = ack; in pn533_send_ack()
820 dev->out_urb->transfer_buffer_length = sizeof(ack); in pn533_send_ack()
821 rc = usb_submit_urb(dev->out_urb, flags); in pn533_send_ack()
826 static int __pn533_send_frame_async(struct pn533 *dev, in __pn533_send_frame_async() argument
833 dev->out_urb->transfer_buffer = out->data; in __pn533_send_frame_async()
834 dev->out_urb->transfer_buffer_length = out->len; in __pn533_send_frame_async()
836 dev->in_urb->transfer_buffer = in->data; in __pn533_send_frame_async()
837 dev->in_urb->transfer_buffer_length = in_len; in __pn533_send_frame_async()
842 rc = usb_submit_urb(dev->out_urb, GFP_KERNEL); in __pn533_send_frame_async()
846 if (dev->protocol_type == PN533_PROTO_REQ_RESP) { in __pn533_send_frame_async()
848 rc = pn533_submit_urb_for_response(dev, GFP_ATOMIC); in __pn533_send_frame_async()
851 } else if (dev->protocol_type == PN533_PROTO_REQ_ACK_RESP) { in __pn533_send_frame_async()
853 rc = pn533_submit_urb_for_ack(dev, GFP_KERNEL); in __pn533_send_frame_async()
861 usb_unlink_urb(dev->out_urb); in __pn533_send_frame_async()
865 static void pn533_build_cmd_frame(struct pn533 *dev, u8 cmd_code, in pn533_build_cmd_frame() argument
870 struct pn533_frame_ops *ops = dev->ops; in pn533_build_cmd_frame()
881 static int pn533_send_async_complete(struct pn533 *dev) in pn533_send_async_complete() argument
883 struct pn533_cmd *cmd = dev->cmd; in pn533_send_async_complete()
894 rc = cmd->complete_cb(dev, cmd->complete_cb_context, in pn533_send_async_complete()
900 skb_put(resp, dev->ops->rx_frame_size(resp->data)); in pn533_send_async_complete()
901 skb_pull(resp, dev->ops->rx_header_len); in pn533_send_async_complete()
902 skb_trim(resp, resp->len - dev->ops->rx_tail_len); in pn533_send_async_complete()
904 rc = cmd->complete_cb(dev, cmd->complete_cb_context, resp); in pn533_send_async_complete()
908 dev->cmd = NULL; in pn533_send_async_complete()
912 static int __pn533_send_async(struct pn533 *dev, u8 cmd_code, in __pn533_send_async() argument
921 dev_dbg(&dev->interface->dev, "Sending command 0x%x\n", cmd_code); in __pn533_send_async()
934 pn533_build_cmd_frame(dev, cmd_code, req); in __pn533_send_async()
936 mutex_lock(&dev->cmd_lock); in __pn533_send_async()
938 if (!dev->cmd_pending) { in __pn533_send_async()
939 rc = __pn533_send_frame_async(dev, req, resp, resp_len); in __pn533_send_async()
943 dev->cmd_pending = 1; in __pn533_send_async()
944 dev->cmd = cmd; in __pn533_send_async()
948 dev_dbg(&dev->interface->dev, "%s Queueing command 0x%x\n", in __pn533_send_async()
952 list_add_tail(&cmd->queue, &dev->cmd_queue); in __pn533_send_async()
959 mutex_unlock(&dev->cmd_lock); in __pn533_send_async()
963 static int pn533_send_data_async(struct pn533 *dev, u8 cmd_code, in pn533_send_data_async() argument
970 int resp_len = dev->ops->rx_header_len + in pn533_send_data_async()
971 dev->ops->max_payload_len + in pn533_send_data_async()
972 dev->ops->rx_tail_len; in pn533_send_data_async()
978 rc = __pn533_send_async(dev, cmd_code, req, resp, resp_len, complete_cb, in pn533_send_data_async()
986 static int pn533_send_cmd_async(struct pn533 *dev, u8 cmd_code, in pn533_send_cmd_async() argument
993 int resp_len = dev->ops->rx_header_len + in pn533_send_cmd_async()
994 dev->ops->max_payload_len + in pn533_send_cmd_async()
995 dev->ops->rx_tail_len; in pn533_send_cmd_async()
1001 rc = __pn533_send_async(dev, cmd_code, req, resp, resp_len, complete_cb, in pn533_send_cmd_async()
1017 static int pn533_send_cmd_direct_async(struct pn533 *dev, u8 cmd_code, in pn533_send_cmd_direct_async() argument
1025 int resp_len = dev->ops->rx_header_len + in pn533_send_cmd_direct_async()
1026 dev->ops->max_payload_len + in pn533_send_cmd_direct_async()
1027 dev->ops->rx_tail_len; in pn533_send_cmd_direct_async()
1046 pn533_build_cmd_frame(dev, cmd_code, req); in pn533_send_cmd_direct_async()
1048 rc = __pn533_send_frame_async(dev, req, resp, resp_len); in pn533_send_cmd_direct_async()
1053 dev->cmd = cmd; in pn533_send_cmd_direct_async()
1061 struct pn533 *dev = container_of(work, struct pn533, cmd_complete_work); in pn533_wq_cmd_complete() local
1064 rc = pn533_send_async_complete(dev); in pn533_wq_cmd_complete()
1066 queue_work(dev->wq, &dev->cmd_work); in pn533_wq_cmd_complete()
1071 struct pn533 *dev = container_of(work, struct pn533, cmd_work); in pn533_wq_cmd() local
1075 mutex_lock(&dev->cmd_lock); in pn533_wq_cmd()
1077 if (list_empty(&dev->cmd_queue)) { in pn533_wq_cmd()
1078 dev->cmd_pending = 0; in pn533_wq_cmd()
1079 mutex_unlock(&dev->cmd_lock); in pn533_wq_cmd()
1083 cmd = list_first_entry(&dev->cmd_queue, struct pn533_cmd, queue); in pn533_wq_cmd()
1087 mutex_unlock(&dev->cmd_lock); in pn533_wq_cmd()
1089 rc = __pn533_send_frame_async(dev, cmd->req, cmd->resp, cmd->resp_len); in pn533_wq_cmd()
1097 dev->cmd = cmd; in pn533_wq_cmd()
1105 static int pn533_send_sync_complete(struct pn533 *dev, void *_arg, in pn533_send_sync_complete() argument
1133 static struct sk_buff *pn533_send_cmd_sync(struct pn533 *dev, u8 cmd_code, in pn533_send_cmd_sync() argument
1141 rc = pn533_send_cmd_async(dev, cmd_code, req, in pn533_send_cmd_sync()
1155 struct pn533 *dev = urb->context; in pn533_send_complete() local
1162 dev_dbg(&dev->interface->dev, in pn533_send_complete()
1168 nfc_err(&dev->interface->dev, "Urb failure (status %d)\n", in pn533_send_complete()
1173 static void pn533_abort_cmd(struct pn533 *dev, gfp_t flags) in pn533_abort_cmd() argument
1180 if (dev->device_type == PN533_DEVICE_ACR122U) in pn533_abort_cmd()
1184 pn533_send_ack(dev, flags); in pn533_abort_cmd()
1187 usb_kill_urb(dev->in_urb); in pn533_abort_cmd()
1190 static struct sk_buff *pn533_alloc_skb(struct pn533 *dev, unsigned int size) in pn533_alloc_skb() argument
1194 skb = alloc_skb(dev->ops->tx_header_len + in pn533_alloc_skb()
1196 dev->ops->tx_tail_len, GFP_KERNEL); in pn533_alloc_skb()
1199 skb_reserve(skb, dev->ops->tx_header_len); in pn533_alloc_skb()
1440 static int pn533_target_found(struct pn533 *dev, u8 tg, u8 *tgdata, in pn533_target_found() argument
1446 dev_dbg(&dev->interface->dev, "%s: modulation=%d\n", in pn533_target_found()
1447 __func__, dev->poll_mod_curr); in pn533_target_found()
1454 switch (dev->poll_mod_curr) { in pn533_target_found()
1469 nfc_err(&dev->interface->dev, in pn533_target_found()
1477 if (!(nfc_tgt.supported_protocols & dev->poll_protocols)) { in pn533_target_found()
1478 dev_dbg(&dev->interface->dev, in pn533_target_found()
1483 dev_dbg(&dev->interface->dev, in pn533_target_found()
1487 dev->tgt_available_prots = nfc_tgt.supported_protocols; in pn533_target_found()
1489 nfc_targets_found(dev->nfc_dev, &nfc_tgt, 1); in pn533_target_found()
1494 static inline void pn533_poll_next_mod(struct pn533 *dev) in pn533_poll_next_mod() argument
1496 dev->poll_mod_curr = (dev->poll_mod_curr + 1) % dev->poll_mod_count; in pn533_poll_next_mod()
1499 static void pn533_poll_reset_mod_list(struct pn533 *dev) in pn533_poll_reset_mod_list() argument
1501 dev->poll_mod_count = 0; in pn533_poll_reset_mod_list()
1504 static void pn533_poll_add_mod(struct pn533 *dev, u8 mod_index) in pn533_poll_add_mod() argument
1506 dev->poll_mod_active[dev->poll_mod_count] = in pn533_poll_add_mod()
1508 dev->poll_mod_count++; in pn533_poll_add_mod()
1511 static void pn533_poll_create_mod_list(struct pn533 *dev, in pn533_poll_create_mod_list() argument
1514 pn533_poll_reset_mod_list(dev); in pn533_poll_create_mod_list()
1519 pn533_poll_add_mod(dev, PN533_POLL_MOD_106KBPS_A); in pn533_poll_create_mod_list()
1523 pn533_poll_add_mod(dev, PN533_POLL_MOD_212KBPS_FELICA); in pn533_poll_create_mod_list()
1524 pn533_poll_add_mod(dev, PN533_POLL_MOD_424KBPS_FELICA); in pn533_poll_create_mod_list()
1528 pn533_poll_add_mod(dev, PN533_POLL_MOD_106KBPS_JEWEL); in pn533_poll_create_mod_list()
1531 pn533_poll_add_mod(dev, PN533_POLL_MOD_847KBPS_B); in pn533_poll_create_mod_list()
1534 pn533_poll_add_mod(dev, PN533_LISTEN_MOD); in pn533_poll_create_mod_list()
1537 static int pn533_start_poll_complete(struct pn533 *dev, struct sk_buff *resp) in pn533_start_poll_complete() argument
1543 dev->poll_dep = 1; in pn533_start_poll_complete()
1551 rc = pn533_target_found(dev, tg, tgdata, tgdata_len); in pn533_start_poll_complete()
1555 pn533_poll_reset_mod_list(dev); in pn533_start_poll_complete()
1563 static struct sk_buff *pn533_alloc_poll_tg_frame(struct pn533 *dev) in pn533_alloc_poll_tg_frame() argument
1568 u8 *gbytes = dev->gb; in pn533_alloc_poll_tg_frame()
1569 size_t gbytes_len = dev->gb_len; in pn533_alloc_poll_tg_frame()
1585 skb = pn533_alloc_skb(dev, skb_len); in pn533_alloc_poll_tg_frame()
1620 static struct sk_buff *pn533_build_response(struct pn533 *dev);
1622 static int pn533_tm_get_data_complete(struct pn533 *dev, void *arg, in pn533_tm_get_data_complete() argument
1629 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_tm_get_data_complete()
1632 skb_queue_purge(&dev->resp_q); in pn533_tm_get_data_complete()
1648 skb_queue_tail(&dev->resp_q, resp); in pn533_tm_get_data_complete()
1651 queue_work(dev->wq, &dev->mi_tm_rx_work); in pn533_tm_get_data_complete()
1655 skb = pn533_build_response(dev); in pn533_tm_get_data_complete()
1661 return nfc_tm_data_received(dev->nfc_dev, skb); in pn533_tm_get_data_complete()
1664 nfc_tm_deactivated(dev->nfc_dev); in pn533_tm_get_data_complete()
1665 dev->tgt_mode = 0; in pn533_tm_get_data_complete()
1666 skb_queue_purge(&dev->resp_q); in pn533_tm_get_data_complete()
1674 struct pn533 *dev = container_of(work, struct pn533, mi_tm_rx_work); in pn533_wq_tm_mi_recv() local
1678 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_wq_tm_mi_recv()
1680 skb = pn533_alloc_skb(dev, 0); in pn533_wq_tm_mi_recv()
1684 rc = pn533_send_cmd_direct_async(dev, in pn533_wq_tm_mi_recv()
1696 static int pn533_tm_send_complete(struct pn533 *dev, void *arg,
1700 struct pn533 *dev = container_of(work, struct pn533, mi_tm_tx_work); in pn533_wq_tm_mi_send() local
1704 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_wq_tm_mi_send()
1707 skb = skb_dequeue(&dev->fragment_skb); in pn533_wq_tm_mi_send()
1710 skb_queue_head_init(&dev->fragment_skb); in pn533_wq_tm_mi_send()
1715 if (skb_queue_len(&dev->fragment_skb) == 0) { in pn533_wq_tm_mi_send()
1716 rc = pn533_send_cmd_direct_async(dev, PN533_CMD_TG_SET_DATA, in pn533_wq_tm_mi_send()
1719 rc = pn533_send_cmd_direct_async(dev, in pn533_wq_tm_mi_send()
1726 dev_err(&dev->interface->dev, in pn533_wq_tm_mi_send()
1732 pn533_send_ack(dev, GFP_KERNEL); in pn533_wq_tm_mi_send()
1733 queue_work(dev->wq, &dev->cmd_work); in pn533_wq_tm_mi_send()
1738 struct pn533 *dev = container_of(work, struct pn533, tg_work); in pn533_wq_tg_get_data() local
1742 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_wq_tg_get_data()
1744 skb = pn533_alloc_skb(dev, 0); in pn533_wq_tg_get_data()
1748 rc = pn533_send_data_async(dev, PN533_CMD_TG_GET_DATA, skb, in pn533_wq_tg_get_data()
1758 static int pn533_init_target_complete(struct pn533 *dev, struct sk_buff *resp) in pn533_init_target_complete() argument
1764 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_init_target_complete()
1772 dev_dbg(&dev->interface->dev, "Target mode 0x%x len %d\n", in pn533_init_target_complete()
1785 rc = nfc_tm_activated(dev->nfc_dev, NFC_PROTO_NFC_DEP_MASK, in pn533_init_target_complete()
1788 nfc_err(&dev->interface->dev, in pn533_init_target_complete()
1793 dev->tgt_mode = 1; in pn533_init_target_complete()
1794 queue_work(dev->wq, &dev->tg_work); in pn533_init_target_complete()
1801 struct pn533 *dev = (struct pn533 *)data; in pn533_listen_mode_timer() local
1803 dev_dbg(&dev->interface->dev, "Listen mode timeout\n"); in pn533_listen_mode_timer()
1805 dev->cancel_listen = 1; in pn533_listen_mode_timer()
1807 pn533_poll_next_mod(dev); in pn533_listen_mode_timer()
1809 queue_delayed_work(dev->wq, &dev->poll_work, in pn533_listen_mode_timer()
1813 static int pn533_rf_complete(struct pn533 *dev, void *arg, in pn533_rf_complete() argument
1818 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_rf_complete()
1823 nfc_err(&dev->interface->dev, "RF setting error %d\n", rc); in pn533_rf_complete()
1828 queue_delayed_work(dev->wq, &dev->poll_work, in pn533_rf_complete()
1837 struct pn533 *dev = container_of(work, struct pn533, rf_work); in pn533_wq_rf() local
1841 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_wq_rf()
1843 skb = pn533_alloc_skb(dev, 2); in pn533_wq_rf()
1850 rc = pn533_send_cmd_async(dev, PN533_CMD_RF_CONFIGURATION, skb, in pn533_wq_rf()
1854 nfc_err(&dev->interface->dev, "RF setting error %d\n", rc); in pn533_wq_rf()
1860 static int pn533_poll_dep_complete(struct pn533 *dev, void *arg, in pn533_poll_dep_complete() argument
1876 queue_work(dev->wq, &dev->rf_work); in pn533_poll_dep_complete()
1882 dev_dbg(&dev->interface->dev, "Creating new target"); in pn533_poll_dep_complete()
1887 rc = nfc_targets_found(dev->nfc_dev, &nfc_target, 1); in pn533_poll_dep_complete()
1891 dev->tgt_available_prots = 0; in pn533_poll_dep_complete()
1892 dev->tgt_active_prot = NFC_PROTO_NFC_DEP; in pn533_poll_dep_complete()
1896 rc = nfc_set_remote_general_bytes(dev->nfc_dev, in pn533_poll_dep_complete()
1899 rc = nfc_dep_link_is_up(dev->nfc_dev, in pn533_poll_dep_complete()
1900 dev->nfc_dev->targets[0].idx, in pn533_poll_dep_complete()
1904 pn533_poll_reset_mod_list(dev); in pn533_poll_dep_complete()
1914 struct pn533 *dev = nfc_get_drvdata(nfc_dev); in pn533_poll_dep() local
1920 dev_dbg(&dev->interface->dev, "%s", __func__); in pn533_poll_dep()
1922 if (!dev->gb) { in pn533_poll_dep()
1923 dev->gb = nfc_get_local_general_bytes(nfc_dev, &dev->gb_len); in pn533_poll_dep()
1925 if (!dev->gb || !dev->gb_len) { in pn533_poll_dep()
1926 dev->poll_dep = 0; in pn533_poll_dep()
1927 queue_work(dev->wq, &dev->rf_work); in pn533_poll_dep()
1931 skb_len = 3 + dev->gb_len; /* ActPass + BR + Next */ in pn533_poll_dep()
1940 skb = pn533_alloc_skb(dev, skb_len); in pn533_poll_dep()
1959 memcpy(skb_put(skb, dev->gb_len), dev->gb, dev->gb_len); in pn533_poll_dep()
1962 rc = pn533_send_cmd_async(dev, PN533_CMD_IN_JUMP_FOR_DEP, skb, in pn533_poll_dep()
1971 static int pn533_poll_complete(struct pn533 *dev, void *arg, in pn533_poll_complete() argument
1977 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_poll_complete()
1982 nfc_err(&dev->interface->dev, "%s Poll complete error %d\n", in pn533_poll_complete()
1986 if (dev->poll_mod_count != 0) in pn533_poll_complete()
1991 nfc_err(&dev->interface->dev, in pn533_poll_complete()
1997 cur_mod = dev->poll_mod_active[dev->poll_mod_curr]; in pn533_poll_complete()
2000 del_timer(&dev->listen_timer); in pn533_poll_complete()
2001 rc = pn533_init_target_complete(dev, resp); in pn533_poll_complete()
2006 rc = pn533_start_poll_complete(dev, resp); in pn533_poll_complete()
2010 if (!dev->poll_mod_count) { in pn533_poll_complete()
2011 dev_dbg(&dev->interface->dev, "Polling has been stopped\n"); in pn533_poll_complete()
2015 pn533_poll_next_mod(dev); in pn533_poll_complete()
2017 queue_work(dev->wq, &dev->rf_work); in pn533_poll_complete()
2024 nfc_err(&dev->interface->dev, "Polling operation has been stopped\n"); in pn533_poll_complete()
2026 pn533_poll_reset_mod_list(dev); in pn533_poll_complete()
2027 dev->poll_protocols = 0; in pn533_poll_complete()
2031 static struct sk_buff *pn533_alloc_poll_in_frame(struct pn533 *dev, in pn533_alloc_poll_in_frame() argument
2036 skb = pn533_alloc_skb(dev, mod->len); in pn533_alloc_poll_in_frame()
2045 static int pn533_send_poll_frame(struct pn533 *dev) in pn533_send_poll_frame() argument
2052 mod = dev->poll_mod_active[dev->poll_mod_curr]; in pn533_send_poll_frame()
2054 dev_dbg(&dev->interface->dev, "%s mod len %d\n", in pn533_send_poll_frame()
2057 if (dev->poll_dep) { in pn533_send_poll_frame()
2058 dev->poll_dep = 0; in pn533_send_poll_frame()
2059 return pn533_poll_dep(dev->nfc_dev); in pn533_send_poll_frame()
2064 skb = pn533_alloc_poll_tg_frame(dev); in pn533_send_poll_frame()
2067 skb = pn533_alloc_poll_in_frame(dev, mod); in pn533_send_poll_frame()
2071 nfc_err(&dev->interface->dev, "Failed to allocate skb\n"); in pn533_send_poll_frame()
2075 rc = pn533_send_cmd_async(dev, cmd_code, skb, pn533_poll_complete, in pn533_send_poll_frame()
2079 nfc_err(&dev->interface->dev, "Polling loop error %d\n", rc); in pn533_send_poll_frame()
2087 struct pn533 *dev = container_of(work, struct pn533, poll_work.work); in pn533_wq_poll() local
2091 cur_mod = dev->poll_mod_active[dev->poll_mod_curr]; in pn533_wq_poll()
2093 dev_dbg(&dev->interface->dev, in pn533_wq_poll()
2095 __func__, dev->cancel_listen, cur_mod->len); in pn533_wq_poll()
2097 if (dev->cancel_listen == 1) { in pn533_wq_poll()
2098 dev->cancel_listen = 0; in pn533_wq_poll()
2099 pn533_abort_cmd(dev, GFP_ATOMIC); in pn533_wq_poll()
2102 rc = pn533_send_poll_frame(dev); in pn533_wq_poll()
2106 if (cur_mod->len == 0 && dev->poll_mod_count > 1) in pn533_wq_poll()
2107 mod_timer(&dev->listen_timer, jiffies + PN533_LISTEN_TIME * HZ); in pn533_wq_poll()
2115 struct pn533 *dev = nfc_get_drvdata(nfc_dev); in pn533_start_poll() local
2120 dev_dbg(&dev->interface->dev, in pn533_start_poll()
2124 if (dev->tgt_active_prot) { in pn533_start_poll()
2125 nfc_err(&dev->interface->dev, in pn533_start_poll()
2130 if (dev->tgt_mode) { in pn533_start_poll()
2131 nfc_err(&dev->interface->dev, in pn533_start_poll()
2137 dev->gb = nfc_get_local_general_bytes(nfc_dev, &dev->gb_len); in pn533_start_poll()
2138 if (dev->gb == NULL) in pn533_start_poll()
2142 pn533_poll_create_mod_list(dev, im_protocols, tm_protocols); in pn533_start_poll()
2143 dev->poll_protocols = im_protocols; in pn533_start_poll()
2144 dev->listen_protocols = tm_protocols; in pn533_start_poll()
2148 rand_mod %= dev->poll_mod_count; in pn533_start_poll()
2149 dev->poll_mod_curr = rand_mod; in pn533_start_poll()
2151 cur_mod = dev->poll_mod_active[dev->poll_mod_curr]; in pn533_start_poll()
2153 rc = pn533_send_poll_frame(dev); in pn533_start_poll()
2156 if (!rc && cur_mod->len == 0 && dev->poll_mod_count > 1) in pn533_start_poll()
2157 mod_timer(&dev->listen_timer, jiffies + PN533_LISTEN_TIME * HZ); in pn533_start_poll()
2164 struct pn533 *dev = nfc_get_drvdata(nfc_dev); in pn533_stop_poll() local
2166 del_timer(&dev->listen_timer); in pn533_stop_poll()
2168 if (!dev->poll_mod_count) { in pn533_stop_poll()
2169 dev_dbg(&dev->interface->dev, in pn533_stop_poll()
2174 pn533_abort_cmd(dev, GFP_KERNEL); in pn533_stop_poll()
2175 flush_delayed_work(&dev->poll_work); in pn533_stop_poll()
2176 pn533_poll_reset_mod_list(dev); in pn533_stop_poll()
2179 static int pn533_activate_target_nfcdep(struct pn533 *dev) in pn533_activate_target_nfcdep() argument
2187 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_activate_target_nfcdep()
2189 skb = pn533_alloc_skb(dev, sizeof(u8) * 2); /*TG + Next*/ in pn533_activate_target_nfcdep()
2196 resp = pn533_send_cmd_sync(dev, PN533_CMD_IN_ATR, skb); in pn533_activate_target_nfcdep()
2203 nfc_err(&dev->interface->dev, in pn533_activate_target_nfcdep()
2211 rc = nfc_set_remote_general_bytes(dev->nfc_dev, rsp->gt, gt_len); in pn533_activate_target_nfcdep()
2220 struct pn533 *dev = nfc_get_drvdata(nfc_dev); in pn533_activate_target() local
2223 dev_dbg(&dev->interface->dev, "%s: protocol=%u\n", __func__, protocol); in pn533_activate_target()
2225 if (dev->poll_mod_count) { in pn533_activate_target()
2226 nfc_err(&dev->interface->dev, in pn533_activate_target()
2231 if (dev->tgt_active_prot) { in pn533_activate_target()
2232 nfc_err(&dev->interface->dev, in pn533_activate_target()
2237 if (!dev->tgt_available_prots) { in pn533_activate_target()
2238 nfc_err(&dev->interface->dev, in pn533_activate_target()
2243 if (!(dev->tgt_available_prots & (1 << protocol))) { in pn533_activate_target()
2244 nfc_err(&dev->interface->dev, in pn533_activate_target()
2251 rc = pn533_activate_target_nfcdep(dev); in pn533_activate_target()
2253 nfc_err(&dev->interface->dev, in pn533_activate_target()
2259 dev->tgt_active_prot = protocol; in pn533_activate_target()
2260 dev->tgt_available_prots = 0; in pn533_activate_target()
2268 struct pn533 *dev = nfc_get_drvdata(nfc_dev); in pn533_deactivate_target() local
2273 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_deactivate_target()
2275 if (!dev->tgt_active_prot) { in pn533_deactivate_target()
2276 nfc_err(&dev->interface->dev, "There is no active target\n"); in pn533_deactivate_target()
2280 dev->tgt_active_prot = 0; in pn533_deactivate_target()
2281 skb_queue_purge(&dev->resp_q); in pn533_deactivate_target()
2283 skb = pn533_alloc_skb(dev, sizeof(u8)); in pn533_deactivate_target()
2289 resp = pn533_send_cmd_sync(dev, PN533_CMD_IN_RELEASE, skb); in pn533_deactivate_target()
2295 nfc_err(&dev->interface->dev, in pn533_deactivate_target()
2303 static int pn533_in_dep_link_up_complete(struct pn533 *dev, void *arg, in pn533_in_dep_link_up_complete() argument
2316 if (dev->tgt_available_prots && in pn533_in_dep_link_up_complete()
2317 !(dev->tgt_available_prots & (1 << NFC_PROTO_NFC_DEP))) { in pn533_in_dep_link_up_complete()
2318 nfc_err(&dev->interface->dev, in pn533_in_dep_link_up_complete()
2328 nfc_err(&dev->interface->dev, in pn533_in_dep_link_up_complete()
2333 if (!dev->tgt_available_prots) { in pn533_in_dep_link_up_complete()
2336 dev_dbg(&dev->interface->dev, "Creating new target\n"); in pn533_in_dep_link_up_complete()
2341 rc = nfc_targets_found(dev->nfc_dev, &nfc_target, 1); in pn533_in_dep_link_up_complete()
2345 dev->tgt_available_prots = 0; in pn533_in_dep_link_up_complete()
2348 dev->tgt_active_prot = NFC_PROTO_NFC_DEP; in pn533_in_dep_link_up_complete()
2352 rc = nfc_set_remote_general_bytes(dev->nfc_dev, in pn533_in_dep_link_up_complete()
2355 rc = nfc_dep_link_is_up(dev->nfc_dev, in pn533_in_dep_link_up_complete()
2356 dev->nfc_dev->targets[0].idx, in pn533_in_dep_link_up_complete()
2368 struct pn533 *dev = nfc_get_drvdata(nfc_dev); in pn533_dep_link_up() local
2374 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_dep_link_up()
2376 if (dev->poll_mod_count) { in pn533_dep_link_up()
2377 nfc_err(&dev->interface->dev, in pn533_dep_link_up()
2382 if (dev->tgt_active_prot) { in pn533_dep_link_up()
2383 nfc_err(&dev->interface->dev, in pn533_dep_link_up()
2399 skb = pn533_alloc_skb(dev, skb_len); in pn533_dep_link_up()
2437 pn533_rf_field(dev->nfc_dev, 0); in pn533_dep_link_up()
2439 rc = pn533_send_cmd_async(dev, PN533_CMD_IN_JUMP_FOR_DEP, skb, in pn533_dep_link_up()
2452 struct pn533 *dev = nfc_get_drvdata(nfc_dev); in pn533_dep_link_down() local
2454 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_dep_link_down()
2456 pn533_poll_reset_mod_list(dev); in pn533_dep_link_down()
2458 if (dev->tgt_mode || dev->tgt_active_prot) in pn533_dep_link_down()
2459 pn533_abort_cmd(dev, GFP_KERNEL); in pn533_dep_link_down()
2461 dev->tgt_active_prot = 0; in pn533_dep_link_down()
2462 dev->tgt_mode = 0; in pn533_dep_link_down()
2464 skb_queue_purge(&dev->resp_q); in pn533_dep_link_down()
2474 static struct sk_buff *pn533_build_response(struct pn533 *dev) in pn533_build_response() argument
2479 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_build_response()
2481 if (skb_queue_empty(&dev->resp_q)) in pn533_build_response()
2484 if (skb_queue_len(&dev->resp_q) == 1) { in pn533_build_response()
2485 skb = skb_dequeue(&dev->resp_q); in pn533_build_response()
2489 skb_queue_walk_safe(&dev->resp_q, tmp, t) in pn533_build_response()
2492 dev_dbg(&dev->interface->dev, "%s total length %d\n", in pn533_build_response()
2501 skb_queue_walk_safe(&dev->resp_q, tmp, t) { in pn533_build_response()
2507 skb_queue_purge(&dev->resp_q); in pn533_build_response()
2512 static int pn533_data_exchange_complete(struct pn533 *dev, void *_arg, in pn533_data_exchange_complete() argument
2520 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_data_exchange_complete()
2534 nfc_err(&dev->interface->dev, in pn533_data_exchange_complete()
2540 skb_queue_tail(&dev->resp_q, resp); in pn533_data_exchange_complete()
2543 dev->cmd_complete_mi_arg = arg; in pn533_data_exchange_complete()
2544 queue_work(dev->wq, &dev->mi_rx_work); in pn533_data_exchange_complete()
2549 if (skb_queue_len(&dev->fragment_skb) > 0) { in pn533_data_exchange_complete()
2550 dev->cmd_complete_dep_arg = arg; in pn533_data_exchange_complete()
2551 queue_work(dev->wq, &dev->mi_tx_work); in pn533_data_exchange_complete()
2556 skb = pn533_build_response(dev); in pn533_data_exchange_complete()
2569 skb_queue_purge(&dev->resp_q); in pn533_data_exchange_complete()
2576 static int pn533_fill_fragment_skbs(struct pn533 *dev, struct sk_buff *skb) in pn533_fill_fragment_skbs() argument
2589 frag = pn533_alloc_skb(dev, frag_size); in pn533_fill_fragment_skbs()
2591 skb_queue_purge(&dev->fragment_skb); in pn533_fill_fragment_skbs()
2595 if (!dev->tgt_mode) { in pn533_fill_fragment_skbs()
2613 skb_queue_tail(&dev->fragment_skb, frag); in pn533_fill_fragment_skbs()
2619 return skb_queue_len(&dev->fragment_skb); in pn533_fill_fragment_skbs()
2626 struct pn533 *dev = nfc_get_drvdata(nfc_dev); in pn533_transceive() local
2630 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_transceive()
2632 if (!dev->tgt_active_prot) { in pn533_transceive()
2633 nfc_err(&dev->interface->dev, in pn533_transceive()
2648 switch (dev->device_type) { in pn533_transceive()
2650 if (dev->tgt_active_prot == NFC_PROTO_FELICA) { in pn533_transceive()
2651 rc = pn533_send_data_async(dev, PN533_CMD_IN_COMM_THRU, in pn533_transceive()
2661 rc = pn533_fill_fragment_skbs(dev, skb); in pn533_transceive()
2665 skb = skb_dequeue(&dev->fragment_skb); in pn533_transceive()
2674 rc = pn533_send_data_async(dev, PN533_CMD_IN_DATA_EXCHANGE, in pn533_transceive()
2692 static int pn533_tm_send_complete(struct pn533 *dev, void *arg, in pn533_tm_send_complete() argument
2697 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_tm_send_complete()
2705 if (skb_queue_len(&dev->fragment_skb) > 0) { in pn533_tm_send_complete()
2706 queue_work(dev->wq, &dev->mi_tm_tx_work); in pn533_tm_send_complete()
2712 nfc_tm_deactivated(dev->nfc_dev); in pn533_tm_send_complete()
2714 dev->tgt_mode = 0; in pn533_tm_send_complete()
2719 queue_work(dev->wq, &dev->tg_work); in pn533_tm_send_complete()
2726 struct pn533 *dev = nfc_get_drvdata(nfc_dev); in pn533_tm_send() local
2729 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_tm_send()
2733 rc = pn533_fill_fragment_skbs(dev, skb); in pn533_tm_send()
2738 skb = skb_dequeue(&dev->fragment_skb); in pn533_tm_send()
2744 rc = pn533_send_data_async(dev, PN533_CMD_TG_SET_META_DATA, skb, in pn533_tm_send()
2748 rc = pn533_send_data_async(dev, PN533_CMD_TG_SET_DATA, skb, in pn533_tm_send()
2755 skb_queue_purge(&dev->fragment_skb); in pn533_tm_send()
2763 struct pn533 *dev = container_of(work, struct pn533, mi_rx_work); in pn533_wq_mi_recv() local
2767 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_wq_mi_recv()
2769 skb = pn533_alloc_skb(dev, PN533_CMD_DATAEXCH_HEAD_LEN); in pn533_wq_mi_recv()
2773 switch (dev->device_type) { in pn533_wq_mi_recv()
2775 if (dev->tgt_active_prot == NFC_PROTO_FELICA) { in pn533_wq_mi_recv()
2776 rc = pn533_send_cmd_direct_async(dev, in pn533_wq_mi_recv()
2780 dev->cmd_complete_mi_arg); in pn533_wq_mi_recv()
2787 rc = pn533_send_cmd_direct_async(dev, in pn533_wq_mi_recv()
2791 dev->cmd_complete_mi_arg); in pn533_wq_mi_recv()
2799 nfc_err(&dev->interface->dev, in pn533_wq_mi_recv()
2803 kfree(dev->cmd_complete_mi_arg); in pn533_wq_mi_recv()
2806 pn533_send_ack(dev, GFP_KERNEL); in pn533_wq_mi_recv()
2807 queue_work(dev->wq, &dev->cmd_work); in pn533_wq_mi_recv()
2812 struct pn533 *dev = container_of(work, struct pn533, mi_tx_work); in pn533_wq_mi_send() local
2816 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_wq_mi_send()
2819 skb = skb_dequeue(&dev->fragment_skb); in pn533_wq_mi_send()
2823 skb_queue_head_init(&dev->fragment_skb); in pn533_wq_mi_send()
2827 switch (dev->device_type) { in pn533_wq_mi_send()
2829 if (dev->tgt_active_prot != NFC_PROTO_FELICA) { in pn533_wq_mi_send()
2834 rc = pn533_send_cmd_direct_async(dev, PN533_CMD_IN_COMM_THRU, in pn533_wq_mi_send()
2837 dev->cmd_complete_dep_arg); in pn533_wq_mi_send()
2843 rc = pn533_send_cmd_direct_async(dev,PN533_CMD_IN_DATA_EXCHANGE, in pn533_wq_mi_send()
2846 dev->cmd_complete_dep_arg); in pn533_wq_mi_send()
2854 nfc_err(&dev->interface->dev, in pn533_wq_mi_send()
2858 kfree(dev->cmd_complete_dep_arg); in pn533_wq_mi_send()
2861 pn533_send_ack(dev, GFP_KERNEL); in pn533_wq_mi_send()
2862 queue_work(dev->wq, &dev->cmd_work); in pn533_wq_mi_send()
2865 static int pn533_set_configuration(struct pn533 *dev, u8 cfgitem, u8 *cfgdata, in pn533_set_configuration() argument
2872 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_set_configuration()
2876 skb = pn533_alloc_skb(dev, skb_len); in pn533_set_configuration()
2883 resp = pn533_send_cmd_sync(dev, PN533_CMD_RF_CONFIGURATION, skb); in pn533_set_configuration()
2891 static int pn533_get_firmware_version(struct pn533 *dev, in pn533_get_firmware_version() argument
2897 skb = pn533_alloc_skb(dev, 0); in pn533_get_firmware_version()
2901 resp = pn533_send_cmd_sync(dev, PN533_CMD_GET_FIRMWARE_VERSION, skb); in pn533_get_firmware_version()
2914 static int pn533_pasori_fw_reset(struct pn533 *dev) in pn533_pasori_fw_reset() argument
2919 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_pasori_fw_reset()
2921 skb = pn533_alloc_skb(dev, sizeof(u8)); in pn533_pasori_fw_reset()
2927 resp = pn533_send_cmd_sync(dev, 0x18, skb); in pn533_pasori_fw_reset()
2945 dev_dbg(&urb->dev->dev, "%s\n", __func__); in pn533_acr122_poweron_rdr_resp()
2955 static int pn533_acr122_poweron_rdr(struct pn533 *dev) in pn533_acr122_poweron_rdr() argument
2965 dev_dbg(&dev->interface->dev, "%s\n", __func__); in pn533_acr122_poweron_rdr()
2968 cntx = dev->in_urb->context; /* backup context */ in pn533_acr122_poweron_rdr()
2970 dev->in_urb->transfer_buffer = buf; in pn533_acr122_poweron_rdr()
2971 dev->in_urb->transfer_buffer_length = 255; in pn533_acr122_poweron_rdr()
2972 dev->in_urb->complete = pn533_acr122_poweron_rdr_resp; in pn533_acr122_poweron_rdr()
2973 dev->in_urb->context = &arg; in pn533_acr122_poweron_rdr()
2975 dev->out_urb->transfer_buffer = cmd; in pn533_acr122_poweron_rdr()
2976 dev->out_urb->transfer_buffer_length = sizeof(cmd); in pn533_acr122_poweron_rdr()
2981 rc = usb_submit_urb(dev->out_urb, GFP_KERNEL); in pn533_acr122_poweron_rdr()
2983 nfc_err(&dev->interface->dev, in pn533_acr122_poweron_rdr()
2988 rc = usb_submit_urb(dev->in_urb, GFP_KERNEL); in pn533_acr122_poweron_rdr()
2990 nfc_err(&dev->interface->dev, in pn533_acr122_poweron_rdr()
2996 dev->in_urb->context = cntx; /* restore context */ in pn533_acr122_poweron_rdr()
3003 struct pn533 *dev = nfc_get_drvdata(nfc_dev); in pn533_rf_field() local
3009 rc = pn533_set_configuration(dev, PN533_CFGITEM_RF_FIELD, in pn533_rf_field()
3012 nfc_err(&dev->interface->dev, "Error on setting RF field\n"); in pn533_rf_field()
3042 static int pn533_setup(struct pn533 *dev) in pn533_setup() argument
3049 switch (dev->device_type) { in pn533_setup()
3065 nfc_err(&dev->interface->dev, "Unknown device type %d\n", in pn533_setup()
3066 dev->device_type); in pn533_setup()
3070 rc = pn533_set_configuration(dev, PN533_CFGITEM_MAX_RETRIES, in pn533_setup()
3073 nfc_err(&dev->interface->dev, in pn533_setup()
3079 rc = pn533_set_configuration(dev, PN533_CFGITEM_TIMING, in pn533_setup()
3082 nfc_err(&dev->interface->dev, "Error on setting RF timings\n"); in pn533_setup()
3086 switch (dev->device_type) { in pn533_setup()
3091 pn533_pasori_fw_reset(dev); in pn533_setup()
3093 rc = pn533_set_configuration(dev, PN533_CFGITEM_PASORI, in pn533_setup()
3096 nfc_err(&dev->interface->dev, in pn533_setup()
3101 pn533_pasori_fw_reset(dev); in pn533_setup()
3113 struct pn533 *dev; in pn533_probe() local
3122 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in pn533_probe()
3123 if (!dev) in pn533_probe()
3126 dev->udev = usb_get_dev(interface_to_usbdev(interface)); in pn533_probe()
3127 dev->interface = interface; in pn533_probe()
3128 mutex_init(&dev->cmd_lock); in pn533_probe()
3142 nfc_err(&interface->dev, in pn533_probe()
3148 dev->in_urb = usb_alloc_urb(0, GFP_KERNEL); in pn533_probe()
3149 dev->out_urb = usb_alloc_urb(0, GFP_KERNEL); in pn533_probe()
3151 if (!dev->in_urb || !dev->out_urb) in pn533_probe()
3154 usb_fill_bulk_urb(dev->in_urb, dev->udev, in pn533_probe()
3155 usb_rcvbulkpipe(dev->udev, in_endpoint), in pn533_probe()
3156 NULL, 0, NULL, dev); in pn533_probe()
3157 usb_fill_bulk_urb(dev->out_urb, dev->udev, in pn533_probe()
3158 usb_sndbulkpipe(dev->udev, out_endpoint), in pn533_probe()
3159 NULL, 0, pn533_send_complete, dev); in pn533_probe()
3161 INIT_WORK(&dev->cmd_work, pn533_wq_cmd); in pn533_probe()
3162 INIT_WORK(&dev->cmd_complete_work, pn533_wq_cmd_complete); in pn533_probe()
3163 INIT_WORK(&dev->mi_rx_work, pn533_wq_mi_recv); in pn533_probe()
3164 INIT_WORK(&dev->mi_tx_work, pn533_wq_mi_send); in pn533_probe()
3165 INIT_WORK(&dev->tg_work, pn533_wq_tg_get_data); in pn533_probe()
3166 INIT_WORK(&dev->mi_tm_rx_work, pn533_wq_tm_mi_recv); in pn533_probe()
3167 INIT_WORK(&dev->mi_tm_tx_work, pn533_wq_tm_mi_send); in pn533_probe()
3168 INIT_DELAYED_WORK(&dev->poll_work, pn533_wq_poll); in pn533_probe()
3169 INIT_WORK(&dev->rf_work, pn533_wq_rf); in pn533_probe()
3170 dev->wq = alloc_ordered_workqueue("pn533", 0); in pn533_probe()
3171 if (dev->wq == NULL) in pn533_probe()
3174 init_timer(&dev->listen_timer); in pn533_probe()
3175 dev->listen_timer.data = (unsigned long) dev; in pn533_probe()
3176 dev->listen_timer.function = pn533_listen_mode_timer; in pn533_probe()
3178 skb_queue_head_init(&dev->resp_q); in pn533_probe()
3179 skb_queue_head_init(&dev->fragment_skb); in pn533_probe()
3181 INIT_LIST_HEAD(&dev->cmd_queue); in pn533_probe()
3183 usb_set_intfdata(interface, dev); in pn533_probe()
3185 dev->ops = &pn533_std_frame_ops; in pn533_probe()
3187 dev->protocol_type = PN533_PROTO_REQ_ACK_RESP; in pn533_probe()
3188 dev->device_type = id->driver_info; in pn533_probe()
3189 switch (dev->device_type) { in pn533_probe()
3200 dev->ops = &pn533_acr122_frame_ops; in pn533_probe()
3201 dev->protocol_type = PN533_PROTO_REQ_RESP, in pn533_probe()
3203 rc = pn533_acr122_poweron_rdr(dev); in pn533_probe()
3205 nfc_err(&dev->interface->dev, in pn533_probe()
3212 nfc_err(&dev->interface->dev, "Unknown device type %d\n", in pn533_probe()
3213 dev->device_type); in pn533_probe()
3219 rc = pn533_get_firmware_version(dev, &fw_ver); in pn533_probe()
3223 nfc_info(&dev->interface->dev, in pn533_probe()
3228 dev->nfc_dev = nfc_allocate_device(&pn533_nfc_ops, protocols, in pn533_probe()
3229 dev->ops->tx_header_len + in pn533_probe()
3231 dev->ops->tx_tail_len); in pn533_probe()
3232 if (!dev->nfc_dev) { in pn533_probe()
3237 nfc_set_parent_dev(dev->nfc_dev, &interface->dev); in pn533_probe()
3238 nfc_set_drvdata(dev->nfc_dev, dev); in pn533_probe()
3240 rc = nfc_register_device(dev->nfc_dev); in pn533_probe()
3244 rc = pn533_setup(dev); in pn533_probe()
3251 nfc_unregister_device(dev->nfc_dev); in pn533_probe()
3254 nfc_free_device(dev->nfc_dev); in pn533_probe()
3257 destroy_workqueue(dev->wq); in pn533_probe()
3259 usb_free_urb(dev->in_urb); in pn533_probe()
3260 usb_free_urb(dev->out_urb); in pn533_probe()
3261 usb_put_dev(dev->udev); in pn533_probe()
3262 kfree(dev); in pn533_probe()
3268 struct pn533 *dev; in pn533_disconnect() local
3271 dev = usb_get_intfdata(interface); in pn533_disconnect()
3274 nfc_unregister_device(dev->nfc_dev); in pn533_disconnect()
3275 nfc_free_device(dev->nfc_dev); in pn533_disconnect()
3277 usb_kill_urb(dev->in_urb); in pn533_disconnect()
3278 usb_kill_urb(dev->out_urb); in pn533_disconnect()
3280 flush_delayed_work(&dev->poll_work); in pn533_disconnect()
3281 destroy_workqueue(dev->wq); in pn533_disconnect()
3283 skb_queue_purge(&dev->resp_q); in pn533_disconnect()
3285 del_timer(&dev->listen_timer); in pn533_disconnect()
3287 list_for_each_entry_safe(cmd, n, &dev->cmd_queue, queue) { in pn533_disconnect()
3292 usb_free_urb(dev->in_urb); in pn533_disconnect()
3293 usb_free_urb(dev->out_urb); in pn533_disconnect()
3294 kfree(dev); in pn533_disconnect()
3296 nfc_info(&interface->dev, "NXP PN533 NFC device disconnected\n"); in pn533_disconnect()