Files
android_kernel_samsung_sm86…/msm/eva/cvp_dump.h
Yu SI 4981885760 msm: eva: merged tip from eva-kernel.lnx.1.0
merged tip source code from eva-kernel.lnx.1.0,
and verify the promotion flow.

Change-Id: I031508fd8a23995a166506f3d190e5e228eb13c2
Signed-off-by: Yu SI <ysi@codeaurora.org>
2021-10-27 18:14:30 -07:00

125 lines
3.2 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
*/
#ifndef __H_CVP_MINIDUMP_H__
#define __H_CVP_MINIDUMP_H__
#include <linux/notifier.h>
#include <linux/kernel.h>
#include "cvp_comm_def.h"
enum cvp_dump_type {
CVP_QUEUE_DUMP,
CVP_DBG_DUMP,
CVP_MAX_DUMP,
};
#define MAX_REGION_NAME_LEN 32
#define EVAFW_IMAGE_SIZE 7*1024*1024
#ifdef CVP_MINIDUMP_ENABLED
#include <soc/qcom/minidump.h>
/*
* wrapper for static minidump
* @name: Dump will be collected with this name
* @virt: Virtual address of the buffer which needs to be dumped
* @phys: Physical address of the buffer which needs to be dumped
* @size: Size of the buffer which needs to be dumped
*/
int md_eva_dump(const char* name, u64 virt, u64 phys, u64 size);
/*
* Fucntion to add dump region to queue
* @type: Type of the list node which needs to be updated
* @buff_va: Virtual address of the buffer which needs to be dumped
* @buff_size: Size of the buffer which needs to be dumped
* @region_name: Dump will be collected with this name
* @copy: Flag to indicate if the buffer data needs to be copied
* to the intermidiate buffer allocated by kzmalloc.
*/
void add_va_node_to_list(enum cvp_dump_type type, void *buff_va,
u32 buff_size, const char *region_name, bool copy);
/*
* Registers subsystem to minidump driver
* @name: Subsytem name which will get registered
* @notf_blk_ptr: notifier block pointer.
* notifier_call mentioned in this block will be triggered by
* minidump driver in case of crash
*/
void cvp_va_md_register(char *name, void* notf_blk_ptr);
/* One function where we will register all the regions */
void cvp_register_va_md_region(void);
/*
* Free up the memory allocated for different va_md_list
* Do not forget to add code for any new list in this function
*/
void cvp_free_va_md_list(void);
/* Adds the HFI queues(both for CPU and DSP) to the global hfi list head*/
void add_hfi_queue_to_va_md_list(void *device);
/*Add queue header structures(both for CPU and DSP)
to the global struct list head*/
void add_queue_header_to_va_md_list(void *device);
/*
* Node structure for VA_MD Linked List
* @list: linux kernel list implementation
* @va_md_buff: Virtual address of the buffer which needs to be dumped
* @va_md_buff_size: Size of the buffer which needs to be dumped
* @region_name: Dump will be collected with this name
* @copy: Flag to indicate if the buffer data needs to be copied
* to the intermidiate buffer allocated by kzmalloc.
*/
struct eva_va_md_queue
{
struct list_head list;
void *va_md_buff;
u32 va_md_buff_size;
char region_name[MAX_REGION_NAME_LEN];
bool copy;
};
#else
static inline int md_eva_dump(const char* name, u64 virt, u64 phys, u64 size)
{
return 0;
}
static inline void add_va_node_to_list(enum cvp_dump_type type, void *buff_va,
u32 buff_size, const char *region_name, bool copy)
{
}
static inline void cvp_va_md_register(char *name, void* notf_blk_ptr)
{
}
static inline void cvp_register_va_md_region(void)
{
}
static inline void cvp_free_va_md_list(void)
{
}
static inline void add_hfi_queue_to_va_md_list(void *device)
{
}
static inline void add_queue_header_to_va_md_list(void *device)
{
}
#endif /* End of CVP_MINIDUMP_ENABLED */
#endif