]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/x86/include/asm/global_data.h
karo: fdt: fix panel-dpi support
[karo-tx-uboot.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_base_kclocks;      /* Initial tsc as a kclocks value */
58         uint32_t tsc_prev;              /* For show_boot_progress() */
59         uint32_t tsc_mhz;               /* TSC frequency in MHz */
60         void *new_fdt;                  /* Relocated FDT */
61         uint32_t bist;                  /* Built-in self test value */
62         enum pei_boot_mode_t pei_boot_mode;
63         const struct pch_gpio_map *gpio_map;    /* board GPIO map */
64         struct memory_info meminfo;     /* Memory information */
65 #ifdef CONFIG_HAVE_FSP
66         void *hob_list;                 /* FSP HOB list */
67 #endif
68         struct mtrr_request mtrr_req[MAX_MTRR_REQUESTS];
69         int mtrr_req_count;
70         int has_mtrr;
71         /* MRC training data to save for the next boot */
72         char *mrc_output;
73         unsigned int mrc_output_len;
74         ulong table;                    /* Table pointer from previous loader */
75 };
76
77 #endif
78
79 #include <asm-generic/global_data.h>
80
81 #ifndef __ASSEMBLY__
82 # ifdef CONFIG_EFI_APP
83
84 #define gd global_data_ptr
85
86 #define DECLARE_GLOBAL_DATA_PTR   extern struct global_data *global_data_ptr
87 # else
88 static inline __attribute__((no_instrument_function)) gd_t *get_fs_gd_ptr(void)
89 {
90         gd_t *gd_ptr;
91
92         asm volatile("fs movl 0, %0\n" : "=r" (gd_ptr));
93
94         return gd_ptr;
95 }
96
97 #define gd      get_fs_gd_ptr()
98
99 #define DECLARE_GLOBAL_DATA_PTR
100 # endif
101
102 #endif
103
104 /*
105  * Our private Global Data Flags
106  */
107 #define GD_FLG_COLD_BOOT        0x10000 /* Cold Boot */
108 #define GD_FLG_WARM_BOOT        0x20000 /* Warm Boot */
109
110 #endif /* __ASM_GBL_DATA_H */