1
2
3
4
5
6
7#ifndef _ASM_RISCV_SOC_H
8#define _ASM_RISCV_SOC_H
9
10#include <linux/of.h>
11#include <linux/linkage.h>
12#include <linux/types.h>
13
14#define SOC_EARLY_INIT_DECLARE(name, compat, fn) \
15 static const struct of_device_id __soc_early_init__##name \
16 __used __section(__soc_early_init_table) \
17 = { .compatible = compat, .data = fn }
18
19void soc_early_init(void);
20
21extern unsigned long __soc_early_init_table_start;
22extern unsigned long __soc_early_init_table_end;
23
24
25
26
27
28struct soc_builtin_dtb {
29 unsigned long vendor_id;
30 unsigned long arch_id;
31 unsigned long imp_id;
32 void *(*dtb_func)(void);
33};
34
35
36
37
38
39#define SOC_BUILTIN_DTB_DECLARE(name, vendor, arch, impl) \
40 extern void *__dtb_##name##_begin; \
41 \
42 static __init __used \
43 void *__soc_builtin_dtb_f__##name(void) \
44 { \
45 return (void *)&__dtb_##name##_begin; \
46 } \
47 \
48 static const struct soc_builtin_dtb __soc_builtin_dtb__##name \
49 __used __section(__soc_builtin_dtb_table) = \
50 { \
51 .vendor_id = vendor, \
52 .arch_id = arch, \
53 .imp_id = impl, \
54 .dtb_func = __soc_builtin_dtb_f__##name, \
55 }
56
57extern unsigned long __soc_builtin_dtb_table_start;
58extern unsigned long __soc_builtin_dtb_table_end;
59
60void *soc_lookup_builtin_dtb(void);
61
62#endif
63