Each NFC adapter can have several links to different secure elements and that property needs to be exported by the drivers. A secure element link can be enabled and disabled, and card emulation will be handled by the currently active one. Otherwise card emulation will be host implemented.
Showing the changes to include/uapi/linux (1 of 11 files). Show all
Unified · Split
| @@ -67,6 +67,11 @@ · 66 unmodified lines | ||
| 67 | 67 | * subsequent CONNECT and CC messages. |
| 68 | 68 | * If one of the passed parameters is wrong none is set and -EINVAL is |
| 69 | 69 | * returned. |
| 70 | + * @NFC_CMD_ENABLE_SE: Enable the physical link to a specific secure element. | |
| 71 | + * Once enabled a secure element will handle card emulation mode, i.e. | |
| 72 | + * starting a poll from a device which has a secure element enabled means | |
| 73 | + * we want to do SE based card emulation. | |
| 74 | + * @NFC_CMD_DISABLE_SE: Disable the physical link to a specific secure element. | |
| 70 | 75 | */ |
| 71 | 76 | enum nfc_commands { |
| 72 | 77 | NFC_CMD_UNSPEC, |
| @@ -86,6 +91,8 @@ enum nfc_commands { · 13 unmodified lines | ||
| 86 | 91 | NFC_EVENT_TM_DEACTIVATED, |
| 87 | 92 | NFC_CMD_LLC_GET_PARAMS, |
| 88 | 93 | NFC_CMD_LLC_SET_PARAMS, |
| 94 | + NFC_CMD_ENABLE_SE, | |
| 95 | + NFC_CMD_DISABLE_SE, | |
| 89 | 96 | /* private: internal use only */ |
| 90 | 97 | __NFC_CMD_AFTER_LAST |
| 91 | 98 | }; |
| @@ -114,6 +121,7 @@ enum nfc_commands { · 22 unmodified lines | ||
| 114 | 121 | * @NFC_ATTR_LLC_PARAM_LTO: Link TimeOut parameter |
| 115 | 122 | * @NFC_ATTR_LLC_PARAM_RW: Receive Window size parameter |
| 116 | 123 | * @NFC_ATTR_LLC_PARAM_MIUX: MIU eXtension parameter |
| 124 | + * @NFC_ATTR_SE: Available Secure Elements | |
| 117 | 125 | */ |
| 118 | 126 | enum nfc_attrs { |
| 119 | 127 | NFC_ATTR_UNSPEC, |
| @@ -134,6 +142,7 @@ enum nfc_attrs { · 14 unmodified lines | ||
| 134 | 142 | NFC_ATTR_LLC_PARAM_LTO, |
| 135 | 143 | NFC_ATTR_LLC_PARAM_RW, |
| 136 | 144 | NFC_ATTR_LLC_PARAM_MIUX, |
| 145 | + NFC_ATTR_SE, | |
| 137 | 146 | /* private: internal use only */ |
| 138 | 147 | __NFC_ATTR_AFTER_LAST |
| 139 | 148 | }; |
| @@ -172,6 +181,11 @@ enum nfc_attrs { · 32 unmodified lines | ||
| 172 | 181 | #define NFC_PROTO_NFC_DEP_MASK (1 << NFC_PROTO_NFC_DEP) |
| 173 | 182 | #define NFC_PROTO_ISO14443_B_MASK (1 << NFC_PROTO_ISO14443_B) |
| 174 | 183 | |
| 184 | +/* NFC Secure Elements */ | |
| 185 | +#define NFC_SE_NONE 0x0 | |
| 186 | +#define NFC_SE_UICC 0x1 | |
| 187 | +#define NFC_SE_EMBEDDED 0x2 | |
| 188 | + | |
| 175 | 189 | struct sockaddr_nfc { |
| 176 | 190 | sa_family_t sa_family; |
| 177 | 191 | __u32 dev_idx; |