Some device may need to execute some proprietary commands
in order to "wake-up"; Before the nci state initialization.
Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
 };
 
 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);
 
 
        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);