qcacld-3.0: Add support for CNSS USB

Adds support in pld_usb.c for registering with CNSS driver.
pld_usb can now register directly with Linux USB stack or with
CNSS driver.
For QCN7605, registration is to be done with CNSS.

Change-Id: Ibf7e51679e1848bcd8e1acfa43c457f42ff40c0b
CRs-Fixed: 2269602
diff --git a/core/pld/src/pld_usb.c b/core/pld/src/pld_usb.c
index 9b56c64..770f4e7 100644
--- a/core/pld/src/pld_usb.c
+++ b/core/pld/src/pld_usb.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -25,6 +25,9 @@
 #include <linux/platform_device.h>
 #include <linux/err.h>
 #include <linux/list.h>
+#ifdef CONFIG_PLD_USB_CNSS
+#include <net/cnss2.h>
+#endif
 
 
 #define VENDOR_ATHR             0x0CF3
@@ -155,6 +158,42 @@
 	return pld_context->ops->reset_resume(&pdev->dev, PLD_BUS_TYPE_USB);
 }
 
+#ifdef CONFIG_PLD_USB_CNSS
+struct cnss_usb_wlan_driver pld_usb_ops = {
+	.name = "pld_usb_cnss",
+	.id_table = pld_usb_id_table,
+	.probe = pld_usb_probe,
+	.disconnect = pld_usb_remove,
+#ifdef CONFIG_PM
+	.suspend = pld_usb_suspend,
+	.resume = pld_usb_resume,
+	.reset_resume = pld_usb_reset_resume,
+#endif
+
+/**
+ * pld_usb_register_driver() - registration routine for wlan usb drive
+ *
+ * Return: int negative error code on failure and 0 on success
+ */
+int pld_usb_register_driver(void)
+{
+	pr_info("%s usb_register\n", __func__);
+	return cnss_wlan_register_driver(&pld_usb_ops);
+}
+
+/**
+ * pld_usb_unregister_driver() - de-registration routine for wlan usb driver
+ *
+ * Return: void
+ */
+void pld_usb_unregister_driver(void)
+{
+	cnss_wlan_register_driver(&pld_usb_ops);
+	pr_info("%s usb_deregister done!\n", __func__);
+}
+
+#else /* CONFIG_PLD_USB_CNSS */
+
 struct usb_driver pld_usb_ops = {
 	.name = "pld_usb",
 	.id_table = pld_usb_id_table,
@@ -209,3 +248,4 @@
 	usb_deregister(&pld_usb_ops);
 	pr_info("%s usb_deregister done!\n", __func__);
 }
+#endif /* CONFIG_PLD_USB_CNSS */