Lines Matching refs:ddev
109 static void digital_in_recv_dep_res(struct nfc_digital_dev *ddev, void *arg,
111 static void digital_tg_recv_dep_req(struct nfc_digital_dev *ddev, void *arg,
171 static void digital_skb_push_dep_sod(struct nfc_digital_dev *ddev, in digital_skb_push_dep_sod() argument
178 if (ddev->curr_rf_tech == NFC_DIGITAL_RF_TECH_106A) in digital_skb_push_dep_sod()
182 static int digital_skb_pull_dep_sod(struct nfc_digital_dev *ddev, in digital_skb_pull_dep_sod() argument
190 if (ddev->curr_rf_tech == NFC_DIGITAL_RF_TECH_106A) in digital_skb_pull_dep_sod()
203 digital_send_dep_data_prep(struct nfc_digital_dev *ddev, struct sk_buff *skb, in digital_send_dep_data_prep() argument
209 if (skb->len > ddev->remote_payload_max) { in digital_send_dep_data_prep()
212 new_skb = digital_skb_alloc(ddev, ddev->remote_payload_max); in digital_send_dep_data_prep()
214 kfree_skb(ddev->chaining_skb); in digital_send_dep_data_prep()
215 ddev->chaining_skb = NULL; in digital_send_dep_data_prep()
220 skb_put_data(new_skb, skb->data, ddev->remote_payload_max); in digital_send_dep_data_prep()
221 skb_pull(skb, ddev->remote_payload_max); in digital_send_dep_data_prep()
223 ddev->chaining_skb = skb; in digital_send_dep_data_prep()
224 ddev->data_exch = data_exch; in digital_send_dep_data_prep()
226 ddev->chaining_skb = NULL; in digital_send_dep_data_prep()
234 digital_recv_dep_data_gather(struct nfc_digital_dev *ddev, u8 pfb, in digital_recv_dep_data_gather() argument
236 int (*send_ack)(struct nfc_digital_dev *ddev, in digital_recv_dep_data_gather() argument
244 if (DIGITAL_NFC_DEP_MI_BIT_SET(pfb) && (!ddev->chaining_skb)) { in digital_recv_dep_data_gather()
245 ddev->chaining_skb = in digital_recv_dep_data_gather()
246 nfc_alloc_recv_skb(8 * ddev->local_payload_max, in digital_recv_dep_data_gather()
248 if (!ddev->chaining_skb) { in digital_recv_dep_data_gather()
254 if (ddev->chaining_skb) { in digital_recv_dep_data_gather()
255 if (resp->len > skb_tailroom(ddev->chaining_skb)) { in digital_recv_dep_data_gather()
256 new_skb = skb_copy_expand(ddev->chaining_skb, in digital_recv_dep_data_gather()
258 ddev->chaining_skb), in digital_recv_dep_data_gather()
259 8 * ddev->local_payload_max, in digital_recv_dep_data_gather()
266 kfree_skb(ddev->chaining_skb); in digital_recv_dep_data_gather()
267 ddev->chaining_skb = new_skb; in digital_recv_dep_data_gather()
270 skb_put_data(ddev->chaining_skb, resp->data, resp->len); in digital_recv_dep_data_gather()
276 rc = send_ack(ddev, data_exch); in digital_recv_dep_data_gather()
283 resp = ddev->chaining_skb; in digital_recv_dep_data_gather()
284 ddev->chaining_skb = NULL; in digital_recv_dep_data_gather()
292 kfree_skb(ddev->chaining_skb); in digital_recv_dep_data_gather()
293 ddev->chaining_skb = NULL; in digital_recv_dep_data_gather()
298 static void digital_in_recv_psl_res(struct nfc_digital_dev *ddev, void *arg, in digital_in_recv_psl_res() argument
311 rc = ddev->skb_check_crc(resp); in digital_in_recv_psl_res()
317 rc = digital_skb_pull_dep_sod(ddev, resp); in digital_in_recv_psl_res()
332 rc = digital_in_configure_hw(ddev, NFC_DIGITAL_CONFIG_RF_TECH, in digital_in_recv_psl_res()
337 rc = digital_in_configure_hw(ddev, NFC_DIGITAL_CONFIG_FRAMING, in digital_in_recv_psl_res()
342 if (!DIGITAL_DRV_CAPS_IN_CRC(ddev) && in digital_in_recv_psl_res()
343 (ddev->curr_rf_tech == NFC_DIGITAL_RF_TECH_106A)) { in digital_in_recv_psl_res()
344 ddev->skb_add_crc = digital_skb_add_crc_f; in digital_in_recv_psl_res()
345 ddev->skb_check_crc = digital_skb_check_crc_f; in digital_in_recv_psl_res()
348 ddev->curr_rf_tech = NFC_DIGITAL_RF_TECH_424F; in digital_in_recv_psl_res()
350 nfc_dep_link_is_up(ddev->nfc_dev, target->idx, NFC_COMM_ACTIVE, in digital_in_recv_psl_res()
353 ddev->curr_nfc_dep_pni = 0; in digital_in_recv_psl_res()
359 ddev->curr_protocol = 0; in digital_in_recv_psl_res()
362 static int digital_in_send_psl_req(struct nfc_digital_dev *ddev, in digital_in_send_psl_req() argument
370 skb = digital_skb_alloc(ddev, sizeof(*psl_req)); in digital_in_send_psl_req()
383 payload_size = min(ddev->local_payload_max, ddev->remote_payload_max); in digital_in_send_psl_req()
387 ddev->local_payload_max = payload_size; in digital_in_send_psl_req()
388 ddev->remote_payload_max = payload_size; in digital_in_send_psl_req()
390 digital_skb_push_dep_sod(ddev, skb); in digital_in_send_psl_req()
392 ddev->skb_add_crc(skb); in digital_in_send_psl_req()
394 rc = digital_in_send_cmd(ddev, skb, ddev->dep_rwt, in digital_in_send_psl_req()
402 static void digital_in_recv_atr_res(struct nfc_digital_dev *ddev, void *arg, in digital_in_recv_atr_res() argument
417 rc = ddev->skb_check_crc(resp); in digital_in_recv_atr_res()
423 rc = digital_skb_pull_dep_sod(ddev, resp); in digital_in_recv_atr_res()
441 ddev->dep_rwt = digital_rwt_map[wt]; in digital_in_recv_atr_res()
444 ddev->remote_payload_max = digital_payload_bits_to_size(payload_bits); in digital_in_recv_atr_res()
446 if (!ddev->remote_payload_max) { in digital_in_recv_atr_res()
451 rc = nfc_set_remote_general_bytes(ddev->nfc_dev, atr_res->gb, gb_len); in digital_in_recv_atr_res()
455 if ((ddev->protocols & NFC_PROTO_FELICA_MASK) && in digital_in_recv_atr_res()
456 (ddev->curr_rf_tech != NFC_DIGITAL_RF_TECH_424F)) { in digital_in_recv_atr_res()
457 rc = digital_in_send_psl_req(ddev, target); in digital_in_recv_atr_res()
462 rc = nfc_dep_link_is_up(ddev->nfc_dev, target->idx, NFC_COMM_ACTIVE, in digital_in_recv_atr_res()
465 ddev->curr_nfc_dep_pni = 0; in digital_in_recv_atr_res()
471 ddev->curr_protocol = 0; in digital_in_recv_atr_res()
474 int digital_in_send_atr_req(struct nfc_digital_dev *ddev, in digital_in_send_atr_req() argument
491 skb = digital_skb_alloc(ddev, size); in digital_in_send_atr_req()
511 ddev->local_payload_max = DIGITAL_PAYLOAD_SIZE_MAX; in digital_in_send_atr_req()
512 payload_bits = digital_payload_size_to_bits(ddev->local_payload_max); in digital_in_send_atr_req()
520 digital_skb_push_dep_sod(ddev, skb); in digital_in_send_atr_req()
522 ddev->skb_add_crc(skb); in digital_in_send_atr_req()
524 rc = digital_in_send_cmd(ddev, skb, DIGITAL_ATR_RES_RWT, in digital_in_send_atr_req()
532 static int digital_in_send_ack(struct nfc_digital_dev *ddev, in digital_in_send_ack() argument
539 skb = digital_skb_alloc(ddev, 1); in digital_in_send_ack()
550 ddev->curr_nfc_dep_pni; in digital_in_send_ack()
552 digital_skb_push_dep_sod(ddev, skb); in digital_in_send_ack()
554 ddev->skb_add_crc(skb); in digital_in_send_ack()
556 ddev->saved_skb = pskb_copy(skb, GFP_KERNEL); in digital_in_send_ack()
558 rc = digital_in_send_cmd(ddev, skb, ddev->dep_rwt, in digital_in_send_ack()
562 kfree_skb(ddev->saved_skb); in digital_in_send_ack()
563 ddev->saved_skb = NULL; in digital_in_send_ack()
569 static int digital_in_send_nack(struct nfc_digital_dev *ddev, in digital_in_send_nack() argument
576 skb = digital_skb_alloc(ddev, 1); in digital_in_send_nack()
587 DIGITAL_NFC_DEP_PFB_NACK_BIT | ddev->curr_nfc_dep_pni; in digital_in_send_nack()
589 digital_skb_push_dep_sod(ddev, skb); in digital_in_send_nack()
591 ddev->skb_add_crc(skb); in digital_in_send_nack()
593 rc = digital_in_send_cmd(ddev, skb, ddev->dep_rwt, in digital_in_send_nack()
601 static int digital_in_send_atn(struct nfc_digital_dev *ddev, in digital_in_send_atn() argument
608 skb = digital_skb_alloc(ddev, 1); in digital_in_send_atn()
620 digital_skb_push_dep_sod(ddev, skb); in digital_in_send_atn()
622 ddev->skb_add_crc(skb); in digital_in_send_atn()
624 rc = digital_in_send_cmd(ddev, skb, ddev->dep_rwt, in digital_in_send_atn()
632 static int digital_in_send_rtox(struct nfc_digital_dev *ddev, in digital_in_send_rtox() argument
640 rwt_int = ddev->dep_rwt * rtox; in digital_in_send_rtox()
644 skb = digital_skb_alloc(ddev, 1); in digital_in_send_rtox()
659 digital_skb_push_dep_sod(ddev, skb); in digital_in_send_rtox()
661 ddev->skb_add_crc(skb); in digital_in_send_rtox()
663 rc = digital_in_send_cmd(ddev, skb, rwt_int, in digital_in_send_rtox()
671 static int digital_in_send_saved_skb(struct nfc_digital_dev *ddev, in digital_in_send_saved_skb() argument
676 if (!ddev->saved_skb) in digital_in_send_saved_skb()
679 skb_get(ddev->saved_skb); in digital_in_send_saved_skb()
681 rc = digital_in_send_cmd(ddev, ddev->saved_skb, ddev->dep_rwt, in digital_in_send_saved_skb()
684 kfree_skb(ddev->saved_skb); in digital_in_send_saved_skb()
689 static void digital_in_recv_dep_res(struct nfc_digital_dev *ddev, void *arg, in digital_in_recv_dep_res() argument
703 if ((rc == -EIO || (rc == -ETIMEDOUT && ddev->nack_count)) && in digital_in_recv_dep_res()
704 (ddev->nack_count++ < DIGITAL_NFC_DEP_N_RETRY_NACK)) { in digital_in_recv_dep_res()
705 ddev->atn_count = 0; in digital_in_recv_dep_res()
707 rc = digital_in_send_nack(ddev, data_exch); in digital_in_recv_dep_res()
713 (ddev->atn_count++ < DIGITAL_NFC_DEP_N_RETRY_ATN)) { in digital_in_recv_dep_res()
714 ddev->nack_count = 0; in digital_in_recv_dep_res()
716 rc = digital_in_send_atn(ddev, data_exch); in digital_in_recv_dep_res()
726 rc = digital_skb_pull_dep_sod(ddev, resp); in digital_in_recv_dep_res()
732 rc = ddev->skb_check_crc(resp); in digital_in_recv_dep_res()
735 (ddev->nack_count++ < DIGITAL_NFC_DEP_N_RETRY_NACK)) { in digital_in_recv_dep_res()
736 ddev->atn_count = 0; in digital_in_recv_dep_res()
738 rc = digital_in_send_nack(ddev, data_exch); in digital_in_recv_dep_res()
751 ddev->atn_count = 0; in digital_in_recv_dep_res()
752 ddev->nack_count = 0; in digital_in_recv_dep_res()
754 if (resp->len > ddev->local_payload_max) { in digital_in_recv_dep_res()
790 if (DIGITAL_NFC_DEP_PFB_PNI(pfb) != ddev->curr_nfc_dep_pni) { in digital_in_recv_dep_res()
796 ddev->curr_nfc_dep_pni = in digital_in_recv_dep_res()
797 DIGITAL_NFC_DEP_PFB_PNI(ddev->curr_nfc_dep_pni + 1); in digital_in_recv_dep_res()
799 kfree_skb(ddev->saved_skb); in digital_in_recv_dep_res()
800 ddev->saved_skb = NULL; in digital_in_recv_dep_res()
802 resp = digital_recv_dep_data_gather(ddev, pfb, resp, in digital_in_recv_dep_res()
828 if (DIGITAL_NFC_DEP_PFB_PNI(pfb) != ddev->curr_nfc_dep_pni) { in digital_in_recv_dep_res()
834 ddev->curr_nfc_dep_pni = in digital_in_recv_dep_res()
835 DIGITAL_NFC_DEP_PFB_PNI(ddev->curr_nfc_dep_pni + 1); in digital_in_recv_dep_res()
837 if (!ddev->chaining_skb) { in digital_in_recv_dep_res()
846 kfree_skb(ddev->saved_skb); in digital_in_recv_dep_res()
847 ddev->saved_skb = NULL; in digital_in_recv_dep_res()
849 rc = digital_in_send_dep_req(ddev, NULL, in digital_in_recv_dep_res()
850 ddev->chaining_skb, in digital_in_recv_dep_res()
851 ddev->data_exch); in digital_in_recv_dep_res()
859 rc = digital_in_send_saved_skb(ddev, data_exch); in digital_in_recv_dep_res()
866 if (ddev->atn_count || ddev->nack_count) { in digital_in_recv_dep_res()
879 rc = digital_in_send_rtox(ddev, data_exch, rtox); in digital_in_recv_dep_res()
892 kfree_skb(ddev->chaining_skb); in digital_in_recv_dep_res()
893 ddev->chaining_skb = NULL; in digital_in_recv_dep_res()
895 kfree_skb(ddev->saved_skb); in digital_in_recv_dep_res()
896 ddev->saved_skb = NULL; in digital_in_recv_dep_res()
907 int digital_in_send_dep_req(struct nfc_digital_dev *ddev, in digital_in_send_dep_req() argument
921 dep_req->pfb = ddev->curr_nfc_dep_pni; in digital_in_send_dep_req()
923 ddev->atn_count = 0; in digital_in_send_dep_req()
924 ddev->nack_count = 0; in digital_in_send_dep_req()
926 chaining_skb = ddev->chaining_skb; in digital_in_send_dep_req()
928 tmp_skb = digital_send_dep_data_prep(ddev, skb, dep_req, data_exch); in digital_in_send_dep_req()
932 digital_skb_push_dep_sod(ddev, tmp_skb); in digital_in_send_dep_req()
934 ddev->skb_add_crc(tmp_skb); in digital_in_send_dep_req()
936 ddev->saved_skb = pskb_copy(tmp_skb, GFP_KERNEL); in digital_in_send_dep_req()
938 rc = digital_in_send_cmd(ddev, tmp_skb, ddev->dep_rwt, in digital_in_send_dep_req()
945 ddev->chaining_skb = NULL; in digital_in_send_dep_req()
947 kfree_skb(ddev->saved_skb); in digital_in_send_dep_req()
948 ddev->saved_skb = NULL; in digital_in_send_dep_req()
954 static void digital_tg_set_rf_tech(struct nfc_digital_dev *ddev, u8 rf_tech) in digital_tg_set_rf_tech() argument
956 ddev->curr_rf_tech = rf_tech; in digital_tg_set_rf_tech()
958 ddev->skb_add_crc = digital_skb_add_crc_none; in digital_tg_set_rf_tech()
959 ddev->skb_check_crc = digital_skb_check_crc_none; in digital_tg_set_rf_tech()
961 if (DIGITAL_DRV_CAPS_TG_CRC(ddev)) in digital_tg_set_rf_tech()
964 switch (ddev->curr_rf_tech) { in digital_tg_set_rf_tech()
966 ddev->skb_add_crc = digital_skb_add_crc_a; in digital_tg_set_rf_tech()
967 ddev->skb_check_crc = digital_skb_check_crc_a; in digital_tg_set_rf_tech()
972 ddev->skb_add_crc = digital_skb_add_crc_f; in digital_tg_set_rf_tech()
973 ddev->skb_check_crc = digital_skb_check_crc_f; in digital_tg_set_rf_tech()
981 static int digital_tg_send_ack(struct nfc_digital_dev *ddev, in digital_tg_send_ack() argument
988 skb = digital_skb_alloc(ddev, 1); in digital_tg_send_ack()
999 ddev->curr_nfc_dep_pni; in digital_tg_send_ack()
1001 if (ddev->did) { in digital_tg_send_ack()
1004 skb_put_data(skb, &ddev->did, sizeof(ddev->did)); in digital_tg_send_ack()
1007 ddev->curr_nfc_dep_pni = in digital_tg_send_ack()
1008 DIGITAL_NFC_DEP_PFB_PNI(ddev->curr_nfc_dep_pni + 1); in digital_tg_send_ack()
1010 digital_skb_push_dep_sod(ddev, skb); in digital_tg_send_ack()
1012 ddev->skb_add_crc(skb); in digital_tg_send_ack()
1014 ddev->saved_skb = pskb_copy(skb, GFP_KERNEL); in digital_tg_send_ack()
1016 rc = digital_tg_send_cmd(ddev, skb, 1500, digital_tg_recv_dep_req, in digital_tg_send_ack()
1020 kfree_skb(ddev->saved_skb); in digital_tg_send_ack()
1021 ddev->saved_skb = NULL; in digital_tg_send_ack()
1027 static int digital_tg_send_atn(struct nfc_digital_dev *ddev) in digital_tg_send_atn() argument
1033 skb = digital_skb_alloc(ddev, 1); in digital_tg_send_atn()
1045 if (ddev->did) { in digital_tg_send_atn()
1048 skb_put_data(skb, &ddev->did, sizeof(ddev->did)); in digital_tg_send_atn()
1051 digital_skb_push_dep_sod(ddev, skb); in digital_tg_send_atn()
1053 ddev->skb_add_crc(skb); in digital_tg_send_atn()
1055 rc = digital_tg_send_cmd(ddev, skb, 1500, digital_tg_recv_dep_req, in digital_tg_send_atn()
1063 static int digital_tg_send_saved_skb(struct nfc_digital_dev *ddev) in digital_tg_send_saved_skb() argument
1067 if (!ddev->saved_skb) in digital_tg_send_saved_skb()
1070 skb_get(ddev->saved_skb); in digital_tg_send_saved_skb()
1072 rc = digital_tg_send_cmd(ddev, ddev->saved_skb, 1500, in digital_tg_send_saved_skb()
1075 kfree_skb(ddev->saved_skb); in digital_tg_send_saved_skb()
1080 static void digital_tg_recv_dep_req(struct nfc_digital_dev *ddev, void *arg, in digital_tg_recv_dep_req() argument
1094 rc = ddev->skb_check_crc(resp); in digital_tg_recv_dep_req()
1100 rc = digital_skb_pull_dep_sod(ddev, resp); in digital_tg_recv_dep_req()
1106 if (resp->len > ddev->local_payload_max) { in digital_tg_recv_dep_req()
1123 if (ddev->did && (ddev->did == resp->data[3])) { in digital_tg_recv_dep_req()
1129 } else if (ddev->did) { in digital_tg_recv_dep_req()
1150 if (ddev->atn_count) { in digital_tg_recv_dep_req()
1154 ddev->atn_count = 0; in digital_tg_recv_dep_req()
1163 DIGITAL_NFC_DEP_PFB_PNI(ddev->curr_nfc_dep_pni - 1)) { in digital_tg_recv_dep_req()
1164 rc = digital_tg_send_saved_skb(ddev); in digital_tg_recv_dep_req()
1178 if (DIGITAL_NFC_DEP_PFB_PNI(pfb) != ddev->curr_nfc_dep_pni) { in digital_tg_recv_dep_req()
1184 kfree_skb(ddev->saved_skb); in digital_tg_recv_dep_req()
1185 ddev->saved_skb = NULL; in digital_tg_recv_dep_req()
1187 resp = digital_recv_dep_data_gather(ddev, pfb, resp, in digital_tg_recv_dep_req()
1207 ddev->curr_nfc_dep_pni) { in digital_tg_recv_dep_req()
1212 ddev->atn_count = 0; in digital_tg_recv_dep_req()
1214 rc = digital_tg_send_saved_skb(ddev); in digital_tg_recv_dep_req()
1222 if (ddev->atn_count) { in digital_tg_recv_dep_req()
1226 ddev->atn_count = 0; in digital_tg_recv_dep_req()
1233 ddev->curr_nfc_dep_pni) { in digital_tg_recv_dep_req()
1234 rc = digital_tg_send_saved_skb(ddev); in digital_tg_recv_dep_req()
1248 if (!ddev->chaining_skb || in digital_tg_recv_dep_req()
1250 ddev->curr_nfc_dep_pni) { in digital_tg_recv_dep_req()
1255 kfree_skb(ddev->saved_skb); in digital_tg_recv_dep_req()
1256 ddev->saved_skb = NULL; in digital_tg_recv_dep_req()
1258 rc = digital_tg_send_dep_res(ddev, ddev->chaining_skb); in digital_tg_recv_dep_req()
1269 rc = digital_tg_send_atn(ddev); in digital_tg_recv_dep_req()
1273 ddev->atn_count++; in digital_tg_recv_dep_req()
1278 rc = nfc_tm_data_received(ddev->nfc_dev, resp); in digital_tg_recv_dep_req()
1281 kfree_skb(ddev->chaining_skb); in digital_tg_recv_dep_req()
1282 ddev->chaining_skb = NULL; in digital_tg_recv_dep_req()
1284 ddev->atn_count = 0; in digital_tg_recv_dep_req()
1286 kfree_skb(ddev->saved_skb); in digital_tg_recv_dep_req()
1287 ddev->saved_skb = NULL; in digital_tg_recv_dep_req()
1298 int digital_tg_send_dep_res(struct nfc_digital_dev *ddev, struct sk_buff *skb) in digital_tg_send_dep_res() argument
1310 dep_res->pfb = ddev->curr_nfc_dep_pni; in digital_tg_send_dep_res()
1312 if (ddev->did) { in digital_tg_send_dep_res()
1315 skb_put_data(skb, &ddev->did, sizeof(ddev->did)); in digital_tg_send_dep_res()
1318 ddev->curr_nfc_dep_pni = in digital_tg_send_dep_res()
1319 DIGITAL_NFC_DEP_PFB_PNI(ddev->curr_nfc_dep_pni + 1); in digital_tg_send_dep_res()
1321 chaining_skb = ddev->chaining_skb; in digital_tg_send_dep_res()
1323 tmp_skb = digital_send_dep_data_prep(ddev, skb, dep_res, NULL); in digital_tg_send_dep_res()
1327 digital_skb_push_dep_sod(ddev, tmp_skb); in digital_tg_send_dep_res()
1329 ddev->skb_add_crc(tmp_skb); in digital_tg_send_dep_res()
1331 ddev->saved_skb = pskb_copy(tmp_skb, GFP_KERNEL); in digital_tg_send_dep_res()
1333 rc = digital_tg_send_cmd(ddev, tmp_skb, 1500, digital_tg_recv_dep_req, in digital_tg_send_dep_res()
1340 ddev->chaining_skb = NULL; in digital_tg_send_dep_res()
1342 kfree_skb(ddev->saved_skb); in digital_tg_send_dep_res()
1343 ddev->saved_skb = NULL; in digital_tg_send_dep_res()
1349 static void digital_tg_send_psl_res_complete(struct nfc_digital_dev *ddev, in digital_tg_send_psl_res_complete() argument
1357 digital_tg_set_rf_tech(ddev, rf_tech); in digital_tg_send_psl_res_complete()
1359 digital_tg_configure_hw(ddev, NFC_DIGITAL_CONFIG_RF_TECH, rf_tech); in digital_tg_send_psl_res_complete()
1361 digital_tg_listen(ddev, 1500, digital_tg_recv_dep_req, NULL); in digital_tg_send_psl_res_complete()
1366 static int digital_tg_send_psl_res(struct nfc_digital_dev *ddev, u8 did, in digital_tg_send_psl_res() argument
1373 skb = digital_skb_alloc(ddev, sizeof(struct digital_psl_res)); in digital_tg_send_psl_res()
1385 digital_skb_push_dep_sod(ddev, skb); in digital_tg_send_psl_res()
1387 ddev->skb_add_crc(skb); in digital_tg_send_psl_res()
1389 ddev->curr_nfc_dep_pni = 0; in digital_tg_send_psl_res()
1391 rc = digital_tg_send_cmd(ddev, skb, 0, digital_tg_send_psl_res_complete, in digital_tg_send_psl_res()
1399 static void digital_tg_recv_psl_req(struct nfc_digital_dev *ddev, void *arg, in digital_tg_recv_psl_req() argument
1413 rc = ddev->skb_check_crc(resp); in digital_tg_recv_psl_req()
1419 rc = digital_skb_pull_dep_sod(ddev, resp); in digital_tg_recv_psl_req()
1453 if (!payload_size || (payload_size > min(ddev->local_payload_max, in digital_tg_recv_psl_req()
1454 ddev->remote_payload_max))) { in digital_tg_recv_psl_req()
1459 ddev->local_payload_max = payload_size; in digital_tg_recv_psl_req()
1460 ddev->remote_payload_max = payload_size; in digital_tg_recv_psl_req()
1462 rc = digital_tg_send_psl_res(ddev, psl_req->did, rf_tech); in digital_tg_recv_psl_req()
1468 static void digital_tg_send_atr_res_complete(struct nfc_digital_dev *ddev, in digital_tg_send_atr_res_complete() argument
1474 digital_poll_next_tech(ddev); in digital_tg_send_atr_res_complete()
1482 ddev->atn_count = 0; in digital_tg_send_atr_res_complete()
1485 digital_tg_recv_psl_req(ddev, arg, resp); in digital_tg_send_atr_res_complete()
1487 digital_tg_recv_dep_req(ddev, arg, resp); in digital_tg_send_atr_res_complete()
1490 static int digital_tg_send_atr_res(struct nfc_digital_dev *ddev, in digital_tg_send_atr_res() argument
1499 gb = nfc_get_local_general_bytes(ddev->nfc_dev, &gb_len); in digital_tg_send_atr_res()
1503 skb = digital_skb_alloc(ddev, sizeof(struct digital_atr_res) + gb_len); in digital_tg_send_atr_res()
1517 ddev->local_payload_max = DIGITAL_PAYLOAD_SIZE_MAX; in digital_tg_send_atr_res()
1518 payload_bits = digital_payload_size_to_bits(ddev->local_payload_max); in digital_tg_send_atr_res()
1528 digital_skb_push_dep_sod(ddev, skb); in digital_tg_send_atr_res()
1530 ddev->skb_add_crc(skb); in digital_tg_send_atr_res()
1532 ddev->curr_nfc_dep_pni = 0; in digital_tg_send_atr_res()
1534 rc = digital_tg_send_cmd(ddev, skb, 999, in digital_tg_send_atr_res()
1542 void digital_tg_recv_atr_req(struct nfc_digital_dev *ddev, void *arg, in digital_tg_recv_atr_req() argument
1563 digital_tg_set_rf_tech(ddev, NFC_DIGITAL_RF_TECH_106A); in digital_tg_recv_atr_req()
1566 digital_tg_set_rf_tech(ddev, NFC_DIGITAL_RF_TECH_212F); in digital_tg_recv_atr_req()
1574 ddev->curr_protocol = NFC_PROTO_NFC_DEP_MASK; in digital_tg_recv_atr_req()
1576 rc = ddev->skb_check_crc(resp); in digital_tg_recv_atr_req()
1582 rc = digital_skb_pull_dep_sod(ddev, resp); in digital_tg_recv_atr_req()
1598 ddev->remote_payload_max = digital_payload_bits_to_size(payload_bits); in digital_tg_recv_atr_req()
1600 if (!ddev->remote_payload_max) { in digital_tg_recv_atr_req()
1605 ddev->did = atr_req->did; in digital_tg_recv_atr_req()
1607 rc = digital_tg_configure_hw(ddev, NFC_DIGITAL_CONFIG_FRAMING, in digital_tg_recv_atr_req()
1612 rc = digital_tg_send_atr_res(ddev, atr_req); in digital_tg_recv_atr_req()
1618 poll_tech_count = ddev->poll_tech_count; in digital_tg_recv_atr_req()
1619 ddev->poll_tech_count = 0; in digital_tg_recv_atr_req()
1621 rc = nfc_tm_activated(ddev->nfc_dev, NFC_PROTO_NFC_DEP_MASK, in digital_tg_recv_atr_req()
1624 ddev->poll_tech_count = poll_tech_count; in digital_tg_recv_atr_req()
1631 digital_poll_next_tech(ddev); in digital_tg_recv_atr_req()