xref: /rk3399_rockchip-uboot/include/rk_mini_dump.h (revision b3372aa61eccf92db6a5461674e70854344cacd2)
1*b3372aa6SHuibin Hong /*
2*b3372aa6SHuibin Hong  * (C) Copyright 2020 Rockchip Electronics Co., Ltd
3*b3372aa6SHuibin Hong  *
4*b3372aa6SHuibin Hong  * SPDX-License-Identifier:     GPL-2.0+
5*b3372aa6SHuibin Hong  */
6*b3372aa6SHuibin Hong 
7*b3372aa6SHuibin Hong #ifndef RK_MINIDUMP_H
8*b3372aa6SHuibin Hong #define RK_MINIDUMP_H
9*b3372aa6SHuibin Hong 
10*b3372aa6SHuibin Hong #include <elf.h>
11*b3372aa6SHuibin Hong 
12*b3372aa6SHuibin Hong #define MD_MAX_NAME_LENGTH		16
13*b3372aa6SHuibin Hong /* md_region -  Minidump table entry
14*b3372aa6SHuibin Hong  * @name:	Entry name, Minidump will dump binary with this name.
15*b3372aa6SHuibin Hong  * @id:		Entry ID, used only for SDI dumps.
16*b3372aa6SHuibin Hong  * @virt_addr:  Address of the entry.
17*b3372aa6SHuibin Hong  * @phys_addr:	Physical address of the entry to dump.
18*b3372aa6SHuibin Hong  * @size:	Number of byte to dump from @address location
19*b3372aa6SHuibin Hong  *		it should be 4 byte aligned.
20*b3372aa6SHuibin Hong  */
21*b3372aa6SHuibin Hong struct md_region {
22*b3372aa6SHuibin Hong 	char	name[MD_MAX_NAME_LENGTH];
23*b3372aa6SHuibin Hong 	u32	id;
24*b3372aa6SHuibin Hong 	u64	virt_addr;
25*b3372aa6SHuibin Hong 	u64	phys_addr;
26*b3372aa6SHuibin Hong 	u64	size;
27*b3372aa6SHuibin Hong };
28*b3372aa6SHuibin Hong 
29*b3372aa6SHuibin Hong void rk_minidump_init(void);
30*b3372aa6SHuibin Hong 
31*b3372aa6SHuibin Hong #ifdef CONFIG_ARM64
32*b3372aa6SHuibin Hong void rk_minidump_get_el64(void **ram_image_addr, Elf64_Xword *ram_image_size);
33*b3372aa6SHuibin Hong #else
34*b3372aa6SHuibin Hong void rk_minidump_get_el32(void **ram_image_addr, Elf32_Word *ram_image_size);
35*b3372aa6SHuibin Hong #endif
36*b3372aa6SHuibin Hong 
37*b3372aa6SHuibin Hong struct md_region *md_get_region(char *name);
38*b3372aa6SHuibin Hong u32 md_no_fault_handler(struct pt_regs *pt_regs, unsigned int esr);
39*b3372aa6SHuibin Hong #endif
40