Merge tag 'master-2014-07-31' of git://git.kernel.org/pub/scm/linux/kernel/git/linvil...
[cascardo/linux.git] / include / net / nfc / digital.h
index bdf55c3..d9a5cf7 100644 (file)
@@ -49,6 +49,7 @@ enum {
        NFC_DIGITAL_FRAMING_NFCA_SHORT = 0,
        NFC_DIGITAL_FRAMING_NFCA_STANDARD,
        NFC_DIGITAL_FRAMING_NFCA_STANDARD_WITH_CRC_A,
+       NFC_DIGITAL_FRAMING_NFCA_ANTICOL_COMPLETE,
 
        NFC_DIGITAL_FRAMING_NFCA_T1T,
        NFC_DIGITAL_FRAMING_NFCA_T2T,
@@ -126,6 +127,15 @@ typedef void (*nfc_digital_cmd_complete_t)(struct nfc_digital_dev *ddev,
  *     the NFC-DEP ATR_REQ command through cb. The digital stack deducts the RF
  *     tech by analyzing the SoD of the frame containing the ATR_REQ command.
  *     This is an asynchronous function.
+ * @tg_listen_md: If supported, put the device in automatic listen mode with
+ *     mode detection but without automatic anti-collision. In this mode, the
+ *     device automatically detects the RF technology.  What the actual
+ *     RF technology is can be retrieved by calling @tg_get_rf_tech.
+ *     The digital stack will then perform the appropriate anti-collision
+ *     sequence.  This is an asynchronous function.
+ * @tg_get_rf_tech: Required when @tg_listen_md is supported, unused otherwise.
+ *     Return the RF Technology that was detected by the @tg_listen_md call.
+ *     This is a synchronous function.
  *
  * @switch_rf: Turns device radio on or off. The stack does not call explicitly
  *     switch_rf to turn the radio on. A call to in|tg_configure_hw must turn
@@ -160,6 +170,9 @@ struct nfc_digital_ops {
                              struct digital_tg_mdaa_params *mdaa_params,
                              u16 timeout, nfc_digital_cmd_complete_t cb,
                              void *arg);
+       int (*tg_listen_md)(struct nfc_digital_dev *ddev, u16 timeout,
+                           nfc_digital_cmd_complete_t cb, void *arg);
+       int (*tg_get_rf_tech)(struct nfc_digital_dev *ddev, u8 *rf_tech);
 
        int (*switch_rf)(struct nfc_digital_dev *ddev, bool on);
        void (*abort_cmd)(struct nfc_digital_dev *ddev);