From b59cdd31cdf3088aefbe3e394bf72eb1fe5dc7be Mon Sep 17 00:00:00 2001 From: Mohammed Siddiq Date: Mon, 20 Apr 2020 20:04:10 +0530 Subject: [PATCH] qcacld-3.0: Add pld pcie code to handle hang event data info Add code in pld pcie to handle hang event data and length received from platform driver. Change-Id: Ibc1b667b6127e2ce6b666e9007bf725ea7e07760 --- core/pld/src/pld_pcie.c | 48 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/core/pld/src/pld_pcie.c b/core/pld/src/pld_pcie.c index dd3efef6ac15..d3a17dff765b 100644 --- a/core/pld/src/pld_pcie.c +++ b/core/pld/src/pld_pcie.c @@ -266,6 +266,51 @@ out: return; } +/** + * pld_pcie_update_event() - update wlan driver status callback function + * @pdev: PCIE device + * @cnss_uevent_data: driver uevent data + * + * This function will be called when platform driver wants to update wlan + * driver's status. + * + * Return: void + */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)) +static int pld_pcie_update_event(struct pci_dev *pdev, + struct cnss_uevent_data *uevent_data) +{ + struct pld_context *pld_context; + struct pld_uevent_data data = {0}; + struct cnss_hang_event *hang_event; + + pld_context = pld_get_global_context(); + + if (!pld_context || !uevent_data) + return -EINVAL; + + switch (uevent_data->status) { + case CNSS_HANG_EVENT: + if (!uevent_data->data) + return -EINVAL; + hang_event = (struct cnss_hang_event *)uevent_data->data; + data.uevent = PLD_FW_HANG_EVENT; + data.hang_data.hang_event_data = hang_event->hang_event_data; + data.hang_data.hang_event_data_len = + hang_event->hang_event_data_len; + break; + default: + goto out; + } + + if (pld_context->ops->uevent) + pld_context->ops->uevent(&pdev->dev, &data); + +out: + return 0; +} +#endif + #ifdef FEATURE_RUNTIME_PM /** * pld_pcie_runtime_suspend() - PM runtime suspend @@ -536,6 +581,9 @@ struct cnss_wlan_driver pld_pcie_ops = { .crash_shutdown = pld_pcie_crash_shutdown, .modem_status = pld_pcie_notify_handler, .update_status = pld_pcie_uevent, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)) + .update_event = pld_pcie_update_event, +#endif #ifdef CONFIG_PM .suspend = pld_pcie_suspend, .resume = pld_pcie_resume,