nfc_copy: Update nfc_copy.h with SE and firmware upload APIs
authorSamuel Ortiz <sameo@linux.intel.com>
Mon, 22 Jul 2013 13:39:06 +0000 (15:39 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 22 Jul 2013 13:39:06 +0000 (15:39 +0200)
include/nfc_copy.h

index edcea60..bb1aa47 100644 (file)
  *     starting a poll from a device which has a secure element enabled means
  *     we want to do SE based card emulation.
  * @NFC_CMD_DISABLE_SE: Disable the physical link to a specific secure element.
+ * @NFC_CMD_FW_UPLOAD: Request to Load/flash firmware, or event to inform that
+ *     some firmware was loaded
+ * @NFC_EVENT_SE_ADDED: Event emitted when a new secure element is discovered.
+ *     This typically will be sent whenever a new NFC controller with either
+ *     an embedded SE or an UICC one connected to it through SWP.
+ * @NFC_EVENT_SE_REMOVED: Event emitted when a secure element is removed from
+ *     the system, as a consequence of e.g. an NFC controller being unplugged.
+ * @NFC_EVENT_SE_CONNECTIVITY: This event is emitted whenever a secure element
+ *     is requesting connectivity access. For example a UICC SE may need to
+ *     talk with a sleeping modem and will notify this need by sending this
+ *     event. It is then up to userspace to decide if it will wake the modem
+ *     up or not.
+ * @NFC_EVENT_SE_TRANSACTION: This event is sent when an application running on
+ *     a specific SE notifies us about the end of a transaction. The parameter
+ *     for this event is the application ID (AID).
  */
 enum nfc_commands {
        NFC_CMD_UNSPEC,
@@ -92,6 +107,11 @@ enum nfc_commands {
        NFC_CMD_DISABLE_SE,
        NFC_CMD_LLC_SDREQ,
        NFC_EVENT_LLC_SDRES,
+       NFC_CMD_FW_UPLOAD,
+       NFC_EVENT_SE_ADDED,
+       NFC_EVENT_SE_REMOVED,
+       NFC_EVENT_SE_CONNECTIVITY,
+       NFC_EVENT_SE_TRANSACTION,
 /* private: internal use only */
        __NFC_CMD_AFTER_LAST
 };
@@ -121,6 +141,9 @@ enum nfc_commands {
  * @NFC_ATTR_LLC_PARAM_RW: Receive Window size parameter
  * @NFC_ATTR_LLC_PARAM_MIUX: MIU eXtension parameter
  * @NFC_ATTR_SE: Available Secure Elements
+ * @NFC_ATTR_FIRMWARE_NAME: Free format firmware version
+ * @NFC_ATTR_SE_INDEX: Secure element index
+ * @NFC_ATTR_SE_TYPE: Secure element type (UICC or EMBEDDED)
  */
 enum nfc_attrs {
        NFC_ATTR_UNSPEC,
@@ -143,6 +166,10 @@ enum nfc_attrs {
        NFC_ATTR_LLC_PARAM_MIUX,
        NFC_ATTR_SE,
        NFC_ATTR_LLC_SDP,
+       NFC_ATTR_FIRMWARE_NAME,
+       NFC_ATTR_SE_INDEX,
+       NFC_ATTR_SE_TYPE,
+       NFC_ATTR_SE_AID,
 /* private: internal use only */
        __NFC_ATTR_AFTER_LAST
 };
@@ -159,9 +186,12 @@ enum nfc_sdp_attr {
 
 #define NFC_DEVICE_NAME_MAXSIZE 8
 #define NFC_NFCID1_MAXSIZE 10
+#define NFC_NFCID2_MAXSIZE 8
+#define NFC_NFCID3_MAXSIZE 10
 #define NFC_SENSB_RES_MAXSIZE 12
 #define NFC_SENSF_RES_MAXSIZE 18
 #define NFC_GB_MAXSIZE        48
+#define NFC_FIRMWARE_NAME_MAXSIZE 32
 
 /* NFC protocols */
 #define NFC_PROTO_JEWEL                1
@@ -191,10 +221,12 @@ enum nfc_sdp_attr {
 #define NFC_PROTO_ISO14443_B_MASK (1 << NFC_PROTO_ISO14443_B)
 
 /* NFC Secure Elements */
-#define NFC_SE_NONE     0x0
 #define NFC_SE_UICC     0x1
 #define NFC_SE_EMBEDDED 0x2
 
+#define NFC_SE_DISABLED 0x0
+#define NFC_SE_ENABLED  0x1
+
 struct sockaddr_nfc {
        sa_family_t sa_family;
        __u32 dev_idx;
@@ -233,7 +265,6 @@ struct sockaddr_nfc_llcp {
 #define NFC_LLCP_DIRECTION_TX          0x01
 
 /* socket option names */
-/* socket option names */
 #define NFC_LLCP_RW            0
 #define NFC_LLCP_MIUX          1
 #define NFC_LLCP_REMOTE_MIU    2