From 2dcd202ecfbcac6a49363629b3ae2d427f6a0c66 Mon Sep 17 00:00:00 2001 From: Mohammed Siddiq Date: Thu, 12 Mar 2020 19:11:59 +0530 Subject: [PATCH] qcacld-3.0: Add pld code to handle hang event data info Add code to handle hang event data and length received from platform driver through uevent. Change-Id: Ie4acf55cd7d2e602ad10eedbdeed045acfd85f56 CRs-fixed: 2650831 --- core/pld/inc/pld_common.h | 2 ++ core/pld/src/pld_snoc.c | 24 ++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/core/pld/inc/pld_common.h b/core/pld/inc/pld_common.h index 49e2db6f98b9..4bd77e8eff1b 100644 --- a/core/pld/inc/pld_common.h +++ b/core/pld/inc/pld_common.h @@ -156,6 +156,8 @@ struct pld_uevent_data { union { struct { bool crashed; + void *hang_event_data; + u16 hang_event_data_len; } fw_down; }; }; diff --git a/core/pld/src/pld_snoc.c b/core/pld/src/pld_snoc.c index df9b160eee19..2e7998db1f05 100644 --- a/core/pld/src/pld_snoc.c +++ b/core/pld/src/pld_snoc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2020 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 @@ -240,12 +240,31 @@ static int pld_snoc_resume_noirq(struct device *dev) return 0; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)) +static int pld_update_hang_evt_data(struct icnss_uevent_fw_down_data *evt_data, + struct pld_uevent_data *data) +{ + if (!evt_data || !data) + return -EINVAL; + + data->fw_down.hang_event_data = evt_data->hang_event_data; + data->fw_down.hang_event_data_len = evt_data->hang_event_data_len; + return 0; +} +#else +static int pld_update_hang_evt_data(struct icnss_uevent_fw_down_data *evt_data, + struct pld_uevent_data *data) +{ + return 0; +} +#endif + static int pld_snoc_uevent(struct device *dev, struct icnss_uevent_data *uevent) { struct pld_context *pld_context; struct icnss_uevent_fw_down_data *uevent_data = NULL; - struct pld_uevent_data data; + struct pld_uevent_data data = {0}; pld_context = pld_get_global_context(); if (!pld_context) @@ -267,6 +286,7 @@ static int pld_snoc_uevent(struct device *dev, uevent_data = (struct icnss_uevent_fw_down_data *)uevent->data; data.uevent = PLD_FW_DOWN; data.fw_down.crashed = uevent_data->crashed; + pld_update_hang_evt_data(uevent_data, &data); break; default: goto out;