Browse Source

qcacld-3.0: Enable SDIO based WLAN self-recovery

WLAN self-recovery based on SDIO bus is currently missing in
CLD3.x, resulting in crash injection to TF card taking no
effect during some special case.

Add the recovery feature back to CLD3.x based on the same
logics in CLD2.0

Change-Id: I719b77ac9679a0449863a94b47ad22233bc9b574
CRs-fixed: 2103969
wadesong 7 years ago
parent
commit
bf7087941f
2 changed files with 12 additions and 0 deletions
  1. 1 0
      core/pld/src/pld_common.c
  2. 11 0
      core/pld/src/pld_sdio.h

+ 1 - 0
core/pld/src/pld_common.c

@@ -669,6 +669,7 @@ void pld_device_self_recovery(struct device *dev,
 	case PLD_BUS_TYPE_SNOC:
 		break;
 	case PLD_BUS_TYPE_SDIO:
+		pld_sdio_device_self_recovery(dev);
 		break;
 	default:
 		pr_err("Invalid device type\n");

+ 11 - 0
core/pld/src/pld_sdio.h

@@ -19,6 +19,9 @@
 #ifndef __PLD_SDIO_H__
 #define __PLD_SDIO_H__
 
+#ifdef CONFIG_PLD_SDIO_CNSS
+#include <net/cnss.h>
+#endif
 #include "pld_common.h"
 
 #ifdef MULTI_IF_NAME
@@ -113,6 +116,11 @@ static inline bool pld_sdio_is_fw_dump_skipped(void)
 {
 	return cnss_get_restart_level() == CNSS_RESET_SUBSYS_COUPLED;
 }
+
+static inline void pld_sdio_device_self_recovery(struct device *dev)
+{
+	cnss_common_device_self_recovery(dev);
+}
 #else
 static inline void *pld_sdio_get_virt_ramdump_mem(struct device *dev,
 		unsigned long *size)
@@ -128,6 +136,9 @@ static inline bool pld_sdio_is_fw_dump_skipped(void)
 	return false;
 }
 
+static inline void pld_sdio_device_self_recovery(struct device *dev)
+{
+}
 #endif
 
 #ifdef CONFIG_PLD_SDIO_CNSS