Lines Matching full:ndev

43 	struct nci_dev *ndev;  member
60 void (*data_pkt_counter_cb)(struct nci_dev *ndev);
82 static int fdp_nci_create_conn(struct nci_dev *ndev) in fdp_nci_create_conn() argument
84 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_create_conn()
92 r = nci_core_conn_create(info->ndev, FDP_PATCH_CONN_DEST, 1, in fdp_nci_create_conn()
97 return nci_get_conn_info_by_dest_type_params(ndev, in fdp_nci_create_conn()
101 static inline int fdp_nci_get_versions(struct nci_dev *ndev) in fdp_nci_get_versions() argument
103 return nci_core_cmd(ndev, NCI_OP_CORE_GET_CONFIG_CMD, in fdp_nci_get_versions()
108 static inline int fdp_nci_patch_cmd(struct nci_dev *ndev, u8 type) in fdp_nci_patch_cmd() argument
110 return nci_prop_cmd(ndev, NCI_OP_PROP_PATCH_OID, sizeof(type), &type); in fdp_nci_patch_cmd()
113 static inline int fdp_nci_set_production_data(struct nci_dev *ndev, u8 len, in fdp_nci_set_production_data() argument
116 return nci_prop_cmd(ndev, NCI_OP_PROP_SET_PDATA_OID, len, data); in fdp_nci_set_production_data()
119 static int fdp_nci_set_clock(struct nci_dev *ndev, u8 clock_type, in fdp_nci_set_clock() argument
141 return fdp_nci_set_production_data(ndev, 9, data); in fdp_nci_set_clock()
144 static void fdp_nci_send_patch_cb(struct nci_dev *ndev) in fdp_nci_send_patch_cb() argument
146 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_send_patch_cb()
159 static void fdp_nci_set_data_pkt_counter(struct nci_dev *ndev, in fdp_nci_set_data_pkt_counter() argument
160 void (*cb)(struct nci_dev *ndev), int count) in fdp_nci_set_data_pkt_counter() argument
162 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_set_data_pkt_counter()
181 static int fdp_nci_send_patch(struct nci_dev *ndev, u8 conn_id, u8 type) in fdp_nci_send_patch() argument
183 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_send_patch()
199 max_size = nci_conn_max_data_pkt_payload_size(ndev, conn_id); in fdp_nci_send_patch()
205 fdp_nci_set_data_pkt_counter(ndev, fdp_nci_send_patch_cb, in fdp_nci_send_patch()
212 skb = nci_skb_alloc(ndev, (NCI_CTRL_HDR_SIZE + payload_size), in fdp_nci_send_patch()
215 fdp_nci_set_data_pkt_counter(ndev, NULL, 0); in fdp_nci_send_patch()
224 rc = nci_send_data(ndev, conn_id, skb); in fdp_nci_send_patch()
227 fdp_nci_set_data_pkt_counter(ndev, NULL, 0); in fdp_nci_send_patch()
237 static int fdp_nci_open(struct nci_dev *ndev) in fdp_nci_open() argument
239 const struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_open()
244 static int fdp_nci_close(struct nci_dev *ndev) in fdp_nci_close() argument
249 static int fdp_nci_send(struct nci_dev *ndev, struct sk_buff *skb) in fdp_nci_send() argument
251 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_send()
255 info->data_pkt_counter_cb(ndev); in fdp_nci_send()
267 static int fdp_nci_request_firmware(struct nci_dev *ndev) in fdp_nci_request_firmware() argument
269 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_request_firmware()
309 static void fdp_nci_release_firmware(struct nci_dev *ndev) in fdp_nci_release_firmware() argument
311 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_release_firmware()
324 static int fdp_nci_patch_otp(struct nci_dev *ndev) in fdp_nci_patch_otp() argument
326 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_patch_otp()
339 r = fdp_nci_patch_cmd(ndev, NCI_PATCH_TYPE_OTP); in fdp_nci_patch_otp()
344 conn_id = fdp_nci_create_conn(ndev); in fdp_nci_patch_otp()
349 r = fdp_nci_send_patch(ndev, conn_id, NCI_PATCH_TYPE_OTP); in fdp_nci_patch_otp()
361 r = nci_core_conn_close(info->ndev, conn_id); in fdp_nci_patch_otp()
366 if (fdp_nci_patch_cmd(ndev, NCI_PATCH_TYPE_EOT)) { in fdp_nci_patch_otp()
390 static int fdp_nci_patch_ram(struct nci_dev *ndev) in fdp_nci_patch_ram() argument
392 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_patch_ram()
405 r = fdp_nci_patch_cmd(ndev, NCI_PATCH_TYPE_RAM); in fdp_nci_patch_ram()
410 conn_id = fdp_nci_create_conn(ndev); in fdp_nci_patch_ram()
415 r = fdp_nci_send_patch(ndev, conn_id, NCI_PATCH_TYPE_RAM); in fdp_nci_patch_ram()
427 r = nci_core_conn_close(info->ndev, conn_id); in fdp_nci_patch_ram()
432 if (fdp_nci_patch_cmd(ndev, NCI_PATCH_TYPE_EOT)) { in fdp_nci_patch_ram()
456 static int fdp_nci_setup(struct nci_dev *ndev) in fdp_nci_setup() argument
459 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_setup()
464 r = nci_core_init(ndev); in fdp_nci_setup()
469 r = fdp_nci_get_versions(ndev); in fdp_nci_setup()
474 r = fdp_nci_request_firmware(ndev); in fdp_nci_setup()
480 r = fdp_nci_patch_otp(ndev); in fdp_nci_setup()
488 r = fdp_nci_patch_ram(ndev); in fdp_nci_setup()
495 fdp_nci_release_firmware(ndev); in fdp_nci_setup()
499 r = nci_core_init(ndev); in fdp_nci_setup()
503 r = fdp_nci_get_versions(ndev); in fdp_nci_setup()
519 return nci_core_reset(ndev); in fdp_nci_setup()
522 fdp_nci_release_firmware(ndev); in fdp_nci_setup()
527 static int fdp_nci_post_setup(struct nci_dev *ndev) in fdp_nci_post_setup() argument
529 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_post_setup()
537 r = fdp_nci_set_production_data(ndev, info->fw_vsc_cfg[3], in fdp_nci_post_setup()
547 r = fdp_nci_set_clock(ndev, info->clock_type, info->clock_freq); in fdp_nci_post_setup()
556 r = nci_core_reset(ndev); in fdp_nci_post_setup()
564 return nci_core_init(ndev); in fdp_nci_post_setup()
567 static int fdp_nci_core_reset_ntf_packet(struct nci_dev *ndev, in fdp_nci_core_reset_ntf_packet() argument
570 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_core_reset_ntf_packet()
578 static int fdp_nci_prop_patch_ntf_packet(struct nci_dev *ndev, in fdp_nci_prop_patch_ntf_packet() argument
581 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_prop_patch_ntf_packet()
590 static int fdp_nci_prop_patch_rsp_packet(struct nci_dev *ndev, in fdp_nci_prop_patch_rsp_packet() argument
593 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_prop_patch_rsp_packet()
598 nci_req_complete(ndev, status); in fdp_nci_prop_patch_rsp_packet()
603 static int fdp_nci_prop_set_production_data_rsp_packet(struct nci_dev *ndev, in fdp_nci_prop_set_production_data_rsp_packet() argument
606 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_prop_set_production_data_rsp_packet()
611 nci_req_complete(ndev, status); in fdp_nci_prop_set_production_data_rsp_packet()
616 static int fdp_nci_core_get_config_rsp_packet(struct nci_dev *ndev, in fdp_nci_core_get_config_rsp_packet() argument
619 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_core_get_config_rsp_packet()
658 nci_req_complete(ndev, rsp->status); in fdp_nci_core_get_config_rsp_packet()
706 struct nci_dev *ndev; in fdp_nci_probe() local
731 ndev = nci_allocate_device(&nci_ops, protocols, tx_headroom, in fdp_nci_probe()
733 if (!ndev) { in fdp_nci_probe()
734 nfc_err(dev, "Cannot allocate nfc ndev\n"); in fdp_nci_probe()
738 r = nci_register_device(ndev); in fdp_nci_probe()
742 *ndevp = ndev; in fdp_nci_probe()
743 info->ndev = ndev; in fdp_nci_probe()
745 nci_set_drvdata(ndev, info); in fdp_nci_probe()
750 nci_free_device(ndev); in fdp_nci_probe()
755 void fdp_nci_remove(struct nci_dev *ndev) in fdp_nci_remove() argument
757 nci_unregister_device(ndev); in fdp_nci_remove()
758 nci_free_device(ndev); in fdp_nci_remove()