Commit 637d85a7 authored by Ilan Elias's avatar Ilan Elias Committed by John W. Linville

NFC: Update names and structs to NCI spec 1.0 d22

Addition, deletion, and modification of NCI constants.
Changes in NCI commands, responses, and notifications structures.
Signed-off-by: default avatarIlan Elias <ilane@ti.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent cee0bec5
...@@ -54,11 +54,10 @@ ...@@ -54,11 +54,10 @@
#define NCI_STATUS_RF_PROTOCOL_ERROR 0xb1 #define NCI_STATUS_RF_PROTOCOL_ERROR 0xb1
#define NCI_STATUS_RF_TIMEOUT_ERROR 0xb2 #define NCI_STATUS_RF_TIMEOUT_ERROR 0xb2
/* NFCEE Interface Specific Status Codes */ /* NFCEE Interface Specific Status Codes */
#define NCI_STATUS_MAX_ACTIVE_NFCEE_INTERFACES_REACHED 0xc0 #define NCI_STATUS_NFCEE_INTERFACE_ACTIVATION_FAILED 0xc0
#define NCI_STATUS_NFCEE_INTERFACE_ACTIVATION_FAILED 0xc1 #define NCI_STATUS_NFCEE_TRANSMISSION_ERROR 0xc1
#define NCI_STATUS_NFCEE_TRANSMISSION_ERROR 0xc2 #define NCI_STATUS_NFCEE_PROTOCOL_ERROR 0xc2
#define NCI_STATUS_NFCEE_PROTOCOL_ERROR 0xc3 #define NCI_STATUS_NFCEE_TIMEOUT_ERROR 0xc3
#define NCI_STATUS_NFCEE_TIMEOUT_ERROR 0xc4
/* NCI RF Technology and Mode */ /* NCI RF Technology and Mode */
#define NCI_NFC_A_PASSIVE_POLL_MODE 0x00 #define NCI_NFC_A_PASSIVE_POLL_MODE 0x00
...@@ -66,11 +65,13 @@ ...@@ -66,11 +65,13 @@
#define NCI_NFC_F_PASSIVE_POLL_MODE 0x02 #define NCI_NFC_F_PASSIVE_POLL_MODE 0x02
#define NCI_NFC_A_ACTIVE_POLL_MODE 0x03 #define NCI_NFC_A_ACTIVE_POLL_MODE 0x03
#define NCI_NFC_F_ACTIVE_POLL_MODE 0x05 #define NCI_NFC_F_ACTIVE_POLL_MODE 0x05
#define NCI_NFC_15693_PASSIVE_POLL_MODE 0x06
#define NCI_NFC_A_PASSIVE_LISTEN_MODE 0x80 #define NCI_NFC_A_PASSIVE_LISTEN_MODE 0x80
#define NCI_NFC_B_PASSIVE_LISTEN_MODE 0x81 #define NCI_NFC_B_PASSIVE_LISTEN_MODE 0x81
#define NCI_NFC_F_PASSIVE_LISTEN_MODE 0x82 #define NCI_NFC_F_PASSIVE_LISTEN_MODE 0x82
#define NCI_NFC_A_ACTIVE_LISTEN_MODE 0x83 #define NCI_NFC_A_ACTIVE_LISTEN_MODE 0x83
#define NCI_NFC_F_ACTIVE_LISTEN_MODE 0x85 #define NCI_NFC_F_ACTIVE_LISTEN_MODE 0x85
#define NCI_NFC_15693_PASSIVE_LISTEN_MODE 0x86
/* NCI RF Technologies */ /* NCI RF Technologies */
#define NCI_NFC_RF_TECHNOLOGY_A 0x00 #define NCI_NFC_RF_TECHNOLOGY_A 0x00
...@@ -83,9 +84,9 @@ ...@@ -83,9 +84,9 @@
#define NCI_NFC_BIT_RATE_212 0x01 #define NCI_NFC_BIT_RATE_212 0x01
#define NCI_NFC_BIT_RATE_424 0x02 #define NCI_NFC_BIT_RATE_424 0x02
#define NCI_NFC_BIT_RATE_848 0x03 #define NCI_NFC_BIT_RATE_848 0x03
#define NCI_NFC_BIT_RATE_1696 0x04 #define NCI_NFC_BIT_RATE_1695 0x04
#define NCI_NFC_BIT_RATE_3392 0x05 #define NCI_NFC_BIT_RATE_3390 0x05
#define NCI_NFC_BIT_RATE_6784 0x06 #define NCI_NFC_BIT_RATE_6780 0x06
/* NCI RF Protocols */ /* NCI RF Protocols */
#define NCI_RF_PROTOCOL_UNKNOWN 0x00 #define NCI_RF_PROTOCOL_UNKNOWN 0x00
...@@ -114,20 +115,6 @@ ...@@ -114,20 +115,6 @@
/* NCI RF_DISCOVER_MAP_CMD modes */ /* NCI RF_DISCOVER_MAP_CMD modes */
#define NCI_DISC_MAP_MODE_POLL 0x01 #define NCI_DISC_MAP_MODE_POLL 0x01
#define NCI_DISC_MAP_MODE_LISTEN 0x02 #define NCI_DISC_MAP_MODE_LISTEN 0x02
#define NCI_DISC_MAP_MODE_BOTH 0x03
/* NCI Discovery Types */
#define NCI_DISCOVERY_TYPE_POLL_A_PASSIVE 0x00
#define NCI_DISCOVERY_TYPE_POLL_B_PASSIVE 0x01
#define NCI_DISCOVERY_TYPE_POLL_F_PASSIVE 0x02
#define NCI_DISCOVERY_TYPE_POLL_A_ACTIVE 0x03
#define NCI_DISCOVERY_TYPE_POLL_F_ACTIVE 0x05
#define NCI_DISCOVERY_TYPE_WAKEUP_A_ACTIVE 0x09
#define NCI_DISCOVERY_TYPE_LISTEN_A_PASSIVE 0x80
#define NCI_DISCOVERY_TYPE_LISTEN_B_PASSIVE 0x81
#define NCI_DISCOVERY_TYPE_LISTEN_F_PASSIVE 0x82
#define NCI_DISCOVERY_TYPE_LISTEN_A_ACTIVE 0x83
#define NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE 0x85
/* NCI Deactivation Type */ /* NCI Deactivation Type */
#define NCI_DEACTIVATE_TYPE_IDLE_MODE 0x00 #define NCI_DEACTIVATE_TYPE_IDLE_MODE 0x00
...@@ -200,7 +187,7 @@ struct nci_core_reset_cmd { ...@@ -200,7 +187,7 @@ struct nci_core_reset_cmd {
struct disc_map_config { struct disc_map_config {
__u8 rf_protocol; __u8 rf_protocol;
__u8 mode; __u8 mode;
__u8 rf_interface_type; __u8 rf_interface;
} __packed; } __packed;
struct nci_rf_disc_map_cmd { struct nci_rf_disc_map_cmd {
...@@ -211,7 +198,7 @@ struct nci_rf_disc_map_cmd { ...@@ -211,7 +198,7 @@ struct nci_rf_disc_map_cmd {
#define NCI_OP_RF_DISCOVER_CMD nci_opcode_pack(NCI_GID_RF_MGMT, 0x03) #define NCI_OP_RF_DISCOVER_CMD nci_opcode_pack(NCI_GID_RF_MGMT, 0x03)
struct disc_config { struct disc_config {
__u8 type; __u8 rf_tech_and_mode;
__u8 frequency; __u8 frequency;
} __packed; } __packed;
...@@ -249,8 +236,6 @@ struct nci_core_init_rsp_2 { ...@@ -249,8 +236,6 @@ struct nci_core_init_rsp_2 {
__le16 max_routing_table_size; __le16 max_routing_table_size;
__u8 max_ctrl_pkt_payload_len; __u8 max_ctrl_pkt_payload_len;
__le16 max_size_for_large_params; __le16 max_size_for_large_params;
__u8 max_data_pkt_payload_size;
__u8 initial_num_credits;
__u8 manufact_id; __u8 manufact_id;
__le32 manufact_specific_info; __le32 manufact_specific_info;
} __packed; } __packed;
...@@ -264,7 +249,7 @@ struct nci_core_init_rsp_2 { ...@@ -264,7 +249,7 @@ struct nci_core_init_rsp_2 {
/* --------------------------- */ /* --------------------------- */
/* ---- NCI Notifications ---- */ /* ---- NCI Notifications ---- */
/* --------------------------- */ /* --------------------------- */
#define NCI_OP_CORE_CONN_CREDITS_NTF nci_opcode_pack(NCI_GID_CORE, 0x07) #define NCI_OP_CORE_CONN_CREDITS_NTF nci_opcode_pack(NCI_GID_CORE, 0x06)
struct conn_credit_entry { struct conn_credit_entry {
__u8 conn_id; __u8 conn_id;
__u8 credits; __u8 credits;
...@@ -291,9 +276,11 @@ struct activation_params_nfca_poll_iso_dep { ...@@ -291,9 +276,11 @@ struct activation_params_nfca_poll_iso_dep {
struct nci_rf_intf_activated_ntf { struct nci_rf_intf_activated_ntf {
__u8 rf_discovery_id; __u8 rf_discovery_id;
__u8 rf_interface_type; __u8 rf_interface;
__u8 rf_protocol; __u8 rf_protocol;
__u8 activation_rf_tech_and_mode; __u8 activation_rf_tech_and_mode;
__u8 max_data_pkt_payload_size;
__u8 initial_num_credits;
__u8 rf_tech_specific_params_len; __u8 rf_tech_specific_params_len;
union { union {
......
...@@ -111,11 +111,13 @@ struct nci_dev { ...@@ -111,11 +111,13 @@ struct nci_dev {
__u16 max_routing_table_size; __u16 max_routing_table_size;
__u8 max_ctrl_pkt_payload_len; __u8 max_ctrl_pkt_payload_len;
__u16 max_size_for_large_params; __u16 max_size_for_large_params;
__u8 max_data_pkt_payload_size;
__u8 initial_num_credits;
__u8 manufact_id; __u8 manufact_id;
__u32 manufact_specific_info; __u32 manufact_specific_info;
/* received during NCI_OP_RF_INTF_ACTIVATED_NTF */
__u8 max_data_pkt_payload_size;
__u8 initial_num_credits;
/* stored during nci_data_exchange */ /* stored during nci_data_exchange */
data_exchange_cb_t data_exchange_cb; data_exchange_cb_t data_exchange_cb;
void *data_exchange_cb_context; void *data_exchange_cb_context;
......
...@@ -154,14 +154,16 @@ static void nci_init_complete_req(struct nci_dev *ndev, unsigned long opt) ...@@ -154,14 +154,16 @@ static void nci_init_complete_req(struct nci_dev *ndev, unsigned long opt)
if (ndev->supported_rf_interfaces[i] == if (ndev->supported_rf_interfaces[i] ==
NCI_RF_INTERFACE_ISO_DEP) { NCI_RF_INTERFACE_ISO_DEP) {
cfg[*num].rf_protocol = NCI_RF_PROTOCOL_ISO_DEP; cfg[*num].rf_protocol = NCI_RF_PROTOCOL_ISO_DEP;
cfg[*num].mode = NCI_DISC_MAP_MODE_BOTH; cfg[*num].mode = NCI_DISC_MAP_MODE_POLL |
cfg[*num].rf_interface_type = NCI_RF_INTERFACE_ISO_DEP; NCI_DISC_MAP_MODE_LISTEN;
cfg[*num].rf_interface = NCI_RF_INTERFACE_ISO_DEP;
(*num)++; (*num)++;
} else if (ndev->supported_rf_interfaces[i] == } else if (ndev->supported_rf_interfaces[i] ==
NCI_RF_INTERFACE_NFC_DEP) { NCI_RF_INTERFACE_NFC_DEP) {
cfg[*num].rf_protocol = NCI_RF_PROTOCOL_NFC_DEP; cfg[*num].rf_protocol = NCI_RF_PROTOCOL_NFC_DEP;
cfg[*num].mode = NCI_DISC_MAP_MODE_BOTH; cfg[*num].mode = NCI_DISC_MAP_MODE_POLL |
cfg[*num].rf_interface_type = NCI_RF_INTERFACE_NFC_DEP; NCI_DISC_MAP_MODE_LISTEN;
cfg[*num].rf_interface = NCI_RF_INTERFACE_NFC_DEP;
(*num)++; (*num)++;
} }
...@@ -186,16 +188,16 @@ static void nci_rf_discover_req(struct nci_dev *ndev, unsigned long opt) ...@@ -186,16 +188,16 @@ static void nci_rf_discover_req(struct nci_dev *ndev, unsigned long opt)
|| protocols & NFC_PROTO_MIFARE_MASK || protocols & NFC_PROTO_MIFARE_MASK
|| protocols & NFC_PROTO_ISO14443_MASK || protocols & NFC_PROTO_ISO14443_MASK
|| protocols & NFC_PROTO_NFC_DEP_MASK)) { || protocols & NFC_PROTO_NFC_DEP_MASK)) {
cmd.disc_configs[cmd.num_disc_configs].type = cmd.disc_configs[cmd.num_disc_configs].rf_tech_and_mode =
NCI_DISCOVERY_TYPE_POLL_A_PASSIVE; NCI_NFC_A_PASSIVE_POLL_MODE;
cmd.disc_configs[cmd.num_disc_configs].frequency = 1; cmd.disc_configs[cmd.num_disc_configs].frequency = 1;
cmd.num_disc_configs++; cmd.num_disc_configs++;
} }
if ((cmd.num_disc_configs < NCI_MAX_NUM_RF_CONFIGS) && if ((cmd.num_disc_configs < NCI_MAX_NUM_RF_CONFIGS) &&
(protocols & NFC_PROTO_ISO14443_MASK)) { (protocols & NFC_PROTO_ISO14443_MASK)) {
cmd.disc_configs[cmd.num_disc_configs].type = cmd.disc_configs[cmd.num_disc_configs].rf_tech_and_mode =
NCI_DISCOVERY_TYPE_POLL_B_PASSIVE; NCI_NFC_B_PASSIVE_POLL_MODE;
cmd.disc_configs[cmd.num_disc_configs].frequency = 1; cmd.disc_configs[cmd.num_disc_configs].frequency = 1;
cmd.num_disc_configs++; cmd.num_disc_configs++;
} }
...@@ -203,8 +205,8 @@ static void nci_rf_discover_req(struct nci_dev *ndev, unsigned long opt) ...@@ -203,8 +205,8 @@ static void nci_rf_discover_req(struct nci_dev *ndev, unsigned long opt)
if ((cmd.num_disc_configs < NCI_MAX_NUM_RF_CONFIGS) && if ((cmd.num_disc_configs < NCI_MAX_NUM_RF_CONFIGS) &&
(protocols & NFC_PROTO_FELICA_MASK (protocols & NFC_PROTO_FELICA_MASK
|| protocols & NFC_PROTO_NFC_DEP_MASK)) { || protocols & NFC_PROTO_NFC_DEP_MASK)) {
cmd.disc_configs[cmd.num_disc_configs].type = cmd.disc_configs[cmd.num_disc_configs].rf_tech_and_mode =
NCI_DISCOVERY_TYPE_POLL_F_PASSIVE; NCI_NFC_F_PASSIVE_POLL_MODE;
cmd.disc_configs[cmd.num_disc_configs].frequency = 1; cmd.disc_configs[cmd.num_disc_configs].frequency = 1;
cmd.num_disc_configs++; cmd.num_disc_configs++;
} }
......
...@@ -77,9 +77,6 @@ int nci_to_errno(__u8 code) ...@@ -77,9 +77,6 @@ int nci_to_errno(__u8 code)
case NCI_STATUS_NFCEE_TIMEOUT_ERROR: case NCI_STATUS_NFCEE_TIMEOUT_ERROR:
return -ETIMEDOUT; return -ETIMEDOUT;
case NCI_STATUS_MAX_ACTIVE_NFCEE_INTERFACES_REACHED:
return -EDQUOT;
case NCI_STATUS_FAILED: case NCI_STATUS_FAILED:
default: default:
return -ENOSYS; return -ENOSYS;
......
...@@ -52,6 +52,9 @@ static void nci_core_conn_credits_ntf_packet(struct nci_dev *ndev, ...@@ -52,6 +52,9 @@ static void nci_core_conn_credits_ntf_packet(struct nci_dev *ndev,
/* update the credits */ /* update the credits */
for (i = 0; i < ntf->num_entries; i++) { for (i = 0; i < ntf->num_entries; i++) {
ntf->conn_entries[i].conn_id =
nci_conn_id(&ntf->conn_entries[i].conn_id);
pr_debug("entry[%d]: conn_id %d, credits %d\n", pr_debug("entry[%d]: conn_id %d, credits %d\n",
i, ntf->conn_entries[i].conn_id, i, ntf->conn_entries[i].conn_id,
ntf->conn_entries[i].credits); ntf->conn_entries[i].credits);
...@@ -147,6 +150,11 @@ static void nci_target_found(struct nci_dev *ndev, ...@@ -147,6 +150,11 @@ static void nci_target_found(struct nci_dev *ndev,
nfc_tgt.supported_protocols); nfc_tgt.supported_protocols);
ndev->target_available_prots = nfc_tgt.supported_protocols; ndev->target_available_prots = nfc_tgt.supported_protocols;
ndev->max_data_pkt_payload_size = ntf->max_data_pkt_payload_size;
ndev->initial_num_credits = ntf->initial_num_credits;
/* set the available credits to initial value */
atomic_set(&ndev->credits_cnt, ndev->initial_num_credits);
nfc_targets_found(ndev->nfc_dev, &nfc_tgt, 1); nfc_targets_found(ndev->nfc_dev, &nfc_tgt, 1);
} }
...@@ -162,16 +170,21 @@ static void nci_rf_intf_activated_ntf_packet(struct nci_dev *ndev, ...@@ -162,16 +170,21 @@ static void nci_rf_intf_activated_ntf_packet(struct nci_dev *ndev,
set_bit(NCI_POLL_ACTIVE, &ndev->flags); set_bit(NCI_POLL_ACTIVE, &ndev->flags);
ntf.rf_discovery_id = *data++; ntf.rf_discovery_id = *data++;
ntf.rf_interface_type = *data++; ntf.rf_interface = *data++;
ntf.rf_protocol = *data++; ntf.rf_protocol = *data++;
ntf.activation_rf_tech_and_mode = *data++; ntf.activation_rf_tech_and_mode = *data++;
ntf.max_data_pkt_payload_size = *data++;
ntf.initial_num_credits = *data++;
ntf.rf_tech_specific_params_len = *data++; ntf.rf_tech_specific_params_len = *data++;
pr_debug("rf_discovery_id %d\n", ntf.rf_discovery_id); pr_debug("rf_discovery_id %d\n", ntf.rf_discovery_id);
pr_debug("rf_interface_type 0x%x\n", ntf.rf_interface_type); pr_debug("rf_interface 0x%x\n", ntf.rf_interface);
pr_debug("rf_protocol 0x%x\n", ntf.rf_protocol); pr_debug("rf_protocol 0x%x\n", ntf.rf_protocol);
pr_debug("activation_rf_tech_and_mode 0x%x\n", pr_debug("activation_rf_tech_and_mode 0x%x\n",
ntf.activation_rf_tech_and_mode); ntf.activation_rf_tech_and_mode);
pr_debug("max_data_pkt_payload_size 0x%x\n",
ntf.max_data_pkt_payload_size);
pr_debug("initial_num_credits 0x%x\n", ntf.initial_num_credits);
pr_debug("rf_tech_specific_params_len %d\n", pr_debug("rf_tech_specific_params_len %d\n",
ntf.rf_tech_specific_params_len); ntf.rf_tech_specific_params_len);
...@@ -204,7 +217,7 @@ static void nci_rf_intf_activated_ntf_packet(struct nci_dev *ndev, ...@@ -204,7 +217,7 @@ static void nci_rf_intf_activated_ntf_packet(struct nci_dev *ndev,
ntf.activation_params_len); ntf.activation_params_len);
if (ntf.activation_params_len > 0) { if (ntf.activation_params_len > 0) {
switch (ntf.rf_interface_type) { switch (ntf.rf_interface) {
case NCI_RF_INTERFACE_ISO_DEP: case NCI_RF_INTERFACE_ISO_DEP:
err = nci_extract_activation_params_iso_dep(ndev, err = nci_extract_activation_params_iso_dep(ndev,
&ntf, data); &ntf, data);
...@@ -215,8 +228,8 @@ static void nci_rf_intf_activated_ntf_packet(struct nci_dev *ndev, ...@@ -215,8 +228,8 @@ static void nci_rf_intf_activated_ntf_packet(struct nci_dev *ndev,
break; break;
default: default:
pr_err("unsupported rf_interface_type 0x%x\n", pr_err("unsupported rf_interface 0x%x\n",
ntf.rf_interface_type); ntf.rf_interface);
return; return;
} }
} }
...@@ -244,9 +257,6 @@ static void nci_rf_deactivate_ntf_packet(struct nci_dev *ndev, ...@@ -244,9 +257,6 @@ static void nci_rf_deactivate_ntf_packet(struct nci_dev *ndev,
ndev->rx_data_reassembly = 0; ndev->rx_data_reassembly = 0;
} }
/* set the available credits to initial value */
atomic_set(&ndev->credits_cnt, ndev->initial_num_credits);
/* complete the data exchange transaction, if exists */ /* complete the data exchange transaction, if exists */
if (test_bit(NCI_DATA_EXCHANGE, &ndev->flags)) if (test_bit(NCI_DATA_EXCHANGE, &ndev->flags))
nci_data_exchange_complete(ndev, NULL, -EIO); nci_data_exchange_complete(ndev, NULL, -EIO);
......
...@@ -86,17 +86,11 @@ static void nci_core_init_rsp_packet(struct nci_dev *ndev, struct sk_buff *skb) ...@@ -86,17 +86,11 @@ static void nci_core_init_rsp_packet(struct nci_dev *ndev, struct sk_buff *skb)
rsp_2->max_ctrl_pkt_payload_len; rsp_2->max_ctrl_pkt_payload_len;
ndev->max_size_for_large_params = ndev->max_size_for_large_params =
__le16_to_cpu(rsp_2->max_size_for_large_params); __le16_to_cpu(rsp_2->max_size_for_large_params);
ndev->max_data_pkt_payload_size =
rsp_2->max_data_pkt_payload_size;
ndev->initial_num_credits =
rsp_2->initial_num_credits;
ndev->manufact_id = ndev->manufact_id =
rsp_2->manufact_id; rsp_2->manufact_id;
ndev->manufact_specific_info = ndev->manufact_specific_info =
__le32_to_cpu(rsp_2->manufact_specific_info); __le32_to_cpu(rsp_2->manufact_specific_info);
atomic_set(&ndev->credits_cnt, ndev->initial_num_credits);
pr_debug("nfcc_features 0x%x\n", pr_debug("nfcc_features 0x%x\n",
ndev->nfcc_features); ndev->nfcc_features);
pr_debug("num_supported_rf_interfaces %d\n", pr_debug("num_supported_rf_interfaces %d\n",
...@@ -117,10 +111,6 @@ static void nci_core_init_rsp_packet(struct nci_dev *ndev, struct sk_buff *skb) ...@@ -117,10 +111,6 @@ static void nci_core_init_rsp_packet(struct nci_dev *ndev, struct sk_buff *skb)
ndev->max_ctrl_pkt_payload_len); ndev->max_ctrl_pkt_payload_len);
pr_debug("max_size_for_large_params %d\n", pr_debug("max_size_for_large_params %d\n",
ndev->max_size_for_large_params); ndev->max_size_for_large_params);
pr_debug("max_data_pkt_payload_size %d\n",
ndev->max_data_pkt_payload_size);
pr_debug("initial_num_credits %d\n",
ndev->initial_num_credits);
pr_debug("manufact_id 0x%x\n", pr_debug("manufact_id 0x%x\n",
ndev->manufact_id); ndev->manufact_id);
pr_debug("manufact_specific_info 0x%x\n", pr_debug("manufact_specific_info 0x%x\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment