Lines Matching refs:drv
124 static void nfcwilink_fw_download_receive(struct nfcwilink *drv, in nfcwilink_fw_download_receive() argument
132 memcpy(&drv->nfcc_info, rsp, in nfcwilink_fw_download_receive()
138 complete(&drv->completed); in nfcwilink_fw_download_receive()
141 static int nfcwilink_get_bts_file_name(struct nfcwilink *drv, char *file_name) in nfcwilink_get_bts_file_name() argument
151 nfc_err(&drv->pdev->dev, in nfcwilink_get_bts_file_name()
162 drv->nfcc_info.plen = 0; in nfcwilink_get_bts_file_name()
164 rc = nfcwilink_send(drv->ndev, skb); in nfcwilink_get_bts_file_name()
168 comp_ret = wait_for_completion_timeout(&drv->completed, in nfcwilink_get_bts_file_name()
170 dev_dbg(&drv->pdev->dev, "wait_for_completion_timeout returned %ld\n", in nfcwilink_get_bts_file_name()
173 nfc_err(&drv->pdev->dev, in nfcwilink_get_bts_file_name()
178 dev_dbg(&drv->pdev->dev, "nci_vs_nfcc_info_rsp: plen %d, status %d\n", in nfcwilink_get_bts_file_name()
179 drv->nfcc_info.plen, drv->nfcc_info.status); in nfcwilink_get_bts_file_name()
181 if ((drv->nfcc_info.plen != 5) || (drv->nfcc_info.status != 0)) { in nfcwilink_get_bts_file_name()
182 nfc_err(&drv->pdev->dev, "invalid nci_vs_nfcc_info_rsp\n"); in nfcwilink_get_bts_file_name()
188 drv->nfcc_info.hw_id, in nfcwilink_get_bts_file_name()
189 drv->nfcc_info.sw_ver_x, in nfcwilink_get_bts_file_name()
190 drv->nfcc_info.sw_ver_z, in nfcwilink_get_bts_file_name()
191 drv->nfcc_info.patch_id); in nfcwilink_get_bts_file_name()
193 nfc_info(&drv->pdev->dev, "nfcwilink FW file name: %s\n", file_name); in nfcwilink_get_bts_file_name()
198 static int nfcwilink_send_bts_cmd(struct nfcwilink *drv, __u8 *data, int len) in nfcwilink_send_bts_cmd() argument
210 nfc_err(&drv->pdev->dev, in nfcwilink_send_bts_cmd()
222 nfc_err(&drv->pdev->dev, "no memory for bts cmd\n"); in nfcwilink_send_bts_cmd()
228 rc = nfcwilink_send(drv->ndev, skb); in nfcwilink_send_bts_cmd()
232 comp_ret = wait_for_completion_timeout(&drv->completed, in nfcwilink_send_bts_cmd()
234 dev_dbg(&drv->pdev->dev, "wait_for_completion_timeout returned %ld\n", in nfcwilink_send_bts_cmd()
237 nfc_err(&drv->pdev->dev, in nfcwilink_send_bts_cmd()
245 static int nfcwilink_download_fw(struct nfcwilink *drv) in nfcwilink_download_fw() argument
253 set_bit(NFCWILINK_FW_DOWNLOAD, &drv->flags); in nfcwilink_download_fw()
255 rc = nfcwilink_get_bts_file_name(drv, file_name); in nfcwilink_download_fw()
259 rc = request_firmware(&fw, file_name, &drv->pdev->dev); in nfcwilink_download_fw()
261 nfc_err(&drv->pdev->dev, "request_firmware failed %d\n", rc); in nfcwilink_download_fw()
274 dev_dbg(&drv->pdev->dev, in nfcwilink_download_fw()
281 nfc_err(&drv->pdev->dev, "wrong bts magic number\n"); in nfcwilink_download_fw()
296 dev_dbg(&drv->pdev->dev, "bts_file_action type %d, len %d\n", in nfcwilink_download_fw()
301 rc = nfcwilink_send_bts_cmd(drv, in nfcwilink_download_fw()
318 clear_bit(NFCWILINK_FW_DOWNLOAD, &drv->flags); in nfcwilink_download_fw()
325 struct nfcwilink *drv = priv_data; in nfcwilink_register_complete() local
328 drv->st_register_cb_status = data; in nfcwilink_register_complete()
331 complete(&drv->completed); in nfcwilink_register_complete()
337 struct nfcwilink *drv = priv_data; in nfcwilink_receive() local
343 if (!drv) { in nfcwilink_receive()
348 dev_dbg(&drv->pdev->dev, "receive entry, len %d\n", skb->len); in nfcwilink_receive()
354 if (test_bit(NFCWILINK_FW_DOWNLOAD, &drv->flags)) { in nfcwilink_receive()
355 nfcwilink_fw_download_receive(drv, skb); in nfcwilink_receive()
360 rc = nci_recv_frame(drv->ndev, skb); in nfcwilink_receive()
362 nfc_err(&drv->pdev->dev, "nci_recv_frame failed %d\n", rc); in nfcwilink_receive()
384 struct nfcwilink *drv = nci_get_drvdata(ndev); in nfcwilink_open() local
388 if (test_and_set_bit(NFCWILINK_RUNNING, &drv->flags)) { in nfcwilink_open()
393 nfcwilink_proto.priv_data = drv; in nfcwilink_open()
395 init_completion(&drv->completed); in nfcwilink_open()
396 drv->st_register_cb_status = -EINPROGRESS; in nfcwilink_open()
402 &drv->completed, in nfcwilink_open()
405 dev_dbg(&drv->pdev->dev, in nfcwilink_open()
413 } else if (drv->st_register_cb_status != 0) { in nfcwilink_open()
414 rc = drv->st_register_cb_status; in nfcwilink_open()
415 nfc_err(&drv->pdev->dev, in nfcwilink_open()
420 nfc_err(&drv->pdev->dev, "st_register failed %d\n", rc); in nfcwilink_open()
427 drv->st_write = nfcwilink_proto.write; in nfcwilink_open()
429 if (nfcwilink_download_fw(drv)) { in nfcwilink_open()
430 nfc_err(&drv->pdev->dev, "nfcwilink_download_fw failed %d\n", in nfcwilink_open()
438 clear_bit(NFCWILINK_RUNNING, &drv->flags); in nfcwilink_open()
446 struct nfcwilink *drv = nci_get_drvdata(ndev); in nfcwilink_close() local
449 if (!test_and_clear_bit(NFCWILINK_RUNNING, &drv->flags)) in nfcwilink_close()
454 nfc_err(&drv->pdev->dev, "st_unregister failed %d\n", rc); in nfcwilink_close()
456 drv->st_write = NULL; in nfcwilink_close()
463 struct nfcwilink *drv = nci_get_drvdata(ndev); in nfcwilink_send() local
467 dev_dbg(&drv->pdev->dev, "send entry, len %d\n", skb->len); in nfcwilink_send()
469 if (!test_bit(NFCWILINK_RUNNING, &drv->flags)) { in nfcwilink_send()
482 len = drv->st_write(skb); in nfcwilink_send()
485 nfc_err(&drv->pdev->dev, "st_write failed %ld\n", len); in nfcwilink_send()
500 struct nfcwilink *drv; in nfcwilink_probe() local
504 drv = devm_kzalloc(&pdev->dev, sizeof(struct nfcwilink), GFP_KERNEL); in nfcwilink_probe()
505 if (!drv) { in nfcwilink_probe()
510 drv->pdev = pdev; in nfcwilink_probe()
518 drv->ndev = nci_allocate_device(&nfcwilink_ops, in nfcwilink_probe()
522 if (!drv->ndev) { in nfcwilink_probe()
528 nci_set_parent_dev(drv->ndev, &pdev->dev); in nfcwilink_probe()
529 nci_set_drvdata(drv->ndev, drv); in nfcwilink_probe()
531 rc = nci_register_device(drv->ndev); in nfcwilink_probe()
537 dev_set_drvdata(&pdev->dev, drv); in nfcwilink_probe()
542 nci_free_device(drv->ndev); in nfcwilink_probe()
550 struct nfcwilink *drv = dev_get_drvdata(&pdev->dev); in nfcwilink_remove() local
553 if (!drv) in nfcwilink_remove()
556 ndev = drv->ndev; in nfcwilink_remove()