1 /* 2 * coreboot_table.h 3 * 4 * Internal header for coreboot table access. 5 * 6 * Copyright 2017 Google Inc. 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License v2.0 as published by 10 * the Free Software Foundation. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 */ 17 18 #ifndef __COREBOOT_TABLE_H 19 #define __COREBOOT_TABLE_H 20 21 #include <linux/io.h> 22 23 /* List of coreboot entry structures that is used */ 24 struct lb_cbmem_ref { 25 uint32_t tag; 26 uint32_t size; 27 28 uint64_t cbmem_addr; 29 }; 30 31 /* Coreboot table header structure */ 32 struct coreboot_table_header { 33 char signature[4]; 34 u32 header_bytes; 35 u32 header_checksum; 36 u32 table_bytes; 37 u32 table_checksum; 38 u32 table_entries; 39 }; 40 41 /* Retrieve coreboot table entry with tag *tag* and copy it to data */ 42 int coreboot_table_find(int tag, void *data, size_t data_size); 43 44 /* Initialize coreboot table module given a pointer to iomem */ 45 int coreboot_table_init(void __iomem *ptr); 46 47 /* Cleanup coreboot table module */ 48 int coreboot_table_exit(void); 49 50 #endif /* __COREBOOT_TABLE_H */ 51