• Christophe Ricard's avatar
    NFC: st21nfcb: Add support for secure element · 8ae01f79
    Christophe Ricard authored
    The st21nfcb chipset has 3 SWP (Single Wire Protocol) lines and
    supports up to 3 secure elements (UICC/eSE and µSD in the future).
    
    Some st21nfcb firmware does not support the nci command
    nci_nfcee_mode_set(NCI_NFCEE_DISABLE). For this reason, we assume
    2 secures elements are always present (UICC and eSE).
    They will be added to the SE list once successfully activated and
    they will be available only after running through enable_se
    handler or when the poll in listen mode is started.
    
    During initialization, the white_list will be always set assuming
    both UICC & eSE are present.
    
    On eSE activation, the ATR bytes are fetched to build the command
    exchange timeout.
    
    The se_io hook will allow to transfer data over SWP. 2 kind of
    events may appear data is sent over:
    - ST21NFCB_EVT_TRANSMIT_DATA when receiving an apdu answer
    - ST21NFCB_EVT_WTX_REQUEST when the secure element needs more time
      than expected to process a command. If this timeout expires, we
      send a software reset, and then a hardware one if it still fails.
    Signed-off-by: default avatarChristophe Ricard <christophe-h.ricard@st.com>
    Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
    8ae01f79
st21nfcb_se.c 18.3 KB