Browse Source

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
Mohammed Siddiq 5 years ago
parent
commit
2dcd202ecf
2 changed files with 24 additions and 2 deletions
  1. 2 0
      core/pld/inc/pld_common.h
  2. 22 2
      core/pld/src/pld_snoc.c

+ 2 - 0
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;
 	};
 };

+ 22 - 2
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;