|
@@ -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,
|