Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license v2 0 as published by the free software foundation this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 23 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Alexios Zavras <alexios.zavras@intel.com> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190529141901.115786599@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
87 lines
1.8 KiB
C
87 lines
1.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* coreboot_table.h
|
|
*
|
|
* Internal header for coreboot table access.
|
|
*
|
|
* Copyright 2014 Gerd Hoffmann <kraxel@redhat.com>
|
|
* Copyright 2017 Google Inc.
|
|
* Copyright 2017 Samuel Holland <samuel@sholland.org>
|
|
*/
|
|
|
|
#ifndef __COREBOOT_TABLE_H
|
|
#define __COREBOOT_TABLE_H
|
|
|
|
#include <linux/io.h>
|
|
|
|
/* Coreboot table header structure */
|
|
struct coreboot_table_header {
|
|
char signature[4];
|
|
u32 header_bytes;
|
|
u32 header_checksum;
|
|
u32 table_bytes;
|
|
u32 table_checksum;
|
|
u32 table_entries;
|
|
};
|
|
|
|
/* List of coreboot entry structures that is used */
|
|
/* Generic */
|
|
struct coreboot_table_entry {
|
|
u32 tag;
|
|
u32 size;
|
|
};
|
|
|
|
/* Points to a CBMEM entry */
|
|
struct lb_cbmem_ref {
|
|
u32 tag;
|
|
u32 size;
|
|
|
|
u64 cbmem_addr;
|
|
};
|
|
|
|
/* Describes framebuffer setup by coreboot */
|
|
struct lb_framebuffer {
|
|
u32 tag;
|
|
u32 size;
|
|
|
|
u64 physical_address;
|
|
u32 x_resolution;
|
|
u32 y_resolution;
|
|
u32 bytes_per_line;
|
|
u8 bits_per_pixel;
|
|
u8 red_mask_pos;
|
|
u8 red_mask_size;
|
|
u8 green_mask_pos;
|
|
u8 green_mask_size;
|
|
u8 blue_mask_pos;
|
|
u8 blue_mask_size;
|
|
u8 reserved_mask_pos;
|
|
u8 reserved_mask_size;
|
|
};
|
|
|
|
/* A device, additionally with information from coreboot. */
|
|
struct coreboot_device {
|
|
struct device dev;
|
|
union {
|
|
struct coreboot_table_entry entry;
|
|
struct lb_cbmem_ref cbmem_ref;
|
|
struct lb_framebuffer framebuffer;
|
|
};
|
|
};
|
|
|
|
/* A driver for handling devices described in coreboot tables. */
|
|
struct coreboot_driver {
|
|
int (*probe)(struct coreboot_device *);
|
|
int (*remove)(struct coreboot_device *);
|
|
struct device_driver drv;
|
|
u32 tag;
|
|
};
|
|
|
|
/* Register a driver that uses the data from a coreboot table. */
|
|
int coreboot_driver_register(struct coreboot_driver *driver);
|
|
|
|
/* Unregister a driver that uses the data from a coreboot table. */
|
|
void coreboot_driver_unregister(struct coreboot_driver *driver);
|
|
|
|
#endif /* __COREBOOT_TABLE_H */
|