From 9192b13bc88df9c0635d162c543f89efac66b188 Mon Sep 17 00:00:00 2001 From: Dario Binacchi Date: Sun, 20 Aug 2023 18:24:45 +0200 Subject: [PATCH] board: stm32f746-disco: refactor the display of the ST logo The patch removes the legacy mode of displaying the ST logo and adopts the approach introduced by the commit 284b08fb51b6 ("board: stm32mp1: add splash screen with stmicroelectronics logo"). It was necessary to use a specific logo for the stm32f746-disco board. Furthermore, the previous version didn't properly center the logo, hiding its upper part. Signed-off-by: Dario Binacchi Reviewed-by: Patrick Delaunay Reviewed-by: Patrice Chotard --- board/st/stm32f746-disco/stm32f746-disco.c | 6 ------ configs/stm32f746-disco_defconfig | 2 +- configs/stm32f746-disco_spl_defconfig | 2 +- include/configs/stm32f746-disco.h | 7 ++++++- tools/logos/stm32f746-disco.bmp | Bin 0 -> 18052 bytes 5 files changed, 8 insertions(+), 9 deletions(-) create mode 100644 tools/logos/stm32f746-disco.bmp diff --git a/board/st/stm32f746-disco/stm32f746-disco.c b/board/st/stm32f746-disco/stm32f746-disco.c index 4cfb29ef428..0f966600843 100644 --- a/board/st/stm32f746-disco/stm32f746-disco.c +++ b/board/st/stm32f746-disco/stm32f746-disco.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -134,10 +133,5 @@ int board_init(void) } #endif -#if defined(CONFIG_CMD_BMP) - bmp_display((ulong)stmicroelectronics_uboot_logo_8bit_rle, - BMP_ALIGN_CENTER, BMP_ALIGN_CENTER); -#endif /* CONFIG_CMD_BMP */ - return 0; } diff --git a/configs/stm32f746-disco_defconfig b/configs/stm32f746-disco_defconfig index 057cb7e8963..3c3a0d25d4d 100644 --- a/configs/stm32f746-disco_defconfig +++ b/configs/stm32f746-disco_defconfig @@ -56,13 +56,13 @@ CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_STM32_QSPI=y CONFIG_VIDEO=y +CONFIG_VIDEO_LOGO=y CONFIG_BACKLIGHT_GPIO=y CONFIG_VIDEO_STM32=y CONFIG_VIDEO_STM32_MAX_XRES=480 CONFIG_VIDEO_STM32_MAX_YRES=272 CONFIG_SPLASH_SCREEN=y CONFIG_SPLASH_SCREEN_ALIGN=y -CONFIG_VIDEO_BMP_RLE8=y CONFIG_BMP_16BPP=y CONFIG_BMP_24BPP=y CONFIG_BMP_32BPP=y diff --git a/configs/stm32f746-disco_spl_defconfig b/configs/stm32f746-disco_spl_defconfig index 0534d62d005..1b8b5a17b7c 100644 --- a/configs/stm32f746-disco_spl_defconfig +++ b/configs/stm32f746-disco_spl_defconfig @@ -82,13 +82,13 @@ CONFIG_DM_SPI=y CONFIG_STM32_QSPI=y CONFIG_SPL_TIMER=y CONFIG_VIDEO=y +CONFIG_VIDEO_LOGO=y CONFIG_BACKLIGHT_GPIO=y CONFIG_VIDEO_STM32=y CONFIG_VIDEO_STM32_MAX_XRES=480 CONFIG_VIDEO_STM32_MAX_YRES=272 CONFIG_SPLASH_SCREEN=y CONFIG_SPLASH_SCREEN_ALIGN=y -CONFIG_VIDEO_BMP_RLE8=y CONFIG_BMP_16BPP=y CONFIG_BMP_24BPP=y CONFIG_BMP_32BPP=y diff --git a/include/configs/stm32f746-disco.h b/include/configs/stm32f746-disco.h index 9bf01cac47a..00ec9efba57 100644 --- a/include/configs/stm32f746-disco.h +++ b/include/configs/stm32f746-disco.h @@ -23,6 +23,10 @@ #define BOOT_TARGET_DEVICES(func) \ func(MMC, mmc, 0) +#define STM32F746_BOARD_EXTRA_ENV \ + "splashimage=0xC0448000\0" \ + "splashpos=m,m\0" + #include #define CFG_EXTRA_ENV_SETTINGS \ "kernel_addr_r=0xC0008000\0" \ @@ -31,7 +35,8 @@ "scriptaddr=0xC0418000\0" \ "pxefile_addr_r=0xC0428000\0" \ "ramdisk_addr_r=0xC0438000\0" \ - BOOTENV + BOOTENV \ + STM32F746_BOARD_EXTRA_ENV #define CFG_SYS_UBOOT_BASE (CFG_SYS_FLASH_BASE + \ CONFIG_SPL_PAD_TO) diff --git a/tools/logos/stm32f746-disco.bmp b/tools/logos/stm32f746-disco.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c1ef4fb035c0833ea22aaa7d8aef1f0f4129d7fa GIT binary patch literal 18052 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