x86: Remove MIN_PORT80_KCLOCKS_DELAY
[oweals/u-boot.git] / arch / x86 / include / asm / global_data.h
1 /*
2  * (C) Copyright 2002-2010
3  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 #ifndef __ASM_GBL_DATA_H
9 #define __ASM_GBL_DATA_H
10
11 #ifndef __ASSEMBLY__
12
13 #include <asm/processor.h>
14
15 enum pei_boot_mode_t {
16         PEI_BOOT_NONE = 0,
17         PEI_BOOT_SOFT_RESET,
18         PEI_BOOT_RESUME,
19
20 };
21
22 struct memory_area {
23         uint64_t start;
24         uint64_t size;
25 };
26
27 struct memory_info {
28         int num_areas;
29         uint64_t total_memory;
30         uint64_t total_32bit_memory;
31         struct memory_area area[CONFIG_NR_DRAM_BANKS];
32 };
33
34 #define MAX_MTRR_REQUESTS       8
35
36 /**
37  * A request for a memory region to be set up in a particular way. These
38  * requests are processed before board_init_r() is called. They are generally
39  * optional and can be ignored with some performance impact.
40  */
41 struct mtrr_request {
42         int type;               /* MTRR_TYPE_... */
43         uint64_t start;
44         uint64_t size;
45 };
46
47 /* Architecture-specific global data */
48 struct arch_global_data {
49         u64 gdt[X86_GDT_NUM_ENTRIES] __aligned(16);
50         struct global_data *gd_addr;    /* Location of Global Data */
51         uint8_t x86;                    /* CPU family */
52         uint8_t x86_vendor;             /* CPU vendor */
53         uint8_t x86_model;
54         uint8_t x86_mask;
55         uint32_t x86_device;
56         uint64_t tsc_base;              /* Initial value returned by rdtsc() */
57         uint32_t tsc_mhz;               /* TSC frequency in MHz */
58         void *new_fdt;                  /* Relocated FDT */
59         uint32_t bist;                  /* Built-in self test value */
60         enum pei_boot_mode_t pei_boot_mode;
61         const struct pch_gpio_map *gpio_map;    /* board GPIO map */
62         struct memory_info meminfo;     /* Memory information */
63 #ifdef CONFIG_HAVE_FSP
64         void *hob_list;                 /* FSP HOB list */
65 #endif
66         struct mtrr_request mtrr_req[MAX_MTRR_REQUESTS];
67         int mtrr_req_count;
68         int has_mtrr;
69         /* MRC training data to save for the next boot */
70         char *mrc_output;
71         unsigned int mrc_output_len;
72         ulong table;                    /* Table pointer from previous loader */
73 };
74
75 #endif
76
77 #include <asm-generic/global_data.h>
78
79 #ifndef __ASSEMBLY__
80 # ifdef CONFIG_EFI_APP
81
82 #define gd global_data_ptr
83
84 #define DECLARE_GLOBAL_DATA_PTR   extern struct global_data *global_data_ptr
85 # else
86 static inline __attribute__((no_instrument_function)) gd_t *get_fs_gd_ptr(void)
87 {
88         gd_t *gd_ptr;
89
90         asm volatile("fs movl 0, %0\n" : "=r" (gd_ptr));
91
92         return gd_ptr;
93 }
94
95 #define gd      get_fs_gd_ptr()
96
97 #define DECLARE_GLOBAL_DATA_PTR
98 # endif
99
100 #endif
101
102 /*
103  * Our private Global Data Flags
104  */
105 #define GD_FLG_COLD_BOOT        0x10000 /* Cold Boot */
106 #define GD_FLG_WARM_BOOT        0x20000 /* Warm Boot */
107
108 #endif /* __ASM_GBL_DATA_H */