From 8cf6754ecaad56448d022ad48efefc39f8fb3c8e Mon Sep 17 00:00:00 2001 From: Ajit Pal Singh Date: Fri, 5 Apr 2019 16:04:36 +0530 Subject: [PATCH] qcacld-3.0: usb: Add CNSS update_status callback Add update_status callback to pld usb which will be called by CNSS to update WLAN FW status(FW-DOWN, RECOVERY) Change-Id: I159e09eac8bdb75525c64e7b42c3315141ec1f8d CRs-Fixed: 2430265 --- core/pld/src/pld_usb.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/core/pld/src/pld_usb.c b/core/pld/src/pld_usb.c index 24ed0a2bf8cc..fbb870fe0dcc 100644 --- a/core/pld/src/pld_usb.c +++ b/core/pld/src/pld_usb.c @@ -197,6 +197,43 @@ static void pld_usb_shutdown(struct usb_interface *interface) pld_context->ops->shutdown(&pdev->dev, PLD_BUS_TYPE_USB); } +/** + * pld_usb_uevent() - update wlan driver status callback function + * @interface: USB interface + * @status driver uevent status + * + * This function will be called when platform driver wants to update wlan + * driver's status. + * + * Return: void + */ +static void pld_usb_uevent(struct usb_interface *interface, uint32_t status) +{ + struct pld_context *pld_context; + struct pld_uevent_data data; + struct usb_device *pdev = interface_to_usbdev(interface); + + pld_context = pld_get_global_context(); + if (!pld_context) + return; + + switch (status) { + case CNSS_RECOVERY: + data.uevent = PLD_FW_RECOVERY_START; + break; + case CNSS_FW_DOWN: + data.uevent = PLD_FW_DOWN; + break; + default: + goto out; + } + + if (pld_context->ops->uevent) + pld_context->ops->uevent(&pdev->dev, &data); + +out: + return; +} struct cnss_usb_wlan_driver pld_usb_ops = { .name = "pld_usb_cnss", .id_table = pld_usb_id_table, @@ -204,6 +241,7 @@ struct cnss_usb_wlan_driver pld_usb_ops = { .remove = pld_usb_remove, .shutdown = pld_usb_shutdown, .reinit = pld_usb_reinit, + .update_status = pld_usb_uevent, #ifdef CONFIG_PM .suspend = pld_usb_suspend, .resume = pld_usb_resume,