coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
bmp_logo.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <acpi/acpi.h>
4 #include <bootsplash.h>
5 #include <cbfs.h>
6 #include <cbmem.h>
7 #include <stdint.h>
8 
9 static const struct cbmem_entry *logo_entry;
10 
11 void bmp_load_logo(uint32_t *logo_ptr, uint32_t *logo_size)
12 {
13  void *logo_buffer;
14 
15  /* CBMEM is locked for S3 resume path. */
16  if (acpi_is_wakeup_s3())
17  return;
18 
20  if (!logo_entry)
21  return;
22 
23  logo_buffer = cbmem_entry_start(logo_entry);
24  if (!logo_buffer)
25  return;
26 
27  *logo_size = cbfs_load("logo.bmp", logo_buffer, 1 * MiB);
28  if (*logo_size)
29  *logo_ptr = (uintptr_t)logo_buffer;
30 }
31 
32 void bmp_release_logo(void)
33 {
34  if (logo_entry)
36  logo_entry = NULL;
37 }
static int acpi_is_wakeup_s3(void)
Definition: acpi.h:9
void bmp_load_logo(uint32_t *logo_ptr, uint32_t *logo_size)
Definition: bmp_logo.c:11
static const struct cbmem_entry * logo_entry
Definition: bmp_logo.c:9
void bmp_release_logo(void)
Definition: bmp_logo.c:32
#define MiB
Definition: helpers.h:76
static size_t cbfs_load(const char *name, void *buf, size_t size)
Definition: cbfs.h:282
const struct cbmem_entry * cbmem_entry_add(u32 id, u64 size)
Definition: imd_cbmem.c:135
void * cbmem_entry_start(const struct cbmem_entry *entry)
Definition: imd_cbmem.c:190
int cbmem_entry_remove(const struct cbmem_entry *entry)
Definition: imd_cbmem.c:180
#define CBMEM_ID_FSP_LOGO
Definition: cbmem_id.h:79
#define NULL
Definition: stddef.h:19
unsigned int uint32_t
Definition: stdint.h:14
unsigned long uintptr_t
Definition: stdint.h:21