blob: 7b5d4450d5af00d70f984bb5645c3a2521751d64 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#include <linux/kconfig.h>
#include <linux/memblock.h>
#include <linux/mrdump.h>
#include <linux/reboot.h>
#include <asm/memory.h>
#include <asm/page.h>
#include <asm/io.h>
#define MRDUMP_CB_ADDR (PHYS_OFFSET + 0x1F00000)
#define MRDUMP_CB_SIZE 0x2000
#define LK_LOAD_ADDR (PHYS_OFFSET + 0x1E00000)
#define LK_LOAD_SIZE 0x100000
static void mrdump_hw_enable(bool enabled)
{
}
static void mrdump_reboot(void)
{
emergency_restart();
}
const struct mrdump_platform mrdump_v1_platform = {
.hw_enable = mrdump_hw_enable,
.reboot = mrdump_reboot
};
void mrdump_reserve_memory(void)
{
struct mrdump_control_block *cblock = NULL;
#if defined(CONFIG_ARCH_MT6735) || defined(CONFIG_ARCH_MT6752) || defined(CONFIG_ARCH_MT6795)
#define PRELOADER_ADDR (PHYS_OFFSET + 0x2000000)
#define PRELOADER_SIZE 0x200000
memblock_reserve(PRELOADER_ADDR, PRELOADER_SIZE);
#endif
/* We must reserved the lk block, can we pass it from lk? */
memblock_reserve(LK_LOAD_ADDR, LK_LOAD_SIZE);
memblock_reserve(MRDUMP_CB_ADDR, MRDUMP_CB_SIZE);
cblock = (struct mrdump_control_block *)__va(MRDUMP_CB_ADDR);
mrdump_platform_init(cblock, &mrdump_v1_platform);
}
|