[PATCH v2 5/5] board: toradex: add splash screen to Toradex i.MX7D Colibri board
Francesco Dolcini
francesco at dolcini.it
Thu Jan 15 17:14:40 CET 2026
Hello,
On Thu, Jan 15, 2026 at 02:52:48PM +0100, Thomas Bonnefille wrote:
> Fixes the PWM<A> that was previously used as a GPIO output instead of a
> real PWM, it also reserve the framebuffer region to preserve the splash
> screen while the OS is booting.
>
> Signed-off-by: Thomas Bonnefille <thomas.bonnefille at bootlin.com>
> Acked-by: Francesco Dolcini <francesco.dolcini at toradex.com>
> ---
> board/toradex/colibri_imx7/colibri_imx7.c | 41 +++++++++++++++++++++++--------
> 1 file changed, 31 insertions(+), 10 deletions(-)
>
> diff --git a/board/toradex/colibri_imx7/colibri_imx7.c b/board/toradex/colibri_imx7/colibri_imx7.c
> index 69a8a18d3a7..55480213c67 100644
> --- a/board/toradex/colibri_imx7/colibri_imx7.c
> +++ b/board/toradex/colibri_imx7/colibri_imx7.c
> @@ -18,6 +18,7 @@
> #include <asm/io.h>
> #include <dm.h>
> #include <dm/platform_data/serial_mxc.h>
> +#include <fdt_simplefb.h>
> #include <fdt_support.h>
> #include <fsl_esdhc_imx.h>
> #include <jffs2/load_kernel.h>
> @@ -29,8 +30,10 @@
> #include <netdev.h>
> #include <power/pmic.h>
> #include <power/rn5t567_pmic.h>
> +#include <pwm.h>
> #include <usb.h>
> #include <usb/ehci-ci.h>
> +#include <video.h>
> #include "../common/tdx-common.h"
>
> DECLARE_GLOBAL_DATA_PTR;
> @@ -114,7 +117,7 @@ static iomux_v3_cfg_t const backlight_pads[] = {
> /* Backlight On */
> MX7D_PAD_SD1_WP__GPIO5_IO1 | MUX_PAD_CTRL(NO_PAD_CTRL),
> /* Backlight PWM<A> (multiplexed pin) */
> - MX7D_PAD_GPIO1_IO08__GPIO1_IO8 | MUX_PAD_CTRL(NO_PAD_CTRL),
> + MX7D_PAD_GPIO1_IO08__PWM1_OUT | MUX_PAD_CTRL(NO_PAD_CTRL),
> MX7D_PAD_ECSPI2_MOSI__GPIO4_IO21 | MUX_PAD_CTRL(NO_PAD_CTRL),
> };
>
> @@ -123,6 +126,8 @@ static iomux_v3_cfg_t const backlight_pads[] = {
>
> static int setup_lcd(void)
> {
> + int ret = 0;
> +
> imx_iomux_v3_setup_multiple_pads(backlight_pads, ARRAY_SIZE(backlight_pads));
>
> /* Set BL_ON */
> @@ -130,10 +135,15 @@ static int setup_lcd(void)
> gpio_direction_output(GPIO_BL_ON, 1);
>
> /* Set PWM<A> to full brightness (assuming inversed polarity) */
> - gpio_request(GPIO_PWM_A, "PWM<A>");
> - gpio_direction_output(GPIO_PWM_A, 0);
> -
> - return 0;
> + enable_pwm_clk(1, 0);
> + ret = pwm_init(0, 0, 0);
> + if (ret)
> + return ret;
> + ret = pwm_config(0, 0, 6666666);
> + if (ret)
> + return ret;
> + ret = pwm_enable(0);
> + return ret;
> }
> #endif
>
> @@ -142,12 +152,11 @@ static int setup_lcd(void)
> */
> void board_preboot_os(void)
> {
> -#ifdef CONFIG_VIDEO
> - gpio_direction_output(GPIO_PWM_A, 1);
> - gpio_direction_output(GPIO_BL_ON, 0);
> -#endif
> + if (IS_ENABLED(CONFIG_VIDEO) && IS_ENABLED(CONFIG_VIDEO_REMOVE)) {
> + gpio_direction_output(GPIO_PWM_A, 1);
> + gpio_direction_output(GPIO_BL_ON, 0);
> + }
Is this correct now that PWM_A is not used as GPIO anymore? See
`backlight_pads` ?
More information about the U-Boot
mailing list