blob: c455e17d4557bb2c814f67a46280390abc35d913 [file] [log] [blame]
Patrick Georgi70517072020-05-10 18:47:05 +02001/* SPDX-License-Identifier: BSD-3-Clause */
Aaron Durbin76c37002012-10-30 09:03:43 -05002
3#ifndef PEI_DATA_H
4#define PEI_DATA_H
5
Elyes HAOUASc4e41932018-11-01 11:29:50 +01006#include <stdint.h>
7
Aaron Durbin76c37002012-10-30 09:03:43 -05008typedef void (*tx_byte_func)(unsigned char byte);
Stefan Reinauer190688c2013-08-13 11:18:42 -07009#define PEI_VERSION 15
Aaron Durbinb1c25e72013-05-23 15:57:46 -050010
Angel Pons9a094c42021-02-11 14:24:03 +010011#define SPD_LEN 256
12
Angel Ponsd0f971f2021-03-12 14:20:05 +010013#define PEI_USB_OC_PIN_SKIP 8
Aaron Durbinb1c25e72013-05-23 15:57:46 -050014
Angel Ponsd0f971f2021-03-12 14:20:05 +010015enum pei_usb2_port_location {
16 PEI_USB_PORT_BACK_PANEL = 0,
17 PEI_USB_PORT_FRONT_PANEL,
18 PEI_USB_PORT_DOCK,
19 PEI_USB_PORT_MINI_PCIE,
20 PEI_USB_PORT_FLEX,
21 PEI_USB_PORT_INTERNAL,
22 PEI_USB_PORT_SKIP
Duncan Lauriebcfcfa42013-06-03 10:41:12 -070023};
24
25/* Usb Port Length:
26 * [16:4] = length in inches in octal format
27 * [3:0] = decimal point
28 */
Angel Ponsd0f971f2021-03-12 14:20:05 +010029struct pei_usb2_port_setting {
Aaron Durbinb1c25e72013-05-23 15:57:46 -050030 uint16_t length;
31 uint8_t enable;
32 uint8_t over_current_pin;
Duncan Lauriebcfcfa42013-06-03 10:41:12 -070033 uint8_t location;
Stefan Reinauer6a001132017-07-13 02:20:27 +020034} __packed;
Aaron Durbinb1c25e72013-05-23 15:57:46 -050035
Angel Ponsd0f971f2021-03-12 14:20:05 +010036struct pei_usb3_port_setting {
Aaron Durbinb1c25e72013-05-23 15:57:46 -050037 uint8_t enable;
38 uint8_t over_current_pin;
Stefan Reinauer6a001132017-07-13 02:20:27 +020039} __packed;
Aaron Durbin8256a9b2012-11-29 17:18:53 -060040
Aaron Durbin76c37002012-10-30 09:03:43 -050041struct pei_data
42{
43 uint32_t pei_version;
44 uint32_t mchbar;
45 uint32_t dmibar;
46 uint32_t epbar;
47 uint32_t pciexbar;
48 uint16_t smbusbar;
Angel Ponse8abb5a2020-04-15 15:01:53 +020049 /* Unused by HSW MRC, but changes to the memory layout of this struct break the ABI */
50 uint32_t _unused_wdbbar;
51 uint32_t _unused_wdbsize;
Aaron Durbin76c37002012-10-30 09:03:43 -050052 uint32_t hpet_address;
53 uint32_t rcba;
54 uint32_t pmbase;
55 uint32_t gpiobase;
Aaron Durbin8256a9b2012-11-29 17:18:53 -060056 uint32_t temp_mmio_base;
Angel Pons6ba3a072020-04-24 17:42:19 +020057 /* System type: 0 => Mobile, 1 => Desktop/Server, 5 => ULT, Others => Reserved */
58 uint32_t system_type;
Aaron Durbin76c37002012-10-30 09:03:43 -050059 uint32_t tseg_size;
60 uint8_t spd_addresses[4];
Aaron Durbin76c37002012-10-30 09:03:43 -050061 int boot_mode;
62 int ec_present;
Stefan Reinauer1cc34162013-06-27 15:59:18 -070063 int gbe_enable;
Aaron Durbin76c37002012-10-30 09:03:43 -050064 // 0 = leave channel enabled
65 // 1 = disable dimm 0 on channel
66 // 2 = disable dimm 1 on channel
67 // 3 = disable dimm 0+1 on channel
68 int dimm_channel0_disabled;
69 int dimm_channel1_disabled;
Duncan Lauriebcfcfa42013-06-03 10:41:12 -070070 /* Enable 2x Refresh Mode */
71 int ddr_refresh_2x;
Stefan Reinauer190688c2013-08-13 11:18:42 -070072 int dq_pins_interleaved;
Aaron Durbin76c37002012-10-30 09:03:43 -050073 /* Data read from flash and passed into MRC */
74 unsigned char *mrc_input;
75 unsigned int mrc_input_len;
76 /* Data from MRC that should be saved to flash */
77 unsigned char *mrc_output;
78 unsigned int mrc_output_len;
Angel Pons1db5bc72020-01-15 00:49:03 +010079 /* Max frequency to run DDR3 at. Can be one of four values: 800, 1067, 1333, 1600 */
Aaron Durbin76c37002012-10-30 09:03:43 -050080 uint32_t max_ddr3_freq;
Duncan Laurie289bac62013-07-30 15:41:42 -070081 /* Route all USB ports to XHCI controller in resume path */
82 int usb_xhci_on_resume;
Angel Ponsd0f971f2021-03-12 14:20:05 +010083 struct pei_usb2_port_setting usb2_ports[16];
84 struct pei_usb3_port_setting usb3_ports[16];
Angel Pons9a094c42021-02-11 14:24:03 +010085 uint8_t spd_data[4][SPD_LEN];
Aaron Durbin76c37002012-10-30 09:03:43 -050086 tx_byte_func tx_byte;
Stefan Reinauer6a001132017-07-13 02:20:27 +020087} __packed;
Aaron Durbin76c37002012-10-30 09:03:43 -050088
89#endif