0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef _ASM_BOOTINFO_H
0013 #define _ASM_BOOTINFO_H
0014
0015 #include <linux/types.h>
0016 #include <asm/setup.h>
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 #define MACH_UNKNOWN 0
0028
0029
0030
0031
0032 #define MACH_DSUNKNOWN 0
0033 #define MACH_DS23100 1
0034 #define MACH_DS5100 2
0035 #define MACH_DS5000_200 3
0036 #define MACH_DS5000_1XX 4
0037 #define MACH_DS5000_XX 5
0038 #define MACH_DS5000_2X0 6
0039 #define MACH_DS5400 7
0040 #define MACH_DS5500 8
0041 #define MACH_DS5800 9
0042 #define MACH_DS5900 10
0043
0044
0045
0046
0047 #define MACH_MIKROTIK_RB532 0
0048 #define MACH_MIKROTIK_RB532A 1
0049
0050
0051
0052
0053 enum loongson2ef_machine_type {
0054 MACH_LOONGSON_UNKNOWN,
0055 MACH_LEMOTE_FL2E,
0056 MACH_LEMOTE_FL2F,
0057 MACH_LEMOTE_ML2F7,
0058 MACH_LEMOTE_YL2F89,
0059 MACH_DEXXON_GDIUM2F10,
0060 MACH_LEMOTE_NAS,
0061 MACH_LEMOTE_LL2F,
0062 MACH_LOONGSON_END
0063 };
0064
0065
0066
0067
0068 enum ingenic_machine_type {
0069 MACH_INGENIC_UNKNOWN,
0070 MACH_INGENIC_JZ4720,
0071 MACH_INGENIC_JZ4725,
0072 MACH_INGENIC_JZ4725B,
0073 MACH_INGENIC_JZ4730,
0074 MACH_INGENIC_JZ4740,
0075 MACH_INGENIC_JZ4750,
0076 MACH_INGENIC_JZ4755,
0077 MACH_INGENIC_JZ4760,
0078 MACH_INGENIC_JZ4760B,
0079 MACH_INGENIC_JZ4770,
0080 MACH_INGENIC_JZ4775,
0081 MACH_INGENIC_JZ4780,
0082 MACH_INGENIC_X1000,
0083 MACH_INGENIC_X1000E,
0084 MACH_INGENIC_X1830,
0085 MACH_INGENIC_X2000,
0086 MACH_INGENIC_X2000E,
0087 MACH_INGENIC_X2000H,
0088 MACH_INGENIC_X2100,
0089 };
0090
0091 extern char *system_type;
0092 const char *get_system_type(void);
0093
0094 extern unsigned long mips_machtype;
0095
0096 extern void detect_memory_region(phys_addr_t start, phys_addr_t sz_min, phys_addr_t sz_max);
0097
0098 extern void prom_init(void);
0099 extern void prom_free_prom_memory(void);
0100 extern void prom_cleanup(void);
0101
0102 extern void free_init_pages(const char *what,
0103 unsigned long begin, unsigned long end);
0104
0105 extern void (*free_init_pages_eva)(void *begin, void *end);
0106
0107
0108
0109
0110 extern char arcs_cmdline[COMMAND_LINE_SIZE];
0111
0112
0113
0114
0115 extern unsigned long fw_arg0, fw_arg1, fw_arg2, fw_arg3;
0116
0117 #ifdef CONFIG_USE_OF
0118 #include <linux/libfdt.h>
0119 #include <linux/of_fdt.h>
0120
0121 extern char __appended_dtb[];
0122
0123 static inline void *get_fdt(void)
0124 {
0125 if (IS_ENABLED(CONFIG_MIPS_RAW_APPENDED_DTB) ||
0126 IS_ENABLED(CONFIG_MIPS_ELF_APPENDED_DTB))
0127 if (fdt_magic(&__appended_dtb) == FDT_MAGIC)
0128 return &__appended_dtb;
0129
0130 if (fw_arg0 == -2)
0131 return (void *)fw_arg1;
0132
0133 if (IS_ENABLED(CONFIG_BUILTIN_DTB))
0134 if (&__dtb_start != &__dtb_end)
0135 return &__dtb_start;
0136
0137 return NULL;
0138 }
0139 #endif
0140
0141
0142
0143
0144 extern void plat_mem_setup(void);
0145
0146 #ifdef CONFIG_SWIOTLB
0147
0148
0149
0150 extern void plat_swiotlb_setup(void);
0151
0152 #else
0153
0154 static inline void plat_swiotlb_setup(void) {}
0155
0156 #endif
0157
0158 #ifdef CONFIG_USE_OF
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173 extern void *plat_get_fdt(void);
0174
0175 #ifdef CONFIG_RELOCATABLE
0176
0177
0178
0179
0180
0181
0182
0183
0184 void plat_fdt_relocated(void *new_location);
0185
0186 #endif
0187 #endif
0188
0189 #endif