root/include/net/nfc/nci.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  *  The NFC Controller Interface is the communication protocol between an
   4  *  NFC Controller (NFCC) and a Device Host (DH).
   5  *
   6  *  Copyright (C) 2014 Marvell International Ltd.
   7  *  Copyright (C) 2011 Texas Instruments, Inc.
   8  *
   9  *  Written by Ilan Elias <ilane@ti.com>
  10  *
  11  *  Acknowledgements:
  12  *  This file is based on hci.h, which was written
  13  *  by Maxim Krasnyansky.
  14  */
  15 
  16 #ifndef __NCI_H
  17 #define __NCI_H
  18 
  19 #include <net/nfc/nfc.h>
  20 
  21 /* NCI constants */
  22 #define NCI_MAX_NUM_MAPPING_CONFIGS                             10
  23 #define NCI_MAX_NUM_RF_CONFIGS                                  10
  24 #define NCI_MAX_NUM_CONN                                        10
  25 #define NCI_MAX_PARAM_LEN                                       251
  26 #define NCI_MAX_PAYLOAD_SIZE                                    255
  27 #define NCI_MAX_PACKET_SIZE                                     258
  28 
  29 /* NCI Status Codes */
  30 #define NCI_STATUS_OK                                           0x00
  31 #define NCI_STATUS_REJECTED                                     0x01
  32 #define NCI_STATUS_RF_FRAME_CORRUPTED                           0x02
  33 #define NCI_STATUS_FAILED                                       0x03
  34 #define NCI_STATUS_NOT_INITIALIZED                              0x04
  35 #define NCI_STATUS_SYNTAX_ERROR                                 0x05
  36 #define NCI_STATUS_SEMANTIC_ERROR                               0x06
  37 #define NCI_STATUS_UNKNOWN_GID                                  0x07
  38 #define NCI_STATUS_UNKNOWN_OID                                  0x08
  39 #define NCI_STATUS_INVALID_PARAM                                0x09
  40 #define NCI_STATUS_MESSAGE_SIZE_EXCEEDED                        0x0a
  41 /* Discovery Specific Status Codes */
  42 #define NCI_STATUS_DISCOVERY_ALREADY_STARTED                    0xa0
  43 #define NCI_STATUS_DISCOVERY_TARGET_ACTIVATION_FAILED           0xa1
  44 #define NCI_STATUS_DISCOVERY_TEAR_DOWN                          0xa2
  45 /* RF Interface Specific Status Codes */
  46 #define NCI_STATUS_RF_TRANSMISSION_ERROR                        0xb0
  47 #define NCI_STATUS_RF_PROTOCOL_ERROR                            0xb1
  48 #define NCI_STATUS_RF_TIMEOUT_ERROR                             0xb2
  49 /* NFCEE Interface Specific Status Codes */
  50 #define NCI_STATUS_NFCEE_INTERFACE_ACTIVATION_FAILED            0xc0
  51 #define NCI_STATUS_NFCEE_TRANSMISSION_ERROR                     0xc1
  52 #define NCI_STATUS_NFCEE_PROTOCOL_ERROR                         0xc2
  53 #define NCI_STATUS_NFCEE_TIMEOUT_ERROR                          0xc3
  54 
  55 /* NFCEE Interface/Protocols */
  56 #define NCI_NFCEE_INTERFACE_APDU           0x00
  57 #define NCI_NFCEE_INTERFACE_HCI_ACCESS     0x01
  58 #define NCI_NFCEE_INTERFACE_TYPE3_CMD_SET  0x02
  59 #define NCI_NFCEE_INTERFACE_TRANSPARENT        0x03
  60 
  61 /* Destination type */
  62 #define NCI_DESTINATION_NFCC_LOOPBACK      0x01
  63 #define NCI_DESTINATION_REMOTE_NFC_ENDPOINT    0x02
  64 #define NCI_DESTINATION_NFCEE              0x03
  65 
  66 /* Destination-specific parameters type */
  67 #define NCI_DESTINATION_SPECIFIC_PARAM_RF_TYPE     0x00
  68 #define NCI_DESTINATION_SPECIFIC_PARAM_NFCEE_TYPE  0x01
  69 
  70 /* NFCEE Discovery Action */
  71 #define NCI_NFCEE_DISCOVERY_ACTION_DISABLE                      0x00
  72 #define NCI_NFCEE_DISCOVERY_ACTION_ENABLE                       0x01
  73 
  74 /* NCI RF Technology and Mode */
  75 #define NCI_NFC_A_PASSIVE_POLL_MODE                             0x00
  76 #define NCI_NFC_B_PASSIVE_POLL_MODE                             0x01
  77 #define NCI_NFC_F_PASSIVE_POLL_MODE                             0x02
  78 #define NCI_NFC_A_ACTIVE_POLL_MODE                              0x03
  79 #define NCI_NFC_F_ACTIVE_POLL_MODE                              0x05
  80 #define NCI_NFC_V_PASSIVE_POLL_MODE                             0x06
  81 #define NCI_NFC_A_PASSIVE_LISTEN_MODE                           0x80
  82 #define NCI_NFC_B_PASSIVE_LISTEN_MODE                           0x81
  83 #define NCI_NFC_F_PASSIVE_LISTEN_MODE                           0x82
  84 #define NCI_NFC_A_ACTIVE_LISTEN_MODE                            0x83
  85 #define NCI_NFC_F_ACTIVE_LISTEN_MODE                            0x85
  86 
  87 #define NCI_RF_TECH_MODE_LISTEN_MASK                            0x80
  88 
  89 /* NCI RF Technologies */
  90 #define NCI_NFC_RF_TECHNOLOGY_A                                 0x00
  91 #define NCI_NFC_RF_TECHNOLOGY_B                                 0x01
  92 #define NCI_NFC_RF_TECHNOLOGY_F                                 0x02
  93 #define NCI_NFC_RF_TECHNOLOGY_V                                 0x03
  94 
  95 /* NCI Bit Rates */
  96 #define NCI_NFC_BIT_RATE_106                                    0x00
  97 #define NCI_NFC_BIT_RATE_212                                    0x01
  98 #define NCI_NFC_BIT_RATE_424                                    0x02
  99 #define NCI_NFC_BIT_RATE_848                                    0x03
 100 #define NCI_NFC_BIT_RATE_1695                                   0x04
 101 #define NCI_NFC_BIT_RATE_3390                                   0x05
 102 #define NCI_NFC_BIT_RATE_6780                                   0x06
 103 #define NCI_NFC_BIT_RATE_26                                     0x20
 104 
 105 /* NCI RF Protocols */
 106 #define NCI_RF_PROTOCOL_UNKNOWN                                 0x00
 107 #define NCI_RF_PROTOCOL_T1T                                     0x01
 108 #define NCI_RF_PROTOCOL_T2T                                     0x02
 109 #define NCI_RF_PROTOCOL_T3T                                     0x03
 110 #define NCI_RF_PROTOCOL_ISO_DEP                                 0x04
 111 #define NCI_RF_PROTOCOL_NFC_DEP                                 0x05
 112 #define NCI_RF_PROTOCOL_T5T                                     0x06
 113 
 114 /* NCI RF Interfaces */
 115 #define NCI_RF_INTERFACE_NFCEE_DIRECT                           0x00
 116 #define NCI_RF_INTERFACE_FRAME                                  0x01
 117 #define NCI_RF_INTERFACE_ISO_DEP                                0x02
 118 #define NCI_RF_INTERFACE_NFC_DEP                                0x03
 119 
 120 /* NCI Configuration Parameter Tags */
 121 #define NCI_PN_ATR_REQ_GEN_BYTES                                0x29
 122 #define NCI_LN_ATR_RES_GEN_BYTES                                0x61
 123 #define NCI_LA_SEL_INFO                                         0x32
 124 #define NCI_LF_PROTOCOL_TYPE                                    0x50
 125 #define NCI_LF_CON_BITR_F                                       0x54
 126 
 127 /* NCI Configuration Parameters masks */
 128 #define NCI_LA_SEL_INFO_ISO_DEP_MASK                            0x20
 129 #define NCI_LA_SEL_INFO_NFC_DEP_MASK                            0x40
 130 #define NCI_LF_PROTOCOL_TYPE_NFC_DEP_MASK                       0x02
 131 #define NCI_LF_CON_BITR_F_212                                   0x02
 132 #define NCI_LF_CON_BITR_F_424                                   0x04
 133 
 134 /* NCI Reset types */
 135 #define NCI_RESET_TYPE_KEEP_CONFIG                              0x00
 136 #define NCI_RESET_TYPE_RESET_CONFIG                             0x01
 137 
 138 /* NCI Static RF connection ID */
 139 #define NCI_STATIC_RF_CONN_ID                                   0x00
 140 
 141 /* NCI Data Flow Control */
 142 #define NCI_DATA_FLOW_CONTROL_NOT_USED                          0xff
 143 
 144 /* NCI RF_DISCOVER_MAP_CMD modes */
 145 #define NCI_DISC_MAP_MODE_POLL                                  0x01
 146 #define NCI_DISC_MAP_MODE_LISTEN                                0x02
 147 
 148 /* NCI Discover Notification Type */
 149 #define NCI_DISCOVER_NTF_TYPE_LAST                              0x00
 150 #define NCI_DISCOVER_NTF_TYPE_LAST_NFCC                         0x01
 151 #define NCI_DISCOVER_NTF_TYPE_MORE                              0x02
 152 
 153 /* NCI Deactivation Type */
 154 #define NCI_DEACTIVATE_TYPE_IDLE_MODE                           0x00
 155 #define NCI_DEACTIVATE_TYPE_SLEEP_MODE                          0x01
 156 #define NCI_DEACTIVATE_TYPE_SLEEP_AF_MODE                       0x02
 157 #define NCI_DEACTIVATE_TYPE_DISCOVERY                           0x03
 158 
 159 /* Message Type (MT) */
 160 #define NCI_MT_DATA_PKT                                         0x00
 161 #define NCI_MT_CMD_PKT                                          0x01
 162 #define NCI_MT_RSP_PKT                                          0x02
 163 #define NCI_MT_NTF_PKT                                          0x03
 164 
 165 #define nci_mt(hdr)                     (((hdr)[0]>>5)&0x07)
 166 #define nci_mt_set(hdr, mt)             ((hdr)[0] |= (__u8)(((mt)&0x07)<<5))
 167 
 168 /* Packet Boundary Flag (PBF) */
 169 #define NCI_PBF_LAST                                            0x00
 170 #define NCI_PBF_CONT                                            0x01
 171 
 172 #define nci_pbf(hdr)                    (__u8)(((hdr)[0]>>4)&0x01)
 173 #define nci_pbf_set(hdr, pbf)           ((hdr)[0] |= (__u8)(((pbf)&0x01)<<4))
 174 
 175 /* Control Opcode manipulation */
 176 #define nci_opcode_pack(gid, oid)       (__u16)((((__u16)((gid)&0x0f))<<8)|\
 177                                         ((__u16)((oid)&0x3f)))
 178 #define nci_opcode(hdr)                 nci_opcode_pack(hdr[0], hdr[1])
 179 #define nci_opcode_gid(op)              (__u8)(((op)&0x0f00)>>8)
 180 #define nci_opcode_oid(op)              (__u8)((op)&0x003f)
 181 
 182 /* Payload Length */
 183 #define nci_plen(hdr)                   (__u8)((hdr)[2])
 184 
 185 /* Connection ID */
 186 #define nci_conn_id(hdr)                (__u8)(((hdr)[0])&0x0f)
 187 
 188 /* GID values */
 189 #define NCI_GID_CORE                                            0x0
 190 #define NCI_GID_RF_MGMT                                         0x1
 191 #define NCI_GID_NFCEE_MGMT                                      0x2
 192 #define NCI_GID_PROPRIETARY                                     0xf
 193 
 194 /* ----- NCI over SPI head/crc(tail) room needed for outgoing frames ----- */
 195 #define NCI_SPI_HDR_LEN                                         4
 196 #define NCI_SPI_CRC_LEN                                         2
 197 
 198 /* ---- NCI Packet structures ---- */
 199 #define NCI_CTRL_HDR_SIZE                                       3
 200 #define NCI_DATA_HDR_SIZE                                       3
 201 
 202 struct nci_ctrl_hdr {
 203         __u8    gid;            /* MT & PBF & GID */
 204         __u8    oid;
 205         __u8    plen;
 206 } __packed;
 207 
 208 struct nci_data_hdr {
 209         __u8    conn_id;        /* MT & PBF & ConnID */
 210         __u8    rfu;
 211         __u8    plen;
 212 } __packed;
 213 
 214 /* ------------------------ */
 215 /* -----  NCI Commands ---- */
 216 /* ------------------------ */
 217 #define NCI_OP_CORE_RESET_CMD           nci_opcode_pack(NCI_GID_CORE, 0x00)
 218 struct nci_core_reset_cmd {
 219         __u8    reset_type;
 220 } __packed;
 221 
 222 #define NCI_OP_CORE_INIT_CMD            nci_opcode_pack(NCI_GID_CORE, 0x01)
 223 
 224 #define NCI_OP_CORE_SET_CONFIG_CMD      nci_opcode_pack(NCI_GID_CORE, 0x02)
 225 struct set_config_param {
 226         __u8    id;
 227         __u8    len;
 228         __u8    val[NCI_MAX_PARAM_LEN];
 229 } __packed;
 230 
 231 struct nci_core_set_config_cmd {
 232         __u8    num_params;
 233         struct  set_config_param param; /* support 1 param per cmd is enough */
 234 } __packed;
 235 
 236 #define NCI_OP_CORE_CONN_CREATE_CMD     nci_opcode_pack(NCI_GID_CORE, 0x04)
 237 #define DEST_SPEC_PARAMS_ID_INDEX       0
 238 #define DEST_SPEC_PARAMS_PROTOCOL_INDEX 1
 239 struct dest_spec_params {
 240         __u8    id;
 241         __u8    protocol;
 242 } __packed;
 243 
 244 struct core_conn_create_dest_spec_params {
 245         __u8    type;
 246         __u8    length;
 247         __u8    value[0];
 248 } __packed;
 249 
 250 struct nci_core_conn_create_cmd {
 251         __u8    destination_type;
 252         __u8    number_destination_params;
 253         struct core_conn_create_dest_spec_params params[0];
 254 } __packed;
 255 
 256 #define NCI_OP_CORE_CONN_CLOSE_CMD      nci_opcode_pack(NCI_GID_CORE, 0x05)
 257 
 258 #define NCI_OP_RF_DISCOVER_MAP_CMD      nci_opcode_pack(NCI_GID_RF_MGMT, 0x00)
 259 struct disc_map_config {
 260         __u8    rf_protocol;
 261         __u8    mode;
 262         __u8    rf_interface;
 263 } __packed;
 264 
 265 struct nci_rf_disc_map_cmd {
 266         __u8                            num_mapping_configs;
 267         struct disc_map_config          mapping_configs
 268                                         [NCI_MAX_NUM_MAPPING_CONFIGS];
 269 } __packed;
 270 
 271 #define NCI_OP_RF_DISCOVER_CMD          nci_opcode_pack(NCI_GID_RF_MGMT, 0x03)
 272 struct disc_config {
 273         __u8    rf_tech_and_mode;
 274         __u8    frequency;
 275 } __packed;
 276 
 277 struct nci_rf_disc_cmd {
 278         __u8                            num_disc_configs;
 279         struct disc_config              disc_configs[NCI_MAX_NUM_RF_CONFIGS];
 280 } __packed;
 281 
 282 #define NCI_OP_RF_DISCOVER_SELECT_CMD   nci_opcode_pack(NCI_GID_RF_MGMT, 0x04)
 283 struct nci_rf_discover_select_cmd {
 284         __u8    rf_discovery_id;
 285         __u8    rf_protocol;
 286         __u8    rf_interface;
 287 } __packed;
 288 
 289 #define NCI_OP_RF_DEACTIVATE_CMD        nci_opcode_pack(NCI_GID_RF_MGMT, 0x06)
 290 struct nci_rf_deactivate_cmd {
 291         __u8    type;
 292 } __packed;
 293 
 294 #define NCI_OP_NFCEE_DISCOVER_CMD nci_opcode_pack(NCI_GID_NFCEE_MGMT, 0x00)
 295 struct nci_nfcee_discover_cmd {
 296         __u8    discovery_action;
 297 } __packed;
 298 
 299 #define NCI_OP_NFCEE_MODE_SET_CMD nci_opcode_pack(NCI_GID_NFCEE_MGMT, 0x01)
 300 #define NCI_NFCEE_DISABLE       0x00
 301 #define NCI_NFCEE_ENABLE        0x01
 302 struct nci_nfcee_mode_set_cmd {
 303         __u8    nfcee_id;
 304         __u8    nfcee_mode;
 305 } __packed;
 306 
 307 #define NCI_OP_CORE_GET_CONFIG_CMD      nci_opcode_pack(NCI_GID_CORE, 0x03)
 308 
 309 /* ----------------------- */
 310 /* ---- NCI Responses ---- */
 311 /* ----------------------- */
 312 #define NCI_OP_CORE_RESET_RSP           nci_opcode_pack(NCI_GID_CORE, 0x00)
 313 struct nci_core_reset_rsp {
 314         __u8    status;
 315         __u8    nci_ver;
 316         __u8    config_status;
 317 } __packed;
 318 
 319 #define NCI_OP_CORE_INIT_RSP            nci_opcode_pack(NCI_GID_CORE, 0x01)
 320 struct nci_core_init_rsp_1 {
 321         __u8    status;
 322         __le32  nfcc_features;
 323         __u8    num_supported_rf_interfaces;
 324         __u8    supported_rf_interfaces[0];     /* variable size array */
 325         /* continuted in nci_core_init_rsp_2 */
 326 } __packed;
 327 
 328 struct nci_core_init_rsp_2 {
 329         __u8    max_logical_connections;
 330         __le16  max_routing_table_size;
 331         __u8    max_ctrl_pkt_payload_len;
 332         __le16  max_size_for_large_params;
 333         __u8    manufact_id;
 334         __le32  manufact_specific_info;
 335 } __packed;
 336 
 337 #define NCI_OP_CORE_SET_CONFIG_RSP      nci_opcode_pack(NCI_GID_CORE, 0x02)
 338 struct nci_core_set_config_rsp {
 339         __u8    status;
 340         __u8    num_params;
 341         __u8    params_id[0];   /* variable size array */
 342 } __packed;
 343 
 344 #define NCI_OP_CORE_CONN_CREATE_RSP     nci_opcode_pack(NCI_GID_CORE, 0x04)
 345 struct nci_core_conn_create_rsp {
 346         __u8    status;
 347         __u8    max_ctrl_pkt_payload_len;
 348         __u8    credits_cnt;
 349         __u8    conn_id;
 350 } __packed;
 351 
 352 #define NCI_OP_CORE_CONN_CLOSE_RSP      nci_opcode_pack(NCI_GID_CORE, 0x05)
 353 
 354 #define NCI_OP_RF_DISCOVER_MAP_RSP      nci_opcode_pack(NCI_GID_RF_MGMT, 0x00)
 355 
 356 #define NCI_OP_RF_DISCOVER_RSP          nci_opcode_pack(NCI_GID_RF_MGMT, 0x03)
 357 
 358 #define NCI_OP_RF_DISCOVER_SELECT_RSP   nci_opcode_pack(NCI_GID_RF_MGMT, 0x04)
 359 
 360 #define NCI_OP_RF_DEACTIVATE_RSP        nci_opcode_pack(NCI_GID_RF_MGMT, 0x06)
 361 
 362 #define NCI_OP_NFCEE_DISCOVER_RSP nci_opcode_pack(NCI_GID_NFCEE_MGMT, 0x00)
 363 struct nci_nfcee_discover_rsp {
 364         __u8    status;
 365         __u8    num_nfcee;
 366 } __packed;
 367 
 368 #define NCI_OP_NFCEE_MODE_SET_RSP nci_opcode_pack(NCI_GID_NFCEE_MGMT, 0x01)
 369 
 370 #define NCI_OP_CORE_GET_CONFIG_RSP      nci_opcode_pack(NCI_GID_CORE, 0x03)
 371 
 372 /* --------------------------- */
 373 /* ---- NCI Notifications ---- */
 374 /* --------------------------- */
 375 #define NCI_OP_CORE_CONN_CREDITS_NTF    nci_opcode_pack(NCI_GID_CORE, 0x06)
 376 struct conn_credit_entry {
 377         __u8    conn_id;
 378         __u8    credits;
 379 } __packed;
 380 
 381 struct nci_core_conn_credit_ntf {
 382         __u8                            num_entries;
 383         struct conn_credit_entry        conn_entries[NCI_MAX_NUM_CONN];
 384 } __packed;
 385 
 386 #define NCI_OP_CORE_GENERIC_ERROR_NTF   nci_opcode_pack(NCI_GID_CORE, 0x07)
 387 
 388 #define NCI_OP_CORE_INTF_ERROR_NTF      nci_opcode_pack(NCI_GID_CORE, 0x08)
 389 struct nci_core_intf_error_ntf {
 390         __u8    status;
 391         __u8    conn_id;
 392 } __packed;
 393 
 394 #define NCI_OP_RF_DISCOVER_NTF          nci_opcode_pack(NCI_GID_RF_MGMT, 0x03)
 395 struct rf_tech_specific_params_nfca_poll {
 396         __u16   sens_res;
 397         __u8    nfcid1_len;     /* 0, 4, 7, or 10 Bytes */
 398         __u8    nfcid1[NFC_NFCID1_MAXSIZE];
 399         __u8    sel_res_len;    /* 0 or 1 Bytes */
 400         __u8    sel_res;
 401 } __packed;
 402 
 403 struct rf_tech_specific_params_nfcb_poll {
 404         __u8    sensb_res_len;
 405         __u8    sensb_res[NFC_SENSB_RES_MAXSIZE];       /* 11 or 12 Bytes */
 406 } __packed;
 407 
 408 struct rf_tech_specific_params_nfcf_poll {
 409         __u8    bit_rate;
 410         __u8    sensf_res_len;
 411         __u8    sensf_res[NFC_SENSF_RES_MAXSIZE];       /* 16 or 18 Bytes */
 412 } __packed;
 413 
 414 struct rf_tech_specific_params_nfcv_poll {
 415         __u8    res_flags;
 416         __u8    dsfid;
 417         __u8    uid[NFC_ISO15693_UID_MAXSIZE];  /* 8 Bytes */
 418 } __packed;
 419 
 420 struct rf_tech_specific_params_nfcf_listen {
 421         __u8    local_nfcid2_len;
 422         __u8    local_nfcid2[NFC_NFCID2_MAXSIZE];       /* 0 or 8 Bytes */
 423 } __packed;
 424 
 425 struct nci_rf_discover_ntf {
 426         __u8    rf_discovery_id;
 427         __u8    rf_protocol;
 428         __u8    rf_tech_and_mode;
 429         __u8    rf_tech_specific_params_len;
 430 
 431         union {
 432                 struct rf_tech_specific_params_nfca_poll nfca_poll;
 433                 struct rf_tech_specific_params_nfcb_poll nfcb_poll;
 434                 struct rf_tech_specific_params_nfcf_poll nfcf_poll;
 435                 struct rf_tech_specific_params_nfcv_poll nfcv_poll;
 436         } rf_tech_specific_params;
 437 
 438         __u8    ntf_type;
 439 } __packed;
 440 
 441 #define NCI_OP_RF_INTF_ACTIVATED_NTF    nci_opcode_pack(NCI_GID_RF_MGMT, 0x05)
 442 struct activation_params_nfca_poll_iso_dep {
 443         __u8    rats_res_len;
 444         __u8    rats_res[20];
 445 };
 446 
 447 struct activation_params_nfcb_poll_iso_dep {
 448         __u8    attrib_res_len;
 449         __u8    attrib_res[50];
 450 };
 451 
 452 struct activation_params_poll_nfc_dep {
 453         __u8    atr_res_len;
 454         __u8    atr_res[NFC_ATR_RES_MAXSIZE - 2]; /* ATR_RES from byte 3 */
 455 };
 456 
 457 struct activation_params_listen_nfc_dep {
 458         __u8    atr_req_len;
 459         __u8    atr_req[NFC_ATR_REQ_MAXSIZE - 2]; /* ATR_REQ from byte 3 */
 460 };
 461 
 462 struct nci_rf_intf_activated_ntf {
 463         __u8    rf_discovery_id;
 464         __u8    rf_interface;
 465         __u8    rf_protocol;
 466         __u8    activation_rf_tech_and_mode;
 467         __u8    max_data_pkt_payload_size;
 468         __u8    initial_num_credits;
 469         __u8    rf_tech_specific_params_len;
 470 
 471         union {
 472                 struct rf_tech_specific_params_nfca_poll nfca_poll;
 473                 struct rf_tech_specific_params_nfcb_poll nfcb_poll;
 474                 struct rf_tech_specific_params_nfcf_poll nfcf_poll;
 475                 struct rf_tech_specific_params_nfcv_poll nfcv_poll;
 476                 struct rf_tech_specific_params_nfcf_listen nfcf_listen;
 477         } rf_tech_specific_params;
 478 
 479         __u8    data_exch_rf_tech_and_mode;
 480         __u8    data_exch_tx_bit_rate;
 481         __u8    data_exch_rx_bit_rate;
 482         __u8    activation_params_len;
 483 
 484         union {
 485                 struct activation_params_nfca_poll_iso_dep nfca_poll_iso_dep;
 486                 struct activation_params_nfcb_poll_iso_dep nfcb_poll_iso_dep;
 487                 struct activation_params_poll_nfc_dep poll_nfc_dep;
 488                 struct activation_params_listen_nfc_dep listen_nfc_dep;
 489         } activation_params;
 490 
 491 } __packed;
 492 
 493 #define NCI_OP_RF_DEACTIVATE_NTF        nci_opcode_pack(NCI_GID_RF_MGMT, 0x06)
 494 struct nci_rf_deactivate_ntf {
 495         __u8    type;
 496         __u8    reason;
 497 } __packed;
 498 
 499 #define NCI_OP_RF_NFCEE_ACTION_NTF      nci_opcode_pack(NCI_GID_RF_MGMT, 0x09)
 500 struct nci_rf_nfcee_action_ntf {
 501         __u8 nfcee_id;
 502         __u8 trigger;
 503         __u8 supported_data_length;
 504         __u8 supported_data[0];
 505 } __packed;
 506 
 507 #define NCI_OP_NFCEE_DISCOVER_NTF nci_opcode_pack(NCI_GID_NFCEE_MGMT, 0x00)
 508 struct nci_nfcee_supported_protocol {
 509         __u8    num_protocol;
 510         __u8    supported_protocol[0];
 511 } __packed;
 512 
 513 struct nci_nfcee_information_tlv {
 514         __u8    num_tlv;
 515         __u8    information_tlv[0];
 516 } __packed;
 517 
 518 struct nci_nfcee_discover_ntf {
 519         __u8    nfcee_id;
 520         __u8    nfcee_status;
 521         struct nci_nfcee_supported_protocol supported_protocols;
 522         struct nci_nfcee_information_tlv        information_tlv;
 523 } __packed;
 524 
 525 #define NCI_OP_CORE_RESET_NTF           nci_opcode_pack(NCI_GID_CORE, 0x00)
 526 
 527 #endif /* __NCI_H */

/* [<][>][^][v][top][bottom][index][help] */