xref: /rk3399_ARM-atf/include/lib/coreboot.h (revision 4c700c1563aff7b51df95f17e952e050b9b4e37f)
13429c77aSJulius Werner /*
2*4c700c15SGovindraj Raja  * Copyright (c) 2017-2020, Arm Limited and Contributors. All rights reserved.
33429c77aSJulius Werner  *
43429c77aSJulius Werner  * SPDX-License-Identifier: BSD-3-Clause
53429c77aSJulius Werner  */
63429c77aSJulius Werner 
7c3cf06f1SAntonio Nino Diaz #ifndef COREBOOT_H
8c3cf06f1SAntonio Nino Diaz #define COREBOOT_H
93429c77aSJulius Werner 
1093c78ed2SAntonio Nino Diaz #include <stdint.h>
113429c77aSJulius Werner 
123429c77aSJulius Werner typedef struct {
133429c77aSJulius Werner 	uint32_t type;			/* always 2 (memory-mapped) on ARM */
143429c77aSJulius Werner 	uint32_t baseaddr;
153429c77aSJulius Werner 	uint32_t baud;
163429c77aSJulius Werner 	uint32_t regwidth;		/* in bytes, i.e. usually 4 */
173429c77aSJulius Werner 	uint32_t input_hertz;
183429c77aSJulius Werner 	uint32_t uart_pci_addr;		/* unused on current ARM systems */
193429c77aSJulius Werner } coreboot_serial_t;
203429c77aSJulius Werner extern coreboot_serial_t coreboot_serial;
213429c77aSJulius Werner 
22579d1e90SJulius Werner #define COREBOOT_MAX_MEMRANGES	32	/* libpayload also uses this limit */
23579d1e90SJulius Werner 
24579d1e90SJulius Werner typedef struct __packed {
25579d1e90SJulius Werner 	uint64_t start;
26579d1e90SJulius Werner 	uint64_t size;
27579d1e90SJulius Werner 	uint32_t type;
28579d1e90SJulius Werner } coreboot_memrange_t;
29579d1e90SJulius Werner extern coreboot_memrange_t coreboot_memranges[COREBOOT_MAX_MEMRANGES];
30579d1e90SJulius Werner 
31579d1e90SJulius Werner typedef enum {
32579d1e90SJulius Werner 	CB_MEM_NONE		= 0,	/* coreboot will never report this */
33579d1e90SJulius Werner 	CB_MEM_RAM		= 1,
34579d1e90SJulius Werner 	CB_MEM_RESERVED		= 2,
35579d1e90SJulius Werner 	CB_MEM_ACPI		= 3,
36579d1e90SJulius Werner 	CB_MEM_NVS		= 4,
37579d1e90SJulius Werner 	CB_MEM_UNUSABLE		= 5,
38579d1e90SJulius Werner 	CB_MEM_VENDOR_RSVD	= 6,
39579d1e90SJulius Werner 	CB_MEM_TABLE		= 16,
40579d1e90SJulius Werner } coreboot_memory_t;
41579d1e90SJulius Werner 
42e0caf8f5SSaurabh Gorecha coreboot_memory_t coreboot_get_memory_type(uintptr_t start, size_t size);
433429c77aSJulius Werner void coreboot_table_setup(void *base);
44f4bbf435SJeffrey Kardatzke void coreboot_get_table_location(uint64_t *address, uint32_t *size);
453429c77aSJulius Werner 
46c3cf06f1SAntonio Nino Diaz #endif /* COREBOOT_H */
47