linux/arch/mips/include/asm/bootinfo.h
<<
>>
Prefs
   1/*
   2 * This file is subject to the terms and conditions of the GNU General Public
   3 * License.  See the file COPYING in the main directory of this archive
   4 * for more details.
   5 *
   6 * Copyright (C) 1995, 1996, 2003 by Ralf Baechle
   7 * Copyright (C) 1995, 1996 Andreas Busse
   8 * Copyright (C) 1995, 1996 Stoned Elipot
   9 * Copyright (C) 1995, 1996 Paul M. Antoine.
  10 * Copyright (C) 2009       Zhang Le
  11 */
  12#ifndef _ASM_BOOTINFO_H
  13#define _ASM_BOOTINFO_H
  14
  15#include <linux/types.h>
  16#include <asm/setup.h>
  17
  18/*
  19 * The MACH_ IDs are sort of equivalent to PCI product IDs.  As such the
  20 * numbers do not necessarily reflect technical relations or similarities
  21 * between systems.
  22 */
  23
  24/*
  25 * Valid machtype values for group unknown
  26 */
  27#define  MACH_UNKNOWN           0       /* whatever...                  */
  28
  29/*
  30 * Valid machtype for group DEC
  31 */
  32#define  MACH_DSUNKNOWN         0
  33#define  MACH_DS23100           1       /* DECstation 2100 or 3100      */
  34#define  MACH_DS5100            2       /* DECsystem 5100               */
  35#define  MACH_DS5000_200        3       /* DECstation 5000/200          */
  36#define  MACH_DS5000_1XX        4       /* DECstation 5000/120, 125, 133, 150 */
  37#define  MACH_DS5000_XX         5       /* DECstation 5000/20, 25, 33, 50 */
  38#define  MACH_DS5000_2X0        6       /* DECstation 5000/240, 260     */
  39#define  MACH_DS5400            7       /* DECsystem 5400               */
  40#define  MACH_DS5500            8       /* DECsystem 5500               */
  41#define  MACH_DS5800            9       /* DECsystem 5800               */
  42#define  MACH_DS5900            10      /* DECsystem 5900               */
  43
  44/*
  45 * Valid machtype for group PMC-MSP
  46 */
  47#define MACH_MSP4200_EVAL       0       /* PMC-Sierra MSP4200 Evaluation */
  48#define MACH_MSP4200_GW         1       /* PMC-Sierra MSP4200 Gateway demo */
  49#define MACH_MSP4200_FPGA       2       /* PMC-Sierra MSP4200 Emulation */
  50#define MACH_MSP7120_EVAL       3       /* PMC-Sierra MSP7120 Evaluation */
  51#define MACH_MSP7120_GW         4       /* PMC-Sierra MSP7120 Residential GW */
  52#define MACH_MSP7120_FPGA       5       /* PMC-Sierra MSP7120 Emulation */
  53#define MACH_MSP_OTHER        255       /* PMC-Sierra unknown board type */
  54
  55/*
  56 * Valid machtype for group Mikrotik
  57 */
  58#define MACH_MIKROTIK_RB532     0       /* Mikrotik RouterBoard 532     */
  59#define MACH_MIKROTIK_RB532A    1       /* Mikrotik RouterBoard 532A    */
  60
  61/*
  62 * Valid machtype for Loongson family
  63 */
  64enum loongson_machine_type {
  65        MACH_LOONGSON_UNKNOWN,
  66        MACH_LEMOTE_FL2E,
  67        MACH_LEMOTE_FL2F,
  68        MACH_LEMOTE_ML2F7,
  69        MACH_LEMOTE_YL2F89,
  70        MACH_DEXXON_GDIUM2F10,
  71        MACH_LEMOTE_NAS,
  72        MACH_LEMOTE_LL2F,
  73        MACH_LOONGSON_GENERIC,
  74        MACH_LOONGSON_END
  75};
  76
  77/*
  78 * Valid machtype for group INGENIC
  79 */
  80#define  MACH_INGENIC_JZ4730    0       /* JZ4730 SOC           */
  81#define  MACH_INGENIC_JZ4740    1       /* JZ4740 SOC           */
  82#define  MACH_INGENIC_JZ4770    2       /* JZ4770 SOC           */
  83#define  MACH_INGENIC_JZ4780    3       /* JZ4780 SOC           */
  84
  85extern char *system_type;
  86const char *get_system_type(void);
  87
  88extern unsigned long mips_machtype;
  89
  90#define BOOT_MEM_MAP_MAX        32
  91#define BOOT_MEM_RAM            1
  92#define BOOT_MEM_ROM_DATA       2
  93#define BOOT_MEM_RESERVED       3
  94#define BOOT_MEM_INIT_RAM       4
  95
  96/*
  97 * A memory map that's built upon what was determined
  98 * or specified on the command line.
  99 */
 100struct boot_mem_map {
 101        int nr_map;
 102        struct boot_mem_map_entry {
 103                phys_addr_t addr;       /* start of memory segment */
 104                phys_addr_t size;       /* size of memory segment */
 105                long type;              /* type of memory segment */
 106        } map[BOOT_MEM_MAP_MAX];
 107};
 108
 109extern struct boot_mem_map boot_mem_map;
 110
 111extern void add_memory_region(phys_addr_t start, phys_addr_t size, long type);
 112extern void detect_memory_region(phys_addr_t start, phys_addr_t sz_min,  phys_addr_t sz_max);
 113
 114extern void prom_init(void);
 115extern void prom_free_prom_memory(void);
 116
 117extern void free_init_pages(const char *what,
 118                            unsigned long begin, unsigned long end);
 119
 120extern void (*free_init_pages_eva)(void *begin, void *end);
 121
 122/*
 123 * Initial kernel command line, usually setup by prom_init()
 124 */
 125extern char arcs_cmdline[COMMAND_LINE_SIZE];
 126
 127/*
 128 * Registers a0, a1, a3 and a4 as passed to the kernel entry by firmware
 129 */
 130extern unsigned long fw_arg0, fw_arg1, fw_arg2, fw_arg3;
 131
 132#ifdef CONFIG_USE_OF
 133extern unsigned long fw_passed_dtb;
 134#endif
 135
 136/*
 137 * Platform memory detection hook called by setup_arch
 138 */
 139extern void plat_mem_setup(void);
 140
 141#ifdef CONFIG_SWIOTLB
 142/*
 143 * Optional platform hook to call swiotlb_setup().
 144 */
 145extern void plat_swiotlb_setup(void);
 146
 147#else
 148
 149static inline void plat_swiotlb_setup(void) {}
 150
 151#endif /* CONFIG_SWIOTLB */
 152
 153#ifdef CONFIG_USE_OF
 154/**
 155 * plat_get_fdt() - Return a pointer to the platform's device tree blob
 156 *
 157 * This function provides a platform independent API to get a pointer to the
 158 * flattened device tree blob. The interface between bootloader and kernel
 159 * is not consistent across platforms so it is necessary to provide this
 160 * API such that common startup code can locate the FDT.
 161 *
 162 * This is used by the KASLR code to get command line arguments and random
 163 * seed from the device tree. Any platform wishing to use KASLR should
 164 * provide this API and select SYS_SUPPORTS_RELOCATABLE.
 165 *
 166 * Return: Pointer to the flattened device tree blob.
 167 */
 168extern void *plat_get_fdt(void);
 169
 170#ifdef CONFIG_RELOCATABLE
 171
 172/**
 173 * plat_fdt_relocated() - Update platform's information about relocated dtb
 174 *
 175 * This function provides a platform-independent API to set platform's
 176 * information about relocated DTB if it needs to be moved due to kernel
 177 * relocation occurring at boot.
 178 */
 179void plat_fdt_relocated(void *new_location);
 180
 181#endif /* CONFIG_RELOCATABLE */
 182#endif /* CONFIG_USE_OF */
 183
 184#endif /* _ASM_BOOTINFO_H */
 185