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