Lines Matching refs:ndev
28 static void nci_core_reset_rsp_packet(struct nci_dev *ndev,
38 ndev->nci_ver = rsp->nci_ver;
43 nci_req_complete(ndev, rsp->status);
47 static u8 nci_core_init_rsp_packet_v1(struct nci_dev *ndev,
58 ndev->nfcc_features = __le32_to_cpu(rsp_1->nfcc_features);
59 ndev->num_supported_rf_interfaces = rsp_1->num_supported_rf_interfaces;
61 ndev->num_supported_rf_interfaces =
62 min((int)ndev->num_supported_rf_interfaces,
65 memcpy(ndev->supported_rf_interfaces,
67 ndev->num_supported_rf_interfaces);
71 ndev->max_logical_connections = rsp_2->max_logical_connections;
72 ndev->max_routing_table_size =
74 ndev->max_ctrl_pkt_payload_len =
76 ndev->max_size_for_large_params =
78 ndev->manufact_id =
80 ndev->manufact_specific_info =
86 static u8 nci_core_init_rsp_packet_v2(struct nci_dev *ndev,
99 ndev->nfcc_features = __le32_to_cpu(rsp->nfcc_features);
100 ndev->num_supported_rf_interfaces = rsp->num_supported_rf_interfaces;
102 ndev->num_supported_rf_interfaces =
103 min((int)ndev->num_supported_rf_interfaces,
106 while (rf_interface_idx < ndev->num_supported_rf_interfaces) {
107 ndev->supported_rf_interfaces[rf_interface_idx++] = *supported_rf_interface++;
114 ndev->max_logical_connections = rsp->max_logical_connections;
115 ndev->max_routing_table_size =
117 ndev->max_ctrl_pkt_payload_len =
119 ndev->max_size_for_large_params = NCI_MAX_LARGE_PARAMS_NCI_v2;
124 static void nci_core_init_rsp_packet(struct nci_dev *ndev, const struct sk_buff *skb)
128 if (!(ndev->nci_ver & NCI_VER_2_MASK))
129 status = nci_core_init_rsp_packet_v1(ndev, skb);
131 status = nci_core_init_rsp_packet_v2(ndev, skb);
137 ndev->nfcc_features);
139 ndev->num_supported_rf_interfaces);
141 ndev->supported_rf_interfaces[0]);
143 ndev->supported_rf_interfaces[1]);
145 ndev->supported_rf_interfaces[2]);
147 ndev->supported_rf_interfaces[3]);
149 ndev->max_logical_connections);
151 ndev->max_routing_table_size);
153 ndev->max_ctrl_pkt_payload_len);
155 ndev->max_size_for_large_params);
157 ndev->manufact_id);
159 ndev->manufact_specific_info);
162 nci_req_complete(ndev, status);
165 static void nci_core_set_config_rsp_packet(struct nci_dev *ndev,
172 nci_req_complete(ndev, rsp->status);
175 static void nci_rf_disc_map_rsp_packet(struct nci_dev *ndev,
182 nci_req_complete(ndev, status);
185 static void nci_rf_disc_rsp_packet(struct nci_dev *ndev,
194 atomic_set(&ndev->state, NCI_DISCOVERY);
196 conn_info = ndev->rf_conn_info;
198 conn_info = devm_kzalloc(&ndev->nfc_dev->dev,
207 list_add(&conn_info->list, &ndev->conn_info_list);
208 ndev->rf_conn_info = conn_info;
213 nci_req_complete(ndev, status);
216 static void nci_rf_disc_select_rsp_packet(struct nci_dev *ndev,
225 nci_req_complete(ndev, status);
228 static void nci_rf_deactivate_rsp_packet(struct nci_dev *ndev,
237 (atomic_read(&ndev->state) != NCI_POLL_ACTIVE)) {
238 nci_clear_target_list(ndev);
239 atomic_set(&ndev->state, NCI_IDLE);
240 nci_req_complete(ndev, status);
244 static void nci_nfcee_discover_rsp_packet(struct nci_dev *ndev,
250 nci_req_complete(ndev, NCI_STATUS_NFCEE_PROTOCOL_ERROR);
258 nci_req_complete(ndev, discover_rsp->status);
261 static void nci_nfcee_mode_set_rsp_packet(struct nci_dev *ndev,
267 nci_req_complete(ndev, status);
270 static void nci_core_conn_create_rsp_packet(struct nci_dev *ndev,
282 conn_info = devm_kzalloc(&ndev->nfc_dev->dev,
289 conn_info->dest_params = devm_kzalloc(&ndev->nfc_dev->dev,
297 conn_info->dest_type = ndev->cur_dest_type;
298 conn_info->dest_params->id = ndev->cur_params.id;
299 conn_info->dest_params->protocol = ndev->cur_params.protocol;
307 list_add(&conn_info->list, &ndev->conn_info_list);
309 if (ndev->cur_params.id == ndev->hci_dev->nfcee_id)
310 ndev->hci_dev->conn_info = conn_info;
319 devm_kfree(&ndev->nfc_dev->dev, conn_info);
322 nci_req_complete(ndev, status);
325 static void nci_core_conn_close_rsp_packet(struct nci_dev *ndev,
333 conn_info = nci_get_conn_info_by_conn_id(ndev,
334 ndev->cur_conn_id);
337 if (conn_info == ndev->rf_conn_info)
338 ndev->rf_conn_info = NULL;
339 devm_kfree(&ndev->nfc_dev->dev, conn_info);
342 nci_req_complete(ndev, status);
345 void nci_rsp_packet(struct nci_dev *ndev, struct sk_buff *skb)
350 del_timer(&ndev->cmd_timer);
362 if (nci_prop_rsp_packet(ndev, rsp_opcode, skb) == -ENOTSUPP) {
372 nci_core_reset_rsp_packet(ndev, skb);
376 nci_core_init_rsp_packet(ndev, skb);
380 nci_core_set_config_rsp_packet(ndev, skb);
384 nci_core_conn_create_rsp_packet(ndev, skb);
388 nci_core_conn_close_rsp_packet(ndev, skb);
392 nci_rf_disc_map_rsp_packet(ndev, skb);
396 nci_rf_disc_rsp_packet(ndev, skb);
400 nci_rf_disc_select_rsp_packet(ndev, skb);
404 nci_rf_deactivate_rsp_packet(ndev, skb);
408 nci_nfcee_discover_rsp_packet(ndev, skb);
412 nci_nfcee_mode_set_rsp_packet(ndev, skb);
420 nci_core_rsp_packet(ndev, rsp_opcode, skb);
425 atomic_set(&ndev->cmd_cnt, 1);
426 if (!skb_queue_empty(&ndev->cmd_q))
427 queue_work(ndev->cmd_wq, &ndev->cmd_work);