Lines Matching refs:ndev

137 static void mei_nfc_free(struct mei_nfc_dev *ndev)  in mei_nfc_free()  argument
139 if (!ndev) in mei_nfc_free()
142 if (ndev->cl) { in mei_nfc_free()
143 list_del(&ndev->cl->device_link); in mei_nfc_free()
144 mei_cl_unlink(ndev->cl); in mei_nfc_free()
145 kfree(ndev->cl); in mei_nfc_free()
148 if (ndev->cl_info) { in mei_nfc_free()
149 list_del(&ndev->cl_info->device_link); in mei_nfc_free()
150 mei_cl_unlink(ndev->cl_info); in mei_nfc_free()
151 kfree(ndev->cl_info); in mei_nfc_free()
154 kfree(ndev); in mei_nfc_free()
157 static int mei_nfc_build_bus_name(struct mei_nfc_dev *ndev) in mei_nfc_build_bus_name() argument
161 if (!ndev->cl) in mei_nfc_build_bus_name()
164 dev = ndev->cl->dev; in mei_nfc_build_bus_name()
166 switch (ndev->vendor_id) { in mei_nfc_build_bus_name()
168 switch (ndev->radio_type) { in mei_nfc_build_bus_name()
170 ndev->bus_name = "microread"; in mei_nfc_build_bus_name()
175 ndev->radio_type); in mei_nfc_build_bus_name()
181 switch (ndev->radio_type) { in mei_nfc_build_bus_name()
183 ndev->bus_name = "pn544"; in mei_nfc_build_bus_name()
187 ndev->radio_type); in mei_nfc_build_bus_name()
194 ndev->vendor_id); in mei_nfc_build_bus_name()
202 static int mei_nfc_connect(struct mei_nfc_dev *ndev) in mei_nfc_connect() argument
212 cl = ndev->cl; in mei_nfc_connect()
237 connect->fw_ivn = ndev->fw_ivn; in mei_nfc_connect()
238 connect->vendor_id = ndev->vendor_id; in mei_nfc_connect()
269 static int mei_nfc_if_version(struct mei_nfc_dev *ndev) in mei_nfc_if_version() argument
280 cl = ndev->cl_info; in mei_nfc_if_version()
311 ndev->fw_ivn = version->fw_ivn; in mei_nfc_if_version()
312 ndev->vendor_id = version->vendor_id; in mei_nfc_if_version()
313 ndev->radio_type = version->radio_type; in mei_nfc_if_version()
323 struct mei_nfc_dev *ndev; in mei_nfc_enable() local
326 ndev = (struct mei_nfc_dev *)cldev->priv_data; in mei_nfc_enable()
327 dev = ndev->cl->dev; in mei_nfc_enable()
329 ret = mei_nfc_connect(ndev); in mei_nfc_enable()
346 struct mei_nfc_dev *ndev; in mei_nfc_send() local
351 ndev = (struct mei_nfc_dev *) cldev->priv_data; in mei_nfc_send()
352 dev = ndev->cl->dev; in mei_nfc_send()
362 hdr->req_id = ndev->req_id; in mei_nfc_send()
367 err = __mei_cl_send(ndev->cl, mei_buf, length + MEI_NFC_HEADER_SIZE); in mei_nfc_send()
371 if (!wait_event_interruptible_timeout(ndev->send_wq, in mei_nfc_send()
372 ndev->recv_req_id == ndev->req_id, HZ)) { in mei_nfc_send()
376 ndev->req_id++; in mei_nfc_send()
385 struct mei_nfc_dev *ndev; in mei_nfc_recv() local
389 ndev = (struct mei_nfc_dev *)cldev->priv_data; in mei_nfc_recv()
391 received_length = __mei_cl_recv(ndev->cl, buf, length); in mei_nfc_recv()
398 ndev->recv_req_id = hci_hdr->req_id; in mei_nfc_recv()
399 wake_up(&ndev->send_wq); in mei_nfc_recv()
418 struct mei_nfc_dev *ndev; in mei_nfc_init() local
421 ndev = container_of(work, struct mei_nfc_dev, init_work); in mei_nfc_init()
423 cl_info = ndev->cl_info; in mei_nfc_init()
437 if (mei_nfc_if_version(ndev) < 0) { in mei_nfc_init()
444 ndev->fw_ivn, ndev->vendor_id, ndev->radio_type); in mei_nfc_init()
457 if (mei_nfc_build_bus_name(ndev) < 0) { in mei_nfc_init()
462 cldev = mei_cl_add_device(dev, mei_nfc_guid, ndev->bus_name, &nfc_ops); in mei_nfc_init()
469 cldev->priv_data = ndev; in mei_nfc_init()
476 mei_nfc_free(ndev); in mei_nfc_init()
484 struct mei_nfc_dev *ndev; in mei_nfc_host_init() local
497 ndev = kzalloc(sizeof(struct mei_nfc_dev), GFP_KERNEL); in mei_nfc_host_init()
498 if (!ndev) { in mei_nfc_host_init()
524 ndev->cl_info = cl_info; in mei_nfc_host_init()
547 ndev->cl = cl; in mei_nfc_host_init()
549 ndev->req_id = 1; in mei_nfc_host_init()
551 INIT_WORK(&ndev->init_work, mei_nfc_init); in mei_nfc_host_init()
552 init_waitqueue_head(&ndev->send_wq); in mei_nfc_host_init()
553 schedule_work(&ndev->init_work); in mei_nfc_host_init()
559 mei_nfc_free(ndev); in mei_nfc_host_init()
566 struct mei_nfc_dev *ndev; in mei_nfc_host_exit() local
578 ndev = (struct mei_nfc_dev *)cldev->priv_data; in mei_nfc_host_exit()
579 if (ndev) in mei_nfc_host_exit()
580 cancel_work_sync(&ndev->init_work); in mei_nfc_host_exit()
589 mei_nfc_free(ndev); in mei_nfc_host_exit()