Greg Kroah-Hartman | b244131 | 2017-11-01 15:07:57 +0100 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
Eric Lapuyade | 4912e2f | 2013-04-15 11:19:20 +0200 | [diff] [blame] | 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> |
Tomas Winkler | c93b76b | 2015-05-07 15:54:02 +0300 | [diff] [blame] | 7 | #include <linux/uuid.h> |
Eric Lapuyade | 4912e2f | 2013-04-15 11:19:20 +0200 | [diff] [blame] | 8 | |
Greg Kroah-Hartman | b144ce2 | 2015-05-27 17:17:27 -0700 | [diff] [blame] | 9 | #define MEI_NFC_UUID UUID_LE(0x0bb17a78, 0x2a8e, 0x4c50, \ |
Tomas Winkler | c93b76b | 2015-05-07 15:54:02 +0300 | [diff] [blame] | 10 | 0x94, 0xd4, 0x50, 0x26, 0x67, 0x23, 0x77, 0x5c) |
Eric Lapuyade | 4912e2f | 2013-04-15 11:19:20 +0200 | [diff] [blame] | 11 | #define MEI_NFC_HEADER_SIZE 10 |
| 12 | #define MEI_NFC_MAX_HCI_PAYLOAD 300 |
| 13 | |
Tomas Winkler | be9b720 | 2015-05-07 15:54:04 +0300 | [diff] [blame] | 14 | /** |
| 15 | * struct nfc_mei_phy |
| 16 | * |
Tomas Winkler | 8939138 | 2015-09-10 10:18:04 +0300 | [diff] [blame] | 17 | * @cldev: mei client device |
Tomas Winkler | be9b720 | 2015-05-07 15:54:04 +0300 | [diff] [blame] | 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 | */ |
Eric Lapuyade | 4912e2f | 2013-04-15 11:19:20 +0200 | [diff] [blame] | 31 | struct nfc_mei_phy { |
Tomas Winkler | 8939138 | 2015-09-10 10:18:04 +0300 | [diff] [blame] | 32 | struct mei_cl_device *cldev; |
Eric Lapuyade | 4912e2f | 2013-04-15 11:19:20 +0200 | [diff] [blame] | 33 | struct nfc_hci_dev *hdev; |
| 34 | |
Tomas Winkler | be9b720 | 2015-05-07 15:54:04 +0300 | [diff] [blame] | 35 | wait_queue_head_t send_wq; |
| 36 | u8 fw_ivn; |
| 37 | u8 vendor_id; |
| 38 | u8 radio_type; |
| 39 | u8 reserved; |
Eric Lapuyade | 4912e2f | 2013-04-15 11:19:20 +0200 | [diff] [blame] | 40 | |
Tomas Winkler | be9b720 | 2015-05-07 15:54:04 +0300 | [diff] [blame] | 41 | u16 req_id; |
| 42 | u16 recv_req_id; |
| 43 | |
| 44 | int powered; |
| 45 | int hard_fault; |
Eric Lapuyade | 4912e2f | 2013-04-15 11:19:20 +0200 | [diff] [blame] | 46 | }; |
| 47 | |
Krzysztof Kozlowski | 7a5e98d | 2021-07-24 23:47:36 +0200 | [diff] [blame] | 48 | extern const struct nfc_phy_ops mei_phy_ops; |
Eric Lapuyade | 4912e2f | 2013-04-15 11:19:20 +0200 | [diff] [blame] | 49 | |
Eric Lapuyade | 4912e2f | 2013-04-15 11:19:20 +0200 | [diff] [blame] | 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_ */ |