Lines Matching +full:bus +full:- +full:powered
1 // SPDX-License-Identifier: GPL-2.0
5 * MEI Library for mei bus nfc device access
74 16, 1, (skb)->data, (skb)->len, false); \
81 16, 1, (skb)->data, (skb)->len, false); \
88 (_hdr)->cmd, (_hdr)->status, (_hdr)->req_id, \
89 (_hdr)->reserved, (_hdr)->data_size); \
107 r = mei_cldev_send(phy->cldev, (u8 *)&cmd, sizeof(struct mei_nfc_cmd)); in mei_nfc_if_version()
119 return -ENOMEM; in mei_nfc_if_version()
121 bytes_recv = mei_cldev_recv(phy->cldev, (u8 *)reply, if_version_length); in mei_nfc_if_version()
124 r = -EIO; in mei_nfc_if_version()
128 version = (struct mei_nfc_if_version *)reply->data; in mei_nfc_if_version()
130 phy->fw_ivn = version->fw_ivn; in mei_nfc_if_version()
131 phy->vendor_id = version->vendor_id; in mei_nfc_if_version()
132 phy->radio_type = version->radio_type; in mei_nfc_if_version()
155 return -ENOMEM; in mei_nfc_connect()
156 connect = (struct mei_nfc_connect *)cmd->data; in mei_nfc_connect()
161 return -ENOMEM; in mei_nfc_connect()
164 connect_resp = (struct mei_nfc_connect_resp *)reply->data; in mei_nfc_connect()
166 cmd->hdr.cmd = MEI_NFC_CMD_MAINTENANCE; in mei_nfc_connect()
167 cmd->hdr.data_size = 3; in mei_nfc_connect()
168 cmd->sub_command = MEI_NFC_SUBCMD_CONNECT; in mei_nfc_connect()
169 connect->fw_ivn = phy->fw_ivn; in mei_nfc_connect()
170 connect->vendor_id = phy->vendor_id; in mei_nfc_connect()
172 MEI_DUMP_NFC_HDR("connect request", &cmd->hdr); in mei_nfc_connect()
173 r = mei_cldev_send(phy->cldev, (u8 *)cmd, connect_length); in mei_nfc_connect()
179 bytes_recv = mei_cldev_recv(phy->cldev, (u8 *)reply, in mei_nfc_connect()
187 MEI_DUMP_NFC_HDR("connect reply", &reply->hdr); in mei_nfc_connect()
190 connect_resp->fw_ivn, connect_resp->vendor_id); in mei_nfc_connect()
193 connect_resp->me_major, connect_resp->me_minor, in mei_nfc_connect()
194 connect_resp->me_hotfix, connect_resp->me_build); in mei_nfc_connect()
211 err = -ENOMEM; in mei_nfc_send()
217 hdr->cmd = MEI_NFC_CMD_HCI_SEND; in mei_nfc_send()
218 hdr->status = 0; in mei_nfc_send()
219 hdr->req_id = phy->req_id; in mei_nfc_send()
220 hdr->reserved = 0; in mei_nfc_send()
221 hdr->data_size = length; in mei_nfc_send()
226 err = mei_cldev_send(phy->cldev, mei_buf, length + MEI_NFC_HEADER_SIZE); in mei_nfc_send()
230 if (!wait_event_interruptible_timeout(phy->send_wq, in mei_nfc_send()
231 phy->recv_req_id == phy->req_id, HZ)) { in mei_nfc_send()
233 err = -ETIME; in mei_nfc_send()
235 phy->req_id++; in mei_nfc_send()
254 r = mei_nfc_send(phy, skb->data, skb->len); in nfc_mei_phy_write()
266 received_length = mei_cldev_recv(phy->cldev, buf, length); in mei_nfc_recv()
273 if (hdr->cmd == MEI_NFC_CMD_HCI_SEND) { in mei_nfc_recv()
274 phy->recv_req_id = hdr->req_id; in mei_nfc_recv()
275 wake_up(&phy->send_wq); in mei_nfc_recv()
293 if (phy->hard_fault != 0) in nfc_mei_rx_cb()
300 reply_size = mei_nfc_recv(phy, skb->data, MEI_NFC_MAX_READ); in nfc_mei_rx_cb()
311 nfc_hci_recv_frame(phy->hdev, skb); in nfc_mei_rx_cb()
319 if (phy->powered == 1) in nfc_mei_phy_enable()
322 r = mei_cldev_enable(phy->cldev); in nfc_mei_phy_enable()
340 r = mei_cldev_register_rx_cb(phy->cldev, nfc_mei_rx_cb); in nfc_mei_phy_enable()
346 phy->powered = 1; in nfc_mei_phy_enable()
351 phy->powered = 0; in nfc_mei_phy_enable()
352 mei_cldev_disable(phy->cldev); in nfc_mei_phy_enable()
360 mei_cldev_disable(phy->cldev); in nfc_mei_phy_disable()
362 phy->powered = 0; in nfc_mei_phy_disable()
380 phy->cldev = cldev; in nfc_mei_phy_alloc()
381 init_waitqueue_head(&phy->send_wq); in nfc_mei_phy_alloc()
390 mei_cldev_disable(phy->cldev); in nfc_mei_phy_free()
396 MODULE_DESCRIPTION("mei bus NFC device interface");