Skip to content
  • Thierry Escande's avatar
    NFC Digital: Add initiator NFC-DEP support · 7d0911c0
    Thierry Escande authored
    
    
    This adds support for NFC-DEP protocol in initiator mode for NFC-A and
    NFC-F technologies.
    
    When a target is detected, the process flow is as follow:
    
    For NFC-A technology:
    1 - The digital stack receives a SEL_RES as the reply of the SEL_REQ
        command.
    2   - If b7 of SEL_RES is set, the peer device is configure for NFC-DEP
          protocol. NFC core is notified through nfc_targets_found().
          Execution continues at step 4.
    3   - Otherwise, it's a tag and the NFC core is notified. Detection
          ends.
    4 - The digital stacks sends an ATR_REQ command containing a randomly
        generated NFCID3 and the general bytes obtained from the LLCP layer
        of NFC core.
    
    For NFC-F technology:
    1 - The digital stack receives a SENSF_RES as the reply of the
        SENSF_REQ command.
    2   - If B1 and B2 of NFCID2 are 0x01 and 0xFE respectively, the peer
          device is configured for NFC-DEP protocol. NFC core is notified
          through nfc_targets_found(). Execution continues at step 4.
    3   - Otherwise it's a type 3 tag. NFC core is notified. Detection
          ends.
    4 - The digital stacks sends an ATR_REQ command containing the NFC-F
        NFCID2 as NFCID3 and the general bytes obtained from the LLCP layer
        of NFC core.
    
    For both technologies:
    5 - The digital stacks receives the ATR_RES response containing the
        NFCID3 and the general bytes of the peer device.
    6 - The digital stack notifies NFC core that the DEP link is up through
        nfc_dep_link_up().
    7 - The NFC core performs data exchange through tm_transceive().
    8 - The digital stack sends a DEP_REQ command containing an I PDU with
        the data from NFC core.
    9 - The digital stack receives a DEP_RES command
    10  - If the DEP_RES response contains a supervisor PDU with timeout
          extension request (RTOX) the digital stack sends a DEP_REQ
          command containing a supervisor PDU acknowledging the RTOX
          request. The execution continues at step 9.
    11  - If the DEP_RES response contains an I PDU, the response data is
          passed back to NFC core through the response callback. The
          execution continues at step 8.
    
    Signed-off-by: default avatarThierry Escande <thierry.escande@linux.intel.com>
    Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
    7d0911c0