diff options
author | Christophe Ricard <christophe.ricard@gmail.com> | 2014-11-13 00:30:38 +0100 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2014-12-02 02:01:21 +0100 |
commit | a688bf55c5908d2206307a9f76d31172ee2b2d92 (patch) | |
tree | 10383ae4956bbcea0affd6893a9d224aca954c88 | |
parent | e9ef9431a347185a8a6a88b072506047d329e480 (diff) | |
download | op-kernel-dev-a688bf55c5908d2206307a9f76d31172ee2b2d92.zip op-kernel-dev-a688bf55c5908d2206307a9f76d31172ee2b2d92.tar.gz |
NFC: nci: Add se_io NCI operand
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>
-rw-r--r-- | include/net/nfc/nci_core.h | 3 | ||||
-rw-r--r-- | net/nfc/nci/core.c | 14 |
2 files changed, 17 insertions, 0 deletions
diff --git a/include/net/nfc/nci_core.h b/include/net/nfc/nci_core.h index dd97dd7..9e51bb4 100644 --- a/include/net/nfc/nci_core.h +++ b/include/net/nfc/nci_core.h @@ -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 diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c index bcb70a6..552b13b 100644 --- a/net/nfc/nci/core.c +++ b/net/nfc/nci/core.c @@ -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 ---- */ |