43 *vbt_size = file_size;
79 if (
CONFIG(INTEL_GMA_SWSMISCI))
123 const optionrom_header_t *oprom;
124 const optionrom_pcir_t *pcir;
135 sizeof(opromsize)) !=
sizeof(opromsize) || !opromsize)
141 oprom =
rdev_mmap(&rd, 0,
sizeof(*oprom));
145 if (!oprom->pcir_offset || !oprom->vbt_offset) {
150 pcir =
rdev_mmap(&rd, oprom->pcir_offset,
sizeof(*pcir));
157 oprom->signature, pcir->vendor, pcir->classcode[0],
158 pcir->classcode[1], pcir->classcode[2]);
163 (pcir->signature != 0x52494350) ||
164 (pcir->classcode[0] != 0x00) ||
165 (pcir->classcode[1] != 0x00) ||
166 (pcir->classcode[2] != 0x03)) {
175 offset = oprom->vbt_offset;
178 (opromsize * 512) -
offset);
195 size_t vbt_data_size;
261 if (
CONFIG(INTEL_GMA_OPREGION_2_1))
262 return (
struct opregion_version) { .major = 2, .minor = 1 };
264 return (
struct opregion_version) { .major = 2, .minor = 0 };
274 return (vbt->hdr_vbt_size >
sizeof(
opregion->vbt.gvd1));
280 if (
header->opver.major > 2)
283 return header->opver.major >= 2 &&
header->opver.minor >= 1;
291 optionrom_vbt_t *vbt)
296 memcpy(ext_vbt, vbt, vbt->hdr_vbt_size);
302 opregion->mailbox3.rvda =
sizeof(*opregion);
306 opregion->mailbox3.rvds = vbt->hdr_vbt_size;
314 optionrom_vbt_t *vbt =
NULL;
315 size_t opregion_size =
sizeof(igd_opregion_t);
336 opregion_size += vbt->hdr_vbt_size;
347 sizeof(
opregion->header.signature));
367 opregion->header.size =
sizeof(igd_opregion_t) / 1024;
struct arm64_kernel_header header
static int acpi_is_wakeup_s3(void)
void * memcpy(void *dest, const void *src, size_t n)
void * memset(void *dstpp, int c, size_t len)
#define offsetof(TYPE, MEMBER)
cb_err
coreboot error codes
@ CB_ERR
Generic error code.
@ CB_SUCCESS
Call completed successfully.
static size_t cbfs_load(const char *name, void *buf, size_t size)
void * cbmem_add(u32 id, u64 size)
void * cbmem_find(u32 id)
#define CBMEM_ID_IGD_OPREGION
#define printk(level,...)
DEVTREE_CONST struct device * pcidev_on_root(uint8_t dev, uint8_t fn)
static struct region_device rdev
static __always_inline void pci_write_config32(const struct device *dev, u16 reg, u32 val)
static __always_inline u16 pci_read_config16(const struct device *dev, u16 reg)
static __always_inline void pci_write_config16(const struct device *dev, u16 reg, u16 val)
#define BIOS_INFO
BIOS_INFO - Expected events.
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
#define BIOS_WARNING
BIOS_WARNING - Bad configuration.
static enum cb_err locate_vbt_cbfs(struct region_device *rdev)
__weak const char * mainboard_vbt_filename(void)
static enum cb_err intel_gma_restore_opregion(void)
static void intel_gma_opregion_register(uintptr_t opregion)
static struct opregion_version opregion_get_version(void)
static void opregion_add_ext_vbt(igd_opregion_t *opregion, uint8_t *ext_vbt, optionrom_vbt_t *vbt)
static enum cb_err locate_vbt_vbios(const u8 *vbios, struct region_device *rdev)
static enum cb_err find_vbt_location(struct region_device *rdev)
void * locate_vbt(size_t *vbt_size)
static bool is_ext_vbt_required(igd_opregion_t *opregion, optionrom_vbt_t *vbt)
static size_t vbt_data_sz
static char vbt_data[CONFIG_VBT_DATA_SIZE_KB *KiB]
enum cb_err intel_gma_init_igd_opregion(void)
static enum cb_err vbt_validate(struct region_device *rdev)
static enum cb_err locate_vbt_vbios_cbfs(struct region_device *rdev)
static bool uses_relative_vbt_addr(opregion_header_t *header)
#define IGD_WORD_FIELD_VALID
#define IGD_BACKLIGHT_BRIGHTNESS
#define IGD_OPREGION_SIGNATURE
#define IGD_INITIAL_BRIGHTNESS
struct rom_header * pci_rom_probe(const struct device *dev)
int rdev_munmap(const struct region_device *rd, void *mapping)
static size_t region_device_sz(const struct region_device *rdev)
int rdev_chain_mem(struct region_device *child, const void *base, size_t size)
static void * rdev_mmap_full(const struct region_device *rd)
void * rdev_mmap(const struct region_device *rd, size_t offset, size_t size)
int rdev_chain(struct region_device *child, const struct region_device *parent, size_t offset, size_t size)
ssize_t rdev_readat(const struct region_device *rd, void *b, size_t offset, size_t size)
const struct smm_save_state_ops *legacy_ops __weak
typedef void(X86APIP X86EMU_intrFuncs)(int num)