summaryrefslogtreecommitdiff
path: root/net/nfc
diff options
context:
space:
mode:
authorChristophe Ricard <christophe.ricard@gmail.com>2014-11-13 00:30:34 +0100
committerSamuel Ortiz <sameo@linux.intel.com>2014-12-02 01:49:58 +0100
commit9b8d32b7acdcd237d3e58154d59551c71556fec1 (patch)
treef7e2377ecb268b5913e4e7eb25017fadc7bffe99 /net/nfc
parenta80d0cb6f6addc5a1f3852466fe8d37ca4fe1350 (diff)
downloadlinux-exynos-9b8d32b7acdcd237d3e58154d59551c71556fec1.tar.gz
linux-exynos-9b8d32b7acdcd237d3e58154d59551c71556fec1.tar.bz2
linux-exynos-9b8d32b7acdcd237d3e58154d59551c71556fec1.zip
NFC: hci: Add se_io HCI 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>
Diffstat (limited to 'net/nfc')
-rw-r--r--net/nfc/hci/core.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/net/nfc/hci/core.c b/net/nfc/hci/core.c
index 117708263ced..58b1610ca545 100644
--- a/net/nfc/hci/core.c
+++ b/net/nfc/hci/core.c
@@ -717,6 +717,19 @@ static int hci_disable_se(struct nfc_dev *nfc_dev, u32 se_idx)
return 0;
}
+static int hci_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 nfc_hci_dev *hdev = nfc_get_drvdata(nfc_dev);
+
+ if (hdev->ops->se_io)
+ return hdev->ops->se_io(hdev, se_idx, apdu,
+ apdu_length, cb, cb_context);
+
+ return 0;
+}
+
static void nfc_hci_failure(struct nfc_hci_dev *hdev, int err)
{
mutex_lock(&hdev->msg_tx_mutex);
@@ -830,6 +843,7 @@ static struct nfc_ops hci_nfc_ops = {
.discover_se = hci_discover_se,
.enable_se = hci_enable_se,
.disable_se = hci_disable_se,
+ .se_io = hci_se_io,
};
struct nfc_hci_dev *nfc_hci_allocate_device(struct nfc_hci_ops *ops,