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 <yuem@codeaurora.org>
This commit is contained in:
Yue Ma 2020-12-04 11:55:24 -08:00
commit 9c8b92051d
2 changed files with 35 additions and 9 deletions

View file

@ -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 <linux/delay.h>
#include <linux/jiffies.h>
@ -11,7 +11,9 @@
#include <linux/rwsem.h>
#include <linux/suspend.h>
#include <linux/timer.h>
#if IS_ENABLED(CONFIG_QCOM_MINIDUMP)
#include <soc/qcom/minidump.h>
#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

View file

@ -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 <linux/pm_qos.h>
#include <linux/platform_device.h>
#include <net/cnss2.h>
#if IS_ENABLED(CONFIG_QCOM_MEMORY_DUMP_V2)
#include <soc/qcom/memory_dump.h>
#endif
#if IS_ENABLED(CONFIG_MSM_SUBSYSTEM_RESTART) || \
IS_ENABLED(CONFIG_SUBSYSTEM_RAMDUMP)
#include <soc/qcom/ramdump.h>
@ -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 {