2013-04-15 13:19:20 +04:00
# ifndef __LOCAL_MEI_PHY_H_
# define __LOCAL_MEI_PHY_H_
# include <linux/mei_cl_bus.h>
# include <net/nfc/hci.h>
2015-05-07 15:54:02 +03:00
# include <linux/uuid.h>
2013-04-15 13:19:20 +04:00
2015-05-28 03:17:27 +03:00
# define MEI_NFC_UUID UUID_LE(0x0bb17a78, 0x2a8e, 0x4c50, \
2015-05-07 15:54:02 +03:00
0x94 , 0xd4 , 0x50 , 0x26 , 0x67 , 0x23 , 0x77 , 0x5c )
2013-04-15 13:19:20 +04:00
# define MEI_NFC_HEADER_SIZE 10
# define MEI_NFC_MAX_HCI_PAYLOAD 300
2015-05-07 15:54:04 +03:00
/**
* struct nfc_mei_phy
*
2015-09-10 10:18:04 +03:00
* @ cldev : mei client device
2015-05-07 15:54:04 +03:00
* @ hdev : nfc hci device
* @ send_wq : send completion wait queue
* @ fw_ivn : NFC Interface Version Number
* @ vendor_id : NFC manufacturer ID
* @ radio_type : NFC radio type
* @ reserved : reserved for alignment
* @ req_id : message counter
* @ recv_req_id : reception message counter
* @ powered : the device is in powered state
* @ hard_fault : < 0 if hardware error occurred
* and prevents normal operation .
*/
2013-04-15 13:19:20 +04:00
struct nfc_mei_phy {
2015-09-10 10:18:04 +03:00
struct mei_cl_device * cldev ;
2013-04-15 13:19:20 +04:00
struct nfc_hci_dev * hdev ;
2015-05-07 15:54:04 +03:00
wait_queue_head_t send_wq ;
u8 fw_ivn ;
u8 vendor_id ;
u8 radio_type ;
u8 reserved ;
u16 req_id ;
u16 recv_req_id ;
2013-04-15 13:19:20 +04:00
2015-05-07 15:54:04 +03:00
int powered ;
int hard_fault ;
2013-04-15 13:19:20 +04:00
} ;
extern struct nfc_phy_ops mei_phy_ops ;
struct nfc_mei_phy * nfc_mei_phy_alloc ( struct mei_cl_device * device ) ;
void nfc_mei_phy_free ( struct nfc_mei_phy * phy ) ;
# endif /* __LOCAL_MEI_PHY_H_ */