mirror of
https://github.com/linuxboot/heads.git
synced 2024-12-24 23:26:44 +00:00
coreboot-nitrokey: update dasharo to v1.7.2
* remove all previous coreboot patches (as they are already included) * to be investigated: linux trampoline patch * add new patch to hardcode sleep configuration * activate smmstore as dasharo vendor code requires it Signed-off-by: Markus Meissner <coder@safemailbox.de>
This commit is contained in:
parent
25d7b06063
commit
65abba9946
@ -560,7 +560,7 @@ CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000
|
|||||||
# CONFIG_ELOG is not set
|
# CONFIG_ELOG is not set
|
||||||
CONFIG_CACHE_MRC_SETTINGS=y
|
CONFIG_CACHE_MRC_SETTINGS=y
|
||||||
CONFIG_MRC_SETTINGS_PROTECT=y
|
CONFIG_MRC_SETTINGS_PROTECT=y
|
||||||
# CONFIG_SMMSTORE is not set
|
CONFIG_SMMSTORE=y
|
||||||
CONFIG_SPI_FLASH=y
|
CONFIG_SPI_FLASH=y
|
||||||
CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y
|
CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y
|
||||||
CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y
|
CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y
|
||||||
|
@ -560,7 +560,7 @@ CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000
|
|||||||
# CONFIG_ELOG is not set
|
# CONFIG_ELOG is not set
|
||||||
CONFIG_CACHE_MRC_SETTINGS=y
|
CONFIG_CACHE_MRC_SETTINGS=y
|
||||||
CONFIG_MRC_SETTINGS_PROTECT=y
|
CONFIG_MRC_SETTINGS_PROTECT=y
|
||||||
# CONFIG_SMMSTORE is not set
|
CONFIG_SMMSTORE=y
|
||||||
CONFIG_SPI_FLASH=y
|
CONFIG_SPI_FLASH=y
|
||||||
CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y
|
CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y
|
||||||
CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y
|
CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y
|
||||||
|
@ -88,7 +88,7 @@ $(eval $(call coreboot_module,purism,))
|
|||||||
#Nitrokey nv41/ns50 are based on Dasharo coreboot port,
|
#Nitrokey nv41/ns50 are based on Dasharo coreboot port,
|
||||||
# with patches staging under coreboot-clevo_release
|
# with patches staging under coreboot-clevo_release
|
||||||
coreboot-nitrokey_repo := https://github.com/dasharo/coreboot
|
coreboot-nitrokey_repo := https://github.com/dasharo/coreboot
|
||||||
coreboot-nitrokey_commit_hash := ae10b20f5c6abc9c23f709b65c46be6525da8c13
|
coreboot-nitrokey_commit_hash := 1bcb338682b612cfcca8bba02846f78139b2e0c8
|
||||||
coreboot-nitrokey_patch_version := clevo_release
|
coreboot-nitrokey_patch_version := clevo_release
|
||||||
#We use clevo_release's crossgcc for now, unshared but between nitropad nv41/ns50
|
#We use clevo_release's crossgcc for now, unshared but between nitropad nv41/ns50
|
||||||
$(eval $(call coreboot_module,nitrokey,))
|
$(eval $(call coreboot_module,nitrokey,))
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
From 6328eebb101fd0ded7168e1377da6a1a82a8e2da Mon Sep 17 00:00:00 2001
|
|
||||||
From: Markus Meissner <coder@safemailbox.de>
|
|
||||||
Date: Wed, 19 Jul 2023 20:36:57 +0200
|
|
||||||
Subject: [PATCH] change acpica-unix2 location to a mirror
|
|
||||||
|
|
||||||
---
|
|
||||||
util/crossgcc/buildgcc | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc
|
|
||||||
index 03c24da1be9..8880c89ea66 100755
|
|
||||||
--- a/util/crossgcc/buildgcc
|
|
||||||
+++ b/util/crossgcc/buildgcc
|
|
||||||
@@ -52,7 +52,7 @@ MPFR_ARCHIVE="https://ftpmirror.gnu.org/mpfr/mpfr-${MPFR_VERSION}.tar.xz"
|
|
||||||
MPC_ARCHIVE="https://ftpmirror.gnu.org/mpc/mpc-${MPC_VERSION}.tar.gz"
|
|
||||||
GCC_ARCHIVE="https://ftpmirror.gnu.org/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.xz"
|
|
||||||
BINUTILS_ARCHIVE="https://ftpmirror.gnu.org/binutils/binutils-${BINUTILS_VERSION}.tar.xz"
|
|
||||||
-IASL_ARCHIVE="https://acpica.org/sites/acpica/files/acpica-unix2-${IASL_VERSION}.tar.gz"
|
|
||||||
+IASL_ARCHIVE="https://gsdview.appspot.com/chromeos-localmirror/distfiles/acpica-unix2-${IASL_VERSION}.tar.gz"
|
|
||||||
# CLANG toolchain archive locations
|
|
||||||
LLVM_ARCHIVE="https://github.com/llvm/llvm-project/releases/download/llvmorg-${CLANG_VERSION}/llvm-${CLANG_VERSION}.src.tar.xz"
|
|
||||||
CLANG_ARCHIVE="https://github.com/llvm/llvm-project/releases/download/llvmorg-${CLANG_VERSION}/clang-${CLANG_VERSION}.src.tar.xz"
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
|||||||
|
diff -ur dasharo_cb.org/src/vendorcode/dasharo/options.c dasharo_cb/src/vendorcode/dasharo/options.c
|
||||||
|
--- dasharo_cb.org/src/vendorcode/dasharo/options.c 2023-12-18 21:57:46.915582991 +0100
|
||||||
|
+++ dasharo_cb/src/vendorcode/dasharo/options.c 2023-12-19 19:16:13.077019389 +0100
|
||||||
|
@@ -189,7 +189,12 @@
|
||||||
|
|
||||||
|
uint8_t get_sleep_type_option(void)
|
||||||
|
{
|
||||||
|
+
|
||||||
|
+#if CONFIG(BOARD_NOVACUSTOM_NV4X_ADLP)
|
||||||
|
+ uint8_t sleep_type = SLEEP_TYPE_OPTION_S3;
|
||||||
|
+#else
|
||||||
|
uint8_t sleep_type = SLEEP_TYPE_OPTION_S0IX;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if (CONFIG(DRIVERS_EFI_VARIABLE_STORE))
|
||||||
|
read_u8_var("SleepType", &sleep_type);
|
@ -1,150 +0,0 @@
|
|||||||
From 4fafe82b67dfe6919fe7be93459083549aac9f25 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nico Huber <nico.h@gmx.de>
|
|
||||||
Date: Fri, 14 Jul 2023 00:09:00 +0200
|
|
||||||
Subject: [PATCH] Center bootsplash on bigger framebuffers
|
|
||||||
|
|
||||||
In the JPEG decoder, use `bytes_per_line` instead of `width` for
|
|
||||||
address calculations, to allow for bigger framebuffers. When
|
|
||||||
calling jpeg_decode(), add an offset to the framebuffer address
|
|
||||||
so the picture gets centered.
|
|
||||||
|
|
||||||
Change-Id: I0174bdccfaad425e708a5fa50bcb28a1b98a23f7
|
|
||||||
Signed-off-by: Nico Huber <nico.h@gmx.de>
|
|
||||||
---
|
|
||||||
|
|
||||||
diff --git a/src/include/bootsplash.h b/src/include/bootsplash.h
|
|
||||||
index 10da5aa..9d1bae3 100644
|
|
||||||
--- a/src/include/bootsplash.h
|
|
||||||
+++ b/src/include/bootsplash.h
|
|
||||||
@@ -12,7 +12,8 @@
|
|
||||||
* and >0 on jpeg errors.
|
|
||||||
*/
|
|
||||||
void set_bootsplash(unsigned char *framebuffer, unsigned int x_resolution,
|
|
||||||
- unsigned int y_resolution, unsigned int fb_resolution);
|
|
||||||
+ unsigned int y_resolution, unsigned int bytes_per_line,
|
|
||||||
+ unsigned int fb_resolution);
|
|
||||||
|
|
||||||
|
|
||||||
void bmp_load_logo(uint32_t *logo_ptr, uint32_t *logo_size);
|
|
||||||
diff --git a/src/lib/bootsplash.c b/src/lib/bootsplash.c
|
|
||||||
index 0eb94dc..3ab11ac 100644
|
|
||||||
--- a/src/lib/bootsplash.c
|
|
||||||
+++ b/src/lib/bootsplash.c
|
|
||||||
@@ -11,7 +11,8 @@
|
|
||||||
|
|
||||||
|
|
||||||
void set_bootsplash(unsigned char *framebuffer, unsigned int x_resolution,
|
|
||||||
- unsigned int y_resolution, unsigned int fb_resolution)
|
|
||||||
+ unsigned int y_resolution, unsigned int bytes_per_line,
|
|
||||||
+ unsigned int fb_resolution)
|
|
||||||
{
|
|
||||||
printk(BIOS_INFO, "Setting up bootsplash in %dx%d@%d\n", x_resolution, y_resolution,
|
|
||||||
fb_resolution);
|
|
||||||
@@ -27,9 +28,20 @@
|
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "Bootsplash image resolution: %dx%d\n", image_width, image_height);
|
|
||||||
|
|
||||||
+ if (image_width > x_resolution || image_height > y_resolution) {
|
|
||||||
+ printk(BIOS_NOTICE, "Bootsplash image can't fit framebuffer.\n");
|
|
||||||
+ cbfs_unmap(jpeg);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* center image: */
|
|
||||||
+ framebuffer += (y_resolution - image_height) / 2 * bytes_per_line +
|
|
||||||
+ (x_resolution - image_width) / 2 * (fb_resolution / 8);
|
|
||||||
+
|
|
||||||
decdata = malloc(sizeof(*decdata));
|
|
||||||
- int ret = jpeg_decode(jpeg, framebuffer, x_resolution, y_resolution, fb_resolution,
|
|
||||||
- decdata);
|
|
||||||
+ int ret = jpeg_decode(jpeg, framebuffer, image_width, image_height,
|
|
||||||
+ bytes_per_line, fb_resolution, decdata);
|
|
||||||
+ free(decdata);
|
|
||||||
cbfs_unmap(jpeg);
|
|
||||||
if (ret != 0) {
|
|
||||||
printk(BIOS_ERR, "Bootsplash could not be decoded. jpeg_decode returned %d.\n",
|
|
||||||
diff --git a/src/lib/coreboot_table.c b/src/lib/coreboot_table.c
|
|
||||||
index bee389d..800d2d4 100644
|
|
||||||
--- a/src/lib/coreboot_table.c
|
|
||||||
+++ b/src/lib/coreboot_table.c
|
|
||||||
@@ -155,8 +155,9 @@
|
|
||||||
uint8_t *fb_ptr = (uint8_t *)(uintptr_t)framebuffer->physical_address;
|
|
||||||
unsigned int width = framebuffer->x_resolution;
|
|
||||||
unsigned int height = framebuffer->y_resolution;
|
|
||||||
+ unsigned int bytes_per_line = framebuffer->bytes_per_line;
|
|
||||||
unsigned int depth = framebuffer->bits_per_pixel;
|
|
||||||
- set_bootsplash(fb_ptr, width, height, depth);
|
|
||||||
+ set_bootsplash(fb_ptr, width, height, bytes_per_line, depth);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/lib/jpeg.c b/src/lib/jpeg.c
|
|
||||||
index b3d4c89..ed4377f 100644
|
|
||||||
--- a/src/lib/jpeg.c
|
|
||||||
+++ b/src/lib/jpeg.c
|
|
||||||
@@ -267,7 +267,8 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
int jpeg_decode(unsigned char *buf, unsigned char *pic,
|
|
||||||
- int width, int height, int depth, struct jpeg_decdata *decdata)
|
|
||||||
+ int width, int height, int bytes_per_line, int depth,
|
|
||||||
+ struct jpeg_decdata *decdata)
|
|
||||||
{
|
|
||||||
int i, j, m, tac, tdc;
|
|
||||||
int mcusx, mcusy, mx, my;
|
|
||||||
@@ -382,19 +383,19 @@
|
|
||||||
|
|
||||||
switch (depth) {
|
|
||||||
case 32:
|
|
||||||
- col221111_32(decdata->out, pic
|
|
||||||
- + (my * 16 * mcusx + mx) * 16 * 4,
|
|
||||||
- mcusx * 16 * 4);
|
|
||||||
+ col221111_32(decdata->out,
|
|
||||||
+ pic + my * 16 * bytes_per_line + mx * 16 * 4,
|
|
||||||
+ bytes_per_line);
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
- col221111(decdata->out, pic
|
|
||||||
- + (my * 16 * mcusx + mx) * 16 * 3,
|
|
||||||
- mcusx * 16 * 3);
|
|
||||||
+ col221111(decdata->out,
|
|
||||||
+ pic + my * 16 * bytes_per_line + mx * 16 * 3,
|
|
||||||
+ bytes_per_line);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
- col221111_16(decdata->out, pic
|
|
||||||
- + (my * 16 * mcusx + mx) * (16 * 2),
|
|
||||||
- mcusx * (16 * 2));
|
|
||||||
+ col221111_16(decdata->out,
|
|
||||||
+ pic + my * 16 * bytes_per_line + mx * 16 * 2,
|
|
||||||
+ bytes_per_line);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return ERR_DEPTH_MISMATCH;
|
|
||||||
diff --git a/src/lib/jpeg.h b/src/lib/jpeg.h
|
|
||||||
index 237da9f..fdb2def 100644
|
|
||||||
--- a/src/lib/jpeg.h
|
|
||||||
+++ b/src/lib/jpeg.h
|
|
||||||
@@ -31,8 +31,7 @@
|
|
||||||
int dquant[3][64];
|
|
||||||
};
|
|
||||||
|
|
||||||
-int jpeg_decode(unsigned char *, unsigned char *, int, int, int,
|
|
||||||
- struct jpeg_decdata *);
|
|
||||||
+int jpeg_decode(unsigned char *, unsigned char *, int, int, int, int, struct jpeg_decdata *);
|
|
||||||
void jpeg_fetch_size(unsigned char *buf, int *width, int *height);
|
|
||||||
int jpeg_check_size(unsigned char *, int, int);
|
|
||||||
|
|
||||||
diff --git a/util/fuzz-tests/jpeg-test.c b/util/fuzz-tests/jpeg-test.c
|
|
||||||
index 69e6c8d..da21824 100644
|
|
||||||
--- a/util/fuzz-tests/jpeg-test.c
|
|
||||||
+++ b/util/fuzz-tests/jpeg-test.c
|
|
||||||
@@ -30,7 +30,7 @@
|
|
||||||
jpeg_fetch_size(buf, &width, &height);
|
|
||||||
//printf("width: %d, height: %d\n", width, height);
|
|
||||||
char *pic = malloc(depth / 8 * width * height);
|
|
||||||
- int ret = jpeg_decode(buf, pic, width, height, depth, decdata);
|
|
||||||
+ int ret = jpeg_decode(buf, pic, width, height, width * depth / 8, depth, decdata);
|
|
||||||
//printf("ret: %x\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
diff -u --recursive coreboot-git.org/src/mainboard/clevo/adl-p/ramstage.c coreboot-git/src/mainboard/clevo/adl-p/ramstage.c
|
|
||||||
--- coreboot-git.org/src/mainboard/clevo/adl-p/ramstage.c 2023-09-25 13:59:42.737397657 +0200
|
|
||||||
+++ coreboot-git/src/mainboard/clevo/adl-p/ramstage.c 2023-09-25 14:00:19.384660682 +0200
|
|
||||||
@@ -50,7 +50,7 @@
|
|
||||||
#define SLEEP_TYPE_OPTION_S0IX 0
|
|
||||||
#define SLEEP_TYPE_OPTION_S3 1
|
|
||||||
|
|
||||||
-#define SLEEP_TYPE_OPTION_DEFAULT SLEEP_TYPE_OPTION_S0IX
|
|
||||||
+#define SLEEP_TYPE_OPTION_DEFAULT SLEEP_TYPE_OPTION_S3
|
|
||||||
|
|
||||||
const char *smbios_system_sku(void)
|
|
||||||
{
|
|
@ -1,99 +0,0 @@
|
|||||||
From 295f6bf8d4bc93d1aedef218f14c8f20f101a1af Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nico Huber <nico.h@gmx.de>
|
|
||||||
Date: Fri, 14 Jul 2023 14:20:39 +0200
|
|
||||||
Subject: [PATCH] linux_trampoline: Handle coreboot framebuffer
|
|
||||||
|
|
||||||
Translate the coreboot framebuffer info from coreboot tables to
|
|
||||||
the Linux zero page.
|
|
||||||
|
|
||||||
Tested in QEMU/Q35 with a kernel w/ efifb enabled.
|
|
||||||
|
|
||||||
Change-Id: I2447b2366df8dd8ffe741c943de544d8b4d02dff
|
|
||||||
Signed-off-by: Nico Huber <nico.h@gmx.de>
|
|
||||||
Co-authored-by: Bill XIE <persmule@hardenedlinux.org>
|
|
||||||
Reviewed-on: https://review.coreboot.org/c/coreboot/+/76431
|
|
||||||
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
|
|
||||||
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
|
|
||||||
Reviewed-by: Tim Wawrzynczak <inforichland@gmail.com>
|
|
||||||
Reviewed-by: Samuel Holland <samuel@sholland.org>
|
|
||||||
Reviewed-by: Bill XIE <persmule@hardenedlinux.org>
|
|
||||||
---
|
|
||||||
|
|
||||||
diff --git a/util/cbfstool/linux_trampoline.S b/util/cbfstool/linux_trampoline.S
|
|
||||||
index 767c8be..d36e60d 100644
|
|
||||||
--- a/util/cbfstool/linux_trampoline.S
|
|
||||||
+++ b/util/cbfstool/linux_trampoline.S
|
|
||||||
@@ -102,7 +102,36 @@
|
|
||||||
.testFramebuffer:
|
|
||||||
cmp $CB_TAG_FRAMEBUFFER, (%ebx)
|
|
||||||
jne .endScan
|
|
||||||
-/* TODO: handle framebuffer tag */
|
|
||||||
+
|
|
||||||
+cmpl $0, 0x0c(%ebx) /* check if upper 32-bit of framebuffer address are 0 */
|
|
||||||
+jne .endScan
|
|
||||||
+
|
|
||||||
+mov $LINUX_PARAM_LOC, %edi /* translate the framebuffer entry into Linux' struct screen_info */
|
|
||||||
+mov 0x08(%ebx), %eax /* physical_address */
|
|
||||||
+mov %eax, 0x18(%edi) /* -> lfb_base */
|
|
||||||
+mov 0x10(%ebx), %eax /* x_resolution */
|
|
||||||
+mov %ax, 0x12(%edi) /* -> lfb_width */
|
|
||||||
+mov 0x14(%ebx), %eax /* y_resolution */
|
|
||||||
+mov %ax, 0x14(%edi) /* -> lfb_height */
|
|
||||||
+mov 0x18(%ebx), %edx /* bytes_per_line */
|
|
||||||
+mov %dx, 0x24(%edi) /* -> lfb_linelength */
|
|
||||||
+
|
|
||||||
+mul %edx /* bytes_per_line * y_resolution */
|
|
||||||
+mov %eax, 0x1c(%edi) /* -> lfb_size */
|
|
||||||
+
|
|
||||||
+movzbw 0x1c(%ebx), %ax /* bits_per_pixel */
|
|
||||||
+mov %ax, 0x16(%edi) /* -> lfb_depth */
|
|
||||||
+
|
|
||||||
+mov $4, %esi /* Copy 4 color components' pos and size, each 1 byte. */
|
|
||||||
+1:
|
|
||||||
+mov 0x1b(%ebx, %esi, 2), %ax
|
|
||||||
+rol %ax /* Order is reversed for Linux, hence swap. */
|
|
||||||
+mov %ax, 0x24(%edi, %esi, 2)
|
|
||||||
+dec %esi
|
|
||||||
+jnz 1b
|
|
||||||
+
|
|
||||||
+#define LFB_EFI_SIMPLE 0x70 /* VIDEO_TYPE_EFI in Linux */
|
|
||||||
+movb $LFB_EFI_SIMPLE, 0x0f(%edi) /* -> orig_video_isVGA */
|
|
||||||
|
|
||||||
.endScan:
|
|
||||||
add 4(%ebx), %ebx
|
|
||||||
diff --git a/util/cbfstool/linux_trampoline.c b/util/cbfstool/linux_trampoline.c
|
|
||||||
index 46bb800..87c595a 100644
|
|
||||||
--- a/util/cbfstool/linux_trampoline.c
|
|
||||||
+++ b/util/cbfstool/linux_trampoline.c
|
|
||||||
@@ -3,18 +3,23 @@
|
|
||||||
unsigned char trampoline[] = {
|
|
||||||
0xfc, 0x31, 0xd2, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x01, 0x00, 0x01, 0xcb, 0x8b,
|
|
||||||
0x01, 0x3d, 0x4c, 0x42, 0x49, 0x4f, 0x74, 0x07, 0x83, 0xc1, 0x10, 0x39, 0xcb, 0x75, 0xe9, 0x39,
|
|
||||||
- 0xcb, 0x0f, 0x84, 0xc5, 0x00, 0x00, 0x00, 0x8b, 0x59, 0x04, 0x01, 0xcb, 0x8b, 0x49, 0x14, 0x83,
|
|
||||||
+ 0xcb, 0x0f, 0x84, 0x12, 0x01, 0x00, 0x00, 0x8b, 0x59, 0x04, 0x01, 0xcb, 0x8b, 0x49, 0x14, 0x83,
|
|
||||||
0x3b, 0x11, 0x75, 0x05, 0x8b, 0x4b, 0x08, 0xeb, 0xcf, 0x83, 0x3b, 0x01, 0x75, 0x53, 0x8b, 0x43,
|
|
||||||
0x04, 0x83, 0xe8, 0x08, 0xc1, 0xe8, 0x02, 0x3d, 0xa0, 0x00, 0x00, 0x00, 0x7e, 0x05, 0xb8, 0xa0,
|
|
||||||
0x00, 0x00, 0x00, 0x89, 0xc6, 0xbf, 0x05, 0x00, 0x00, 0x00, 0xf7, 0xf7, 0xa3, 0xe8, 0x01, 0x09,
|
|
||||||
0x00, 0x89, 0xf0, 0x91, 0x8d, 0x73, 0x08, 0xbf, 0xd0, 0x02, 0x09, 0x00, 0xf3, 0xa5, 0x91, 0xa1,
|
|
||||||
- 0xe8, 0x01, 0x09, 0x00, 0xbf, 0xd0, 0x02, 0x09, 0x00, 0x83, 0xf8, 0x00, 0x74, 0x2f, 0x83, 0x7f,
|
|
||||||
+ 0xe8, 0x01, 0x09, 0x00, 0xbf, 0xd0, 0x02, 0x09, 0x00, 0x83, 0xf8, 0x00, 0x74, 0x7c, 0x83, 0x7f,
|
|
||||||
0x10, 0x0c, 0x7e, 0x07, 0xc7, 0x47, 0x10, 0x02, 0x00, 0x00, 0x00, 0x48, 0x83, 0xc7, 0x14, 0xeb,
|
|
||||||
0xe8, 0x83, 0x3b, 0x43, 0x75, 0x12, 0x8b, 0x43, 0x08, 0xa3, 0x70, 0x00, 0x09, 0x00, 0x8b, 0x43,
|
|
||||||
- 0x0c, 0xa3, 0x74, 0x00, 0x09, 0x00, 0xeb, 0x05, 0x83, 0x3b, 0x12, 0x75, 0x00, 0x03, 0x5b, 0x04,
|
|
||||||
- 0x49, 0x0f, 0x85, 0x78, 0xff, 0xff, 0xff, 0xb8, 0x00, 0x00, 0x04, 0x00, 0xc7, 0x40, 0x10, 0xff,
|
|
||||||
- 0xff, 0x00, 0x00, 0xc7, 0x40, 0x14, 0x00, 0x9b, 0xcf, 0x00, 0xc7, 0x40, 0x18, 0xff, 0xff, 0x00,
|
|
||||||
- 0x00, 0xc7, 0x40, 0x1c, 0x00, 0x93, 0xcf, 0x00, 0xc6, 0x00, 0x2b, 0x89, 0x40, 0x02, 0x0f, 0x01,
|
|
||||||
- 0x10, 0xbe, 0x00, 0x00, 0x09, 0x00, 0xff, 0x25, 0x14, 0x02, 0x09, 0x00, 0xf4, 0xeb, 0xfd
|
|
||||||
+ 0x0c, 0xa3, 0x74, 0x00, 0x09, 0x00, 0xeb, 0x52, 0x83, 0x3b, 0x12, 0x75, 0x4d, 0x83, 0x7b, 0x0c,
|
|
||||||
+ 0x00, 0x75, 0x47, 0xbf, 0x00, 0x00, 0x09, 0x00, 0x8b, 0x43, 0x08, 0x89, 0x47, 0x18, 0x8b, 0x43,
|
|
||||||
+ 0x10, 0x66, 0x89, 0x47, 0x12, 0x8b, 0x43, 0x14, 0x66, 0x89, 0x47, 0x14, 0x8b, 0x53, 0x18, 0x66,
|
|
||||||
+ 0x89, 0x57, 0x24, 0xf7, 0xe2, 0x89, 0x47, 0x1c, 0x66, 0x0f, 0xb6, 0x43, 0x1c, 0x66, 0x89, 0x47,
|
|
||||||
+ 0x16, 0xbe, 0x04, 0x00, 0x00, 0x00, 0x66, 0x8b, 0x44, 0x73, 0x1b, 0x66, 0xd1, 0xc0, 0x66, 0x89,
|
|
||||||
+ 0x44, 0x77, 0x24, 0x4e, 0x75, 0xf0, 0xc6, 0x47, 0x0f, 0x70, 0x03, 0x5b, 0x04, 0x49, 0x0f, 0x85,
|
|
||||||
+ 0x2b, 0xff, 0xff, 0xff, 0xb8, 0x00, 0x00, 0x04, 0x00, 0xc7, 0x40, 0x10, 0xff, 0xff, 0x00, 0x00,
|
|
||||||
+ 0xc7, 0x40, 0x14, 0x00, 0x9b, 0xcf, 0x00, 0xc7, 0x40, 0x18, 0xff, 0xff, 0x00, 0x00, 0xc7, 0x40,
|
|
||||||
+ 0x1c, 0x00, 0x93, 0xcf, 0x00, 0xc6, 0x00, 0x2b, 0x89, 0x40, 0x02, 0x0f, 0x01, 0x10, 0xbe, 0x00,
|
|
||||||
+ 0x00, 0x09, 0x00, 0xff, 0x25, 0x14, 0x02, 0x09, 0x00, 0xf4, 0xeb, 0xfd
|
|
||||||
};
|
|
||||||
-unsigned int trampoline_len = 239;
|
|
||||||
+unsigned int trampoline_len = 316;
|
|
@ -1,136 +0,0 @@
|
|||||||
From 0c9e832ea1fe321737b1980588407f283ec92ef2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nico Huber <nico.h@gmx.de>
|
|
||||||
Date: Sun, 16 Jul 2023 19:24:13 +0200
|
|
||||||
Subject: [PATCH] bootsplash: Add ImageMagick voodoo
|
|
||||||
|
|
||||||
Ta-da!
|
|
||||||
|
|
||||||
(commit message tbd)
|
|
||||||
|
|
||||||
Change-Id: I564e0d89fb46503ff4c11e095726616700009968
|
|
||||||
Signed-off-by: Nico Huber <nico.h@gmx.de>
|
|
||||||
---
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 0d38ea3..5e1dcee 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -357,6 +357,24 @@
|
|
||||||
$(eval DEPENDENCIES += $(2).d)
|
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
+# Convert image to YCC 4:2:0 JPEG
|
|
||||||
+# arg1: image input file
|
|
||||||
+# arg2: output jpg
|
|
||||||
+cbfs-files-processor-jpg420= \
|
|
||||||
+ $(eval $(2): $(1) $(KCONFIG_AUTOCONFIG); \
|
|
||||||
+ printf " CONVERT $$<\n"; \
|
|
||||||
+ convert $$< $(BOOTSPLASH_RESIZE-y) $(BOOTSPLASH_COLORSWAP-y) \
|
|
||||||
+ -quality $(CONFIG_BOOTSPLASH_CONVERT_QUALITY)% \
|
|
||||||
+ -interlace none -colorspace YCC -sampling-factor 4:2:0 \
|
|
||||||
+ jpg:$$@)
|
|
||||||
+BOOTSPLASH_RESOLUTION = $(shell res=$(CONFIG_BOOTSPLASH_CONVERT_RESOLUTION); \
|
|
||||||
+ echo $$(($${res%%x*}/16*16))x$$(($${res##*x}/16*16)) 2>/dev/null)
|
|
||||||
+BOOTSPLASH_RESIZE-$(CONFIG_BOOTSPLASH_CONVERT_RESIZE) = \
|
|
||||||
+ -resize $(BOOTSPLASH_RESOLUTION) -background black \
|
|
||||||
+ -gravity center -extent $(BOOTSPLASH_RESOLUTION)
|
|
||||||
+BOOTSPLASH_COLORSWAP-$(CONFIG_BOOTSPLASH_CONVERT_COLORSWAP) := -channel-fx 'red<=>blue'
|
|
||||||
+
|
|
||||||
+#######################################################################
|
|
||||||
# Add handler for arbitrary files in CBFS
|
|
||||||
$(call add-special-class,cbfs-files)
|
|
||||||
cbfs-files-handler= \
|
|
||||||
@@ -1281,10 +1299,16 @@
|
|
||||||
build_info-file := $(obj)/build_info
|
|
||||||
build_info-type := raw
|
|
||||||
|
|
||||||
+ifeq ($(CONFIG_BOOTSPLASH_CONVERT),y)
|
|
||||||
+cbfs-files-$(CONFIG_BOOTSPLASH_IMAGE) += bootsplash.jpg
|
|
||||||
+bootsplash.jpg-file := $(call strip_quotes,$(CONFIG_BOOTSPLASH_FILE)):jpg420
|
|
||||||
+bootsplash.jpg-type := bootsplash
|
|
||||||
+else
|
|
||||||
BOOTSPLASH_SUFFIX=$(suffix $(call strip_quotes,$(CONFIG_BOOTSPLASH_FILE)))
|
|
||||||
cbfs-files-$(CONFIG_BOOTSPLASH_IMAGE) += bootsplash$(BOOTSPLASH_SUFFIX)
|
|
||||||
bootsplash$(BOOTSPLASH_SUFFIX)-file := $(call strip_quotes,$(CONFIG_BOOTSPLASH_FILE))
|
|
||||||
bootsplash$(BOOTSPLASH_SUFFIX)-type := bootsplash
|
|
||||||
+endif
|
|
||||||
|
|
||||||
# Ensure that no payload segment overlaps with memory regions used by ramstage
|
|
||||||
# (not for x86 since it can relocate itself in that case)
|
|
||||||
diff --git a/src/Kconfig b/src/Kconfig
|
|
||||||
index f5ba4fc..e906130 100644
|
|
||||||
--- a/src/Kconfig
|
|
||||||
+++ b/src/Kconfig
|
|
||||||
@@ -447,7 +447,52 @@
|
|
||||||
# Default value set at the end of the file
|
|
||||||
help
|
|
||||||
The path and filename of the file to use as graphical bootsplash
|
|
||||||
- screen. The file format has to be jpg.
|
|
||||||
+ screen. The file format has to be JPEG with YCC 4:2:0 color sampling
|
|
||||||
+ unless converted with "Pre-process bootsplash file with ImageMagick".
|
|
||||||
+
|
|
||||||
+ The image can only be displayed by coreboot if it's smaller or has
|
|
||||||
+ the same size as the framebuffer resolution. Width and height have
|
|
||||||
+ to be a multiple of 16 pixels.
|
|
||||||
+
|
|
||||||
+ Setting these constraints allows a leaner implementation in coreboot.
|
|
||||||
+ The minimum necessary ImageMagick command line seems to be:
|
|
||||||
+ $ convert input.img -colorspace YCC -sampling-factor 4:2:0 bootsplash.jpg
|
|
||||||
+
|
|
||||||
+config BOOTSPLASH_CONVERT
|
|
||||||
+ bool "Pre-process bootsplash file with ImageMagick"
|
|
||||||
+ depends on BOOTSPLASH_IMAGE
|
|
||||||
+ # Default value set at the end of the file
|
|
||||||
+ help
|
|
||||||
+ Use ImageMagick (`convert` program) to convert a bootsplash image
|
|
||||||
+ to the supported JPEG format.
|
|
||||||
+
|
|
||||||
+config BOOTSPLASH_CONVERT_QUALITY
|
|
||||||
+ int "Bootsplash JPEG target quality (%)"
|
|
||||||
+ depends on BOOTSPLASH_CONVERT
|
|
||||||
+ range 1 100
|
|
||||||
+ # Default value set at the end of the file
|
|
||||||
+
|
|
||||||
+config BOOTSPLASH_CONVERT_RESIZE
|
|
||||||
+ bool "Resize bootsplash image"
|
|
||||||
+ depends on BOOTSPLASH_CONVERT
|
|
||||||
+ help
|
|
||||||
+ Resize the image to the given resolution. Aspect ratio will be kept,
|
|
||||||
+ adding black bars as necessary.
|
|
||||||
+
|
|
||||||
+config BOOTSPLASH_CONVERT_RESOLUTION
|
|
||||||
+ string "Bootsplash image target size"
|
|
||||||
+ depends on BOOTSPLASH_CONVERT_RESIZE
|
|
||||||
+ # Default value set at the end of the file
|
|
||||||
+ help
|
|
||||||
+ Target image resolution given as <width>x<height>, e.g. 1024x768.
|
|
||||||
+ Values not divisible by 16 will be rounded down.
|
|
||||||
+
|
|
||||||
+config BOOTSPLASH_CONVERT_COLORSWAP
|
|
||||||
+ bool "Swap red and blue color channels"
|
|
||||||
+ depends on BOOTSPLASH_CONVERT
|
|
||||||
+ help
|
|
||||||
+ The JPEG decoder currently ignores the framebuffer color order.
|
|
||||||
+ If your colors seem all wrong, try this option.
|
|
||||||
|
|
||||||
config FW_CONFIG
|
|
||||||
bool "Firmware Configuration Probing"
|
|
||||||
@@ -1444,6 +1489,18 @@
|
|
||||||
depends on BOOTSPLASH_IMAGE
|
|
||||||
default "bootsplash.jpg"
|
|
||||||
|
|
||||||
+config BOOTSPLASH_CONVERT
|
|
||||||
+ depends on BOOTSPLASH_IMAGE
|
|
||||||
+ default y
|
|
||||||
+
|
|
||||||
+config BOOTSPLASH_CONVERT_QUALITY
|
|
||||||
+ depends on BOOTSPLASH_CONVERT
|
|
||||||
+ default 70
|
|
||||||
+
|
|
||||||
+config BOOTSPLASH_CONVERT_RESOLUTION
|
|
||||||
+ depends on BOOTSPLASH_CONVERT_RESIZE
|
|
||||||
+ default "1024x768"
|
|
||||||
+
|
|
||||||
config CBFS_SIZE
|
|
||||||
default ROM_SIZE
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user