Selaa lähdekoodia

qcacld-3.0: Add shutdown/reinit support for PLD_CNSS_USB

Populate shutdown/reinit callback functions for PLD_CNSS_USB

Change-Id: If0ad6ca69a85778574d874d9a9b9f0df6146e89b
CRs-Fixed: 2279206
Ajit Pal Singh 6 vuotta sitten
vanhempi
sitoutus
594d400d3d
1 muutettua tiedostoa jossa 43 lisäystä ja 3 poistoa
  1. 43 3
      core/pld/src/pld_usb.c

+ 43 - 3
core/pld/src/pld_usb.c

@@ -159,16 +159,56 @@ static int pld_usb_reset_resume(struct usb_interface *interface)
 }
 
 #ifdef CONFIG_PLD_USB_CNSS
+/**
+ * pld_usb_reinit() - SSR re-initialize function for USB device
+ * @interface: Pointer to struct usb_interface
+ * @id: Pointer to USB device ID
+ *
+ * Return: int
+ */
+static int pld_usb_reinit(struct usb_interface *interface,
+			  const struct usb_device_id *id)
+{
+	struct pld_context *pld_context;
+	struct usb_device *pdev = interface_to_usbdev(interface);
+
+	pld_context = pld_get_global_context();
+	if (pld_context->ops->reinit)
+		return pld_context->ops->reinit(&pdev->dev, PLD_BUS_TYPE_USB,
+						interface, (void *)id);
+
+	return -ENODEV;
+}
+
+/**
+ * pld_usb_shutdown() - SSR shutdown function for USB device
+ * @interface: Pointer to struct usb_interface
+ *
+ * Return: void
+ */
+static void pld_usb_shutdown(struct usb_interface *interface)
+{
+	struct pld_context *pld_context;
+	struct usb_device *pdev = interface_to_usbdev(interface);
+
+	pld_context = pld_get_global_context();
+	if (pld_context->ops->shutdown)
+		pld_context->ops->shutdown(&pdev->dev, PLD_BUS_TYPE_USB);
+}
+
 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,
+	.remove = pld_usb_remove,
+	.shutdown = pld_usb_shutdown,
+	.reinit = pld_usb_reinit,
 #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
@@ -178,7 +218,7 @@ struct cnss_usb_wlan_driver pld_usb_ops = {
 int pld_usb_register_driver(void)
 {
 	pr_info("%s usb_register\n", __func__);
-	return cnss_wlan_register_driver(&pld_usb_ops);
+	return cnss_usb_wlan_register_driver(&pld_usb_ops);
 }
 
 /**
@@ -188,7 +228,7 @@ int pld_usb_register_driver(void)
  */
 void pld_usb_unregister_driver(void)
 {
-	cnss_wlan_register_driver(&pld_usb_ops);
+	cnss_usb_wlan_unregister_driver(&pld_usb_ops);
 	pr_info("%s usb_deregister done!\n", __func__);
 }