/* SPDX-License-Identifier: GPL-2.0-only */ /* * coreboot_table.h * * Internal header for coreboot table access. * * Copyright 2014 Gerd Hoffmann <[email protected]> * Copyright 2017 Google Inc. * Copyright 2017 Samuel Holland <[email protected]> */ #ifndef __COREBOOT_TABLE_H #define __COREBOOT_TABLE_H #include <linux/device.h> #include <linux/mod_devicetable.h> /* Coreboot table header structure */ struct coreboot_table_header { … }; /* List of coreboot entry structures that is used */ /* Generic */ struct coreboot_table_entry { … }; /* Points to a CBMEM entry */ struct lb_cbmem_ref { … }; #define LB_TAG_CBMEM_ENTRY … /* Corresponds to LB_TAG_CBMEM_ENTRY */ struct lb_cbmem_entry { … }; /* Describes framebuffer setup by coreboot */ struct lb_framebuffer { … }; /* A device, additionally with information from coreboot. */ struct coreboot_device { … }; static inline struct coreboot_device *dev_to_coreboot_device(struct device *dev) { … } /* A driver for handling devices described in coreboot tables. */ struct coreboot_driver { … }; /* use a macro to avoid include chaining to get THIS_MODULE */ #define coreboot_driver_register(driver) … /* Register a driver that uses the data from a coreboot table. */ int __coreboot_driver_register(struct coreboot_driver *driver, struct module *owner); /* Unregister a driver that uses the data from a coreboot table. */ void coreboot_driver_unregister(struct coreboot_driver *driver); /* module_coreboot_driver() - Helper macro for drivers that don't do * anything special in module init/exit. This eliminates a lot of * boilerplate. Each module may only use this macro once, and * calling it replaces module_init() and module_exit() */ #define module_coreboot_driver(__coreboot_driver) … #endif /* __COREBOOT_TABLE_H */