Lines Matching refs:phy
104 static int mei_nfc_if_version(struct nfc_mei_phy *phy) in mei_nfc_if_version() argument
121 r = mei_cldev_send(phy->cldev, (u8 *)&cmd, sizeof(struct mei_nfc_cmd)); in mei_nfc_if_version()
135 bytes_recv = mei_cldev_recv(phy->cldev, (u8 *)reply, if_version_length); in mei_nfc_if_version()
144 phy->fw_ivn = version->fw_ivn; in mei_nfc_if_version()
145 phy->vendor_id = version->vendor_id; in mei_nfc_if_version()
146 phy->radio_type = version->radio_type; in mei_nfc_if_version()
153 static int mei_nfc_connect(struct nfc_mei_phy *phy) in mei_nfc_connect() argument
185 connect->fw_ivn = phy->fw_ivn; in mei_nfc_connect()
186 connect->vendor_id = phy->vendor_id; in mei_nfc_connect()
189 r = mei_cldev_send(phy->cldev, (u8 *)cmd, connect_length); in mei_nfc_connect()
195 bytes_recv = mei_cldev_recv(phy->cldev, (u8 *)reply, in mei_nfc_connect()
221 static int mei_nfc_send(struct nfc_mei_phy *phy, u8 *buf, size_t length) in mei_nfc_send() argument
235 hdr->req_id = phy->req_id; in mei_nfc_send()
242 err = mei_cldev_send(phy->cldev, mei_buf, length + MEI_NFC_HEADER_SIZE); in mei_nfc_send()
246 if (!wait_event_interruptible_timeout(phy->send_wq, in mei_nfc_send()
247 phy->recv_req_id == phy->req_id, HZ)) { in mei_nfc_send()
251 phy->req_id++; in mei_nfc_send()
265 struct nfc_mei_phy *phy = phy_id; in nfc_mei_phy_write() local
270 r = mei_nfc_send(phy, skb->data, skb->len); in nfc_mei_phy_write()
277 static int mei_nfc_recv(struct nfc_mei_phy *phy, u8 *buf, size_t length) in mei_nfc_recv() argument
282 received_length = mei_cldev_recv(phy->cldev, buf, length); in mei_nfc_recv()
290 phy->recv_req_id = hdr->req_id; in mei_nfc_recv()
291 wake_up(&phy->send_wq); in mei_nfc_recv()
303 struct nfc_mei_phy *phy = context; in nfc_mei_event_cb() local
305 if (phy->hard_fault != 0) in nfc_mei_event_cb()
316 reply_size = mei_nfc_recv(phy, skb->data, MEI_NFC_MAX_READ); in nfc_mei_event_cb()
327 nfc_hci_recv_frame(phy->hdev, skb); in nfc_mei_event_cb()
334 struct nfc_mei_phy *phy = phy_id; in nfc_mei_phy_enable() local
338 if (phy->powered == 1) in nfc_mei_phy_enable()
341 r = mei_cldev_enable(phy->cldev); in nfc_mei_phy_enable()
347 r = mei_nfc_if_version(phy); in nfc_mei_phy_enable()
353 r = mei_nfc_connect(phy); in nfc_mei_phy_enable()
359 r = mei_cldev_register_event_cb(phy->cldev, BIT(MEI_CL_EVENT_RX), in nfc_mei_phy_enable()
360 nfc_mei_event_cb, phy); in nfc_mei_phy_enable()
366 phy->powered = 1; in nfc_mei_phy_enable()
371 phy->powered = 0; in nfc_mei_phy_enable()
372 mei_cldev_disable(phy->cldev); in nfc_mei_phy_enable()
378 struct nfc_mei_phy *phy = phy_id; in nfc_mei_phy_disable() local
382 mei_cldev_disable(phy->cldev); in nfc_mei_phy_disable()
384 phy->powered = 0; in nfc_mei_phy_disable()
396 struct nfc_mei_phy *phy; in nfc_mei_phy_alloc() local
398 phy = kzalloc(sizeof(struct nfc_mei_phy), GFP_KERNEL); in nfc_mei_phy_alloc()
399 if (!phy) in nfc_mei_phy_alloc()
402 phy->cldev = cldev; in nfc_mei_phy_alloc()
403 init_waitqueue_head(&phy->send_wq); in nfc_mei_phy_alloc()
404 mei_cldev_set_drvdata(cldev, phy); in nfc_mei_phy_alloc()
406 return phy; in nfc_mei_phy_alloc()
410 void nfc_mei_phy_free(struct nfc_mei_phy *phy) in nfc_mei_phy_free() argument
412 mei_cldev_disable(phy->cldev); in nfc_mei_phy_free()
413 kfree(phy); in nfc_mei_phy_free()