From 9c8b92051d95d62ce77f00e5a1d42d51befb4bbb Mon Sep 17 00:00:00 2001 From: Yue Ma Date: Fri, 4 Dec 2020 11:55:24 -0800 Subject: [PATCH] cnss2: Use proper flags to protect MSM memory dump APIs This makes sure CNSS2 driver is able to work in non-MSM platforms which do not have memory dump and mini dump features. Change-Id: I5193deed941ff8e2e2ca2693150396a53eb3db7d Signed-off-by: Yue Ma --- drivers/net/wireless/cnss2/main.c | 38 ++++++++++++++++++++++++------- drivers/net/wireless/cnss2/main.h | 6 ++++- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/drivers/net/wireless/cnss2/main.c b/drivers/net/wireless/cnss2/main.c index bc5ccf465308..2a6ae6d2c65d 100644 --- a/drivers/net/wireless/cnss2/main.c +++ b/drivers/net/wireless/cnss2/main.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -/* Copyright (c) 2016-2020, The Linux Foundation. All rights reserved. */ +/* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved. */ #include #include @@ -11,7 +11,9 @@ #include #include #include +#if IS_ENABLED(CONFIG_QCOM_MINIDUMP) #include +#endif #include "main.h" #include "bus.h" @@ -1980,6 +1982,7 @@ void cnss_unregister_subsys(struct cnss_plat_data *plat_priv) cnss_pr_err("Failed to unregister panic handler\n"); } +#if IS_ENABLED(CONFIG_QCOM_MEMORY_DUMP_V2) static void *cnss_create_ramdump_device(struct cnss_plat_data *plat_priv) { return &plat_priv->plat_dev->dev; @@ -1989,6 +1992,7 @@ static void cnss_destroy_ramdump_device(struct cnss_plat_data *plat_priv, void *ramdump_dev) { } +#endif #if IS_ENABLED(CONFIG_SUBSYSTEM_RAMDUMP) int cnss_do_ramdump(struct cnss_plat_data *plat_priv) @@ -2071,6 +2075,7 @@ int cnss_do_elf_ramdump(struct cnss_plat_data *plat_priv) #endif /* CONFIG_SUBSYSTEM_RAMDUMP */ #endif /* CONFIG_MSM_SUBSYSTEM_RESTART */ +#if IS_ENABLED(CONFIG_QCOM_MEMORY_DUMP_V2) static int cnss_init_dump_entry(struct cnss_plat_data *plat_priv) { struct cnss_ramdump_info *ramdump_info; @@ -2167,17 +2172,10 @@ static void cnss_unregister_ramdump_v1(struct cnss_plat_data *plat_priv) * * Return: Same given error code if mem dump feature enabled, 0 otherwise */ -#ifdef CONFIG_QCOM_MEMORY_DUMP_V2 static int cnss_ignore_dump_data_reg_fail(int ret) { return ret; } -#else -static int cnss_ignore_dump_data_reg_fail(int ret) -{ - return 0; -} -#endif static int cnss_register_ramdump_v2(struct cnss_plat_data *plat_priv) { @@ -2287,7 +2285,16 @@ void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) break; } } +#else +int cnss_register_ramdump(struct cnss_plat_data *plat_priv) +{ + return 0; +} +void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) {} +#endif /* CONFIG_QCOM_MEMORY_DUMP_V2 */ + +#if IS_ENABLED(CONFIG_QCOM_MINIDUMP) int cnss_minidump_add_region(struct cnss_plat_data *plat_priv, enum cnss_fw_dump_type type, int seg_no, void *va, phys_addr_t pa, size_t size) @@ -2368,6 +2375,21 @@ int cnss_minidump_remove_region(struct cnss_plat_data *plat_priv, return ret; } +#else +int cnss_minidump_add_region(struct cnss_plat_data *plat_priv, + enum cnss_fw_dump_type type, int seg_no, + void *va, phys_addr_t pa, size_t size) +{ + return 0; +} + +int cnss_minidump_remove_region(struct cnss_plat_data *plat_priv, + enum cnss_fw_dump_type type, int seg_no, + void *va, phys_addr_t pa, size_t size) +{ + return 0; +} +#endif /* CONFIG_QCOM_MINIDUMP */ /** * cnss_register_bus_scale() - Setup interconnect voting data diff --git a/drivers/net/wireless/cnss2/main.h b/drivers/net/wireless/cnss2/main.h index dc6e86147772..4fa184dc886d 100644 --- a/drivers/net/wireless/cnss2/main.h +++ b/drivers/net/wireless/cnss2/main.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -/* Copyright (c) 2016-2020, The Linux Foundation. All rights reserved. */ +/* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved. */ #ifndef _CNSS_MAIN_H #define _CNSS_MAIN_H @@ -13,7 +13,9 @@ #include #include #include +#if IS_ENABLED(CONFIG_QCOM_MEMORY_DUMP_V2) #include +#endif #if IS_ENABLED(CONFIG_MSM_SUBSYSTEM_RESTART) || \ IS_ENABLED(CONFIG_SUBSYSTEM_RAMDUMP) #include @@ -106,7 +108,9 @@ struct cnss_ramdump_info { unsigned long ramdump_size; void *ramdump_va; phys_addr_t ramdump_pa; +#if IS_ENABLED(CONFIG_QCOM_MEMORY_DUMP_V2) struct msm_dump_data dump_data; +#endif }; struct cnss_dump_seg {