aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/nfc/hci.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/nfc/hci.h')
-rw-r--r--include/net/nfc/hci.h25
1 files changed, 21 insertions, 4 deletions
diff --git a/include/net/nfc/hci.h b/include/net/nfc/hci.h
index 14bd0e1c47fa..ab672b537dd4 100644
--- a/include/net/nfc/hci.h
+++ b/include/net/nfc/hci.h
@@ -51,8 +51,10 @@ struct nfc_hci_ops {
51 int (*tm_send)(struct nfc_hci_dev *hdev, struct sk_buff *skb); 51 int (*tm_send)(struct nfc_hci_dev *hdev, struct sk_buff *skb);
52 int (*check_presence)(struct nfc_hci_dev *hdev, 52 int (*check_presence)(struct nfc_hci_dev *hdev,
53 struct nfc_target *target); 53 struct nfc_target *target);
54 int (*event_received)(struct nfc_hci_dev *hdev, u8 gate, u8 event, 54 int (*event_received)(struct nfc_hci_dev *hdev, u8 pipe, u8 event,
55 struct sk_buff *skb); 55 struct sk_buff *skb);
56 void (*cmd_received)(struct nfc_hci_dev *hdev, u8 pipe, u8 cmd,
57 struct sk_buff *skb);
56 int (*fw_download)(struct nfc_hci_dev *hdev, const char *firmware_name); 58 int (*fw_download)(struct nfc_hci_dev *hdev, const char *firmware_name);
57 int (*discover_se)(struct nfc_hci_dev *dev); 59 int (*discover_se)(struct nfc_hci_dev *dev);
58 int (*enable_se)(struct nfc_hci_dev *dev, u32 se_idx); 60 int (*enable_se)(struct nfc_hci_dev *dev, u32 se_idx);
@@ -63,8 +65,10 @@ struct nfc_hci_ops {
63}; 65};
64 66
65/* Pipes */ 67/* Pipes */
66#define NFC_HCI_INVALID_PIPE 0x80
67#define NFC_HCI_DO_NOT_CREATE_PIPE 0x81 68#define NFC_HCI_DO_NOT_CREATE_PIPE 0x81
69#define NFC_HCI_INVALID_PIPE 0x80
70#define NFC_HCI_INVALID_GATE 0xFF
71#define NFC_HCI_INVALID_HOST 0x80
68#define NFC_HCI_LINK_MGMT_PIPE 0x00 72#define NFC_HCI_LINK_MGMT_PIPE 0x00
69#define NFC_HCI_ADMIN_PIPE 0x01 73#define NFC_HCI_ADMIN_PIPE 0x01
70 74
@@ -73,7 +77,13 @@ struct nfc_hci_gate {
73 u8 pipe; 77 u8 pipe;
74}; 78};
75 79
80struct nfc_hci_pipe {
81 u8 gate;
82 u8 dest_host;
83};
84
76#define NFC_HCI_MAX_CUSTOM_GATES 50 85#define NFC_HCI_MAX_CUSTOM_GATES 50
86#define NFC_HCI_MAX_PIPES 127
77struct nfc_hci_init_data { 87struct nfc_hci_init_data {
78 u8 gate_count; 88 u8 gate_count;
79 struct nfc_hci_gate gates[NFC_HCI_MAX_CUSTOM_GATES]; 89 struct nfc_hci_gate gates[NFC_HCI_MAX_CUSTOM_GATES];
@@ -125,6 +135,7 @@ struct nfc_hci_dev {
125 void *clientdata; 135 void *clientdata;
126 136
127 u8 gate2pipe[NFC_HCI_MAX_GATES]; 137 u8 gate2pipe[NFC_HCI_MAX_GATES];
138 struct nfc_hci_pipe pipes[NFC_HCI_MAX_PIPES];
128 139
129 u8 sw_romlib; 140 u8 sw_romlib;
130 u8 sw_patch; 141 u8 sw_patch;
@@ -167,6 +178,8 @@ void *nfc_hci_get_clientdata(struct nfc_hci_dev *hdev);
167void nfc_hci_driver_failure(struct nfc_hci_dev *hdev, int err); 178void nfc_hci_driver_failure(struct nfc_hci_dev *hdev, int err);
168 179
169int nfc_hci_result_to_errno(u8 result); 180int nfc_hci_result_to_errno(u8 result);
181void nfc_hci_reset_pipes(struct nfc_hci_dev *dev);
182void nfc_hci_reset_pipes_per_host(struct nfc_hci_dev *hdev, u8 host);
170 183
171/* Host IDs */ 184/* Host IDs */
172#define NFC_HCI_HOST_CONTROLLER_ID 0x00 185#define NFC_HCI_HOST_CONTROLLER_ID 0x00
@@ -219,6 +232,12 @@ int nfc_hci_result_to_errno(u8 result);
219#define NFC_HCI_EVT_POST_DATA 0x02 232#define NFC_HCI_EVT_POST_DATA 0x02
220#define NFC_HCI_EVT_HOT_PLUG 0x03 233#define NFC_HCI_EVT_HOT_PLUG 0x03
221 234
235/* Generic commands */
236#define NFC_HCI_ANY_SET_PARAMETER 0x01
237#define NFC_HCI_ANY_GET_PARAMETER 0x02
238#define NFC_HCI_ANY_OPEN_PIPE 0x03
239#define NFC_HCI_ANY_CLOSE_PIPE 0x04
240
222/* Reader RF gates events */ 241/* Reader RF gates events */
223#define NFC_HCI_EVT_READER_REQUESTED 0x10 242#define NFC_HCI_EVT_READER_REQUESTED 0x10
224#define NFC_HCI_EVT_END_OPERATION 0x11 243#define NFC_HCI_EVT_END_OPERATION 0x11
@@ -249,8 +268,6 @@ int nfc_hci_send_cmd(struct nfc_hci_dev *hdev, u8 gate, u8 cmd,
249int nfc_hci_send_cmd_async(struct nfc_hci_dev *hdev, u8 gate, u8 cmd, 268int nfc_hci_send_cmd_async(struct nfc_hci_dev *hdev, u8 gate, u8 cmd,
250 const u8 *param, size_t param_len, 269 const u8 *param, size_t param_len,
251 data_exchange_cb_t cb, void *cb_context); 270 data_exchange_cb_t cb, void *cb_context);
252int nfc_hci_send_response(struct nfc_hci_dev *hdev, u8 gate, u8 response,
253 const u8 *param, size_t param_len);
254int nfc_hci_send_event(struct nfc_hci_dev *hdev, u8 gate, u8 event, 271int nfc_hci_send_event(struct nfc_hci_dev *hdev, u8 gate, u8 event,
255 const u8 *param, size_t param_len); 272 const u8 *param, size_t param_len);
256int nfc_hci_target_discovered(struct nfc_hci_dev *hdev, u8 gate); 273int nfc_hci_target_discovered(struct nfc_hci_dev *hdev, u8 gate);