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