OSDN Git Service

NFC: nci: Move NFCEE discovery logic
authorChristophe Ricard <christophe.ricard@gmail.com>
Tue, 3 Feb 2015 18:48:08 +0000 (19:48 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 4 Feb 2015 08:15:18 +0000 (09:15 +0100)
NFCEE_DISCOVER_CMD is a specified NCI command used to discover
NFCEE IDs.
Move nci_nfcee_discover() call to nci_discover_se() in order to
guarantee:
- NFCEE_DISCOVER_CMD run when the NCI state machine is initialized
- NFCEE_DISCOVER_CMD is not run in case there is not discover_se
  hook defined by a NFC device driver.

Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/nfc/st21nfcb/st21nfcb_se.c
net/nfc/nci/core.c

index d23e8f2..7c82e9d 100644 (file)
@@ -499,10 +499,6 @@ static int st21nfcb_hci_network_init(struct nci_dev *ndev)
        struct nci_conn_info    *conn_info;
        int r, dev_num;
 
-       r = nci_nfcee_discover(ndev, NCI_NFCEE_DISCOVERY_ACTION_ENABLE);
-       if (r != NCI_STATUS_OK)
-               goto exit;
-
        dest_params =
                kzalloc(sizeof(struct core_conn_create_dest_spec_params) +
                        sizeof(struct dest_spec_params), GFP_KERNEL);
index ddfe91e..9575a18 100644 (file)
@@ -880,10 +880,16 @@ static int nci_disable_se(struct nfc_dev *nfc_dev, u32 se_idx)
 
 static int nci_discover_se(struct nfc_dev *nfc_dev)
 {
+       int r;
        struct nci_dev *ndev = nfc_get_drvdata(nfc_dev);
 
-       if (ndev->ops->discover_se)
+       if (ndev->ops->discover_se) {
+               r = nci_nfcee_discover(ndev, NCI_NFCEE_DISCOVERY_ACTION_ENABLE);
+               if (r != NCI_STATUS_OK)
+                       return -EPROTO;
+
                return ndev->ops->discover_se(ndev);
+       }
 
        return 0;
 }