/* * Copyright (c) 2017-2020, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef COREBOOT_H #define COREBOOT_H #include typedef struct { uint32_t type; /* always 2 (memory-mapped) on ARM */ uint32_t baseaddr; uint32_t baud; uint32_t regwidth; /* in bytes, i.e. usually 4 */ uint32_t input_hertz; uint32_t uart_pci_addr; /* unused on current ARM systems */ } coreboot_serial_t; extern coreboot_serial_t coreboot_serial; #define COREBOOT_MAX_MEMRANGES 32 /* libpayload also uses this limit */ typedef struct __packed { uint64_t start; uint64_t size; uint32_t type; } coreboot_memrange_t; extern coreboot_memrange_t coreboot_memranges[COREBOOT_MAX_MEMRANGES]; typedef enum { CB_MEM_NONE = 0, /* coreboot will never report this */ CB_MEM_RAM = 1, CB_MEM_RESERVED = 2, CB_MEM_ACPI = 3, CB_MEM_NVS = 4, CB_MEM_UNUSABLE = 5, CB_MEM_VENDOR_RSVD = 6, CB_MEM_TABLE = 16, } coreboot_memory_t; coreboot_memory_t coreboot_get_memory_type(uintptr_t start, size_t size); void coreboot_table_setup(void *base); void coreboot_get_table_location(uint64_t *address, uint32_t *size); #endif /* COREBOOT_H */