OSDN Git Service

NFC: nci: Add se_io NCI operand
authorChristophe Ricard <christophe.ricard@gmail.com>
Wed, 12 Nov 2014 23:30:38 +0000 (00:30 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Tue, 2 Dec 2014 01:01:21 +0000 (02:01 +0100)
se_io allows to send apdu over the CLF to the embedded Secure Element.

Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
include/net/nfc/nci_core.h
net/nfc/nci/core.c

index dd97dd7..9e51bb4 100644 (file)
@@ -75,6 +75,9 @@ struct nci_ops {
        int   (*discover_se)(struct nci_dev *ndev);
        int   (*disable_se)(struct nci_dev *ndev, u32 se_idx);
        int   (*enable_se)(struct nci_dev *ndev, u32 se_idx);
+       int   (*se_io)(struct nci_dev *ndev, u32 se_idx,
+                               u8 *apdu, size_t apdu_length,
+                               se_io_cb_t cb, void *cb_context);
 };
 
 #define NCI_MAX_SUPPORTED_RF_INTERFACES                4
index bcb70a6..552b13b 100644 (file)
@@ -774,6 +774,19 @@ static int nci_discover_se(struct nfc_dev *nfc_dev)
        return 0;
 }
 
+static int nci_se_io(struct nfc_dev *nfc_dev, u32 se_idx,
+                    u8 *apdu, size_t apdu_length,
+                    se_io_cb_t cb, void *cb_context)
+{
+       struct nci_dev *ndev = nfc_get_drvdata(nfc_dev);
+
+       if (ndev->ops->se_io)
+               return ndev->ops->se_io(ndev, se_idx, apdu,
+                               apdu_length, cb, cb_context);
+
+       return 0;
+}
+
 static struct nfc_ops nci_nfc_ops = {
        .dev_up = nci_dev_up,
        .dev_down = nci_dev_down,
@@ -788,6 +801,7 @@ static struct nfc_ops nci_nfc_ops = {
        .enable_se = nci_enable_se,
        .disable_se = nci_disable_se,
        .discover_se = nci_discover_se,
+       .se_io = nci_se_io,
 };
 
 /* ---- Interface to NCI drivers ---- */