116 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ */
 | |
| /*
 | |
|  * Copyright (C) 2019 Intel Corporation <www.intel.com>
 | |
|  */
 | |
| 
 | |
| #ifndef __SLIMBOOTLOADER_ARCH_H__
 | |
| #define __SLIMBOOTLOADER_ARCH_H__
 | |
| 
 | |
| #include <common.h>
 | |
| #include <asm/hob.h>
 | |
| 
 | |
| /**
 | |
|  * A GUID to get MemoryMap info hob which is provided by Slim Bootloader
 | |
|  */
 | |
| #define SBL_MEMORY_MAP_INFO_GUID \
 | |
| 	EFI_GUID(0xa1ff7424, 0x7a1a, 0x478e, \
 | |
| 		0xa9, 0xe4, 0x92, 0xf3, 0x57, 0xd1, 0x28, 0x32)
 | |
| 
 | |
| /**
 | |
|  * A GUID to get SerialPort info hob which is provided by Slim Bootloader
 | |
|  */
 | |
| #define SBL_SERIAL_PORT_INFO_GUID \
 | |
| 	EFI_GUID(0x6c6872fe, 0x56a9, 0x4403, \
 | |
| 		0xbb, 0x98, 0x95, 0x8d, 0x62, 0xde, 0x87, 0xf1)
 | |
| 
 | |
| /**
 | |
|  * A GUID to get boot performance info hob which is provided by Slim Bootloader
 | |
|  */
 | |
| #define SBL_PERFORMANCE_INFO_GUID \
 | |
| 	EFI_GUID(0x868204be, 0x23d0, 0x4ff9, \
 | |
| 		0xac, 0x34, 0xb9, 0x95, 0xac, 0x04, 0xb1, 0xb9)
 | |
| 
 | |
| /**
 | |
|  * A single entry of memory map information
 | |
|  *
 | |
|  * @addr: start address of a memory map entry
 | |
|  * @size: size of a memory map entry
 | |
|  * @type: usable:1, reserved:2, acpi:3, nvs:4, unusable:5
 | |
|  * @flag: only used in Slim Bootloader
 | |
|  * @rsvd: padding for alignment
 | |
|  */
 | |
| struct sbl_memory_map_entry {
 | |
| 	u64	addr;
 | |
| 	u64	size;
 | |
| 	u8	type;
 | |
| 	u8	flag;
 | |
| 	u8	rsvd[6];
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * This includes all memory map entries which is sorted based on physical start
 | |
|  * address, from low to high, and carved out reserved, acpi nvs, acpi reclaim
 | |
|  * and usable memory.
 | |
|  *
 | |
|  * @rev  : revision of memory_map_info structure. currently 1.
 | |
|  * @rsvd : padding for alignment
 | |
|  * @count: the number of memory map entries
 | |
|  * @entry: array of all memory map entries
 | |
|  */
 | |
| struct sbl_memory_map_info {
 | |
| 	u8	rev;
 | |
| 	u8	rsvd[3];
 | |
| 	u32	count;
 | |
| 	struct sbl_memory_map_entry	entry[0];
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * This includes serial port info which has already been initialized in previous
 | |
|  * Slim Bootloader stage.
 | |
|  * The Slim Bootloader initializes serial port regardless of debug/release build
 | |
|  * modes, and it passes the information to a payload thru hob. So, a payload can
 | |
|  * re-use the serial information without re-initializing serial port.
 | |
|  *
 | |
|  * @rev   : revision of serial_port_info structure. currently 1.
 | |
|  * @rsvd  : padding for alignment
 | |
|  * @type  : port io: 1, mmio: 2
 | |
|  * @base  : io base address. ex) 0x3f8, 0x80001000
 | |
|  * @baud  : uart baud rate
 | |
|  * @stride: register stride in Bytes
 | |
|  * @clk   : uart frequency in Hz
 | |
|  * @rsvd1 : reserved
 | |
|  */
 | |
| struct sbl_serial_port_info {
 | |
| 	u8      rev;
 | |
| 	u8      rsvd[3];
 | |
| 	u32     type;
 | |
| 	u32     base;
 | |
| 	u32     baud;
 | |
| 	u32     stride;
 | |
| 	u32     clk;
 | |
| 	u32     rsvd1;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * This includes timestamp data which has been collected in Slim Bootloader
 | |
|  * stages from the reset vector. In addition, this has TSC frequency in KHz to
 | |
|  * calculate each timestamp.
 | |
|  *
 | |
|  * @rev   : revision of performance_info structure. currently 1.
 | |
|  * @rsvd  : padding for alignment
 | |
|  * @count : the number of collected timestamp data
 | |
|  * @flags : only used in Slim Bootloader
 | |
|  * @frequency: tsc frequency in KHz
 | |
|  * @timestamp: the array of timestamp data which has 64-bit tsc value
 | |
|  */
 | |
| struct sbl_performance_info {
 | |
| 	u8      rev;
 | |
| 	u8      rsvd[3];
 | |
| 	u16     count;
 | |
| 	u16     flags;
 | |
| 	u32     frequency;
 | |
| 	u64     timestamp[0];
 | |
| };
 | |
| 
 | |
| #endif /* __SLIMBOOTLOADER_ARCH_H__ */
 |