Some device may need to execute some proprietary commands in order to
"wake-up"; Before the nci state initialization.

Signed-off-by: Christophe Ricard <[email protected]>
---
 include/net/nfc/nci_core.h |  1 +
 net/nfc/nci/core.c         | 10 ++++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/include/net/nfc/nci_core.h b/include/net/nfc/nci_core.h
index c49688c..886854a 100644
--- a/include/net/nfc/nci_core.h
+++ b/include/net/nfc/nci_core.h
@@ -73,6 +73,7 @@ struct nci_prop_ops {
 };
 
 struct nci_ops {
+       int   (*init)(struct nci_dev *ndev);
        int   (*open)(struct nci_dev *ndev);
        int   (*close)(struct nci_dev *ndev);
        int   (*send)(struct nci_dev *ndev, struct sk_buff *skb);
diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c
index b900e6a..12213c8 100644
--- a/net/nfc/nci/core.c
+++ b/net/nfc/nci/core.c
@@ -344,8 +344,14 @@ static int nci_open_device(struct nci_dev *ndev)
 
        set_bit(NCI_INIT, &ndev->flags);
 
-       rc = __nci_request(ndev, nci_reset_req, 0,
-                          msecs_to_jiffies(NCI_RESET_TIMEOUT));
+       if (ndev->ops->init) {
+               rc = ndev->ops->init(ndev);
+       }
+
+       if (!rc) {
+               rc = __nci_request(ndev, nci_reset_req, 0,
+                                  msecs_to_jiffies(NCI_RESET_TIMEOUT));
+       }
 
        if (!rc && ndev->ops->setup) {
                rc = ndev->ops->setup(ndev);
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to