NFC: HCI: Implement fw_upload ops
authorEric Lapuyade <eric.lapuyade@linux.intel.com>
Mon, 29 Apr 2013 15:47:42 +0000 (17:47 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 13 Jun 2013 22:26:09 +0000 (00:26 +0200)
This is a simple forward to the HCI driver. When driver is done with the
operation, it shall directly notify NFC Core by calling
nfc_fw_upload_done().

Signed-off-by: Eric Lapuyade <eric.lapuyade@intel.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
include/net/nfc/hci.h
net/nfc/hci/core.c

index b87a1692b0864f436a9185447cbfe74cce6ec7e1..14faf2dc7a4878d3c49e1cde13b902290b0a396e 100644 (file)
@@ -61,6 +61,7 @@ struct nfc_hci_ops {
                              struct sk_buff *skb);
        int (*enable_se)(struct nfc_dev *dev, u32 secure_element);
        int (*disable_se)(struct nfc_dev *dev, u32 secure_element);
+       int (*fw_upload)(struct nfc_hci_dev *hdev, const char *firmware_name);
 };
 
 /* Pipes */
index 91020b210d8774416467bf009130cad9db5870a1..b7e4dac5654ec5f05b2e78223c550385dc16cdeb 100644 (file)
@@ -779,6 +779,16 @@ static void nfc_hci_recv_from_llc(struct nfc_hci_dev *hdev, struct sk_buff *skb)
        }
 }
 
+static int hci_fw_upload(struct nfc_dev *nfc_dev, const char *firmware_name)
+{
+       struct nfc_hci_dev *hdev = nfc_get_drvdata(nfc_dev);
+
+       if (hdev->ops->fw_upload)
+               return hdev->ops->fw_upload(hdev, firmware_name);
+
+       return -ENOTSUPP;
+}
+
 static struct nfc_ops hci_nfc_ops = {
        .dev_up = hci_dev_up,
        .dev_down = hci_dev_down,
@@ -791,6 +801,7 @@ static struct nfc_ops hci_nfc_ops = {
        .im_transceive = hci_transceive,
        .tm_send = hci_tm_send,
        .check_presence = hci_check_presence,
+       .fw_upload = hci_fw_upload,
 };
 
 struct nfc_hci_dev *nfc_hci_allocate_device(struct nfc_hci_ops *ops,