From e67e76d6d1c865b87d6534517db172551d85e882 Mon Sep 17 00:00:00 2001 From: Will Huang Date: Fri, 14 May 2021 17:32:47 +0800 Subject: [PATCH] cnss: Add cnss_get_restart_level() support WLAN host driver requires this API to get SSR state, avoid doing ramdump when SSR happen and quick restart WLAN subsys. Add back subsys_get_restart_level() support and fix return -EIVAL in cnss_put_hw_resources(). Change-Id: I902d81b5693ab76028ed7e97183e07ea970930c1 CRs-Fixed: 2945893 Signed-off-by: Will Huang --- drivers/net/wireless/cnss/cnss_sdio.c | 6 +++--- drivers/soc/qcom/msm_subsystem_restart.c | 6 ++++++ include/soc/qcom/subsystem_restart.h | 8 +++++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/cnss/cnss_sdio.c b/drivers/net/wireless/cnss/cnss_sdio.c index 8b6179b6abab..9f74892e1add 100644 --- a/drivers/net/wireless/cnss/cnss_sdio.c +++ b/drivers/net/wireless/cnss/cnss_sdio.c @@ -274,7 +274,7 @@ static int cnss_put_hw_resources(struct device *dev) info->cnss_hw_state = false; - return ret; + return 0; } static int cnss_get_hw_resources(struct device *dev) @@ -678,9 +678,9 @@ int cnss_get_restart_level(void) ssr_info = &cnss_pdata->ssr_info; if (!ssr_info->subsys) return CNSS_RESET_SOC; -#ifdef CNSS_COMPLIE_ISSUE_FIX_LATER_IFNEEDED + level = subsys_get_restart_level(ssr_info->subsys); -#endif + switch (level) { case RESET_SOC: return CNSS_RESET_SOC; diff --git a/drivers/soc/qcom/msm_subsystem_restart.c b/drivers/soc/qcom/msm_subsystem_restart.c index 4fd4e09a4aa1..922f0e3c74fc 100644 --- a/drivers/soc/qcom/msm_subsystem_restart.c +++ b/drivers/soc/qcom/msm_subsystem_restart.c @@ -328,6 +328,12 @@ static ssize_t system_debug_store(struct device *dev, } static DEVICE_ATTR_RW(system_debug); +int subsys_get_restart_level(struct subsys_device *dev) +{ + return dev->restart_level; +} +EXPORT_SYMBOL(subsys_get_restart_level); + static void subsys_set_state(struct subsys_device *subsys, enum subsys_state state) { diff --git a/include/soc/qcom/subsystem_restart.h b/include/soc/qcom/subsystem_restart.h index 5612d886ca6e..23858eac74bb 100644 --- a/include/soc/qcom/subsystem_restart.h +++ b/include/soc/qcom/subsystem_restart.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* - * Copyright (c) 2014-2019, The Linux Foundation. All rights reserved. + * Copyright (c) 2014-2019 2021, The Linux Foundation. All rights reserved. */ #ifndef __SUBSYS_RESTART_H @@ -132,6 +132,7 @@ struct notif_data { #if IS_ENABLED(CONFIG_MSM_SUBSYSTEM_RESTART) +extern int subsys_get_restart_level(struct subsys_device *dev); extern int subsystem_restart_dev(struct subsys_device *dev); extern int subsystem_restart(const char *name); extern int subsystem_crashed(const char *name); @@ -157,6 +158,11 @@ static inline void complete_shutdown_ack(struct subsys_desc *desc) struct subsys_device *find_subsys_device(const char *str); #else +static inline int subsys_get_restart_level(struct subsys_device *dev) +{ + return 0; +} + static inline int subsystem_restart_dev(struct subsys_device *dev) { return 0;