Lines Matching refs: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()
213 skb = nci_skb_alloc(ndev, (NCI_CTRL_HDR_SIZE + payload_size), in fdp_nci_send_patch()
216 fdp_nci_set_data_pkt_counter(ndev, NULL, 0); in fdp_nci_send_patch()
225 rc = nci_send_data(ndev, conn_id, skb); in fdp_nci_send_patch()
228 fdp_nci_set_data_pkt_counter(ndev, NULL, 0); in fdp_nci_send_patch()
238 static int fdp_nci_open(struct nci_dev *ndev) in fdp_nci_open() argument
241 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_open()
251 static int fdp_nci_close(struct nci_dev *ndev) in fdp_nci_close() argument
253 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_close()
260 static int fdp_nci_send(struct nci_dev *ndev, struct sk_buff *skb) in fdp_nci_send() argument
262 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_send()
268 info->data_pkt_counter_cb(ndev); in fdp_nci_send()
273 int fdp_nci_recv_frame(struct nci_dev *ndev, struct sk_buff *skb) in fdp_nci_recv_frame() argument
275 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_recv_frame()
279 return nci_recv_frame(ndev, skb); in fdp_nci_recv_frame()
283 static int fdp_nci_request_firmware(struct nci_dev *ndev) in fdp_nci_request_firmware() argument
285 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_request_firmware()
328 static void fdp_nci_release_firmware(struct nci_dev *ndev) in fdp_nci_release_firmware() argument
330 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_release_firmware()
343 static int fdp_nci_patch_otp(struct nci_dev *ndev) in fdp_nci_patch_otp() argument
345 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_patch_otp()
358 r = fdp_nci_patch_cmd(ndev, NCI_PATCH_TYPE_OTP); in fdp_nci_patch_otp()
363 conn_id = fdp_nci_create_conn(ndev); in fdp_nci_patch_otp()
370 r = fdp_nci_send_patch(ndev, conn_id, NCI_PATCH_TYPE_OTP); in fdp_nci_patch_otp()
382 r = nci_core_conn_close(info->ndev, conn_id); in fdp_nci_patch_otp()
387 if (fdp_nci_patch_cmd(ndev, NCI_PATCH_TYPE_EOT)) { in fdp_nci_patch_otp()
414 static int fdp_nci_patch_ram(struct nci_dev *ndev) in fdp_nci_patch_ram() argument
416 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_patch_ram()
429 r = fdp_nci_patch_cmd(ndev, NCI_PATCH_TYPE_RAM); in fdp_nci_patch_ram()
434 conn_id = fdp_nci_create_conn(ndev); in fdp_nci_patch_ram()
441 r = fdp_nci_send_patch(ndev, conn_id, NCI_PATCH_TYPE_RAM); in fdp_nci_patch_ram()
453 r = nci_core_conn_close(info->ndev, conn_id); in fdp_nci_patch_ram()
458 if (fdp_nci_patch_cmd(ndev, NCI_PATCH_TYPE_EOT)) { in fdp_nci_patch_ram()
485 static int fdp_nci_setup(struct nci_dev *ndev) in fdp_nci_setup() argument
488 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_setup()
495 r = nci_core_init(ndev); in fdp_nci_setup()
500 r = fdp_nci_get_versions(ndev); in fdp_nci_setup()
505 r = fdp_nci_request_firmware(ndev); in fdp_nci_setup()
511 r = fdp_nci_patch_otp(ndev); in fdp_nci_setup()
519 r = fdp_nci_patch_ram(ndev); in fdp_nci_setup()
526 fdp_nci_release_firmware(ndev); in fdp_nci_setup()
530 r = nci_core_init(ndev); in fdp_nci_setup()
534 r = fdp_nci_get_versions(ndev); in fdp_nci_setup()
550 return nci_core_reset(ndev); in fdp_nci_setup()
553 fdp_nci_release_firmware(ndev); in fdp_nci_setup()
558 static int fdp_nci_post_setup(struct nci_dev *ndev) in fdp_nci_post_setup() argument
560 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_post_setup()
568 r = fdp_nci_set_production_data(ndev, info->fw_vsc_cfg[3], in fdp_nci_post_setup()
578 r = fdp_nci_set_clock(ndev, info->clock_type, info->clock_freq); in fdp_nci_post_setup()
587 r = nci_core_reset(ndev); in fdp_nci_post_setup()
595 return nci_core_init(ndev); in fdp_nci_post_setup()
598 static int fdp_nci_core_reset_ntf_packet(struct nci_dev *ndev, in fdp_nci_core_reset_ntf_packet() argument
601 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_core_reset_ntf_packet()
611 static int fdp_nci_prop_patch_ntf_packet(struct nci_dev *ndev, in fdp_nci_prop_patch_ntf_packet() argument
614 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_prop_patch_ntf_packet()
625 static int fdp_nci_prop_patch_rsp_packet(struct nci_dev *ndev, in fdp_nci_prop_patch_rsp_packet() argument
628 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_prop_patch_rsp_packet()
633 nci_req_complete(ndev, status); in fdp_nci_prop_patch_rsp_packet()
638 static int fdp_nci_prop_set_production_data_rsp_packet(struct nci_dev *ndev, in fdp_nci_prop_set_production_data_rsp_packet() argument
641 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_prop_set_production_data_rsp_packet()
646 nci_req_complete(ndev, status); in fdp_nci_prop_set_production_data_rsp_packet()
651 static int fdp_nci_core_get_config_rsp_packet(struct nci_dev *ndev, in fdp_nci_core_get_config_rsp_packet() argument
654 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_core_get_config_rsp_packet()
692 nci_req_complete(ndev, rsp->status); in fdp_nci_core_get_config_rsp_packet()
740 struct nci_dev *ndev; in fdp_nci_probe() local
764 ndev = nci_allocate_device(&nci_ops, protocols, tx_headroom, in fdp_nci_probe()
766 if (!ndev) { in fdp_nci_probe()
771 r = nci_register_device(ndev); in fdp_nci_probe()
775 *ndevp = ndev; in fdp_nci_probe()
776 info->ndev = ndev; in fdp_nci_probe()
778 nci_set_drvdata(ndev, info); in fdp_nci_probe()
783 nci_free_device(ndev); in fdp_nci_probe()
788 void fdp_nci_remove(struct nci_dev *ndev) in fdp_nci_remove() argument
790 struct fdp_nci_info *info = nci_get_drvdata(ndev); in fdp_nci_remove()
795 nci_unregister_device(ndev); in fdp_nci_remove()
796 nci_free_device(ndev); in fdp_nci_remove()