1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __LOCAL_MEI_PHY_H_ 3 #define __LOCAL_MEI_PHY_H_ 4 5 #include <linux/mei_cl_bus.h> 6 #include <net/nfc/hci.h> 7 #include <linux/uuid.h> 8 9 #define MEI_NFC_UUID UUID_LE(0x0bb17a78, 0x2a8e, 0x4c50, \ 10 0x94, 0xd4, 0x50, 0x26, 0x67, 0x23, 0x77, 0x5c) 11 #define MEI_NFC_HEADER_SIZE 10 12 #define MEI_NFC_MAX_HCI_PAYLOAD 300 13 14 /** 15 * struct nfc_mei_phy 16 * 17 * @cldev: mei client device 18 * @hdev: nfc hci device 19 20 * @send_wq: send completion wait queue 21 * @fw_ivn: NFC Interface Version Number 22 * @vendor_id: NFC manufacturer ID 23 * @radio_type: NFC radio type 24 * @reserved: reserved for alignment 25 * @req_id: message counter 26 * @recv_req_id: reception message counter 27 * @powered: the device is in powered state 28 * @hard_fault: < 0 if hardware error occurred 29 * and prevents normal operation. 30 */ 31 struct nfc_mei_phy { 32 struct mei_cl_device *cldev; 33 struct nfc_hci_dev *hdev; 34 35 wait_queue_head_t send_wq; 36 u8 fw_ivn; 37 u8 vendor_id; 38 u8 radio_type; 39 u8 reserved; 40 41 u16 req_id; 42 u16 recv_req_id; 43 44 int powered; 45 int hard_fault; 46 }; 47 48 extern const struct nfc_phy_ops mei_phy_ops; 49 50 struct nfc_mei_phy *nfc_mei_phy_alloc(struct mei_cl_device *device); 51 void nfc_mei_phy_free(struct nfc_mei_phy *phy); 52 53 #endif /* __LOCAL_MEI_PHY_H_ */ 54