NFC: Remove the static supported_se field
[cascardo/linux.git] / net / nfc / hci / core.c
index 91020b2..9c8a63d 100644 (file)
@@ -570,21 +570,21 @@ static int hci_dep_link_up(struct nfc_dev *nfc_dev, struct nfc_target *target,
 {
        struct nfc_hci_dev *hdev = nfc_get_drvdata(nfc_dev);
 
-       if (hdev->ops->dep_link_up)
-               return hdev->ops->dep_link_up(hdev, target, comm_mode,
-                                               gb, gb_len);
+       if (!hdev->ops->dep_link_up)
+               return 0;
 
-       return 0;
+       return hdev->ops->dep_link_up(hdev, target, comm_mode,
+                                     gb, gb_len);
 }
 
 static int hci_dep_link_down(struct nfc_dev *nfc_dev)
 {
        struct nfc_hci_dev *hdev = nfc_get_drvdata(nfc_dev);
 
-       if (hdev->ops->dep_link_down)
-               return hdev->ops->dep_link_down(hdev);
+       if (!hdev->ops->dep_link_down)
+               return 0;
 
-       return 0;
+       return hdev->ops->dep_link_down(hdev);
 }
 
 static int hci_activate_target(struct nfc_dev *nfc_dev,
@@ -673,12 +673,12 @@ static int hci_tm_send(struct nfc_dev *nfc_dev, struct sk_buff *skb)
 {
        struct nfc_hci_dev *hdev = nfc_get_drvdata(nfc_dev);
 
-       if (hdev->ops->tm_send)
-               return hdev->ops->tm_send(hdev, skb);
-
-       kfree_skb(skb);
+       if (!hdev->ops->tm_send) {
+               kfree_skb(skb);
+               return -ENOTSUPP;
+       }
 
-       return -ENOTSUPP;
+       return hdev->ops->tm_send(hdev, skb);
 }
 
 static int hci_check_presence(struct nfc_dev *nfc_dev,
@@ -686,10 +686,10 @@ static int hci_check_presence(struct nfc_dev *nfc_dev,
 {
        struct nfc_hci_dev *hdev = nfc_get_drvdata(nfc_dev);
 
-       if (hdev->ops->check_presence)
-               return hdev->ops->check_presence(hdev, target);
+       if (!hdev->ops->check_presence)
+               return 0;
 
-       return 0;
+       return hdev->ops->check_presence(hdev, target);
 }
 
 static void nfc_hci_failure(struct nfc_hci_dev *hdev, int err)
@@ -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 -ENOTSUPP;
+
+       return hdev->ops->fw_upload(hdev, firmware_name);
+}
+
 static struct nfc_ops hci_nfc_ops = {
        .dev_up = hci_dev_up,
        .dev_down = hci_dev_down,
@@ -791,13 +801,13 @@ 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,
                                            struct nfc_hci_init_data *init_data,
                                            unsigned long quirks,
                                            u32 protocols,
-                                           u32 supported_se,
                                            const char *llc_name,
                                            int tx_headroom,
                                            int tx_tailroom,
@@ -823,7 +833,7 @@ struct nfc_hci_dev *nfc_hci_allocate_device(struct nfc_hci_ops *ops,
                return NULL;
        }
 
-       hdev->ndev = nfc_allocate_device(&hci_nfc_ops, protocols, supported_se,
+       hdev->ndev = nfc_allocate_device(&hci_nfc_ops, protocols,
                                         tx_headroom + HCI_CMDS_HEADROOM,
                                         tx_tailroom);
        if (!hdev->ndev) {