xref: /rk3399_ARM-atf/include/lib/coreboot.h (revision 579d1e90d417909c43870d3decf3760851573770)
13429c77aSJulius Werner /*
2*579d1e90SJulius Werner  * 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 
22*579d1e90SJulius Werner #define COREBOOT_MAX_MEMRANGES	32	/* libpayload also uses this limit */
23*579d1e90SJulius Werner 
24*579d1e90SJulius Werner typedef struct __packed {
25*579d1e90SJulius Werner 	uint64_t start;
26*579d1e90SJulius Werner 	uint64_t size;
27*579d1e90SJulius Werner 	uint32_t type;
28*579d1e90SJulius Werner } coreboot_memrange_t;
29*579d1e90SJulius Werner extern coreboot_memrange_t coreboot_memranges[COREBOOT_MAX_MEMRANGES];
30*579d1e90SJulius Werner 
31*579d1e90SJulius Werner typedef enum {
32*579d1e90SJulius Werner 	CB_MEM_NONE		= 0,	/* coreboot will never report this */
33*579d1e90SJulius Werner 	CB_MEM_RAM		= 1,
34*579d1e90SJulius Werner 	CB_MEM_RESERVED		= 2,
35*579d1e90SJulius Werner 	CB_MEM_ACPI		= 3,
36*579d1e90SJulius Werner 	CB_MEM_NVS		= 4,
37*579d1e90SJulius Werner 	CB_MEM_UNUSABLE		= 5,
38*579d1e90SJulius Werner 	CB_MEM_VENDOR_RSVD	= 6,
39*579d1e90SJulius Werner 	CB_MEM_TABLE		= 16,
40*579d1e90SJulius Werner } coreboot_memory_t;
41*579d1e90SJulius Werner 
42*579d1e90SJulius Werner coreboot_memory_t coreboot_get_memory_type(uintptr_t address);
433429c77aSJulius Werner void coreboot_table_setup(void *base);
443429c77aSJulius Werner 
45c3cf06f1SAntonio Nino Diaz #endif /* COREBOOT_H */
46