coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
pei_data.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* coreboot UEFI PEI wrapper */
3 
4 #ifndef PEI_DATA_H
5 #define PEI_DATA_H
6 
7 #include <stdint.h>
8 
9 typedef struct {
10  uint16_t mode; /* 0: Disable, 1: Enable, 2: Auto, 3: Smart Auto */
11  uint16_t hs_port_switch_mask; /* 4 bit mask, 1: switchable, 0: not switchable */
12  uint16_t preboot_support; /* 0: No xHCI preOS driver, 1: xHCI preOS driver */
13  uint16_t xhci_streams; /* 0: Disable, 1: Enable */
15 
16 typedef void (*tx_byte_func)(unsigned char byte);
17 #define PEI_VERSION 6
18 
19 struct pei_data
20 {
30  uint32_t rcba;
34  uint32_t system_type; /* 0 Mobile, 1 Desktop/Server */
38  int boot_mode;
39  int ec_present;
40  int gbe_enable;
41  /*
42  * 0 = leave channel enabled
43  * 1 = disable dimm 0 on channel
44  * 2 = disable dimm 1 on channel
45  * 3 = disable dimm 0+1 on channel
46  */
49  /* Seed values saved in CMOS */
52  /* Data read from flash and passed into MRC */
53  unsigned char *mrc_input;
54  unsigned int mrc_input_len;
55  /* Data from MRC that should be saved to flash */
56  unsigned char *mrc_output;
57  unsigned int mrc_output_len;
58  /*
59  * Max frequency DDR3 could be ran at. Could be one of four values:
60  * 800, 1067, 1333, 1600
61  */
63  /*
64  * USB Port Configuration:
65  * [0] = enable
66  * [1] = overcurrent pin
67  * [2] = length
68  *
69  * Ports 0-7 can be mapped to OC0-OC3
70  * Ports 8-13 can be mapped to OC4-OC7
71  *
72  * Port Length
73  * MOBILE:
74  * < 0x050 = Setting 1 (back panel, 1 to 5 in, lowest tx amplitude)
75  * < 0x140 = Setting 2 (back panel, 5 to 14 in, highest tx amplitude)
76  * DESKTOP:
77  * < 0x080 = Setting 1 (front/back panel, less than 8 in, lowest tx amplitude)
78  * < 0x130 = Setting 2 (back panel, 8 to 13 in, higher tx amplitude)
79  * < 0x150 = Setting 3 (back panel, 13 to 15 in, highest tx amplitude)
80  */
82  /* See the usb3 struct above for details */
84  /*
85  * SPD data array for onboard RAM. Note that spd_data [1..3] are ignored: instead,
86  * the "dimm_channel{0,1}_disabled" flag and the spd_addresses are used to determine
87  * which DIMMs should use the SPD from spd_data[0].
88  */
89  uint8_t spd_data[4][256];
92  /*
93  * pcie_init needs to be set to 1 to have the system agent initialize PCIe.
94  * Note: This should only be required if your system has Gen3 devices and
95  * it will increase your boot time by at least 100ms.
96  */
97  int pcie_init;
98  /*
99  * N mode functionality. Leave this setting at 0.
100  *
101  * 0: Auto
102  * 1: 1N
103  * 2: 2N
104  */
105  int nmode;
106  /*
107  * DDR refresh rate config. JEDEC Standard No.21-C Annex K allows for DIMM SPD data to
108  * specify whether double-rate is required for extended operating temperature range.
109  *
110  * 0: Enable double rate based upon temperature thresholds
111  * 1: Normal rate
112  * 2: Always enable double rate
113  */
116 
117 #endif
struct pei_usb2_port_setting __packed
void(* tx_byte_func)(unsigned char byte)
Definition: pei_data.h:8
unsigned short uint16_t
Definition: stdint.h:11
unsigned int uint32_t
Definition: stdint.h:14
unsigned char uint8_t
Definition: stdint.h:8
int ddr_refresh_rate_config
Definition: pei_data.h:114
int ddr3lv_support
Definition: pei_data.h:91
int dimm_channel0_disabled
Definition: pei_data.h:68
uint8_t spd_addresses[4]
Definition: pei_data.h:60
uint32_t scrambler_seed_s3
Definition: pei_data.h:51
int pcie_init
Definition: pei_data.h:97
uint32_t tseg_size
Definition: pei_data.h:59
unsigned char * mrc_input
Definition: pei_data.h:74
int gbe_enable
Definition: pei_data.h:63
int nmode
Definition: pei_data.h:105
uint32_t system_type
Definition: pei_data.h:58
unsigned char * mrc_output
Definition: pei_data.h:77
uint32_t rcba
Definition: pei_data.h:53
uint32_t gpiobase
Definition: pei_data.h:55
uint32_t pciexbar
Definition: pei_data.h:47
int dimm_channel1_disabled
Definition: pei_data.h:69
unsigned int mrc_output_len
Definition: pei_data.h:78
int ec_present
Definition: pei_data.h:62
pch_usb3_controller_settings usb3
Definition: pei_data.h:83
unsigned int mrc_input_len
Definition: pei_data.h:75
tx_byte_func tx_byte
Definition: pei_data.h:86
uint32_t pei_version
Definition: pei_data.h:43
uint8_t ts_addresses[4]
Definition: pei_data.h:37
uint32_t wdbsize
Definition: pei_data.h:28
uint16_t smbusbar
Definition: pei_data.h:48
uint32_t pmbase
Definition: pei_data.h:54
uint32_t mchbar
Definition: pei_data.h:44
uint32_t hpet_address
Definition: pei_data.h:52
uint8_t spd_data[4][SPD_LEN]
Definition: pei_data.h:85
uint32_t wdbbar
Definition: pei_data.h:27
uint32_t dmibar
Definition: pei_data.h:45
uint32_t epbar
Definition: pei_data.h:46
uint32_t max_ddr3_freq
Definition: pei_data.h:80
uint32_t thermalbase
Definition: pei_data.h:33
int boot_mode
Definition: pei_data.h:61
uint32_t scrambler_seed
Definition: pei_data.h:50
typedef void(X86APIP X86EMU_intrFuncs)(int num)