blob: becb605645fd7a971a16aa97d74b81e1a4ad5526 [file] [log] [blame]
Kyösti Mälkki4949a3d2021-01-09 20:38:43 +02001/* 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>
Shelley Chenfddf9162024-01-03 14:00:07 -08008#include <vendorcode/google/chromeos/chromeos.h>
Kyösti Mälkki4949a3d2021-01-09 20:38:43 +02009
10static const struct cbmem_entry *logo_entry;
11
Shelley Chenfddf9162024-01-03 14:00:07 -080012#if !CONFIG(HAVE_CUSTOM_BMP_LOGO)
13const char *bmp_logo_filename(void)
14{
15 return "logo.bmp";
16}
17#endif
18
Subrata Banik9c4d85d2024-04-02 08:00:14 +000019void *bmp_load_logo(size_t *logo_size)
Kyösti Mälkki4949a3d2021-01-09 20:38:43 +020020{
21 void *logo_buffer;
22
23 /* CBMEM is locked for S3 resume path. */
24 if (acpi_is_wakeup_s3())
Subrata Banik9c4d85d2024-04-02 08:00:14 +000025 return NULL;
Kyösti Mälkki4949a3d2021-01-09 20:38:43 +020026
27 logo_entry = cbmem_entry_add(CBMEM_ID_FSP_LOGO, 1 * MiB);
28 if (!logo_entry)
Subrata Banik9c4d85d2024-04-02 08:00:14 +000029 return NULL;
Kyösti Mälkki4949a3d2021-01-09 20:38:43 +020030
31 logo_buffer = cbmem_entry_start(logo_entry);
32 if (!logo_buffer)
Subrata Banik9c4d85d2024-04-02 08:00:14 +000033 return NULL;
Kyösti Mälkki4949a3d2021-01-09 20:38:43 +020034
Shelley Chenfddf9162024-01-03 14:00:07 -080035 *logo_size = cbfs_load(bmp_logo_filename(), logo_buffer, 1 * MiB);
Subrata Banik9c4d85d2024-04-02 08:00:14 +000036 if (*logo_size == 0)
37 return NULL;
38
39 return logo_buffer;
Kyösti Mälkki4949a3d2021-01-09 20:38:43 +020040}
41
42void bmp_release_logo(void)
43{
44 if (logo_entry)
45 cbmem_entry_remove(logo_entry);
46 logo_entry = NULL;
47}