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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __MACH_IMX_XLOAD_H
#define __MACH_IMX_XLOAD_H
#include <linux/compiler.h>
#include <linux/types.h>
#include <mach/imx/tzasc.h>
int imx53_nand_start_image(void);
int imx6_spi_load_image(int instance, unsigned int flash_offset, void *buf, int len);
int imx6_spi_start_image(int instance);
int imx6_esdhc_start_image(int instance);
int imx6_nand_start_image(void);
int imx7_esdhc_start_image(int instance);
int imx7_nand_start_image(void);
int imx8m_esdhc_load_image(int instance, bool start);
int imx8mn_esdhc_load_image(int instance, bool start);
int imx8mp_esdhc_load_image(int instance, bool start);
int imx8mm_qspi_load_image(int instance, bool start);
int imx8mn_qspi_load_image(int instance, bool start);
int imx8mp_qspi_load_image(int instance, bool start);
void imx8mm_load_bl33(void *bl33);
void imx8mn_load_bl33(void *bl33);
void imx8mp_load_bl33(void *bl33);
void __noreturn imx8mm_load_and_start_image_via_tfa(void);
void __noreturn imx8mn_load_and_start_image_via_tfa(void);
void __noreturn imx8mp_load_and_start_image_via_tfa(void);
int imx_load_image(ptrdiff_t address, ptrdiff_t entry, u32 offset,
u32 ivt_offset, bool start, unsigned int alignment,
int (*read)(void *dest, size_t len, void *priv),
void *priv);
int imx_image_size(void);
int piggydata_size(void);
extern unsigned char input_data[];
extern unsigned char input_data_end[];
struct imx_scratch_space {
u32 bootrom_log[128];
};
struct imx_scratch_space *__imx8m_scratch_space(int ddr_buswidth);
#define imx8mq_scratch_space() __imx8m_scratch_space(32)
#define imx8mm_scratch_space() __imx8m_scratch_space(32)
#define imx8mn_scratch_space() __imx8m_scratch_space(16)
#define imx8mp_scratch_space() __imx8m_scratch_space(32)
#define imx8m_load_and_start_optee_via_tfa(soc, bl32, bl33) \
do { \
size_t bl32_size; \
void *bl32_image; \
\
soc##_tzc380_init(); \
get_builtin_firmware_ext(soc##_bl32_bin, \
bl33, &bl32_image, \
&bl32_size); \
\
memcpy(bl32, bl32_image, bl32_size); \
\
soc##_load_and_start_tfa(soc##_bl31_bin_optee); \
} while (0)
#endif /* __MACH_IMX_XLOAD_H */
|