Merge tag 'video-20221030' of https://source.denx.de/u-boot/custodians/u-boot-video

 - fix [hv]sync active vs back porch in dw_mipi_dsi
 - simplefb rotation support
 - support splash as raw image from MMC
 - enhancements to Truetype console (multiple fonts and sizes)
 - drop old LCD support
diff --git a/MAINTAINERS b/MAINTAINERS
index cb4d445..048db37 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1466,8 +1466,6 @@
 S:	Maintained
 T:	git https://source.denx.de/u-boot/custodians/u-boot-video.git
 F:	drivers/video/
-F:	common/lcd*.c
-F:	include/lcd*.h
 F:	include/video*.h
 
 VirtIO
diff --git a/README b/README
index 186f1f9..ec1b50c 100644
--- a/README
+++ b/README
@@ -770,80 +770,6 @@
 - Keyboard Support:
 		See Kconfig help for available keyboard drivers.
 
-- LCD Support:	CONFIG_LCD
-
-		Define this to enable LCD support (for output to LCD
-		display); also select one of the supported displays
-		by defining one of these:
-
-		CONFIG_NEC_NL6448AC33:
-
-			NEC NL6448AC33-18. Active, color, single scan.
-
-		CONFIG_NEC_NL6448BC20
-
-			NEC NL6448BC20-08. 6.5", 640x480.
-			Active, color, single scan.
-
-		CONFIG_NEC_NL6448BC33_54
-
-			NEC NL6448BC33-54. 10.4", 640x480.
-			Active, color, single scan.
-
-		CONFIG_SHARP_16x9
-
-			Sharp 320x240. Active, color, single scan.
-			It isn't 16x9, and I am not sure what it is.
-
-		CONFIG_SHARP_LQ64D341
-
-			Sharp LQ64D341 display, 640x480.
-			Active, color, single scan.
-
-		CONFIG_HLD1045
-
-			HLD1045 display, 640x480.
-			Active, color, single scan.
-
-		CONFIG_OPTREX_BW
-
-			Optrex	 CBL50840-2 NF-FW 99 22 M5
-			or
-			Hitachi	 LMG6912RPFC-00T
-			or
-			Hitachi	 SP14Q002
-
-			320x240. Black & white.
-
-		CONFIG_LCD_ALIGNMENT
-
-		Normally the LCD is page-aligned (typically 4KB). If this is
-		defined then the LCD will be aligned to this value instead.
-		For ARM it is sometimes useful to use MMU_SECTION_SIZE
-		here, since it is cheaper to change data cache settings on
-		a per-section basis.
-
-
-		CONFIG_LCD_ROTATION
-
-		Sometimes, for example if the display is mounted in portrait
-		mode or even if it's mounted landscape but rotated by 180degree,
-		we need to rotate our content of the display relative to the
-		framebuffer, so that user can read the messages which are
-		printed out.
-		Once CONFIG_LCD_ROTATION is defined, the lcd_console will be
-		initialized with a given rotation from "vl_rot" out of
-		"vidinfo_t" which is provided by the board specific code.
-		The value for vl_rot is coded as following (matching to
-		fbcon=rotate:<n> linux-kernel commandline):
-		0 = no rotation respectively 0 degree
-		1 = 90 degree rotation
-		2 = 180 degree rotation
-		3 = 270 degree rotation
-
-		If CONFIG_LCD_ROTATION is not defined, the console will be
-		initialized with 0degree rotation.
-
 - MII/PHY support:
 		CONFIG_PHY_CLOCK_FREQ (ppc4xx)
 
diff --git a/api/api_display.c b/api/api_display.c
index 4f2cdd7..2e877a8 100644
--- a/api/api_display.c
+++ b/api/api_display.c
@@ -5,14 +5,7 @@
 
 #include <common.h>
 #include <api_public.h>
-#include <lcd.h>
 #include <log.h>
-#include <video_font.h> /* Get font width and height */
-
-/* lcd.h needs BMP_LOGO_HEIGHT to calculate CONSOLE_ROWS */
-#if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
-#include <bmp_logo.h>
-#endif
 
 /* TODO(clchiou): add support of video device */
 
@@ -26,14 +19,6 @@
 		debug("%s: unsupport display device type: %d\n",
 				__FILE__, type);
 		return API_ENODEV;
-#ifdef CONFIG_LCD
-	case DISPLAY_TYPE_LCD:
-		di->pixel_width  = panel_info.vl_col;
-		di->pixel_height = panel_info.vl_row;
-		di->screen_rows = lcd_get_screen_rows();
-		di->screen_cols = lcd_get_screen_columns();
-		break;
-#endif
 	}
 
 	di->type = type;
@@ -44,16 +29,9 @@
 {
 	if (!bitmap)
 		return API_EINVAL;
-#ifdef CONFIG_LCD
-	return lcd_display_bitmap(bitmap, x, y);
-#else
 	return API_ENODEV;
-#endif
 }
 
 void display_clear(void)
 {
-#ifdef CONFIG_LCD
-	lcd_clear();
-#endif
 }
diff --git a/arch/Kconfig b/arch/Kconfig
index 1ffd77c..e3a456a 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -251,7 +251,7 @@
 	imply DM_SPI
 	imply DM_SPI_FLASH
 	imply DM_USB
-	imply DM_VIDEO
+	imply VIDEO
 	imply SYSRESET
 	imply SPL_SYSRESET
 	imply SYSRESET_X86
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 2e83394..6fb39e1 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1040,7 +1040,7 @@
 	select DM_SERIAL
 	select DM_SPI
 	select DM_USB
-	select DM_VIDEO
+	select VIDEO
 	select IOMMU
 	select LINUX_KERNEL_IMAGE_HEADER
 	select OF_BOARD_SETUP
diff --git a/arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c b/arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c
index 736c799..9f98ce7 100644
--- a/arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c
+++ b/arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c
@@ -99,42 +99,3 @@
 
 	at91_periph_clk_enable(ATMEL_ID_HSMCI0);
 }
-
-#ifdef CONFIG_LCD
-void at91_lcd_hw_init(void)
-{
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 24, 0);	/* LCDDPWR */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 26, 0);	/* LCDVSYNC */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 27, 0);	/* LCDHSYNC */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 28, 0);	/* LCDDOTCK */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 29, 0);	/* LCDDEN */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 30, 0);	/* LCDDOTCK */
-
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 0, 0);	/* LCDD0 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 1, 0);	/* LCDD1 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 2, 0);	/* LCDD2 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 3, 0);	/* LCDD3 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 4, 0);	/* LCDD4 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 5, 0);	/* LCDD5 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 6, 0);	/* LCDD6 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 7, 0);	/* LCDD7 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 8, 0);	/* LCDD8 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 9, 0);	/* LCDD9 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 10, 0);	/* LCDD10 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 11, 0);	/* LCDD11 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 12, 0);	/* LCDD12 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 13, 0);	/* LCDD13 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 14, 0);	/* LCDD14 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 15, 0);	/* LCDD15 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 16, 0);	/* LCDD16 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 17, 0);	/* LCDD17 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 18, 0);	/* LCDD18 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 19, 0);	/* LCDD19 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 20, 0);	/* LCDD20 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 21, 0);	/* LCDD21 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 22, 0);	/* LCDD22 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTC, 23, 0);	/* LCDD23 */
-
-	at91_periph_clk_enable(ATMEL_ID_LCDC);
-}
-#endif
diff --git a/arch/arm/mach-at91/armv7/sama5d3_devices.c b/arch/arm/mach-at91/armv7/sama5d3_devices.c
index 091059e..04b700a 100644
--- a/arch/arm/mach-at91/armv7/sama5d3_devices.c
+++ b/arch/arm/mach-at91/armv7/sama5d3_devices.c
@@ -170,39 +170,6 @@
 }
 #endif
 
-#ifdef CONFIG_LCD
-void at91_lcd_hw_init(void)
-{
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 24, 0);	/* LCDPWM */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 25, 0);	/* LCDDISP */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 26, 0);	/* LCDVSYNC */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 27, 0);	/* LCDHSYNC */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 28, 0);	/* LCDDOTCK */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 29, 0);	/* LCDDEN */
-
-	/* The lower 16-bit of LCD only available on Port A */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA,  0, 0);	/* LCDD0 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA,  1, 0);	/* LCDD1 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA,  2, 0);	/* LCDD2 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA,  3, 0);	/* LCDD3 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA,  4, 0);	/* LCDD4 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA,  5, 0);	/* LCDD5 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA,  6, 0);	/* LCDD6 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA,  7, 0);	/* LCDD7 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA,  8, 0);	/* LCDD8 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA,  9, 0);	/* LCDD9 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 10, 0);	/* LCDD10 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 11, 0);	/* LCDD11 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 12, 0);	/* LCDD12 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 13, 0);	/* LCDD13 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 14, 0);	/* LCDD14 */
-	at91_pio3_set_a_periph(AT91_PIO_PORTA, 15, 0);	/* LCDD15 */
-
-	/* Enable clock */
-	at91_periph_clk_enable(ATMEL_ID_LCDC);
-}
-#endif
-
 #ifdef CONFIG_USB_GADGET_ATMEL_USBA
 void at91_udp_hw_init(void)
 {
diff --git a/arch/arm/mach-exynos/include/mach/mipi_dsim.h b/arch/arm/mach-exynos/include/mach/mipi_dsim.h
index 20e6ce7..5e2b172 100644
--- a/arch/arm/mach-exynos/include/mach/mipi_dsim.h
+++ b/arch/arm/mach-exynos/include/mach/mipi_dsim.h
@@ -11,7 +11,6 @@
 
 #include <linux/list.h>
 #include <linux/fb.h>
-#include <lcd.h>
 
 #define PANEL_NAME_SIZE		(32)
 
diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index ba386c2..702cfc3 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -310,7 +310,7 @@
 	/* disable video before launching O/S */
 	ipuv3_fb_shutdown();
 #endif
-#if defined(CONFIG_VIDEO_MXS) && !defined(CONFIG_DM_VIDEO)
+#if defined(CONFIG_VIDEO_MXS) && !defined(CONFIG_VIDEO)
 	lcdif_power_down();
 #endif
 }
diff --git a/arch/arm/mach-imx/mx6/Kconfig b/arch/arm/mach-imx/mx6/Kconfig
index c7a03e5..752c57f 100644
--- a/arch/arm/mach-imx/mx6/Kconfig
+++ b/arch/arm/mach-imx/mx6/Kconfig
@@ -249,7 +249,7 @@
 	select DM_MMC
 	select PCI
 	select DM_SCSI
-	select DM_VIDEO
+	select VIDEO
 	select OF_CONTROL
 	select SUPPORT_SPL
 	imply CMD_DM
diff --git a/arch/arm/mach-imx/mx6/soc.c b/arch/arm/mach-imx/mx6/soc.c
index 67bd991..08f47cf 100644
--- a/arch/arm/mach-imx/mx6/soc.c
+++ b/arch/arm/mach-imx/mx6/soc.c
@@ -598,7 +598,7 @@
 void reset_misc(void)
 {
 #ifndef CONFIG_SPL_BUILD
-#if defined(CONFIG_VIDEO_MXS) && !defined(CONFIG_DM_VIDEO)
+#if defined(CONFIG_VIDEO_MXS) && !defined(CONFIG_VIDEO)
 	lcdif_power_down();
 #endif
 #endif
diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c
index c672be5..02af0d5 100644
--- a/arch/arm/mach-imx/mx7/soc.c
+++ b/arch/arm/mach-imx/mx7/soc.c
@@ -447,7 +447,7 @@
 void reset_misc(void)
 {
 #ifndef CONFIG_SPL_BUILD
-#if defined(CONFIG_VIDEO_MXS) && !defined(CONFIG_DM_VIDEO)
+#if defined(CONFIG_VIDEO_MXS) && !defined(CONFIG_VIDEO)
 	lcdif_power_down();
 #endif
 #endif
diff --git a/arch/arm/mach-nexell/include/mach/display_dev.h b/arch/arm/mach-nexell/include/mach/display_dev.h
index f24fb17..4c54a5e 100644
--- a/arch/arm/mach-nexell/include/mach/display_dev.h
+++ b/arch/arm/mach-nexell/include/mach/display_dev.h
@@ -8,14 +8,7 @@
 #ifndef _NX__DISPLAY_DEV_H_
 #define _NX__DISPLAY_DEV_H_
 
-#if !defined(CONFIG_DM_VIDEO) && defined(CONFIG_LCD)
-#include <lcd.h>
-#endif
-
 struct nx_display_dev {
-#if !defined(CONFIG_DM_VIDEO) && defined(CONFIG_LCD)
-	vidinfo_t *panel_info;
-#endif
 	unsigned long base;
 	int module;
 	struct dp_sync_info sync;
diff --git a/arch/arm/mach-omap2/am33xx/Kconfig b/arch/arm/mach-omap2/am33xx/Kconfig
index 987ab36..6c2d46a 100644
--- a/arch/arm/mach-omap2/am33xx/Kconfig
+++ b/arch/arm/mach-omap2/am33xx/Kconfig
@@ -94,8 +94,8 @@
 	select DM
 	select DM_SERIAL
 	select DM_GPIO
-	select DM_VIDEO
-	select DM_PANEL_HX8238D
+	select VIDEO
+	select PANEL_HX8238D
 
 config TARGET_AM335X_SL50
 	bool "Support am335x_sl50"
diff --git a/arch/arm/mach-omap2/am33xx/clock_am33xx.c b/arch/arm/mach-omap2/am33xx/clock_am33xx.c
index 3a7ac60..cd3b34b 100644
--- a/arch/arm/mach-omap2/am33xx/clock_am33xx.c
+++ b/arch/arm/mach-omap2/am33xx/clock_am33xx.c
@@ -227,10 +227,6 @@
 		&cmper->usb0clkctrl,
 		&cmper->emiffwclkctrl,
 		&cmper->emifclkctrl,
-#if CONFIG_IS_ENABLED(AM335X_LCD) && !CONFIG_IS_ENABLED(DM_VIDEO)
-		&cmper->lcdclkctrl,
-		&cmper->lcdcclkstctrl,
-#endif
 		0
 	};
 
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
index d2666b9..007f713 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
@@ -79,7 +79,7 @@
 		}
 	}
 
-	if (IS_ENABLED(CONFIG_DM_VIDEO))
+	if (IS_ENABLED(CONFIG_VIDEO))
 		enable_vidconsole();
 
 	data = (struct stm32prog_data *)malloc(sizeof(*data));
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index fc5d8bb..dbe6005 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -788,7 +788,7 @@
 	depends on !MACH_SUN9I
 	depends on !MACH_SUN50I
 	depends on !SUN50I_GEN_H6
-	select DM_VIDEO
+	select VIDEO
 	select DISPLAY
 	imply VIDEO_DT_SIMPLEFB
 	default y
@@ -853,7 +853,7 @@
 
 config VIDEO_LCD_DCLK_PHASE
 	int "LCD panel display clock phase"
-	depends on VIDEO_SUNXI || DM_VIDEO
+	depends on VIDEO_SUNXI || VIDEO
 	default 1
 	range 0 3
 	---help---
@@ -928,7 +928,7 @@
 config VIDEO_DE2
 	bool "Display Engine 2 video driver"
 	depends on SUNXI_DE2
-	select DM_VIDEO
+	select VIDEO
 	select DISPLAY
 	select VIDEO_DW_HDMI
 	imply VIDEO_DT_SIMPLEFB
diff --git a/arch/arm/mach-tegra/board2.c b/arch/arm/mach-tegra/board2.c
index 1994db0..82d3d33 100644
--- a/arch/arm/mach-tegra/board2.c
+++ b/arch/arm/mach-tegra/board2.c
@@ -134,7 +134,7 @@
 #endif
 
 	/* Init is handled automatically in the driver-model case */
-#if defined(CONFIG_DM_VIDEO)
+#if defined(CONFIG_VIDEO)
 	pin_mux_display();
 #endif
 	/* boot param addr */
@@ -158,7 +158,7 @@
 	pin_mux_usb();
 #endif
 
-#if defined(CONFIG_DM_VIDEO)
+#if defined(CONFIG_VIDEO)
 	board_id = tegra_board_id();
 	err = tegra_lcd_pmic_init(board_id);
 	if (err) {
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 7e86c6a..a2da080 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -703,7 +703,7 @@
 
 config VIDEO_FSP
 	bool "Enable FSP framebuffer driver support"
-	depends on HAVE_VBT && DM_VIDEO
+	depends on HAVE_VBT && VIDEO
 	help
 	  Turn on this option to enable a framebuffer driver when U-Boot is
 	  using Video BIOS Table (VBT) image for FSP firmware to initialize
diff --git a/board/BuR/brxre1/board.c b/board/BuR/brxre1/board.c
index 544e09f..a909104 100644
--- a/board/BuR/brxre1/board.c
+++ b/board/BuR/brxre1/board.c
@@ -164,21 +164,12 @@
 	br_resetc_bmode();
 
 	/* setup othbootargs for bootvx-command (vxWorks bootline) */
-#ifdef CONFIG_LCD
-	snprintf(othbootargs, sizeof(othbootargs),
-		 "u=vxWorksFTP pw=vxWorks o=0x%08x;0x%08x;0x%08x;0x%08x",
-		 (u32)gd->fb_base - 0x20,
-		 (u32)env_get_ulong("vx_memtop", 16, gd->fb_base - 0x20),
-		 (u32)env_get_ulong("vx_romfsbase", 16, 0),
-		 (u32)env_get_ulong("vx_romfssize", 16, 0));
-#else
 	snprintf(othbootargs, sizeof(othbootargs),
 		 "u=vxWorksFTP pw=vxWorks o=0x%08x;0x%08x;0x%08x;0x%08x",
 		 (u32)gd->relocaddr,
 		 (u32)env_get_ulong("vx_memtop", 16, gd->relocaddr),
 		 (u32)env_get_ulong("vx_romfsbase", 16, 0),
 		 (u32)env_get_ulong("vx_romfssize", 16, 0));
-#endif
 	env_set("othbootargs", othbootargs);
 	/*
 	 * reset VBAR registers to its reset location, VxWorks 6.9.3.2 does
diff --git a/board/BuR/common/br_resetc.c b/board/BuR/common/br_resetc.c
index 5006687..32f32b6 100644
--- a/board/BuR/common/br_resetc.c
+++ b/board/BuR/common/br_resetc.c
@@ -23,14 +23,8 @@
 #define BMODE_PME		12
 #define BMODE_DIAG		15
 
-#if CONFIG_IS_ENABLED(LCD) && !CONFIG_IS_ENABLED(DM_VIDEO)
-#include <lcd.h>
-#define LCD_SETCURSOR(x, y)	lcd_position_cursor(x, y)
-#define LCD_PUTS(x)		lcd_puts(x)
-#else
 #define LCD_SETCURSOR(x, y)
 #define LCD_PUTS(x)
-#endif /* CONFIG_LCD */
 
 static const char *bootmodeascii[16] = {
 	"BOOT",		"reserved",	"reserved",	"reserved",
diff --git a/board/BuR/common/bur_common.h b/board/BuR/common/bur_common.h
index 79c9af1..55d14c2 100644
--- a/board/BuR/common/bur_common.h
+++ b/board/BuR/common/bur_common.h
@@ -11,12 +11,6 @@
 #ifndef _BUR_COMMON_H_
 #define _BUR_COMMON_H_
 
-#if !CONFIG_IS_ENABLED(DM_VIDEO)
-#include <../../../drivers/video/ti/am335x-fb.h>
-
-int load_lcdtiming(struct am335x_lcdpanel *panel);
-#endif
-
 void br_summaryscreen(void);
 void pmicsetup(u32 mpupll, unsigned int bus);
 void enable_uart0_pin_mux(void);
diff --git a/board/BuR/common/common.c b/board/BuR/common/common.c
index 78bf7d6..3c78020 100644
--- a/board/BuR/common/common.c
+++ b/board/BuR/common/common.c
@@ -14,7 +14,6 @@
 #include <env.h>
 #include <fdtdec.h>
 #include <i2c.h>
-#include <lcd.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
 #include "bur_common.h"
@@ -22,230 +21,6 @@
 DECLARE_GLOBAL_DATA_PTR;
 
 /* --------------------------------------------------------------------------*/
-#if defined(CONFIG_LCD) && defined(CONFIG_AM335X_LCD) && \
-	!defined(CONFIG_DM_VIDEO) && !defined(CONFIG_SPL_BUILD)
-#include <asm/arch/hardware.h>
-#include <asm/arch/cpu.h>
-#include <asm/gpio.h>
-#include <power/tps65217.h>
-#include "../../../drivers/video/ti/am335x-fb.h"
-
-void lcdbacklight(int on)
-{
-	unsigned int driver = env_get_ulong("ds1_bright_drv", 16, 0UL);
-	unsigned int bright = env_get_ulong("ds1_bright_def", 10, 50);
-	unsigned int pwmfrq = env_get_ulong("ds1_pwmfreq", 10, ~0UL);
-	unsigned int tmp;
-	struct gptimer *timerhw;
-
-	if (on)
-		bright = bright != ~0UL ? bright : 50;
-	else
-		bright = 0;
-
-	switch (driver) {
-	case 2:
-		timerhw = (struct gptimer *)DM_TIMER5_BASE;
-		break;
-	default:
-		timerhw = (struct gptimer *)DM_TIMER6_BASE;
-	}
-
-	switch (driver) {
-	case 0:	/* PMIC LED-Driver */
-		/* brightness level */
-		tps65217_reg_write(TPS65217_PROT_LEVEL_NONE,
-				   TPS65217_WLEDCTRL2, bright, 0xFF);
-		/* current sink */
-		tps65217_reg_write(TPS65217_PROT_LEVEL_NONE,
-				   TPS65217_WLEDCTRL1,
-				   bright != 0 ? 0x0A : 0x02,
-				   0xFF);
-		break;
-	case 1:
-	case 2: /* PWM using timer */
-		if (pwmfrq != ~0UL) {
-			timerhw->tiocp_cfg = TCFG_RESET;
-			udelay(10);
-			while (timerhw->tiocp_cfg & TCFG_RESET)
-				;
-			tmp = ~0UL-(V_OSCK/pwmfrq);	/* bottom value */
-			timerhw->tldr = tmp;
-			timerhw->tcrr = tmp;
-			tmp = tmp + ((V_OSCK/pwmfrq)/100) * bright;
-			timerhw->tmar = tmp;
-			timerhw->tclr = (TCLR_PT | (2 << TCLR_TRG_SHIFT) |
-					TCLR_CE | TCLR_AR | TCLR_ST);
-		} else {
-			puts("invalid pwmfrq in env/dtb! skip PWM-setup.\n");
-		}
-		break;
-	default:
-		puts("no suitable backlightdriver in env/dtb!\n");
-		break;
-	}
-}
-
-int load_lcdtiming(struct am335x_lcdpanel *panel)
-{
-	struct am335x_lcdpanel pnltmp;
-
-	pnltmp.hactive = env_get_ulong("ds1_hactive", 10, ~0UL);
-	pnltmp.vactive = env_get_ulong("ds1_vactive", 10, ~0UL);
-	pnltmp.bpp = env_get_ulong("ds1_bpp", 10, ~0UL);
-	pnltmp.hfp = env_get_ulong("ds1_hfp", 10, ~0UL);
-	pnltmp.hbp = env_get_ulong("ds1_hbp", 10, ~0UL);
-	pnltmp.hsw = env_get_ulong("ds1_hsw", 10, ~0UL);
-	pnltmp.vfp = env_get_ulong("ds1_vfp", 10, ~0UL);
-	pnltmp.vbp = env_get_ulong("ds1_vbp", 10, ~0UL);
-	pnltmp.vsw = env_get_ulong("ds1_vsw", 10, ~0UL);
-	pnltmp.pxl_clk = env_get_ulong("ds1_pxlclk", 10, ~0UL);
-	pnltmp.pol = env_get_ulong("ds1_pol", 16, ~0UL);
-	pnltmp.pup_delay = env_get_ulong("ds1_pupdelay", 10, ~0UL);
-	pnltmp.pon_delay = env_get_ulong("ds1_tondelay", 10, ~0UL);
-	panel_info.vl_rot = env_get_ulong("ds1_rotation", 10, 0);
-
-	if (
-	   ~0UL == (pnltmp.hactive) ||
-	   ~0UL == (pnltmp.vactive) ||
-	   ~0UL == (pnltmp.bpp) ||
-	   ~0UL == (pnltmp.hfp) ||
-	   ~0UL == (pnltmp.hbp) ||
-	   ~0UL == (pnltmp.hsw) ||
-	   ~0UL == (pnltmp.vfp) ||
-	   ~0UL == (pnltmp.vbp) ||
-	   ~0UL == (pnltmp.vsw) ||
-	   ~0UL == (pnltmp.pxl_clk) ||
-	   ~0UL == (pnltmp.pol) ||
-	   ~0UL == (pnltmp.pup_delay) ||
-	   ~0UL == (pnltmp.pon_delay)
-	   ) {
-		puts("lcd-settings in env/dtb incomplete!\n");
-		printf("display-timings:\n"
-			"================\n"
-			"hactive: %d\n"
-			"vactive: %d\n"
-			"bpp    : %d\n"
-			"hfp    : %d\n"
-			"hbp    : %d\n"
-			"hsw    : %d\n"
-			"vfp    : %d\n"
-			"vbp    : %d\n"
-			"vsw    : %d\n"
-			"pxlclk : %d\n"
-			"pol    : 0x%08x\n"
-			"pondly : %d\n",
-			pnltmp.hactive, pnltmp.vactive, pnltmp.bpp,
-			pnltmp.hfp, pnltmp.hbp, pnltmp.hsw,
-			pnltmp.vfp, pnltmp.vbp, pnltmp.vsw,
-			pnltmp.pxl_clk, pnltmp.pol, pnltmp.pon_delay);
-
-		return -1;
-	}
-	debug("lcd-settings in env complete, taking over.\n");
-	memcpy((void *)panel,
-	       (void *)&pnltmp,
-	       sizeof(struct am335x_lcdpanel));
-
-	return 0;
-}
-
-static void br_summaryscreen_printenv(char *prefix,
-				       char *name, char *altname,
-				       char *suffix)
-{
-	char *envval = env_get(name);
-	if (0 != envval) {
-		lcd_printf("%s %s %s", prefix, envval, suffix);
-	} else if (0 != altname) {
-		envval = env_get(altname);
-		if (0 != envval)
-			lcd_printf("%s %s %s", prefix, envval, suffix);
-	} else {
-		lcd_printf("\n");
-	}
-}
-
-void br_summaryscreen(void)
-{
-	br_summaryscreen_printenv(" - B&R -", "br_orderno", 0, "-\n");
-	br_summaryscreen_printenv(" Serial/Rev :", "br_serial", 0, "\n");
-	br_summaryscreen_printenv(" MAC1       :", "br_mac1", "ethaddr", "\n");
-	br_summaryscreen_printenv(" MAC2       :", "br_mac2", 0, "\n");
-	lcd_puts(" Bootloader : " PLAIN_VERSION "\n");
-	lcd_puts("\n");
-}
-
-void lcdpower(int on)
-{
-	u32 pin, swval, i;
-	char buf[16] = { 0 };
-
-	pin = env_get_ulong("ds1_pwr", 16, ~0UL);
-
-	if (pin == ~0UL) {
-		puts("no pwrpin in dtb/env, cannot powerup display!\n");
-		return;
-	}
-
-	for (i = 0; i < 3; i++) {
-		if (pin != 0) {
-			snprintf(buf, sizeof(buf), "ds1_pwr#%d", i);
-			if (gpio_request(pin & 0x7F, buf) != 0) {
-				printf("%s: not able to request gpio %s",
-				       __func__, buf);
-				continue;
-			}
-			swval = pin & 0x80 ? 0 : 1;
-			if (on)
-				gpio_direction_output(pin & 0x7F, swval);
-			else
-				gpio_direction_output(pin & 0x7F, !swval);
-
-			debug("switched pin %d to %d\n", pin & 0x7F, swval);
-		}
-		pin >>= 8;
-	}
-}
-
-vidinfo_t	panel_info = {
-		.vl_col = 1366,	/*
-				 * give full resolution for allocating enough
-				 * memory
-				 */
-		.vl_row = 768,
-		.vl_bpix = 5,
-		.priv = 0
-};
-
-void lcd_ctrl_init(void *lcdbase)
-{
-	struct am335x_lcdpanel lcd_panel;
-
-	memset(&lcd_panel, 0, sizeof(struct am335x_lcdpanel));
-	if (load_lcdtiming(&lcd_panel) != 0)
-		return;
-
-	lcd_panel.panel_power_ctrl = &lcdpower;
-
-	if (0 != am335xfb_init(&lcd_panel))
-		printf("ERROR: failed to initialize video!");
-	/*
-	 * modifiy panel info to 'real' resolution, to operate correct with
-	 * lcd-framework.
-	 */
-	panel_info.vl_col = lcd_panel.hactive;
-	panel_info.vl_row = lcd_panel.vactive;
-
-	lcd_set_flush_dcache(1);
-}
-
-void lcd_enable(void)
-{
-	br_summaryscreen();
-	lcdbacklight(1);
-}
-#endif /* CONFIG_LCD */
 
 int ft_board_setup(void *blob, struct bd_info *bd)
 {
diff --git a/board/BuS/eb_cpu5282/eb_cpu5282.c b/board/BuS/eb_cpu5282/eb_cpu5282.c
index b739bc3..173350b 100644
--- a/board/BuS/eb_cpu5282/eb_cpu5282.c
+++ b/board/BuS/eb_cpu5282/eb_cpu5282.c
@@ -21,11 +21,6 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#if IS_ENABLED(CONFIG_VIDEO_VCXK)
-extern unsigned long display_width;
-extern unsigned long display_height;
-#endif
-
 /*---------------------------------------------------------------------------*/
 
 int checkboard (void)
@@ -184,84 +179,7 @@
 		MCFGPTA_GPTPORT &= ~(1 << 3);
 }
 
-#if IS_ENABLED(CONFIG_VIDEO_VCXK)
-int drv_video_init(void)
-{
-	char *s;
-#ifdef CONFIG_SPLASH_SCREEN
-	unsigned long splash;
-#endif
-	printf("Init Video as ");
-	s = env_get("displaywidth");
-	if (s != NULL)
-		display_width = dectoul(s, NULL);
-	else
-		display_width = 256;
-
-	s = env_get("displayheight");
-	if (s != NULL)
-		display_height = dectoul(s, NULL);
-	else
-		display_height = 256;
-
-	printf("%lu x %lu pixel matrix\n", display_width, display_height);
-
-	MCFCCM_CCR &= ~MCFCCM_CCR_SZEN;
-	MCFGPIO_PEPAR &= ~MCFGPIO_PEPAR_PEPA2;
-
-	vcxk_init(display_width, display_height);
-
-#ifdef CONFIG_SPLASH_SCREEN
-	s = env_get("splashimage");
-	if (s != NULL) {
-		splash = hextoul(s, NULL);
-		vcxk_acknowledge_wait();
-		video_display_bitmap(splash, 0, 0);
-	}
-#endif
-	return 0;
-}
-#endif
-
 /*---------------------------------------------------------------------------*/
 
-#if IS_ENABLED(CONFIG_VIDEO_VCXK)
-int do_brightness(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
-{
-	int rcode = 0;
-	ulong side;
-	ulong bright;
-
-	switch (argc) {
-	case 3:
-		side = dectoul(argv[1], NULL);
-		bright = dectoul(argv[2], NULL);
-		if ((side >= 0) && (side <= 3) &&
-			(bright >= 0) && (bright <= 1000)) {
-			vcxk_setbrightness(side, bright);
-			rcode = 0;
-		} else {
-			printf("parameters out of range\n");
-			printf("Usage:\n%s\n", cmdtp->usage);
-			rcode = 1;
-		}
-		break;
-	default:
-		printf("Usage:\n%s\n", cmdtp->usage);
-		rcode = 1;
-		break;
-	}
-	return rcode;
-}
-
-/*---------------------------------------------------------------------------*/
-
-U_BOOT_CMD(
-	bright,	3,	0,	do_brightness,
-	"sets the display brightness\n",
-	" <side> <0..1000>\n        side: 0/3=both; 1=first; 2=second\n"
-);
-
-#endif
 
 /* EOF EB+MCF-EV123.c */
diff --git a/board/aristainetos/aristainetos.c b/board/aristainetos/aristainetos.c
index 514cb60..770f3d7 100644
--- a/board/aristainetos/aristainetos.c
+++ b/board/aristainetos/aristainetos.c
@@ -9,6 +9,8 @@
  * Author: Fabio Estevam <fabio.estevam@freescale.com>
  */
 
+#include <common.h>
+#include <bmp_layout.h>
 #include <command.h>
 #include <image.h>
 #include <init.h>
@@ -33,12 +35,12 @@
 #include <i2c.h>
 #include <micrel.h>
 #include <miiphy.h>
-#include <lcd.h>
 #include <led.h>
 #include <power/pmic.h>
 #include <power/regulator.h>
 #include <power/da9063_pmic.h>
 #include <splash.h>
+#include <video.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/board/atmel/at91sam9261ek/at91sam9261ek.c b/board/atmel/at91sam9261ek/at91sam9261ek.c
index 8a7a960..0c53325 100644
--- a/board/atmel/at91sam9261ek/at91sam9261ek.c
+++ b/board/atmel/at91sam9261ek/at91sam9261ek.c
@@ -18,7 +18,6 @@
 #include <asm/arch/at91_rstc.h>
 #include <asm/arch/clk.h>
 #include <asm/arch/gpio.h>
-#include <lcd.h>
 #include <atmel_lcdc.h>
 #if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_DRIVER_DM9000)
 #include <net.h>
@@ -133,97 +132,6 @@
 }
 #endif
 
-#ifdef CONFIG_LCD
-vidinfo_t panel_info = {
-	.vl_col =		240,
-	.vl_row =		320,
-	.vl_clk =		4965000,
-	.vl_sync =		ATMEL_LCDC_INVLINE_INVERTED |
-				ATMEL_LCDC_INVFRAME_INVERTED,
-	.vl_bpix =		3,
-	.vl_tft =		1,
-	.vl_hsync_len =		5,
-	.vl_left_margin =	1,
-	.vl_right_margin =	33,
-	.vl_vsync_len =		1,
-	.vl_upper_margin =	1,
-	.vl_lower_margin =	0,
-	.mmio =			ATMEL_BASE_LCDC,
-};
-
-void lcd_enable(void)
-{
-	at91_set_gpio_value(AT91_PIN_PA12, 0);  /* power up */
-}
-
-void lcd_disable(void)
-{
-	at91_set_gpio_value(AT91_PIN_PA12, 1);  /* power down */
-}
-
-static void at91sam9261ek_lcd_hw_init(void)
-{
-	at91_set_A_periph(AT91_PIN_PB1, 0);	/* LCDHSYNC */
-	at91_set_A_periph(AT91_PIN_PB2, 0);	/* LCDDOTCK */
-	at91_set_A_periph(AT91_PIN_PB3, 0);	/* LCDDEN */
-	at91_set_A_periph(AT91_PIN_PB4, 0);	/* LCDCC */
-	at91_set_A_periph(AT91_PIN_PB7, 0);	/* LCDD2 */
-	at91_set_A_periph(AT91_PIN_PB8, 0);	/* LCDD3 */
-	at91_set_A_periph(AT91_PIN_PB9, 0);	/* LCDD4 */
-	at91_set_A_periph(AT91_PIN_PB10, 0);	/* LCDD5 */
-	at91_set_A_periph(AT91_PIN_PB11, 0);	/* LCDD6 */
-	at91_set_A_periph(AT91_PIN_PB12, 0);	/* LCDD7 */
-	at91_set_A_periph(AT91_PIN_PB15, 0);	/* LCDD10 */
-	at91_set_A_periph(AT91_PIN_PB16, 0);	/* LCDD11 */
-	at91_set_A_periph(AT91_PIN_PB17, 0);	/* LCDD12 */
-	at91_set_A_periph(AT91_PIN_PB18, 0);	/* LCDD13 */
-	at91_set_A_periph(AT91_PIN_PB19, 0);	/* LCDD14 */
-	at91_set_A_periph(AT91_PIN_PB20, 0);	/* LCDD15 */
-	at91_set_B_periph(AT91_PIN_PB23, 0);	/* LCDD18 */
-	at91_set_B_periph(AT91_PIN_PB24, 0);	/* LCDD19 */
-	at91_set_B_periph(AT91_PIN_PB25, 0);	/* LCDD20 */
-	at91_set_B_periph(AT91_PIN_PB26, 0);	/* LCDD21 */
-	at91_set_B_periph(AT91_PIN_PB27, 0);	/* LCDD22 */
-	at91_set_B_periph(AT91_PIN_PB28, 0);	/* LCDD23 */
-
-	at91_system_clk_enable(AT91_PMC_HCK1);
-
-	/* For 9G10EK, let U-Boot allocate the framebuffer in SDRAM */
-#ifdef CONFIG_AT91SAM9261EK
-	gd->fb_base = ATMEL_BASE_SRAM;
-#endif
-}
-
-#ifdef CONFIG_LCD_INFO
-#include <nand.h>
-#include <version.h>
-
-void lcd_show_board_info(void)
-{
-	ulong dram_size, nand_size;
-	int i;
-	char temp[32];
-
-	lcd_printf ("%s\n", U_BOOT_VERSION);
-	lcd_printf ("(C) 2008 ATMEL Corp\n");
-	lcd_printf ("at91support@atmel.com\n");
-	lcd_printf ("%s CPU at %s MHz\n",
-		ATMEL_CPU_NAME,
-		strmhz(temp, get_cpu_clk_rate()));
-
-	dram_size = 0;
-	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
-		dram_size += gd->bd->bi_dram[i].size;
-	nand_size = 0;
-	for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-		nand_size += get_nand_dev_by_index(i)->size;
-	lcd_printf ("  %ld MB SDRAM, %ld MB NAND\n",
-		dram_size >> 20,
-		nand_size >> 20 );
-}
-#endif /* CONFIG_LCD_INFO */
-#endif
-
 #ifdef CONFIG_DEBUG_UART_BOARD_INIT
 void board_debug_uart_init(void)
 {
@@ -256,9 +164,6 @@
 #ifdef CONFIG_DRIVER_DM9000
 	at91sam9261ek_dm9000_hw_init();
 #endif
-#ifdef CONFIG_LCD
-	at91sam9261ek_lcd_hw_init();
-#endif
 	return 0;
 }
 
diff --git a/board/atmel/at91sam9263ek/at91sam9263ek.c b/board/atmel/at91sam9263ek/at91sam9263ek.c
index 86b4050..3e232aa 100644
--- a/board/atmel/at91sam9263ek/at91sam9263ek.c
+++ b/board/atmel/at91sam9263ek/at91sam9263ek.c
@@ -21,7 +21,6 @@
 #include <asm/io.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/hardware.h>
-#include <lcd.h>
 #include <atmel_lcdc.h>
 #include <asm/mach-types.h>
 
@@ -77,110 +76,6 @@
 }
 #endif
 
-#ifdef CONFIG_LCD
-vidinfo_t panel_info = {
-	.vl_col =		240,
-	.vl_row =		320,
-	.vl_clk =		4965000,
-	.vl_sync =		ATMEL_LCDC_INVLINE_INVERTED |
-				ATMEL_LCDC_INVFRAME_INVERTED,
-	.vl_bpix =		3,
-	.vl_tft =		1,
-	.vl_hsync_len =		5,
-	.vl_left_margin =	1,
-	.vl_right_margin =	33,
-	.vl_vsync_len =		1,
-	.vl_upper_margin =	1,
-	.vl_lower_margin =	0,
-	.mmio =			ATMEL_BASE_LCDC,
-};
-
-void lcd_enable(void)
-{
-	at91_set_pio_value(AT91_PIO_PORTA, 30, 1);  /* power up */
-}
-
-void lcd_disable(void)
-{
-	at91_set_pio_value(AT91_PIO_PORTA, 30, 0);  /* power down */
-}
-
-static void at91sam9263ek_lcd_hw_init(void)
-{
-	at91_set_a_periph(AT91_PIO_PORTC, 1, 0);	/* LCDHSYNC */
-	at91_set_a_periph(AT91_PIO_PORTC, 2, 0);	/* LCDDOTCK */
-	at91_set_a_periph(AT91_PIO_PORTC, 3, 0);	/* LCDDEN */
-	at91_set_b_periph(AT91_PIO_PORTB, 9, 0);	/* LCDCC */
-	at91_set_a_periph(AT91_PIO_PORTC, 6, 0);	/* LCDD2 */
-	at91_set_a_periph(AT91_PIO_PORTC, 7, 0);	/* LCDD3 */
-	at91_set_a_periph(AT91_PIO_PORTC, 8, 0);	/* LCDD4 */
-	at91_set_a_periph(AT91_PIO_PORTC, 9, 0);	/* LCDD5 */
-	at91_set_a_periph(AT91_PIO_PORTC, 10, 0);	/* LCDD6 */
-	at91_set_a_periph(AT91_PIO_PORTC, 11, 0);	/* LCDD7 */
-	at91_set_a_periph(AT91_PIO_PORTC, 14, 0);	/* LCDD10 */
-	at91_set_a_periph(AT91_PIO_PORTC, 15, 0);	/* LCDD11 */
-	at91_set_a_periph(AT91_PIO_PORTC, 16, 0);	/* LCDD12 */
-	at91_set_b_periph(AT91_PIO_PORTC, 12, 0);	/* LCDD13 */
-	at91_set_a_periph(AT91_PIO_PORTC, 18, 0);	/* LCDD14 */
-	at91_set_a_periph(AT91_PIO_PORTC, 19, 0);	/* LCDD15 */
-	at91_set_a_periph(AT91_PIO_PORTC, 22, 0);	/* LCDD18 */
-	at91_set_a_periph(AT91_PIO_PORTC, 23, 0);	/* LCDD19 */
-	at91_set_a_periph(AT91_PIO_PORTC, 24, 0);	/* LCDD20 */
-	at91_set_b_periph(AT91_PIO_PORTC, 17, 0);	/* LCDD21 */
-	at91_set_a_periph(AT91_PIO_PORTC, 26, 0);	/* LCDD22 */
-	at91_set_a_periph(AT91_PIO_PORTC, 27, 0);	/* LCDD23 */
-
-	at91_periph_clk_enable(ATMEL_ID_LCDC);
-	gd->fb_base = ATMEL_BASE_SRAM0;
-}
-
-#ifdef CONFIG_LCD_INFO
-#include <nand.h>
-#include <version.h>
-
-#ifdef CONFIG_MTD_NOR_FLASH
-#include <flash.h>
-#endif
-
-void lcd_show_board_info(void)
-{
-	ulong dram_size, nand_size;
-#ifdef CONFIG_MTD_NOR_FLASH
-	ulong flash_size;
-#endif
-	int i;
-	char temp[32];
-
-	lcd_printf ("%s\n", U_BOOT_VERSION);
-	lcd_printf ("(C) 2008 ATMEL Corp\n");
-	lcd_printf ("at91support@atmel.com\n");
-	lcd_printf ("%s CPU at %s MHz\n",
-		ATMEL_CPU_NAME,
-		strmhz(temp, get_cpu_clk_rate()));
-
-	dram_size = 0;
-	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
-		dram_size += gd->bd->bi_dram[i].size;
-	nand_size = 0;
-	for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-		nand_size += get_nand_dev_by_index(i)->size;
-#ifdef CONFIG_MTD_NOR_FLASH
-	flash_size = 0;
-	for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++)
-		flash_size += flash_info[i].size;
-#endif
-	lcd_printf ("  %ld MB SDRAM, %ld MB NAND",
-		dram_size >> 20,
-		nand_size >> 20 );
-#ifdef CONFIG_MTD_NOR_FLASH
-	lcd_printf (",\n  %ld MB NOR",
-		flash_size >> 20);
-#endif
-	lcd_puts ("\n");
-}
-#endif /* CONFIG_LCD_INFO */
-#endif
-
 #ifdef CONFIG_DEBUG_UART_BOARD_INIT
 void board_debug_uart_init(void)
 {
@@ -208,9 +103,6 @@
 #ifdef CONFIG_USB_OHCI_NEW
 	at91_uhp_hw_init();
 #endif
-#ifdef CONFIG_LCD
-	at91sam9263ek_lcd_hw_init();
-#endif
 	return 0;
 }
 
diff --git a/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c b/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
index 347197a..3af7097 100644
--- a/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
+++ b/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
@@ -18,7 +18,6 @@
 #include <asm/arch/at91_common.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/clk.h>
-#include <lcd.h>
 #include <linux/mtd/rawnand.h>
 #include <atmel_lcdc.h>
 #include <asm/mach-types.h>
@@ -149,105 +148,6 @@
 }
 #endif
 
-#ifdef CONFIG_LCD
-
-vidinfo_t panel_info = {
-	.vl_col =		480,
-	.vl_row =		272,
-	.vl_clk =		9000000,
-	.vl_sync =		ATMEL_LCDC_INVLINE_NORMAL |
-				ATMEL_LCDC_INVFRAME_NORMAL,
-	.vl_bpix =		3,
-	.vl_tft =		1,
-	.vl_hsync_len =		45,
-	.vl_left_margin =	1,
-	.vl_right_margin =	1,
-	.vl_vsync_len =		1,
-	.vl_upper_margin =	40,
-	.vl_lower_margin =	1,
-	.mmio =			ATMEL_BASE_LCDC,
-};
-
-
-void lcd_enable(void)
-{
-	at91_set_A_periph(AT91_PIN_PE6, 1);	/* power up */
-}
-
-void lcd_disable(void)
-{
-	at91_set_A_periph(AT91_PIN_PE6, 0);	/* power down */
-}
-
-static void at91sam9m10g45ek_lcd_hw_init(void)
-{
-	at91_set_A_periph(AT91_PIN_PE0, 0);	/* LCDDPWR */
-	at91_set_A_periph(AT91_PIN_PE2, 0);	/* LCDCC */
-	at91_set_A_periph(AT91_PIN_PE3, 0);	/* LCDVSYNC */
-	at91_set_A_periph(AT91_PIN_PE4, 0);	/* LCDHSYNC */
-	at91_set_A_periph(AT91_PIN_PE5, 0);	/* LCDDOTCK */
-
-	at91_set_A_periph(AT91_PIN_PE7, 0);	/* LCDD0 */
-	at91_set_A_periph(AT91_PIN_PE8, 0);	/* LCDD1 */
-	at91_set_A_periph(AT91_PIN_PE9, 0);	/* LCDD2 */
-	at91_set_A_periph(AT91_PIN_PE10, 0);	/* LCDD3 */
-	at91_set_A_periph(AT91_PIN_PE11, 0);	/* LCDD4 */
-	at91_set_A_periph(AT91_PIN_PE12, 0);	/* LCDD5 */
-	at91_set_A_periph(AT91_PIN_PE13, 0);	/* LCDD6 */
-	at91_set_A_periph(AT91_PIN_PE14, 0);	/* LCDD7 */
-	at91_set_A_periph(AT91_PIN_PE15, 0);	/* LCDD8 */
-	at91_set_A_periph(AT91_PIN_PE16, 0);	/* LCDD9 */
-	at91_set_A_periph(AT91_PIN_PE17, 0);	/* LCDD10 */
-	at91_set_A_periph(AT91_PIN_PE18, 0);	/* LCDD11 */
-	at91_set_A_periph(AT91_PIN_PE19, 0);	/* LCDD12 */
-	at91_set_B_periph(AT91_PIN_PE20, 0);	/* LCDD13 */
-	at91_set_A_periph(AT91_PIN_PE21, 0);	/* LCDD14 */
-	at91_set_A_periph(AT91_PIN_PE22, 0);	/* LCDD15 */
-	at91_set_A_periph(AT91_PIN_PE23, 0);	/* LCDD16 */
-	at91_set_A_periph(AT91_PIN_PE24, 0);	/* LCDD17 */
-	at91_set_A_periph(AT91_PIN_PE25, 0);	/* LCDD18 */
-	at91_set_A_periph(AT91_PIN_PE26, 0);	/* LCDD19 */
-	at91_set_A_periph(AT91_PIN_PE27, 0);	/* LCDD20 */
-	at91_set_B_periph(AT91_PIN_PE28, 0);	/* LCDD21 */
-	at91_set_A_periph(AT91_PIN_PE29, 0);	/* LCDD22 */
-	at91_set_A_periph(AT91_PIN_PE30, 0);	/* LCDD23 */
-
-	at91_periph_clk_enable(ATMEL_ID_LCDC);
-
-	/* board specific(not enough SRAM) */
-	gd->fb_base = 0x73E00000;
-}
-
-#ifdef CONFIG_LCD_INFO
-#include <nand.h>
-#include <version.h>
-
-void lcd_show_board_info(void)
-{
-	ulong dram_size, nand_size;
-	int i;
-	char temp[32];
-
-	lcd_printf ("%s\n", U_BOOT_VERSION);
-	lcd_printf ("(C) 2008 ATMEL Corp\n");
-	lcd_printf ("at91support@atmel.com\n");
-	lcd_printf ("%s CPU at %s MHz\n",
-		ATMEL_CPU_NAME,
-		strmhz(temp, get_cpu_clk_rate()));
-
-	dram_size = 0;
-	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
-		dram_size += gd->bd->bi_dram[i].size;
-	nand_size = 0;
-	for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-		nand_size += get_nand_dev_by_index(i)->size;
-	lcd_printf ("  %ld MB SDRAM, %ld MB NAND\n",
-		dram_size >> 20,
-		nand_size >> 20 );
-}
-#endif /* CONFIG_LCD_INFO */
-#endif
-
 #ifdef CONFIG_DEBUG_UART_BOARD_INIT
 void board_debug_uart_init(void)
 {
@@ -276,9 +176,6 @@
 #ifdef CONFIG_CMD_USB
 	at91sam9m10g45ek_usb_hw_init();
 #endif
-#ifdef CONFIG_LCD
-	at91sam9m10g45ek_lcd_hw_init();
-#endif
 	return 0;
 }
 
diff --git a/board/atmel/at91sam9n12ek/at91sam9n12ek.c b/board/atmel/at91sam9n12ek/at91sam9n12ek.c
index a337db4..5468519 100644
--- a/board/atmel/at91sam9n12ek/at91sam9n12ek.c
+++ b/board/atmel/at91sam9n12ek/at91sam9n12ek.c
@@ -17,15 +17,9 @@
 #include <asm/arch/at91_pio.h>
 #include <asm/arch/clk.h>
 #include <debug_uart.h>
-#include <lcd.h>
 #include <atmel_hlcdc.h>
 #include <netdev.h>
 
-#ifdef CONFIG_LCD_INFO
-#include <nand.h>
-#include <version.h>
-#endif
-
 DECLARE_GLOBAL_DATA_PTR;
 
 /* ------------------------------------------------------------------------- */
@@ -81,60 +75,6 @@
 }
 #endif
 
-#ifdef CONFIG_LCD
-vidinfo_t panel_info = {
-	.vl_col = 480,
-	.vl_row = 272,
-	.vl_clk = 9000000,
-	.vl_bpix = LCD_BPP,
-	.vl_sync = 0,
-	.vl_tft = 1,
-	.vl_hsync_len = 5,
-	.vl_left_margin = 8,
-	.vl_right_margin = 43,
-	.vl_vsync_len = 10,
-	.vl_upper_margin = 4,
-	.vl_lower_margin = 12,
-	.mmio = ATMEL_BASE_LCDC,
-};
-
-void lcd_enable(void)
-{
-	at91_set_pio_output(AT91_PIO_PORTC, 25, 0);	/* power up */
-}
-
-void lcd_disable(void)
-{
-	at91_set_pio_output(AT91_PIO_PORTC, 25, 1);	/* power down */
-}
-
-#ifdef CONFIG_LCD_INFO
-void lcd_show_board_info(void)
-{
-	ulong dram_size, nand_size;
-	int i;
-	char temp[32];
-
-	lcd_printf("%s\n", U_BOOT_VERSION);
-	lcd_printf("ATMEL Corp\n");
-	lcd_printf("at91@atmel.com\n");
-	lcd_printf("%s CPU at %s MHz\n",
-		ATMEL_CPU_NAME,
-		strmhz(temp, get_cpu_clk_rate()));
-
-	dram_size = 0;
-	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
-		dram_size += gd->bd->bi_dram[i].size;
-	nand_size = 0;
-	for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-		nand_size += get_nand_dev_by_index(i)->size;
-	lcd_printf("  %ld MB SDRAM, %ld MB NAND\n",
-		dram_size >> 20,
-		nand_size >> 20);
-}
-#endif /* CONFIG_LCD_INFO */
-#endif /* CONFIG_LCD */
-
 #ifdef CONFIG_USB_ATMEL
 void at91sam9n12ek_usb_hw_init(void)
 {
@@ -165,10 +105,6 @@
 	at91sam9n12ek_nand_hw_init();
 #endif
 
-#ifdef CONFIG_LCD
-	at91_lcd_hw_init();
-#endif
-
 #ifdef CONFIG_USB_ATMEL
 	at91sam9n12ek_usb_hw_init();
 #endif
diff --git a/board/atmel/at91sam9rlek/at91sam9rlek.c b/board/atmel/at91sam9rlek/at91sam9rlek.c
index af59620..f05ee322 100644
--- a/board/atmel/at91sam9rlek/at91sam9rlek.c
+++ b/board/atmel/at91sam9rlek/at91sam9rlek.c
@@ -20,7 +20,6 @@
 #include <asm/arch/clk.h>
 #include <asm/arch/gpio.h>
 
-#include <lcd.h>
 #include <atmel_lcdc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -75,90 +74,6 @@
 }
 #endif
 
-#ifdef CONFIG_LCD
-vidinfo_t panel_info = {
-	.vl_col =		240,
-	.vl_row =		320,
-	.vl_clk =		4965000,
-	.vl_sync =		ATMEL_LCDC_INVLINE_INVERTED |
-				ATMEL_LCDC_INVFRAME_INVERTED,
-	.vl_bpix =		3,
-	.vl_tft =		1,
-	.vl_hsync_len =		5,
-	.vl_left_margin =	1,
-	.vl_right_margin =	33,
-	.vl_vsync_len =		1,
-	.vl_upper_margin =	1,
-	.vl_lower_margin =	0,
-	.mmio =			ATMEL_BASE_LCDC,
-};
-
-void lcd_enable(void)
-{
-	at91_set_gpio_value(AT91_PIN_PA30, 0);  /* power up */
-}
-
-void lcd_disable(void)
-{
-	at91_set_gpio_value(AT91_PIN_PA30, 1);  /* power down */
-}
-static void at91sam9rlek_lcd_hw_init(void)
-{
-	at91_set_B_periph(AT91_PIN_PC1, 0);	/* LCDPWR */
-	at91_set_A_periph(AT91_PIN_PC5, 0);	/* LCDHSYNC */
-	at91_set_A_periph(AT91_PIN_PC6, 0);	/* LCDDOTCK */
-	at91_set_A_periph(AT91_PIN_PC7, 0);	/* LCDDEN */
-	at91_set_A_periph(AT91_PIN_PC3, 0);	/* LCDCC */
-	at91_set_B_periph(AT91_PIN_PC9, 0);	/* LCDD3 */
-	at91_set_B_periph(AT91_PIN_PC10, 0);	/* LCDD4 */
-	at91_set_B_periph(AT91_PIN_PC11, 0);	/* LCDD5 */
-	at91_set_B_periph(AT91_PIN_PC12, 0);	/* LCDD6 */
-	at91_set_B_periph(AT91_PIN_PC13, 0);	/* LCDD7 */
-	at91_set_B_periph(AT91_PIN_PC15, 0);	/* LCDD11 */
-	at91_set_B_periph(AT91_PIN_PC16, 0);	/* LCDD12 */
-	at91_set_B_periph(AT91_PIN_PC17, 0);	/* LCDD13 */
-	at91_set_B_periph(AT91_PIN_PC18, 0);	/* LCDD14 */
-	at91_set_B_periph(AT91_PIN_PC19, 0);	/* LCDD15 */
-	at91_set_B_periph(AT91_PIN_PC20, 0);	/* LCDD18 */
-	at91_set_B_periph(AT91_PIN_PC21, 0);	/* LCDD19 */
-	at91_set_B_periph(AT91_PIN_PC22, 0);	/* LCDD20 */
-	at91_set_B_periph(AT91_PIN_PC23, 0);	/* LCDD21 */
-	at91_set_B_periph(AT91_PIN_PC24, 0);	/* LCDD22 */
-	at91_set_B_periph(AT91_PIN_PC25, 0);	/* LCDD23 */
-
-	at91_periph_clk_enable(ATMEL_ID_LCDC);
-}
-
-#ifdef CONFIG_LCD_INFO
-#include <nand.h>
-#include <version.h>
-
-void lcd_show_board_info(void)
-{
-	ulong dram_size, nand_size;
-	int i;
-	char temp[32];
-
-	lcd_printf ("%s\n", U_BOOT_VERSION);
-	lcd_printf ("(C) 2008 ATMEL Corp\n");
-	lcd_printf ("at91support@atmel.com\n");
-	lcd_printf ("%s CPU at %s MHz\n",
-		ATMEL_CPU_NAME,
-		strmhz(temp, get_cpu_clk_rate()));
-
-	dram_size = 0;
-	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
-		dram_size += gd->bd->bi_dram[i].size;
-	nand_size = 0;
-	for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-		nand_size += get_nand_dev_by_index(i)->size;
-	lcd_printf ("  %ld MB SDRAM, %ld MB NAND\n",
-		dram_size >> 20,
-		nand_size >> 20 );
-}
-#endif /* CONFIG_LCD_INFO */
-#endif
-
 #ifdef CONFIG_DEBUG_UART_BOARD_INIT
 void board_debug_uart_init(void)
 {
@@ -183,9 +98,6 @@
 #ifdef CONFIG_CMD_NAND
 	at91sam9rlek_nand_hw_init();
 #endif
-#ifdef CONFIG_LCD
-	at91sam9rlek_lcd_hw_init();
-#endif
 	return 0;
 }
 
diff --git a/board/atmel/at91sam9x5ek/at91sam9x5ek.c b/board/atmel/at91sam9x5ek/at91sam9x5ek.c
index 8192824..b5af35b 100644
--- a/board/atmel/at91sam9x5ek/at91sam9x5ek.c
+++ b/board/atmel/at91sam9x5ek/at91sam9x5ek.c
@@ -87,7 +87,7 @@
 #ifdef CONFIG_BOARD_LATE_INIT
 int board_late_init(void)
 {
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 	at91_video_show_board_info();
 #endif
 	at91_prepare_cpu_var();
diff --git a/board/atmel/common/Makefile b/board/atmel/common/Makefile
index 6bc8cab..c046da7 100644
--- a/board/atmel/common/Makefile
+++ b/board/atmel/common/Makefile
@@ -6,4 +6,4 @@
 obj-y += board.o
 obj-$(CONFIG_I2C_EEPROM) += mac_eeprom.o
 obj-$(CONFIG_SPI_FLASH_SFDP_SUPPORT) += mac-spi-nor.o
-obj-$(CONFIG_DM_VIDEO) += video_display.o
+obj-$(CONFIG_VIDEO) += video_display.o
diff --git a/board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c b/board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c
index 65d0a75..329eac7 100644
--- a/board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c
+++ b/board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c
@@ -39,7 +39,7 @@
 #ifdef CONFIG_BOARD_LATE_INIT
 int board_late_init(void)
 {
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 	at91_video_show_board_info();
 #endif
 	at91_pda_detect();
diff --git a/board/atmel/sama5d27_wlsom1_ek/sama5d27_wlsom1_ek.c b/board/atmel/sama5d27_wlsom1_ek/sama5d27_wlsom1_ek.c
index c38585c..6524867 100644
--- a/board/atmel/sama5d27_wlsom1_ek/sama5d27_wlsom1_ek.c
+++ b/board/atmel/sama5d27_wlsom1_ek/sama5d27_wlsom1_ek.c
@@ -32,7 +32,7 @@
 #ifdef CONFIG_BOARD_LATE_INIT
 int board_late_init(void)
 {
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 	at91_video_show_board_info();
 #endif
 	at91_pda_detect();
diff --git a/board/atmel/sama5d2_xplained/sama5d2_xplained.c b/board/atmel/sama5d2_xplained/sama5d2_xplained.c
index 9e0f9c3..aa52207 100644
--- a/board/atmel/sama5d2_xplained/sama5d2_xplained.c
+++ b/board/atmel/sama5d2_xplained/sama5d2_xplained.c
@@ -38,7 +38,7 @@
 #ifdef CONFIG_BOARD_LATE_INIT
 int board_late_init(void)
 {
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 	at91_video_show_board_info();
 #endif
 	at91_pda_detect();
diff --git a/board/atmel/sama5d3xek/sama5d3xek.c b/board/atmel/sama5d3xek/sama5d3xek.c
index 132e7fa..008f1db 100644
--- a/board/atmel/sama5d3xek/sama5d3xek.c
+++ b/board/atmel/sama5d3xek/sama5d3xek.c
@@ -186,7 +186,7 @@
 	strcat(name, "ek.dtb");
 	env_set("dtb_name", name);
 #endif
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 	at91_video_show_board_info();
 #endif
 	return 0;
diff --git a/board/atmel/sama5d4_xplained/sama5d4_xplained.c b/board/atmel/sama5d4_xplained/sama5d4_xplained.c
index 9fb7e6f..4058594 100644
--- a/board/atmel/sama5d4_xplained/sama5d4_xplained.c
+++ b/board/atmel/sama5d4_xplained/sama5d4_xplained.c
@@ -76,7 +76,7 @@
 int board_late_init(void)
 {
 	at91_pda_detect();
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 	at91_video_show_board_info();
 #endif
 	return 0;
diff --git a/board/atmel/sama5d4ek/sama5d4ek.c b/board/atmel/sama5d4ek/sama5d4ek.c
index ba38533..ef5a8a0 100644
--- a/board/atmel/sama5d4ek/sama5d4ek.c
+++ b/board/atmel/sama5d4ek/sama5d4ek.c
@@ -74,7 +74,7 @@
 #ifdef CONFIG_BOARD_LATE_INIT
 int board_late_init(void)
 {
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 	at91_video_show_board_info();
 #endif
 	return 0;
diff --git a/board/beckhoff/mx53cx9020/Makefile b/board/beckhoff/mx53cx9020/Makefile
index 7f15fc5..423a553 100644
--- a/board/beckhoff/mx53cx9020/Makefile
+++ b/board/beckhoff/mx53cx9020/Makefile
@@ -4,4 +4,4 @@
 # Patrick Bruenn <p.bruenn@beckhoff.com>
 
 obj-y               += mx53cx9020.o
-obj-$(CONFIG_DM_VIDEO) += mx53cx9020_video.o
+obj-$(CONFIG_VIDEO) += mx53cx9020_video.o
diff --git a/board/bluewater/gurnard/gurnard.c b/board/bluewater/gurnard/gurnard.c
index 35c8985..f547ce3 100644
--- a/board/bluewater/gurnard/gurnard.c
+++ b/board/bluewater/gurnard/gurnard.c
@@ -14,7 +14,6 @@
 #include <dm.h>
 #include <env.h>
 #include <init.h>
-#include <lcd.h>
 #include <net.h>
 #ifndef CONFIG_DM_ETH
 #include <netdev.h>
@@ -140,7 +139,7 @@
 }
 #endif
 
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 static void at91sam9g45_lcd_hw_init(void)
 {
 	at91_set_A_periph(AT91_PIN_PE0, 0);	/* LCDDPWR */
@@ -338,7 +337,7 @@
 	at91_mci_hw_init();
 #endif
 
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 	at91sam9g45_lcd_hw_init();
 	at91_set_A_periph(AT91_PIN_PE6, 1);	/* power up */
 
diff --git a/board/bosch/guardian/board.c b/board/bosch/guardian/board.c
index 7d1064a..bdf8d06 100644
--- a/board/bosch/guardian/board.c
+++ b/board/bosch/guardian/board.c
@@ -254,74 +254,6 @@
 			   brightness != 0 ? 0x0A : 0x02, 0xFF);
 }
 
-#if IS_ENABLED(CONFIG_AM335X_LCD)
-static void splash_screen(void)
-{
-	struct udevice *video_dev;
-	struct udevice *console_dev;
-	struct video_priv *vid_priv;
-	struct mtd_info *mtd;
-	size_t len;
-	int ret;
-
-	struct mtd_device *mtd_dev;
-	struct part_info  *part;
-	u8 pnum;
-
-	ret = uclass_get_device(UCLASS_VIDEO, 0, &video_dev);
-	if (ret != 0) {
-		debug("video device not found\n");
-		goto exit;
-	}
-
-	vid_priv = dev_get_uclass_priv(video_dev);
-	mtdparts_init();
-
-	if (find_dev_and_part(SPLASH_SCREEN_NAND_PART, &mtd_dev, &pnum, &part))	{
-		debug("Could not find nand partition\n");
-		goto splash_screen_text;
-	}
-
-	mtd = get_nand_dev_by_index(mtd_dev->id->num);
-	if (!mtd) {
-		debug("MTD partition is not valid\n");
-		goto splash_screen_text;
-	}
-
-	len = SPLASH_SCREEN_BMP_FILE_SIZE;
-	ret = nand_read_skip_bad(mtd, part->offset, &len, NULL,
-				 SPLASH_SCREEN_BMP_FILE_SIZE,
-				 (u_char *)SPLASH_SCREEN_BMP_LOAD_ADDR);
-	if (ret != 0) {
-		debug("Reading NAND partition failed\n");
-		goto splash_screen_text;
-	}
-
-	ret = video_bmp_display(video_dev, SPLASH_SCREEN_BMP_LOAD_ADDR, 0, 0, false);
-	if (ret != 0) {
-		debug("No valid bmp image found!!\n");
-		goto splash_screen_text;
-	} else {
-		goto exit;
-	}
-
-splash_screen_text:
-	vid_priv->colour_fg = CONSOLE_COLOR_RED;
-	vid_priv->colour_bg = CONSOLE_COLOR_BLACK;
-
-	if (!uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &console_dev)) {
-		debug("Found console\n");
-		vidconsole_position_cursor(console_dev, 17, 7);
-		vidconsole_put_string(console_dev, SPLASH_SCREEN_TEXT);
-	} else {
-		debug("No console device found\n");
-	}
-
-exit:
-	return;
-}
-#endif /* CONFIG_AM335X_LCD */
-
 int board_late_init(void)
 {
 	int ret;
@@ -340,8 +272,6 @@
 		return 0;
 
 	lcdbacklight_en();
-	if (IS_ENABLED(CONFIG_AM335X_LCD))
-		splash_screen();
 
 	return 0;
 }
diff --git a/board/compal/paz00/paz00.c b/board/compal/paz00/paz00.c
index 64d0860..d92eb16 100644
--- a/board/compal/paz00/paz00.c
+++ b/board/compal/paz00/paz00.c
@@ -41,7 +41,7 @@
 }
 #endif
 
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 /* this is a weak define that we are overriding */
 void pin_mux_display(void)
 {
diff --git a/board/compulab/common/Makefile b/board/compulab/common/Makefile
index 25dad49..7c8226e 100644
--- a/board/compulab/common/Makefile
+++ b/board/compulab/common/Makefile
@@ -6,5 +6,4 @@
 
 obj-y				+= common.o
 obj-$(CONFIG_$(SPL_)SYS_I2C_LEGACY)	+= eeprom.o
-obj-$(CONFIG_LCD)		+= omap3_display.o
 obj-$(CONFIG_SMC911X)		+= omap3_smc911x.o
diff --git a/board/compulab/common/omap3_display.c b/board/compulab/common/omap3_display.c
deleted file mode 100644
index 4ed3b9c..0000000
--- a/board/compulab/common/omap3_display.c
+++ /dev/null
@@ -1,452 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2012 - 2013 CompuLab, Ltd. <www.compulab.co.il>
- *
- * Authors: Nikita Kiryanov <nikita@compulab.co.il>
- *
- * Parsing code based on linux/drivers/video/pxafb.c
- */
-
-#include <common.h>
-#include <asm/gpio.h>
-#include <asm/io.h>
-#include <env.h>
-#include <stdio_dev.h>
-#include <asm/arch/dss.h>
-#include <lcd.h>
-#include <scf0403_lcd.h>
-#include <asm/arch-omap3/dss.h>
-
-enum display_type {
-	NONE,
-	DVI,
-	DVI_CUSTOM,
-	DATA_IMAGE, /* #define CONFIG_SCF0403_LCD to use */
-};
-
-#define CMAP_ADDR	0x80100000
-
-/*
- * The frame buffer is allocated before we have the chance to parse user input.
- * To make sure enough memory is allocated for all resolutions, we define
- * vl_{col | row} to the maximal resolution supported by OMAP3.
- */
-vidinfo_t panel_info = {
-	.vl_col  = 1400,
-	.vl_row  = 1050,
-	.vl_bpix = LCD_BPP,
-	.cmap = (ushort *)CMAP_ADDR,
-};
-
-static struct panel_config panel_cfg;
-static enum display_type lcd_def;
-
-/*
- * A note on DVI presets;
- * U-Boot can convert 8 bit BMP data to 16 bit BMP data, and OMAP DSS can
- * convert 16 bit data into 24 bit data. Thus, GFXFORMAT_RGB16 allows us to
- * support two BMP types with one setting.
- */
-static const struct panel_config preset_dvi_640X480 = {
-	.lcd_size	= PANEL_LCD_SIZE(640, 480),
-	.timing_h	= DSS_HBP(48) | DSS_HFP(16) | DSS_HSW(96),
-	.timing_v	= DSS_VBP(33) | DSS_VFP(10) | DSS_VSW(2),
-	.pol_freq	= DSS_IHS | DSS_IVS | DSS_IPC,
-	.divisor	= 12 | (1 << 16),
-	.data_lines	= LCD_INTERFACE_24_BIT,
-	.panel_type	= ACTIVE_DISPLAY,
-	.load_mode	= 2,
-	.gfx_format	= GFXFORMAT_RGB16,
-};
-
-static const struct panel_config preset_dvi_800X600 = {
-	.lcd_size	= PANEL_LCD_SIZE(800, 600),
-	.timing_h	= DSS_HBP(88) | DSS_HFP(40) | DSS_HSW(128),
-	.timing_v	= DSS_VBP(23) | DSS_VFP(1) | DSS_VSW(4),
-	.pol_freq	= DSS_IHS | DSS_IVS | DSS_IPC,
-	.divisor	= 8 | (1 << 16),
-	.data_lines	= LCD_INTERFACE_24_BIT,
-	.panel_type	= ACTIVE_DISPLAY,
-	.load_mode	= 2,
-	.gfx_format	= GFXFORMAT_RGB16,
-};
-
-static const struct panel_config preset_dvi_1024X768 = {
-	.lcd_size	= PANEL_LCD_SIZE(1024, 768),
-	.timing_h	= DSS_HBP(160) | DSS_HFP(24) | DSS_HSW(136),
-	.timing_v	= DSS_VBP(29) | DSS_VFP(3) | DSS_VSW(6),
-	.pol_freq	= DSS_IHS | DSS_IVS | DSS_IPC,
-	.divisor	= 5 | (1 << 16),
-	.data_lines	= LCD_INTERFACE_24_BIT,
-	.panel_type	= ACTIVE_DISPLAY,
-	.load_mode	= 2,
-	.gfx_format	= GFXFORMAT_RGB16,
-};
-
-static const struct panel_config preset_dvi_1152X864 = {
-	.lcd_size	= PANEL_LCD_SIZE(1152, 864),
-	.timing_h	= DSS_HBP(256) | DSS_HFP(64) | DSS_HSW(128),
-	.timing_v	= DSS_VBP(32) | DSS_VFP(1) | DSS_VSW(3),
-	.pol_freq	= DSS_IHS | DSS_IVS | DSS_IPC,
-	.divisor	= 4 | (1 << 16),
-	.data_lines	= LCD_INTERFACE_24_BIT,
-	.panel_type	= ACTIVE_DISPLAY,
-	.load_mode	= 2,
-	.gfx_format	= GFXFORMAT_RGB16,
-};
-
-static const struct panel_config preset_dvi_1280X960 = {
-	.lcd_size	= PANEL_LCD_SIZE(1280, 960),
-	.timing_h	= DSS_HBP(312) | DSS_HFP(96) | DSS_HSW(112),
-	.timing_v	= DSS_VBP(36) | DSS_VFP(1) | DSS_VSW(3),
-	.pol_freq	= DSS_IHS | DSS_IVS | DSS_IPC,
-	.divisor	= 3 | (1 << 16),
-	.data_lines	= LCD_INTERFACE_24_BIT,
-	.panel_type	= ACTIVE_DISPLAY,
-	.load_mode	= 2,
-	.gfx_format	= GFXFORMAT_RGB16,
-};
-
-static const struct panel_config preset_dvi_1280X1024 = {
-	.lcd_size	= PANEL_LCD_SIZE(1280, 1024),
-	.timing_h	= DSS_HBP(248) | DSS_HFP(48) | DSS_HSW(112),
-	.timing_v	= DSS_VBP(38) | DSS_VFP(1) | DSS_VSW(3),
-	.pol_freq	= DSS_IHS | DSS_IVS | DSS_IPC,
-	.divisor	= 3 | (1 << 16),
-	.data_lines	= LCD_INTERFACE_24_BIT,
-	.panel_type	= ACTIVE_DISPLAY,
-	.load_mode	= 2,
-	.gfx_format	= GFXFORMAT_RGB16,
-};
-
-static const struct panel_config preset_dataimage_480X800 = {
-	.lcd_size	= PANEL_LCD_SIZE(480, 800),
-	.timing_h	= DSS_HBP(2) | DSS_HFP(2) | DSS_HSW(2),
-	.timing_v	= DSS_VBP(17) | DSS_VFP(20) | DSS_VSW(3),
-	.pol_freq	= DSS_IVS | DSS_IHS | DSS_IPC | DSS_ONOFF,
-	.divisor	= 10 | (1 << 10),
-	.data_lines	= LCD_INTERFACE_18_BIT,
-	.panel_type	= ACTIVE_DISPLAY,
-	.load_mode	= 2,
-	.gfx_format	= GFXFORMAT_RGB16,
-};
-
-/*
- * set_resolution_params()
- *
- * Due to usage of multiple display related APIs resolution data is located in
- * more than one place. This function updates them all.
- */
-static void set_resolution_params(int x, int y)
-{
-	panel_cfg.lcd_size = PANEL_LCD_SIZE(x, y);
-	panel_info.vl_col = x;
-	panel_info.vl_row = y;
-	lcd_line_length = (panel_info.vl_col * NBITS(panel_info.vl_bpix)) / 8;
-}
-
-static void set_preset(const struct panel_config preset, int x_res, int y_res)
-{
-	panel_cfg = preset;
-	set_resolution_params(x_res, y_res);
-}
-
-static enum display_type set_dvi_preset(const struct panel_config preset,
-					int x_res, int y_res)
-{
-	set_preset(preset, x_res, y_res);
-	return DVI;
-}
-
-static enum display_type set_dataimage_preset(const struct panel_config preset,
-		int x_res, int y_res)
-{
-	set_preset(preset, x_res, y_res);
-	return DATA_IMAGE;
-}
-
-/*
- * parse_mode() - parse the mode parameter of custom lcd settings
- *
- * @mode:	<res_x>x<res_y>
- *
- * Returns -1 on error, 0 on success.
- */
-static int parse_mode(const char *mode)
-{
-	unsigned int modelen = strlen(mode);
-	int res_specified = 0;
-	unsigned int xres = 0, yres = 0;
-	int yres_specified = 0;
-	int i;
-
-	for (i = modelen - 1; i >= 0; i--) {
-		switch (mode[i]) {
-		case 'x':
-			if (!yres_specified) {
-				yres = simple_strtoul(&mode[i + 1], NULL, 0);
-				yres_specified = 1;
-			} else {
-				goto done_parsing;
-			}
-
-			break;
-		case '0' ... '9':
-			break;
-		default:
-			goto done_parsing;
-		}
-	}
-
-	if (i < 0 && yres_specified) {
-		xres = simple_strtoul(mode, NULL, 0);
-		res_specified = 1;
-	}
-
-done_parsing:
-	if (res_specified) {
-		set_resolution_params(xres, yres);
-	} else {
-		printf("LCD: invalid mode: %s\n", mode);
-		return -1;
-	}
-
-	return 0;
-}
-
-#define PIXEL_CLK_NUMERATOR (26 * 432 / 39)
-/*
- * parse_pixclock() - Parse the pixclock parameter of custom lcd settings
- *
- * @pixclock:	the desired pixel clock
- *
- * Returns -1 on error, 0 on success.
- *
- * Handling the pixel_clock:
- *
- * Pixel clock is defined in the OMAP35x TRM as follows:
- * pixel_clock =
- * (SYS_CLK * 2 * PRCM.CM_CLKSEL2_PLL[18:8]) /
- * (DSS.DISPC_DIVISOR[23:16] * DSS.DISPC_DIVISOR[6:0] *
- * PRCM.CM_CLKSEL_DSS[4:0] * (PRCM.CM_CLKSEL2_PLL[6:0] + 1))
- *
- * In practice, this means that in order to set the
- * divisor for the desired pixel clock one needs to
- * solve the following equation:
- *
- * 26 * 432 / (39 * <pixel_clock>) = DSS.DISPC_DIVISOR[6:0]
- *
- * NOTE: the explicit equation above is reduced. Do not
- * try to infer anything from these numbers.
- */
-static int parse_pixclock(char *pixclock)
-{
-	int divisor, pixclock_val;
-	char *pixclk_start = pixclock;
-
-	pixclock_val = dectoul(pixclock, &pixclock);
-	divisor = DIV_ROUND_UP(PIXEL_CLK_NUMERATOR, pixclock_val);
-	/* 0 and 1 are illegal values for PCD */
-	if (divisor <= 1)
-		divisor = 2;
-
-	panel_cfg.divisor = divisor | (1 << 16);
-	if (pixclock[0] != '\0') {
-		printf("LCD: invalid value for pixclock:%s\n", pixclk_start);
-		return -1;
-	}
-
-	return 0;
-}
-
-/*
- * parse_setting() - parse a single setting of custom lcd parameters
- *
- * @setting:	The custom lcd setting <name>:<value>
- *
- * Returns -1 on failure, 0 on success.
- */
-static int parse_setting(char *setting)
-{
-	int num_val;
-	char *setting_start = setting;
-
-	if (!strncmp(setting, "mode:", 5)) {
-		return parse_mode(setting + 5);
-	} else if (!strncmp(setting, "pixclock:", 9)) {
-		return parse_pixclock(setting + 9);
-	} else if (!strncmp(setting, "left:", 5)) {
-		num_val = simple_strtoul(setting + 5, &setting, 0);
-		panel_cfg.timing_h |= DSS_HBP(num_val);
-	} else if (!strncmp(setting, "right:", 6)) {
-		num_val = simple_strtoul(setting + 6, &setting, 0);
-		panel_cfg.timing_h |= DSS_HFP(num_val);
-	} else if (!strncmp(setting, "upper:", 6)) {
-		num_val = simple_strtoul(setting + 6, &setting, 0);
-		panel_cfg.timing_v |= DSS_VBP(num_val);
-	} else if (!strncmp(setting, "lower:", 6)) {
-		num_val = simple_strtoul(setting + 6, &setting, 0);
-		panel_cfg.timing_v |= DSS_VFP(num_val);
-	} else if (!strncmp(setting, "hsynclen:", 9)) {
-		num_val = simple_strtoul(setting + 9, &setting, 0);
-		panel_cfg.timing_h |= DSS_HSW(num_val);
-	} else if (!strncmp(setting, "vsynclen:", 9)) {
-		num_val = simple_strtoul(setting + 9, &setting, 0);
-		panel_cfg.timing_v |= DSS_VSW(num_val);
-	} else if (!strncmp(setting, "hsync:", 6)) {
-		if (simple_strtoul(setting + 6, &setting, 0) == 0)
-			panel_cfg.pol_freq |= DSS_IHS;
-		else
-			panel_cfg.pol_freq &= ~DSS_IHS;
-	} else if (!strncmp(setting, "vsync:", 6)) {
-		if (simple_strtoul(setting + 6, &setting, 0) == 0)
-			panel_cfg.pol_freq |= DSS_IVS;
-		else
-			panel_cfg.pol_freq &= ~DSS_IVS;
-	} else if (!strncmp(setting, "outputen:", 9)) {
-		if (simple_strtoul(setting + 9, &setting, 0) == 0)
-			panel_cfg.pol_freq |= DSS_IEO;
-		else
-			panel_cfg.pol_freq &= ~DSS_IEO;
-	} else if (!strncmp(setting, "pixclockpol:", 12)) {
-		if (simple_strtoul(setting + 12, &setting, 0) == 0)
-			panel_cfg.pol_freq |= DSS_IPC;
-		else
-			panel_cfg.pol_freq &= ~DSS_IPC;
-	} else if (!strncmp(setting, "active", 6)) {
-		panel_cfg.panel_type = ACTIVE_DISPLAY;
-		return 0; /* Avoid sanity check below */
-	} else if (!strncmp(setting, "passive", 7)) {
-		panel_cfg.panel_type = PASSIVE_DISPLAY;
-		return 0; /* Avoid sanity check below */
-	} else if (!strncmp(setting, "display:", 8)) {
-		if (!strncmp(setting + 8, "dvi", 3)) {
-			lcd_def = DVI_CUSTOM;
-			return 0; /* Avoid sanity check below */
-		}
-	} else {
-		printf("LCD: unknown option %s\n", setting_start);
-		return -1;
-	}
-
-	if (setting[0] != '\0') {
-		printf("LCD: invalid value for %s\n", setting_start);
-		return -1;
-	}
-
-	return 0;
-}
-
-/*
- * env_parse_customlcd() - parse custom lcd params from an environment variable.
- *
- * @custom_lcd_params:	The environment variable containing the lcd params.
- *
- * Returns -1 on failure, 0 on success.
- */
-static int parse_customlcd(char *custom_lcd_params)
-{
-	char params_cpy[160];
-	char *setting;
-
-	strncpy(params_cpy, custom_lcd_params, 160);
-	setting = strtok(params_cpy, ",");
-	while (setting) {
-		if (parse_setting(setting) < 0)
-			return -1;
-
-		setting = strtok(NULL, ",");
-	}
-
-	/* Currently we don't support changing this via custom lcd params */
-	panel_cfg.data_lines = LCD_INTERFACE_24_BIT;
-	panel_cfg.gfx_format = GFXFORMAT_RGB16; /* See dvi predefines note */
-
-	return 0;
-}
-
-/*
- * env_parse_displaytype() - parse display type.
- *
- * Parses the environment variable "displaytype", which contains the
- * name of the display type or preset, in which case it applies its
- * configurations.
- *
- * Returns the type of display that was specified.
- */
-static enum display_type env_parse_displaytype(char *displaytype)
-{
-	if (!strncmp(displaytype, "dvi640x480", 10))
-		return set_dvi_preset(preset_dvi_640X480, 640, 480);
-	else if (!strncmp(displaytype, "dvi800x600", 10))
-		return set_dvi_preset(preset_dvi_800X600, 800, 600);
-	else if (!strncmp(displaytype, "dvi1024x768", 11))
-		return set_dvi_preset(preset_dvi_1024X768, 1024, 768);
-	else if (!strncmp(displaytype, "dvi1152x864", 11))
-		return set_dvi_preset(preset_dvi_1152X864, 1152, 864);
-	else if (!strncmp(displaytype, "dvi1280x960", 11))
-		return set_dvi_preset(preset_dvi_1280X960, 1280, 960);
-	else if (!strncmp(displaytype, "dvi1280x1024", 12))
-		return set_dvi_preset(preset_dvi_1280X1024, 1280, 1024);
-	else if (!strncmp(displaytype, "dataimage480x800", 16))
-		return set_dataimage_preset(preset_dataimage_480X800, 480, 800);
-
-	return NONE;
-}
-
-void lcd_ctrl_init(void *lcdbase)
-{
-	struct prcm *prcm = (struct prcm *)PRCM_BASE;
-	char *custom_lcd;
-	char *displaytype = env_get("displaytype");
-
-	if (displaytype == NULL)
-		return;
-
-	lcd_def = env_parse_displaytype(displaytype);
-	/* If we did not recognize the preset, check if it's an env variable */
-	if (lcd_def == NONE) {
-		custom_lcd = env_get(displaytype);
-		if (custom_lcd == NULL || parse_customlcd(custom_lcd) < 0)
-			return;
-	}
-
-	panel_cfg.frame_buffer = lcdbase;
-	omap3_dss_panel_config(&panel_cfg);
-	/*
-	 * Pixel clock is defined with many divisions and only few
-	 * multiplications of the system clock. Since DSS FCLK divisor is set
-	 * to 16 by default, we need to set it to a smaller value, like 3
-	 * (chosen via trial and error).
-	 */
-	clrsetbits_le32(&prcm->clksel_dss, 0xF, 3);
-}
-
-#ifdef CONFIG_SCF0403_LCD
-static void scf0403_enable(void)
-{
-	gpio_direction_output(58, 1);
-	scf0403_init(157);
-}
-#else
-static inline void scf0403_enable(void) {}
-#endif
-
-void lcd_enable(void)
-{
-	switch (lcd_def) {
-	case NONE:
-		return;
-	case DVI:
-	case DVI_CUSTOM:
-		gpio_direction_output(54, 0); /* Turn on DVI */
-		break;
-	case DATA_IMAGE:
-		scf0403_enable();
-		break;
-	}
-
-	omap3_dss_enable();
-}
-
-void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue) {}
diff --git a/board/freescale/imx8ulp_evk/imx8ulp_evk.c b/board/freescale/imx8ulp_evk/imx8ulp_evk.c
index 1fd338c..5aad107 100644
--- a/board/freescale/imx8ulp_evk/imx8ulp_evk.c
+++ b/board/freescale/imx8ulp_evk/imx8ulp_evk.c
@@ -112,7 +112,7 @@
 	}
 
 	/* When sync with M33 is failed, use local driver to set for video */
-	if (sync != 0 && IS_ENABLED(CONFIG_DM_VIDEO)) {
+	if (sync != 0 && IS_ENABLED(CONFIG_VIDEO)) {
 		mipi_dsi_mux_panel();
 		mipi_dsi_panel_backlight();
 	}
diff --git a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
index b916ea0..1eec048 100644
--- a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
+++ b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
@@ -240,7 +240,7 @@
 }
 #endif
 
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 static iomux_v3_cfg_t const lcd_pads[] = {
 	/* Use GPIO for Brightness adjustment, duty cycle = period. */
 	MX6_PAD_GPIO1_IO08__GPIO1_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),
diff --git a/board/ge/mx53ppd/Makefile b/board/ge/mx53ppd/Makefile
index f423e80..9fae414 100644
--- a/board/ge/mx53ppd/Makefile
+++ b/board/ge/mx53ppd/Makefile
@@ -7,4 +7,4 @@
 # Jason Liu <r64343@freescale.com>
 
 obj-y			+= mx53ppd.o
-obj-$(CONFIG_DM_VIDEO)	+= mx53ppd_video.o
+obj-$(CONFIG_VIDEO)	+= mx53ppd_video.o
diff --git a/board/l+g/vinco/vinco.c b/board/l+g/vinco/vinco.c
index db1075a..d47c7b5 100644
--- a/board/l+g/vinco/vinco.c
+++ b/board/l+g/vinco/vinco.c
@@ -24,7 +24,6 @@
 #include <asm/arch/sama5d4.h>
 #include <atmel_hlcdc.h>
 #include <atmel_mci.h>
-#include <lcd.h>
 #include <mmc.h>
 #include <net.h>
 #include <netdev.h>
diff --git a/board/menlo/m53menlo/m53menlo.c b/board/menlo/m53menlo/m53menlo.c
index 4afc5aa..14324c7 100644
--- a/board/menlo/m53menlo/m53menlo.c
+++ b/board/menlo/m53menlo/m53menlo.c
@@ -358,7 +358,7 @@
 		return 0;
 
 	addr = hextoul(s, NULL);
-	dst = malloc(CONFIG_SYS_VIDEO_LOGO_MAX_SIZE);
+	dst = malloc(CONFIG_VIDEO_LOGO_MAX_SIZE);
 	if (!dst)
 		return -ENOMEM;
 
@@ -366,8 +366,8 @@
 	if (ret < 0)
 		goto splasherr;
 
-	len = CONFIG_SYS_VIDEO_LOGO_MAX_SIZE;
-	ret = gunzip(dst + 2, CONFIG_SYS_VIDEO_LOGO_MAX_SIZE - 2,
+	len = CONFIG_VIDEO_LOGO_MAX_SIZE;
+	ret = gunzip(dst + 2, CONFIG_VIDEO_LOGO_MAX_SIZE - 2,
 		     (uchar *)addr, &len);
 	if (ret) {
 		printf("Error: no valid bmp or bmp.gz image at %lx\n", addr);
diff --git a/board/nvidia/harmony/harmony.c b/board/nvidia/harmony/harmony.c
index dd56a39..5223679 100644
--- a/board/nvidia/harmony/harmony.c
+++ b/board/nvidia/harmony/harmony.c
@@ -5,7 +5,6 @@
  */
 
 #include <common.h>
-#include <lcd.h>
 #include <asm/io.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/funcmux.h>
diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
index 00afb35..8603c93 100644
--- a/board/raspberrypi/rpi/rpi.c
+++ b/board/raspberrypi/rpi/rpi.c
@@ -11,7 +11,6 @@
 #include <fdt_support.h>
 #include <fdt_simplefb.h>
 #include <init.h>
-#include <lcd.h>
 #include <memalign.h>
 #include <mmc.h>
 #include <asm/gpio.h>
diff --git a/board/ronetix/pm9263/pm9263.c b/board/ronetix/pm9263/pm9263.c
index 6dc080a..84926cd 100644
--- a/board/ronetix/pm9263/pm9263.c
+++ b/board/ronetix/pm9263/pm9263.c
@@ -69,115 +69,6 @@
 }
 #endif
 
-#ifdef CONFIG_LCD
-
-#ifdef CONFIG_LCD_IN_PSRAM
-
-#define PSRAM_CRE_PIN	AT91_PIO_PORTB, 29
-#define PSRAM_CTRL_REG	(PHYS_PSRAM + PHYS_PSRAM_SIZE - 2)
-
-/* Initialize the PSRAM memory */
-static int pm9263_lcd_hw_psram_init(void)
-{
-	unsigned long csa;
-	struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC1;
-	struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
-
-	/* Enable CS3  3.3v, no pull-ups */
-	csa = readl(&matrix->csa[1]) | AT91_MATRIX_CSA_DBPUC |
-		AT91_MATRIX_CSA_VDDIOMSEL_3_3V;
-
-	writel(csa, &matrix->csa[1]);
-
-	/* Configure SMC1 CS0 for PSRAM - 16-bit */
-	writel(AT91_SMC_SETUP_NWE(0) | AT91_SMC_SETUP_NCS_WR(0) |
-		AT91_SMC_SETUP_NRD(0) | AT91_SMC_SETUP_NCS_RD(0),
-		&smc->cs[0].setup);
-
-	writel(AT91_SMC_PULSE_NWE(7) | AT91_SMC_PULSE_NCS_WR(7) |
-		AT91_SMC_PULSE_NRD(2) | AT91_SMC_PULSE_NCS_RD(7),
-		&smc->cs[0].pulse);
-
-	writel(AT91_SMC_CYCLE_NWE(8) | AT91_SMC_CYCLE_NRD(8),
-		&smc->cs[0].cycle);
-
-	writel(AT91_SMC_MODE_DBW_16 | AT91_SMC_MODE_PMEN | AT91_SMC_MODE_PS_32,
-		&smc->cs[0].mode);
-
-	/* setup PB29 as output */
-	at91_set_pio_output(PSRAM_CRE_PIN, 1);
-
-	at91_set_pio_value(PSRAM_CRE_PIN, 0);	/* set PSRAM_CRE_PIN to '0' */
-
-	/* PSRAM: write BCR */
-	readw(PSRAM_CTRL_REG);
-	readw(PSRAM_CTRL_REG);
-	writew(1, PSRAM_CTRL_REG);	/* 0 - RCR,1 - BCR */
-	writew(0x9d4f, PSRAM_CTRL_REG);	/* write the BCR */
-
-	/* write RCR of the PSRAM */
-	readw(PSRAM_CTRL_REG);
-	readw(PSRAM_CTRL_REG);
-	writew(0, PSRAM_CTRL_REG);	/* 0 - RCR,1 - BCR */
-	/* set RCR; 0x10-async mode,0x90-page mode */
-	writew(0x90, PSRAM_CTRL_REG);
-
-	/*
-	 * test to see if the PSRAM is MT45W2M16A or MT45W2M16B
-	 * MT45W2M16B - CRE must be 0
-	 * MT45W2M16A - CRE must be 1
-	 */
-	writew(0x1234, PHYS_PSRAM);
-	writew(0x5678, PHYS_PSRAM + 2);
-
-	/* test if the chip is MT45W2M16B */
-	if ((readw(PHYS_PSRAM) != 0x1234) || (readw(PHYS_PSRAM+2) != 0x5678)) {
-		/* try with CRE=1 (MT45W2M16A) */
-		at91_set_pio_value(PSRAM_CRE_PIN, 1); /* set PSRAM_CRE_PIN to '1' */
-
-		/* write RCR of the PSRAM */
-		readw(PSRAM_CTRL_REG);
-		readw(PSRAM_CTRL_REG);
-		writew(0, PSRAM_CTRL_REG);	/* 0 - RCR,1 - BCR */
-		/* set RCR;0x10-async mode,0x90-page mode */
-		writew(0x90, PSRAM_CTRL_REG);
-
-
-		writew(0x1234, PHYS_PSRAM);
-		writew(0x5678, PHYS_PSRAM+2);
-		if ((readw(PHYS_PSRAM) != 0x1234)
-		  || (readw(PHYS_PSRAM + 2) != 0x5678))
-			return 1;
-
-	}
-
-	/* Bus matrix */
-	writel(AT91_MATRIX_PRA_M5(3), &matrix->pr[5].a);
-	writel(CONFIG_PSRAM_SCFG, &matrix->scfg[5]);
-
-	return 0;
-}
-#endif
-
-static void pm9263_lcd_hw_init(void)
-{
-	/* Power Control */
-	at91_set_pio_output(AT91_PIO_PORTA, 22, 1);
-	at91_set_pio_value(AT91_PIO_PORTA, 22, 0);	/* power down */
-
-#ifdef CONFIG_LCD_IN_PSRAM
-	/* initialize the PSRAM */
-	int stat = pm9263_lcd_hw_psram_init();
-
-	gd->fb_base = (stat == 0) ? PHYS_PSRAM : ATMEL_BASE_SRAM0;
-#else
-	gd->fb_base = ATMEL_BASE_SRAM0;
-#endif
-
-}
-
-#endif /* CONFIG_LCD */
-
 int board_early_init_f(void)
 {
 	return 0;
@@ -197,9 +88,6 @@
 #ifdef CONFIG_USB_OHCI_NEW
 	at91_uhp_hw_init();
 #endif
-#ifdef CONFIG_LCD
-	pm9263_lcd_hw_init();
-#endif
 	return 0;
 }
 
diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c
index ff178b7..49d4024 100644
--- a/board/samsung/common/board.c
+++ b/board/samsung/common/board.c
@@ -26,7 +26,6 @@
 #include <asm/arch/pinmux.h>
 #include <asm/arch/power.h>
 #include <asm/arch/system.h>
-#include <lcd.h>
 #include <i2c.h>
 #include <mmc.h>
 #include <stdio_dev.h>
@@ -262,10 +261,6 @@
 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
 	set_board_info();
 #endif
-#ifdef CONFIG_LCD_MENU
-	keys_init();
-	check_boot_mode();
-#endif
 #ifdef CONFIG_CMD_BMP
 	if (panel_info.logo_on)
 		draw_logo();
diff --git a/board/samsung/common/misc.c b/board/samsung/common/misc.c
index b3b1bbc..9c0ec29 100644
--- a/board/samsung/common/misc.c
+++ b/board/samsung/common/misc.c
@@ -7,7 +7,6 @@
 #include <common.h>
 #include <command.h>
 #include <env.h>
-#include <lcd.h>
 #include <libtizen.h>
 #include <asm/global_data.h>
 #include <linux/delay.h>
@@ -114,345 +113,6 @@
 }
 #endif /* CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG */
 
-#ifdef CONFIG_LCD_MENU
-static int power_key_pressed(u32 reg)
-{
-	struct udevice *dev;
-	int ret;
-	u32 status;
-	u32 mask;
-
-	if (IS_ENABLED(CONFIG_TARGET_TRATS))
-		ret = pmic_get("max8997-pmic", &dev);
-	else if (IS_ENABLED(CONFIG_TARGET_TRATS2))
-		ret = pmic_get("max77686-pmic", &dev);
-	else if (IS_ENABLED(CONFIG_TARGET_S5PC210_UNIVERSAL))
-		ret = pmic_get("max8998-pmic", &dev);
-	else
-		return 0;
-
-	if (ret)
-		return ret;
-
-	if (reg == KEY_PWR_STATUS_REG)
-		mask = KEY_PWR_STATUS_MASK;
-	else
-		mask = KEY_PWR_INTERRUPT_MASK;
-
-	status = pmic_reg_read(dev, reg);
-	if (status < 0)
-		return status;
-
-	return !!(status & mask);
-}
-
-static int key_pressed(int key)
-{
-	int value;
-
-	switch (key) {
-	case KEY_POWER:
-		value = power_key_pressed(KEY_PWR_INTERRUPT_REG);
-		break;
-	case KEY_VOLUMEUP:
-		value = !gpio_get_value(KEY_VOL_UP_GPIO);
-		break;
-	case KEY_VOLUMEDOWN:
-		value = !gpio_get_value(KEY_VOL_DOWN_GPIO);
-		break;
-	default:
-		value = 0;
-		break;
-	}
-
-	return value;
-}
-
-#ifdef CONFIG_LCD
-static int check_keys(void)
-{
-	int keys = 0;
-
-	if (key_pressed(KEY_POWER))
-		keys += KEY_POWER;
-	if (key_pressed(KEY_VOLUMEUP))
-		keys += KEY_VOLUMEUP;
-	if (key_pressed(KEY_VOLUMEDOWN))
-		keys += KEY_VOLUMEDOWN;
-
-	return keys;
-}
-
-/*
- * 0 BOOT_MODE_INFO
- * 1 BOOT_MODE_THOR
- * 2 BOOT_MODE_UMS
- * 3 BOOT_MODE_DFU
- * 4 BOOT_MODE_EXIT
- */
-static char *
-mode_name[BOOT_MODE_EXIT + 1][2] = {
-	{"DEVICE", ""},
-	{"THOR", "thor"},
-	{"UMS", "ums"},
-	{"DFU", "dfu"},
-	{"GPT", "gpt"},
-	{"ENV", "env"},
-	{"EXIT", ""},
-};
-
-static char *
-mode_info[BOOT_MODE_EXIT + 1] = {
-	"info",
-	"downloader",
-	"mass storage",
-	"firmware update",
-	"restore",
-	"default",
-	"and run normal boot"
-};
-
-static char *
-mode_cmd[BOOT_MODE_EXIT + 1] = {
-	"",
-	"thor 0 mmc 0",
-	"ums 0 mmc 0",
-	"dfu 0 mmc 0",
-	"gpt write mmc 0 $partitions",
-	"env default -a; saveenv",
-	"",
-};
-
-static void display_board_info(void)
-{
-#ifdef CONFIG_MMC
-	struct mmc *mmc = find_mmc_device(0);
-#endif
-	vidinfo_t *vid = &panel_info;
-
-	lcd_position_cursor(4, 4);
-
-	lcd_printf("%s\n\t", U_BOOT_VERSION);
-	lcd_puts("\n\t\tBoard Info:\n");
-#ifdef CONFIG_SYS_BOARD
-	lcd_printf("\tBoard name: %s\n", CONFIG_SYS_BOARD);
-#endif
-#ifdef CONFIG_REVISION_TAG
-	lcd_printf("\tBoard rev: %u\n", get_board_rev());
-#endif
-	lcd_printf("\tDRAM banks: %u\n", CONFIG_NR_DRAM_BANKS);
-	lcd_printf("\tDRAM size: %u MB\n", gd->ram_size / SZ_1M);
-
-#ifdef CONFIG_MMC
-	if (mmc) {
-		if (!mmc->capacity)
-			mmc_init(mmc);
-
-		lcd_printf("\teMMC size: %llu MB\n", mmc->capacity / SZ_1M);
-	}
-#endif
-	if (vid)
-		lcd_printf("\tDisplay resolution: %u x % u\n",
-			   vid->vl_col, vid->vl_row);
-
-	lcd_printf("\tDisplay BPP: %u\n", 1 << vid->vl_bpix);
-}
-#endif
-
-static int mode_leave_menu(int mode)
-{
-#ifdef CONFIG_LCD
-	char *exit_option;
-	char *exit_reset = "reset";
-	char *exit_back = "back";
-	struct cmd_tbl *cmd;
-	int cmd_result;
-	int leave;
-
-	lcd_clear();
-
-	switch (mode) {
-	case BOOT_MODE_EXIT:
-		return 1;
-	case BOOT_MODE_INFO:
-		display_board_info();
-		exit_option = exit_back;
-		leave = 0;
-		break;
-	default:
-		cmd = find_cmd(mode_name[mode][1]);
-		if (cmd) {
-			printf("Enter: %s %s\n", mode_name[mode][0],
-			       mode_info[mode]);
-			lcd_printf("\n\n\t%s %s\n", mode_name[mode][0],
-				   mode_info[mode]);
-			lcd_puts("\n\tDo not turn off device before finish!\n");
-
-			cmd_result = run_command(mode_cmd[mode], 0);
-
-			if (cmd_result == CMD_RET_SUCCESS) {
-				printf("Command finished\n");
-				lcd_clear();
-				lcd_printf("\n\n\t%s finished\n",
-					   mode_name[mode][0]);
-
-				exit_option = exit_reset;
-				leave = 1;
-			} else {
-				printf("Command error\n");
-				lcd_clear();
-				lcd_printf("\n\n\t%s command error\n",
-					   mode_name[mode][0]);
-
-				exit_option = exit_back;
-				leave = 0;
-			}
-		} else {
-			lcd_puts("\n\n\tThis mode is not supported.\n");
-			exit_option = exit_back;
-			leave = 0;
-		}
-	}
-
-	lcd_printf("\n\n\tPress POWER KEY to %s\n", exit_option);
-
-	/* Clear PWR button Rising edge interrupt status flag */
-	power_key_pressed(KEY_PWR_INTERRUPT_REG);
-
-	/* Wait for PWR key */
-	while (!key_pressed(KEY_POWER))
-		mdelay(1);
-
-	lcd_clear();
-	return leave;
-#else
-	return 0;
-#endif
-}
-
-#ifdef CONFIG_LCD
-static void display_download_menu(int mode)
-{
-	char *selection[BOOT_MODE_EXIT + 1];
-	int i;
-
-	for (i = 0; i <= BOOT_MODE_EXIT; i++)
-		selection[i] = "[  ]";
-
-	selection[mode] = "[=>]";
-
-	lcd_clear();
-	lcd_printf("\n\n\t\tDownload Mode Menu\n\n");
-
-	for (i = 0; i <= BOOT_MODE_EXIT; i++)
-		lcd_printf("\t%s  %s - %s\n\n", selection[i],
-			   mode_name[i][0], mode_info[i]);
-}
-#endif
-
-static void download_menu(void)
-{
-#ifdef CONFIG_LCD
-	int mode = 0;
-	int last_mode = 0;
-	int run;
-	int key = 0;
-	int timeout = 15; /* sec */
-	int i;
-
-	display_download_menu(mode);
-
-	lcd_puts("\n");
-
-	/* Start count if no key is pressed */
-	while (check_keys())
-		continue;
-
-	while (timeout--) {
-		lcd_printf("\r\tNormal boot will start in: %2.d seconds.",
-			   timeout);
-
-		/* about 1000 ms in for loop */
-		for (i = 0; i < 10; i++) {
-			mdelay(100);
-			key = check_keys();
-			if (key)
-				break;
-		}
-		if (key)
-			break;
-	}
-
-	if (!key) {
-		lcd_clear();
-		return;
-	}
-
-	while (1) {
-		run = 0;
-
-		if (mode != last_mode)
-			display_download_menu(mode);
-
-		last_mode = mode;
-		mdelay(200);
-
-		key = check_keys();
-		switch (key) {
-		case KEY_POWER:
-			run = 1;
-			break;
-		case KEY_VOLUMEUP:
-			if (mode > 0)
-				mode--;
-			break;
-		case KEY_VOLUMEDOWN:
-			if (mode < BOOT_MODE_EXIT)
-				mode++;
-			break;
-		default:
-			break;
-		}
-
-		if (run) {
-			if (mode_leave_menu(mode))
-				run_command("reset", 0);
-
-			display_download_menu(mode);
-		}
-	}
-
-	lcd_clear();
-#endif
-}
-
-void check_boot_mode(void)
-{
-	int pwr_key;
-
-	pwr_key = power_key_pressed(KEY_PWR_STATUS_REG);
-	if (!pwr_key)
-		return;
-
-	/* Clear PWR button Rising edge interrupt status flag */
-	power_key_pressed(KEY_PWR_INTERRUPT_REG);
-
-	if (key_pressed(KEY_VOLUMEUP))
-		download_menu();
-	else if (key_pressed(KEY_VOLUMEDOWN))
-		mode_leave_menu(BOOT_MODE_THOR);
-}
-
-void keys_init(void)
-{
-	/* Set direction to input */
-	gpio_request(KEY_VOL_UP_GPIO, "volume-up");
-	gpio_request(KEY_VOL_DOWN_GPIO, "volume-down");
-	gpio_direction_input(KEY_VOL_UP_GPIO);
-	gpio_direction_input(KEY_VOL_DOWN_GPIO);
-}
-#endif /* CONFIG_LCD_MENU */
-
 #ifdef CONFIG_CMD_BMP
 void draw_logo(void)
 {
diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c
index 24bf355..1608d60 100644
--- a/board/samsung/trats/trats.c
+++ b/board/samsung/trats/trats.c
@@ -8,7 +8,6 @@
 
 #include <common.h>
 #include <env.h>
-#include <lcd.h>
 #include <log.h>
 #include <asm/io.h>
 #include <asm/gpio.h>
diff --git a/board/samsung/trats2/trats2.c b/board/samsung/trats2/trats2.c
index da7f0dc..93c9714 100644
--- a/board/samsung/trats2/trats2.c
+++ b/board/samsung/trats2/trats2.c
@@ -6,7 +6,6 @@
  */
 
 #include <common.h>
-#include <lcd.h>
 #include <log.h>
 #include <asm/gpio.h>
 #include <asm/arch/pinmux.h>
@@ -282,24 +281,3 @@
 #endif
 }
 #endif
-
-/*
- * LCD
- */
-
-#ifdef CONFIG_LCD
-int mipi_power(void)
-{
-#if !CONFIG_IS_ENABLED(DM_I2C) /* TODO(maintainer): Convert to driver model */
-	struct pmic *p = pmic_get("MAX77686_PMIC");
-
-	/* LDO8 VMIPI_1.0V_AP */
-	max77686_set_ldo_mode(p, 8, OPMODE_ON);
-	/* LDO10 VMIPI_1.8V_AP */
-	max77686_set_ldo_mode(p, 10, OPMODE_ON);
-#endif
-
-	return 0;
-}
-
-#endif /* LCD */
diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c
index 1dde2f7..37c9d7f 100644
--- a/board/samsung/universal_c210/universal.c
+++ b/board/samsung/universal_c210/universal.c
@@ -9,14 +9,12 @@
 #include <env.h>
 #include <log.h>
 #include <spi.h>
-#include <lcd.h>
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <asm/gpio.h>
 #include <asm/arch/adc.h>
 #include <asm/arch/pinmux.h>
 #include <asm/arch/watchdog.h>
-#include <ld9040.h>
 #include <linux/delay.h>
 #include <power/pmic.h>
 #include <usb.h>
diff --git a/board/st/stm32f746-disco/stm32f746-disco.c b/board/st/stm32f746-disco/stm32f746-disco.c
index 2ab23f2..4cfb29e 100644
--- a/board/st/stm32f746-disco/stm32f746-disco.c
+++ b/board/st/stm32f746-disco/stm32f746-disco.c
@@ -7,7 +7,6 @@
 #include <common.h>
 #include <dm.h>
 #include <init.h>
-#include <lcd.h>
 #include <log.h>
 #include <miiphy.h>
 #include <phy_interface.h>
diff --git a/board/technexion/pico-imx7d/README b/board/technexion/pico-imx7d/README
index 4d57cdb..e8f5082 100644
--- a/board/technexion/pico-imx7d/README
+++ b/board/technexion/pico-imx7d/README
@@ -130,7 +130,6 @@
 @@ -67,3 +67,4 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  CONFIG_CI_UDC=y
- CONFIG_VIDEO=y
 +CONFIG_SPL_OS_BOOT=y
 
 Then rebuild U-Boot:
diff --git a/board/technexion/pico-imx7d/pico-imx7d.c b/board/technexion/pico-imx7d/pico-imx7d.c
index 1c0cc23..7db34ab 100644
--- a/board/technexion/pico-imx7d/pico-imx7d.c
+++ b/board/technexion/pico-imx7d/pico-imx7d.c
@@ -175,7 +175,7 @@
 	return 0;
 }
 
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 void setup_lcd(void)
 {
 	gpio_request(IMX_GPIO_NR(1, 11), "lcd_brightness");
@@ -192,7 +192,7 @@
 	/* address of boot parameters */
 	gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
 
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 	setup_lcd();
 #endif
 #ifdef CONFIG_FEC_MXC
diff --git a/board/toradex/colibri-imx6ull/colibri-imx6ull.c b/board/toradex/colibri-imx6ull/colibri-imx6ull.c
index ba4e0df..6007f110 100644
--- a/board/toradex/colibri-imx6ull/colibri-imx6ull.c
+++ b/board/toradex/colibri-imx6ull/colibri-imx6ull.c
@@ -67,7 +67,7 @@
 }
 #endif /* CONFIG_NAND_MXS */
 
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 static const iomux_v3_cfg_t backlight_pads[] = {
 	/* Backlight On */
 	MX6_PAD_JTAG_TMS__GPIO1_IO11		| MUX_PAD_CTRL(NO_PAD_CTRL),
@@ -195,7 +195,7 @@
 	}
 #endif /* CONFIG_CMD_USB_SDP */
 
-#if defined(CONFIG_DM_VIDEO)
+#if defined(CONFIG_VIDEO)
 	setup_lcd();
 #endif
 
diff --git a/board/toradex/colibri_imx7/colibri_imx7.c b/board/toradex/colibri_imx7/colibri_imx7.c
index 4f04543..6ce4fa3 100644
--- a/board/toradex/colibri_imx7/colibri_imx7.c
+++ b/board/toradex/colibri_imx7/colibri_imx7.c
@@ -101,7 +101,7 @@
 }
 #endif
 
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 static iomux_v3_cfg_t const backlight_pads[] = {
 	/* Backlight On */
 	MX7D_PAD_SD1_WP__GPIO5_IO1 | MUX_PAD_CTRL(NO_PAD_CTRL),
@@ -134,7 +134,7 @@
  */
 void board_preboot_os(void)
 {
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 	gpio_direction_output(GPIO_PWM_A, 1);
 	gpio_direction_output(GPIO_BL_ON, 0);
 #endif
@@ -334,7 +334,7 @@
 #if defined(CONFIG_BOARD_LATE_INIT)
 int board_late_init(void)
 {
-#if defined(CONFIG_DM_VIDEO)
+#if defined(CONFIG_VIDEO)
 	setup_lcd();
 #endif
 
diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
index fadbe45..071961f 100644
--- a/board/toradex/common/tdx-common.c
+++ b/board/toradex/common/tdx-common.c
@@ -9,7 +9,7 @@
 #include <init.h>
 #include <linux/libfdt.h>
 
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 #include <bmp_logo.h>
 #include <dm.h>
 #include <splash.h>
diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c
index d5c215a..8133006 100644
--- a/boot/pxe_utils.c
+++ b/boot/pxe_utils.c
@@ -12,7 +12,6 @@
 #include <log.h>
 #include <malloc.h>
 #include <mapmem.h>
-#include <lcd.h>
 #include <net.h>
 #include <fdt_support.h>
 #include <video.h>
@@ -1519,7 +1518,7 @@
 		/* display BMP if available */
 		if (cfg->bmp) {
 			if (get_relfile(ctx, cfg->bmp, image_load_addr, NULL)) {
-#if defined(CONFIG_DM_VIDEO)
+#if defined(CONFIG_VIDEO)
 				struct udevice *dev;
 
 				err = uclass_first_device_err(UCLASS_VIDEO, &dev);
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 41cf1d4..3f6bc70 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -1877,7 +1877,7 @@
 
 config CMD_BMP
 	bool "Enable 'bmp' command"
-	depends on LCD || DM_VIDEO || VIDEO
+	depends on VIDEO
 	help
 	  This provides a way to obtain information about a BMP-format image
 	  and to display it. BMP (which presumably stands for BitMaP) is a
@@ -1939,7 +1939,7 @@
 
 config CMD_CLS
 	bool "Enable clear screen command 'cls'"
-	default y if LCD
+	default y if LCD || DM_VIDEO
 	help
 	  Enable the 'cls' command which clears the screen contents
 	  on video frame buffer.
@@ -2161,6 +2161,18 @@
 	  The two commands are very similar except for the endianness of the
 	  output.
 
+config CMD_VIDCONSOLE
+	bool "lcdputs and setcurs"
+	depends on VIDEO
+	default y
+	help
+	  Enabling this will provide 'setcurs' and 'lcdputs' commands which
+	  support cursor positioning and drawing strings on the video
+	  console (framebuffer).
+
+	  The name 'lcdputs' is a bit of a misnomer, but so named because the
+	  video device is often an LCD.
+
 endmenu
 
 source "cmd/ti/Kconfig"
diff --git a/cmd/Makefile b/cmd/Makefile
index c95e09d..ca9ed10 100644
--- a/cmd/Makefile
+++ b/cmd/Makefile
@@ -74,6 +74,7 @@
 obj-$(CONFIG_CMD_FAT) += fat.o
 obj-$(CONFIG_CMD_FDT) += fdt.o
 obj-$(CONFIG_CMD_SQUASHFS) += sqfs.o
+obj-$(CONFIG_CONSOLE_TRUETYPE) += font.o
 obj-$(CONFIG_CMD_FLASH) += flash.o
 obj-$(CONFIG_CMD_FPGA) += fpga.o
 obj-$(CONFIG_CMD_FPGAD) += fpgad.o
@@ -178,6 +179,8 @@
 obj-$(CONFIG_CMD_LZMADEC) += lzmadec.o
 obj-$(CONFIG_CMD_UFS) += ufs.o
 obj-$(CONFIG_CMD_USB) += usb.o disk.o
+obj-$(CONFIG_CMD_VIDCONSOLE) += video.o
+
 obj-$(CONFIG_CMD_FASTBOOT) += fastboot.o
 obj-$(CONFIG_CMD_FS_UUID) += fs_uuid.o
 
diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c
index af2e975..bf002f8 100644
--- a/cmd/bdinfo.c
+++ b/cmd/bdinfo.c
@@ -122,11 +122,8 @@
 	bdinfo_print_num_l("fdt_blob", (ulong)gd->fdt_blob);
 	bdinfo_print_num_l("new_fdt", (ulong)gd->new_fdt);
 	bdinfo_print_num_l("fdt_size", (ulong)gd->fdt_size);
-	if (IS_ENABLED(CONFIG_DM_VIDEO))
+	if (IS_ENABLED(CONFIG_VIDEO))
 		show_video_info();
-#if defined(CONFIG_LCD)
-	bdinfo_print_num_l("FB base  ", gd->fb_base);
-#endif
 #if CONFIG_IS_ENABLED(MULTI_DTB_FIT)
 	bdinfo_print_num_l("multi_dtb_fit", (ulong)gd->multi_dtb_fit);
 #endif
diff --git a/cmd/bmp.c b/cmd/bmp.c
index 45f4c12..46d0d91 100644
--- a/cmd/bmp.c
+++ b/cmd/bmp.c
@@ -14,7 +14,6 @@
 #include <dm.h>
 #include <gzip.h>
 #include <image.h>
-#include <lcd.h>
 #include <log.h>
 #include <malloc.h>
 #include <mapmem.h>
@@ -48,27 +47,24 @@
 	/*
 	 * Decompress bmp image
 	 */
-	len = CONFIG_SYS_VIDEO_LOGO_MAX_SIZE;
+	len = CONFIG_VIDEO_LOGO_MAX_SIZE;
 	/* allocate extra 3 bytes for 32-bit-aligned-address + 2 alignment */
-	dst = malloc(CONFIG_SYS_VIDEO_LOGO_MAX_SIZE + 3);
-	if (dst == NULL) {
+	dst = malloc(CONFIG_VIDEO_LOGO_MAX_SIZE + 3);
+	if (!dst) {
 		puts("Error: malloc in gunzip failed!\n");
 		return NULL;
 	}
 
-	bmp = dst;
-
 	/* align to 32-bit-aligned-address + 2 */
-	bmp = (struct bmp_image *)((((uintptr_t)dst + 1) & ~3) + 2);
+	bmp = dst + 2;
 
-	if (gunzip(bmp, CONFIG_SYS_VIDEO_LOGO_MAX_SIZE, map_sysmem(addr, 0),
-		   &len) != 0) {
+	if (gunzip(bmp, CONFIG_VIDEO_LOGO_MAX_SIZE, map_sysmem(addr, 0),
+		   &len)) {
 		free(dst);
 		return NULL;
 	}
-	if (len == CONFIG_SYS_VIDEO_LOGO_MAX_SIZE)
-		puts("Image could be truncated"
-				" (increase CONFIG_SYS_VIDEO_LOGO_MAX_SIZE)!\n");
+	if (len == CONFIG_VIDEO_LOGO_MAX_SIZE)
+		puts("Image could be truncated (increase CONFIG_VIDEO_LOGO_MAX_SIZE)!\n");
 
 	/*
 	 * Check for bmp mark 'BM'
@@ -224,21 +220,9 @@
 	return(0);
 }
 
-/*
- * Subroutine:  bmp_display
- *
- * Description: Display bmp file located in memory
- *
- * Inputs:	addr		address of the bmp file
- *
- * Return:      None
- *
- */
 int bmp_display(ulong addr, int x, int y)
 {
-#ifdef CONFIG_DM_VIDEO
 	struct udevice *dev;
-#endif
 	int ret;
 	struct bmp_image *bmp = map_sysmem(addr, 0);
 	void *bmp_alloc_addr = NULL;
@@ -254,23 +238,15 @@
 	}
 	addr = map_to_sysmem(bmp);
 
-#ifdef CONFIG_DM_VIDEO
 	ret = uclass_first_device_err(UCLASS_VIDEO, &dev);
 	if (!ret) {
 		bool align = false;
 
-		if (CONFIG_IS_ENABLED(SPLASH_SCREEN_ALIGN) ||
-		    x == BMP_ALIGN_CENTER ||
-		    y == BMP_ALIGN_CENTER)
+		if (x == BMP_ALIGN_CENTER || y == BMP_ALIGN_CENTER)
 			align = true;
 
 		ret = video_bmp_display(dev, addr, x, y, align);
 	}
-#elif defined(CONFIG_LCD)
-	ret = lcd_display_bitmap(addr, x, y);
-#else
-# error bmp_display() requires CONFIG_LCD
-#endif
 
 	if (bmp_alloc_addr)
 		free(bmp_alloc_addr);
diff --git a/cmd/cls.c b/cmd/cls.c
index ba36220..18643ec 100644
--- a/cmd/cls.c
+++ b/cmd/cls.c
@@ -19,7 +19,7 @@
 
 	/*  Send clear screen and home */
 	printf(CSI "2J" CSI "1;1H");
-	if (CONFIG_IS_ENABLED(DM_VIDEO) && !CONFIG_IS_ENABLED(VIDEO_ANSI)) {
+	if (CONFIG_IS_ENABLED(VIDEO) && !CONFIG_IS_ENABLED(VIDEO_ANSI)) {
 		if (uclass_first_device_err(UCLASS_VIDEO, &dev))
 			return CMD_RET_FAILURE;
 		if (video_clear(dev))
diff --git a/cmd/font.c b/cmd/font.c
new file mode 100644
index 0000000..3e522f3
--- /dev/null
+++ b/cmd/font.c
@@ -0,0 +1,81 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * video commands
+ *
+ * Copyright 2022 Google LLC
+ * Written by Simon Glass <sjg@chromium.org>
+ */
+
+#include <common.h>
+#include <command.h>
+#include <dm.h>
+#include <video.h>
+#include <video_console.h>
+
+static int do_font_list(struct cmd_tbl *cmdtp, int flag, int argc,
+			char *const argv[])
+{
+	vidconsole_list_fonts();
+
+	return 0;
+}
+
+static int do_font_select(struct cmd_tbl *cmdtp, int flag, int argc,
+			  char *const argv[])
+{
+	struct udevice *dev;
+	const char *name;
+	uint size = 0;
+	int ret;
+
+	if (argc < 2)
+		return CMD_RET_USAGE;
+
+	if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
+		return CMD_RET_FAILURE;
+	name = argv[1];
+	if (argc == 3)
+		size = dectoul(argv[2], NULL);
+	ret = vidconsole_select_font(dev, name, size);
+	if (ret) {
+		printf("Failed (error %d)\n", ret);
+		return CMD_RET_FAILURE;
+	}
+
+	return 0;
+}
+static int do_font_size(struct cmd_tbl *cmdtp, int flag, int argc,
+			char *const argv[])
+{
+	struct udevice *dev;
+	uint size;
+	int ret;
+
+	if (argc != 2)
+		return CMD_RET_USAGE;
+
+	if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
+		return CMD_RET_FAILURE;
+
+	size = dectoul(argv[1], NULL);
+	ret = vidconsole_select_font(dev, NULL, size);
+	if (ret) {
+		printf("Failed (error %d)\n", ret);
+		return CMD_RET_FAILURE;
+	}
+
+	return 0;
+}
+
+
+#ifdef CONFIG_SYS_LONGHELP
+static char font_help_text[] =
+	"list       - list available fonts\n"
+	"font select <name> [<size>] - select font to use\n"
+	"font size <size> - select font size to";
+#endif
+
+U_BOOT_CMD_WITH_SUBCMDS(font, "Fonts", font_help_text,
+	U_BOOT_SUBCMD_MKENT(list, 1, 1, do_font_list),
+	U_BOOT_SUBCMD_MKENT(select, 3, 1, do_font_select),
+	U_BOOT_SUBCMD_MKENT(size, 2, 1, do_font_size));
diff --git a/cmd/video.c b/cmd/video.c
new file mode 100644
index 0000000..942f81c
--- /dev/null
+++ b/cmd/video.c
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * video commands
+ *
+ * Copyright 2022 Google LLC
+ * Written by Simon Glass <sjg@chromium.org>
+ */
+
+#include <common.h>
+#include <command.h>
+#include <dm.h>
+#include <video.h>
+#include <video_console.h>
+
+static int do_video_setcursor(struct cmd_tbl *cmdtp, int flag, int argc,
+			      char *const argv[])
+{
+	unsigned int col, row;
+	struct udevice *dev;
+
+	if (argc != 3)
+		return CMD_RET_USAGE;
+
+	if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
+		return CMD_RET_FAILURE;
+	col = dectoul(argv[1], NULL);
+	row = dectoul(argv[2], NULL);
+	vidconsole_position_cursor(dev, col, row);
+
+	return 0;
+}
+
+static int do_video_puts(struct cmd_tbl *cmdtp, int flag, int argc,
+			 char *const argv[])
+{
+	struct udevice *dev;
+	int ret;
+
+	if (argc != 2)
+		return CMD_RET_USAGE;
+
+	if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
+		return CMD_RET_FAILURE;
+	ret = vidconsole_put_string(dev, argv[1]);
+	if (!ret)
+		ret = video_sync(dev->parent, false);
+
+	return ret ? CMD_RET_FAILURE : 0;
+}
+
+U_BOOT_CMD(
+	setcurs, 3,	1,	do_video_setcursor,
+	"set cursor position within screen",
+	"    <col> <row> in character"
+);
+
+U_BOOT_CMD(
+	lcdputs, 2,	1,	do_video_puts,
+	"print string on video framebuffer",
+	"    <string>"
+);
diff --git a/common/Kconfig b/common/Kconfig
index 6608a4f..62e7fb5 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -194,7 +194,7 @@
 
 config CONSOLE_MUX
 	bool "Enable console multiplexing"
-	default y if DM_VIDEO || VIDEO || LCD
+	default y if VIDEO || VIDEO || LCD
 	help
 	  This allows multiple devices to be used for each console 'file'.
 	  For example, stdout can be set to go to serial and video.
diff --git a/common/Makefile b/common/Makefile
index 1d56c9f..20addfb 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -35,10 +35,6 @@
 obj-$(CONFIG_KALLSYMS) += kallsyms.o
 obj-y += splash.o
 obj-$(CONFIG_SPLASH_SOURCE) += splash_source.o
-ifndef CONFIG_DM_VIDEO
-obj-$(CONFIG_LCD) += lcd.o lcd_console.o
-endif
-obj-$(CONFIG_LCD_ROTATION) += lcd_console_rotation.o
 obj-$(CONFIG_MENU) += menu.o
 obj-$(CONFIG_UPDATE_COMMON) += update.o
 obj-$(CONFIG_USB_KEYBOARD) += usb_kbd.o
diff --git a/common/board_f.c b/common/board_f.c
index 4355d1c..51ba593 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -28,7 +28,6 @@
 #include <i2c.h>
 #include <init.h>
 #include <initcall.h>
-#include <lcd.h>
 #include <log.h>
 #include <malloc.h>
 #include <mapmem.h>
@@ -409,22 +408,18 @@
 
 static int reserve_video(void)
 {
-#ifdef CONFIG_DM_VIDEO
-	ulong addr;
-	int ret;
+	if (IS_ENABLED(CONFIG_VIDEO)) {
+		ulong addr;
+		int ret;
 
-	addr = gd->relocaddr;
-	ret = video_reserve(&addr);
-	if (ret)
-		return ret;
-	debug("Reserving %luk for video at: %08lx\n",
-	      ((unsigned long)gd->relocaddr - addr) >> 10, addr);
-	gd->relocaddr = addr;
-#elif defined(CONFIG_LCD)
-	/* reserve memory for LCD display (always full pages) */
-	gd->relocaddr = lcd_setmem(gd->relocaddr);
-	gd->fb_base = gd->relocaddr;
-#endif
+		addr = gd->relocaddr;
+		ret = video_reserve(&addr);
+		if (ret)
+			return ret;
+		debug("Reserving %luk for video at: %08lx\n",
+		      ((unsigned long)gd->relocaddr - addr) >> 10, addr);
+		gd->relocaddr = addr;
+	}
 
 	return 0;
 }
diff --git a/common/fdt_simplefb.c b/common/fdt_simplefb.c
index c52846f..71d4c8f 100644
--- a/common/fdt_simplefb.c
+++ b/common/fdt_simplefb.c
@@ -8,7 +8,6 @@
 
 #include <common.h>
 #include <dm.h>
-#include <lcd.h>
 #include <fdt_support.h>
 #include <asm/global_data.h>
 #include <linux/libfdt.h>
@@ -22,7 +21,6 @@
 	int bpix; /* log2 of bits per pixel */
 	const char *name;
 	ulong fb_base;
-#ifdef CONFIG_DM_VIDEO
 	struct video_uc_plat *plat;
 	struct video_priv *uc_priv;
 	struct udevice *dev;
@@ -37,12 +35,6 @@
 	ysize = uc_priv->ysize;
 	bpix = uc_priv->bpix;
 	fb_base = plat->base;
-#else
-	xsize = lcd_get_pixel_width();
-	ysize = lcd_get_pixel_height();
-	bpix = LCD_BPP;
-	fb_base = gd->fb_base;
-#endif
 	switch (bpix) {
 	case 4: /* VIDEO_BPP16 */
 		name = "r5g6b5";
@@ -90,7 +82,7 @@
 	return fdt_simplefb_configure_node(blob, off);
 }
 
-#if CONFIG_IS_ENABLED(DM_VIDEO)
+#if CONFIG_IS_ENABLED(VIDEO)
 int fdt_simplefb_enable_and_mem_rsv(void *blob)
 {
 	struct fdt_memory mem;
diff --git a/common/fdt_support.c b/common/fdt_support.c
index baf7fb7..ebebffc 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -1740,35 +1740,6 @@
 	return fdt_set_node_status(fdt, offset, status);
 }
 
-#if defined(CONFIG_LCD)
-int fdt_add_edid(void *blob, const char *compat, unsigned char *edid_buf)
-{
-	int noff;
-	int ret;
-
-	noff = fdt_node_offset_by_compatible(blob, -1, compat);
-	if (noff != -FDT_ERR_NOTFOUND) {
-		debug("%s: %s\n", fdt_get_name(blob, noff, 0), compat);
-add_edid:
-		ret = fdt_setprop(blob, noff, "edid", edid_buf, 128);
-		if (ret == -FDT_ERR_NOSPACE) {
-			ret = fdt_increase_size(blob, 512);
-			if (!ret)
-				goto add_edid;
-			else
-				goto err_size;
-		} else if (ret < 0) {
-			printf("Can't add property: %s\n", fdt_strerror(ret));
-			return ret;
-		}
-	}
-	return 0;
-err_size:
-	printf("Can't increase blob size: %s\n", fdt_strerror(ret));
-	return ret;
-}
-#endif
-
 /*
  * Verify the physical address of device tree node for a given alias
  *
diff --git a/common/lcd.c b/common/lcd.c
deleted file mode 100644
index a462b22..0000000
--- a/common/lcd.c
+++ /dev/null
@@ -1,578 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Common LCD routines
- *
- * (C) Copyright 2001-2002
- * Wolfgang Denk, DENX Software Engineering -- wd@denx.de
- */
-
-/* #define DEBUG */
-#include <config.h>
-#include <common.h>
-#include <command.h>
-#include <cpu_func.h>
-#include <env_callback.h>
-#include <log.h>
-#include <asm/cache.h>
-#include <init.h>
-#include <asm/global_data.h>
-#include <linux/types.h>
-#include <stdio_dev.h>
-#include <lcd.h>
-#include <mapmem.h>
-#include <watchdog.h>
-#include <asm/unaligned.h>
-#include <splash.h>
-#include <asm/io.h>
-#include <asm/unaligned.h>
-#include <video_font.h>
-
-#ifdef CONFIG_LCD_LOGO
-#include <bmp_logo.h>
-#include <bmp_logo_data.h>
-#if (CONSOLE_COLOR_WHITE >= BMP_LOGO_OFFSET) && (LCD_BPP != LCD_COLOR16)
-#error Default Color Map overlaps with Logo Color Map
-#endif
-#endif
-
-#ifndef CONFIG_LCD_ALIGNMENT
-#define CONFIG_LCD_ALIGNMENT PAGE_SIZE
-#endif
-
-#if (LCD_BPP != LCD_COLOR8) && (LCD_BPP != LCD_COLOR16) && \
-	(LCD_BPP != LCD_COLOR32)
-#error Unsupported LCD BPP.
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static int lcd_init(void *lcdbase);
-static void lcd_logo(void);
-static void lcd_setfgcolor(int color);
-static void lcd_setbgcolor(int color);
-
-static int lcd_color_fg;
-static int lcd_color_bg;
-int lcd_line_length;
-char lcd_is_enabled = 0;
-static void *lcd_base;			/* Start of framebuffer memory	*/
-static char lcd_flush_dcache;	/* 1 to flush dcache after each lcd update */
-
-/* Flush LCD activity to the caches */
-void lcd_sync(void)
-{
-	/*
-	 * flush_dcache_range() is declared in common.h but it seems that some
-	 * architectures do not actually implement it. Is there a way to find
-	 * out whether it exists? For now, ARM is safe.
-	 */
-#if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF)
-	int line_length;
-
-	if (lcd_flush_dcache)
-		flush_dcache_range((ulong)lcd_base,
-			(ulong)(lcd_base + lcd_get_size(&line_length)));
-#endif
-}
-
-void lcd_set_flush_dcache(int flush)
-{
-	lcd_flush_dcache = (flush != 0);
-}
-
-static void lcd_stub_putc(struct stdio_dev *dev, const char c)
-{
-	lcd_putc(c);
-}
-
-static void lcd_stub_puts(struct stdio_dev *dev, const char *s)
-{
-	lcd_puts(s);
-}
-
-/*
- * With most lcd drivers the line length is set up
- * by calculating it from panel_info parameters. Some
- * drivers need to calculate the line length differently,
- * so make the function weak to allow overriding it.
- */
-__weak int lcd_get_size(int *line_length)
-{
-	*line_length = (panel_info.vl_col * NBITS(panel_info.vl_bpix)) / 8;
-	return *line_length * panel_info.vl_row;
-}
-
-int drv_lcd_init(void)
-{
-	struct stdio_dev lcddev;
-	int rc;
-
-	lcd_base = map_sysmem(gd->fb_base, 0);
-
-	lcd_init(lcd_base);
-
-	/* Device initialization */
-	memset(&lcddev, 0, sizeof(lcddev));
-
-	strcpy(lcddev.name, "lcd");
-	lcddev.ext   = 0;			/* No extensions */
-	lcddev.flags = DEV_FLAGS_OUTPUT;	/* Output only */
-	lcddev.putc  = lcd_stub_putc;		/* 'putc' function */
-	lcddev.puts  = lcd_stub_puts;		/* 'puts' function */
-
-	rc = stdio_register(&lcddev);
-
-	return (rc == 0) ? 1 : rc;
-}
-
-void lcd_clear(void)
-{
-	int bg_color;
-	__maybe_unused ulong addr;
-	static int do_splash = 1;
-#if LCD_BPP == LCD_COLOR8
-	/* Setting the palette */
-	lcd_setcolreg(CONSOLE_COLOR_BLACK, 0, 0, 0);
-	lcd_setcolreg(CONSOLE_COLOR_RED, 0xFF, 0, 0);
-	lcd_setcolreg(CONSOLE_COLOR_GREEN, 0, 0xFF, 0);
-	lcd_setcolreg(CONSOLE_COLOR_YELLOW, 0xFF, 0xFF, 0);
-	lcd_setcolreg(CONSOLE_COLOR_BLUE, 0, 0, 0xFF);
-	lcd_setcolreg(CONSOLE_COLOR_MAGENTA, 0xFF, 0, 0xFF);
-	lcd_setcolreg(CONSOLE_COLOR_CYAN, 0, 0xFF, 0xFF);
-	lcd_setcolreg(CONSOLE_COLOR_GREY, 0xAA, 0xAA, 0xAA);
-	lcd_setcolreg(CONSOLE_COLOR_WHITE, 0xFF, 0xFF, 0xFF);
-#endif
-
-#ifndef CONFIG_SYS_WHITE_ON_BLACK
-	lcd_setfgcolor(CONSOLE_COLOR_BLACK);
-	lcd_setbgcolor(CONSOLE_COLOR_WHITE);
-	bg_color = CONSOLE_COLOR_WHITE;
-#else
-	lcd_setfgcolor(CONSOLE_COLOR_WHITE);
-	lcd_setbgcolor(CONSOLE_COLOR_BLACK);
-	bg_color = CONSOLE_COLOR_BLACK;
-#endif	/* CONFIG_SYS_WHITE_ON_BLACK */
-
-	/* set framebuffer to background color */
-#if (LCD_BPP != LCD_COLOR32)
-	memset((char *)lcd_base, bg_color, lcd_line_length * panel_info.vl_row);
-#else
-	u32 *ppix = lcd_base;
-	u32 i;
-	for (i = 0;
-	   i < (lcd_line_length * panel_info.vl_row)/NBYTES(panel_info.vl_bpix);
-	   i++) {
-		*ppix++ = bg_color;
-	}
-#endif
-	/* setup text-console */
-	debug("[LCD] setting up console...\n");
-	lcd_init_console(lcd_base,
-			 panel_info.vl_col,
-			 panel_info.vl_row,
-			 panel_info.vl_rot);
-	/* Paint the logo and retrieve LCD base address */
-	debug("[LCD] Drawing the logo...\n");
-	if (do_splash) {
-		if (splash_display() == 0) {
-			do_splash = 0;
-			lcd_sync();
-			return;
-		}
-	}
-
-	lcd_logo();
-#if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
-	addr = (ulong)lcd_base + BMP_LOGO_HEIGHT * lcd_line_length;
-	lcd_init_console((void *)addr, panel_info.vl_col,
-			 panel_info.vl_row, panel_info.vl_rot);
-#endif
-	lcd_sync();
-}
-
-static int lcd_init(void *lcdbase)
-{
-	debug("[LCD] Initializing LCD frambuffer at %p\n", lcdbase);
-	lcd_ctrl_init(lcdbase);
-
-	/*
-	 * lcd_ctrl_init() of some drivers (i.e. bcm2835 on rpi) ignores
-	 * the 'lcdbase' argument and uses custom lcd base address
-	 * by setting up gd->fb_base. Check for this condition and fixup
-	 * 'lcd_base' address.
-	 */
-	if (map_to_sysmem(lcdbase) != gd->fb_base)
-		lcd_base = map_sysmem(gd->fb_base, 0);
-
-	debug("[LCD] Using LCD frambuffer at %p\n", lcd_base);
-
-	lcd_get_size(&lcd_line_length);
-	lcd_is_enabled = 1;
-	lcd_clear();
-	lcd_enable();
-
-	/* Initialize the console */
-	lcd_set_col(0);
-#ifdef CONFIG_LCD_INFO_BELOW_LOGO
-	lcd_set_row(7 + BMP_LOGO_HEIGHT / VIDEO_FONT_HEIGHT);
-#else
-	lcd_set_row(1);	/* leave 1 blank line below logo */
-#endif
-
-	return 0;
-}
-
-/*
- * This is called early in the system initialization to grab memory
- * for the LCD controller.
- * Returns new address for monitor, after reserving LCD buffer memory
- *
- * Note that this is running from ROM, so no write access to global data.
- */
-ulong lcd_setmem(ulong addr)
-{
-	ulong size;
-	int line_length;
-
-	debug("LCD panel info: %d x %d, %d bit/pix\n", panel_info.vl_col,
-		panel_info.vl_row, NBITS(panel_info.vl_bpix));
-
-	size = lcd_get_size(&line_length);
-
-	/* Round up to nearest full page, or MMU section if defined */
-	size = ALIGN(size, CONFIG_LCD_ALIGNMENT);
-	addr = ALIGN(addr - CONFIG_LCD_ALIGNMENT + 1, CONFIG_LCD_ALIGNMENT);
-
-	/* Allocate pages for the frame buffer. */
-	addr -= size;
-
-	debug("Reserving %ldk for LCD Framebuffer at: %08lx\n",
-	      size >> 10, addr);
-
-	return addr;
-}
-
-static void lcd_setfgcolor(int color)
-{
-	lcd_color_fg = color;
-}
-
-int lcd_getfgcolor(void)
-{
-	return lcd_color_fg;
-}
-
-static void lcd_setbgcolor(int color)
-{
-	lcd_color_bg = color;
-}
-
-int lcd_getbgcolor(void)
-{
-	return lcd_color_bg;
-}
-
-#ifdef CONFIG_LCD_LOGO
-__weak void lcd_logo_set_cmap(void)
-{
-	int i;
-	ushort *cmap = configuration_get_cmap();
-
-	for (i = 0; i < ARRAY_SIZE(bmp_logo_palette); ++i)
-		*cmap++ = bmp_logo_palette[i];
-}
-
-void lcd_logo_plot(int x, int y)
-{
-	ushort i, j;
-	uchar *bmap = &bmp_logo_bitmap[0];
-	unsigned bpix = NBITS(panel_info.vl_bpix);
-	uchar *fb = (uchar *)(lcd_base + y * lcd_line_length + x * bpix / 8);
-	ushort *fb16;
-
-	debug("Logo: width %d  height %d  colors %d\n",
-	      BMP_LOGO_WIDTH, BMP_LOGO_HEIGHT, BMP_LOGO_COLORS);
-
-	if (bpix < 12) {
-		schedule();
-		lcd_logo_set_cmap();
-		schedule();
-
-		for (i = 0; i < BMP_LOGO_HEIGHT; ++i) {
-			memcpy(fb, bmap, BMP_LOGO_WIDTH);
-			bmap += BMP_LOGO_WIDTH;
-			fb += panel_info.vl_col;
-		}
-	}
-	else { /* true color mode */
-		u16 col16;
-		fb16 = (ushort *)fb;
-		for (i = 0; i < BMP_LOGO_HEIGHT; ++i) {
-			for (j = 0; j < BMP_LOGO_WIDTH; j++) {
-				col16 = bmp_logo_palette[(bmap[j]-16)];
-				fb16[j] =
-					((col16 & 0x000F) << 1) |
-					((col16 & 0x00F0) << 3) |
-					((col16 & 0x0F00) << 4);
-				}
-			bmap += BMP_LOGO_WIDTH;
-			fb16 += panel_info.vl_col;
-		}
-	}
-
-	schedule();
-	lcd_sync();
-}
-#else
-static inline void lcd_logo_plot(int x, int y) {}
-#endif /* CONFIG_LCD_LOGO */
-
-#if defined(CONFIG_CMD_BMP) || defined(CONFIG_SPLASH_SCREEN)
-#ifdef CONFIG_SPLASH_SCREEN_ALIGN
-
-static void splash_align_axis(int *axis, unsigned long panel_size,
-					unsigned long picture_size)
-{
-	unsigned long panel_picture_delta = panel_size - picture_size;
-	unsigned long axis_alignment;
-
-	if (*axis == BMP_ALIGN_CENTER)
-		axis_alignment = panel_picture_delta / 2;
-	else if (*axis < 0)
-		axis_alignment = panel_picture_delta + *axis + 1;
-	else
-		return;
-
-	*axis = max(0, (int)axis_alignment);
-}
-#endif
-
-__weak void fb_put_byte(uchar **fb, uchar **from)
-{
-	*(*fb)++ = *(*from)++;
-}
-
-#if defined(CONFIG_BMP_16BPP)
-__weak void fb_put_word(uchar **fb, uchar **from)
-{
-	*(*fb)++ = *(*from)++;
-	*(*fb)++ = *(*from)++;
-}
-#endif /* CONFIG_BMP_16BPP */
-
-__weak void lcd_set_cmap(struct bmp_image *bmp, unsigned colors)
-{
-	int i;
-	struct bmp_color_table_entry cte;
-	ushort *cmap = configuration_get_cmap();
-
-	for (i = 0; i < colors; ++i) {
-		cte = bmp->color_table[i];
-		*cmap = (((cte.red)   << 8) & 0xf800) |
-			(((cte.green) << 3) & 0x07e0) |
-			(((cte.blue)  >> 3) & 0x001f);
-		cmap++;
-	}
-}
-
-int lcd_display_bitmap(ulong bmp_image, int x, int y)
-{
-	ushort *cmap_base = NULL;
-	ushort i, j;
-	uchar *fb;
-	struct bmp_image *bmp = (struct bmp_image *)map_sysmem(bmp_image, 0);
-	uchar *bmap;
-	ushort padded_width;
-	unsigned long width, height, byte_width;
-	unsigned long pwidth = panel_info.vl_col;
-	unsigned colors, bpix, bmp_bpix;
-	int hdr_size;
-	struct bmp_color_table_entry *palette;
-
-	if (!bmp || !(bmp->header.signature[0] == 'B' &&
-		bmp->header.signature[1] == 'M')) {
-		printf("Error: no valid bmp image at %lx\n", bmp_image);
-
-		return 1;
-	}
-
-	palette = bmp->color_table;
-	width = get_unaligned_le32(&bmp->header.width);
-	height = get_unaligned_le32(&bmp->header.height);
-	bmp_bpix = get_unaligned_le16(&bmp->header.bit_count);
-	hdr_size = get_unaligned_le16(&bmp->header.size);
-	debug("hdr_size=%d, bmp_bpix=%d\n", hdr_size, bmp_bpix);
-
-	colors = 1 << bmp_bpix;
-
-	bpix = NBITS(panel_info.vl_bpix);
-
-	if (bpix != 1 && bpix != 8 && bpix != 16 && bpix != 32) {
-		printf ("Error: %d bit/pixel mode, but BMP has %d bit/pixel\n",
-			bpix, bmp_bpix);
-
-		return 1;
-	}
-
-	/*
-	 * We support displaying 8bpp BMPs on 16bpp LCDs
-	 * and displaying 24bpp BMPs on 32bpp LCDs
-	 * */
-	if (bpix != bmp_bpix &&
-	    !(bmp_bpix == 8 && bpix == 16) &&
-	    !(bmp_bpix == 24 && bpix == 32)) {
-		printf ("Error: %d bit/pixel mode, but BMP has %d bit/pixel\n",
-			bpix, get_unaligned_le16(&bmp->header.bit_count));
-		return 1;
-	}
-
-	debug("Display-bmp: %d x %d  with %d colors, display %d\n",
-	      (int)width, (int)height, (int)colors, 1 << bpix);
-
-	if (bmp_bpix == 8)
-		lcd_set_cmap(bmp, colors);
-
-	padded_width = (width & 0x3 ? (width & ~0x3) + 4 : width);
-
-#ifdef CONFIG_SPLASH_SCREEN_ALIGN
-	splash_align_axis(&x, pwidth, width);
-	splash_align_axis(&y, panel_info.vl_row, height);
-#endif /* CONFIG_SPLASH_SCREEN_ALIGN */
-
-	if ((x + width) > pwidth)
-		width = pwidth - x;
-	if ((y + height) > panel_info.vl_row)
-		height = panel_info.vl_row - y;
-
-	bmap = (uchar *)bmp + get_unaligned_le32(&bmp->header.data_offset);
-	fb   = (uchar *)(lcd_base +
-		(y + height - 1) * lcd_line_length + x * bpix / 8);
-
-	switch (bmp_bpix) {
-	case 1:
-	case 8: {
-		cmap_base = configuration_get_cmap();
-
-		if (bpix != 16)
-			byte_width = width;
-		else
-			byte_width = width * 2;
-
-		for (i = 0; i < height; ++i) {
-			schedule();
-			for (j = 0; j < width; j++) {
-				if (bpix != 16) {
-					fb_put_byte(&fb, &bmap);
-				} else {
-					struct bmp_color_table_entry *entry;
-					uint val;
-
-					if (cmap_base) {
-						val = cmap_base[*bmap];
-					} else {
-						entry = &palette[*bmap];
-						val = entry->blue >> 3 |
-							entry->green >> 2 << 5 |
-							entry->red >> 3 << 11;
-					}
-					*(uint16_t *)fb = val;
-					bmap++;
-					fb += sizeof(uint16_t) / sizeof(*fb);
-				}
-			}
-			bmap += (padded_width - width);
-			fb -= byte_width + lcd_line_length;
-		}
-		break;
-	}
-#if defined(CONFIG_BMP_16BPP)
-	case 16:
-		for (i = 0; i < height; ++i) {
-			schedule();
-			for (j = 0; j < width; j++)
-				fb_put_word(&fb, &bmap);
-
-			bmap += (padded_width - width) * 2;
-			fb -= width * 2 + lcd_line_length;
-		}
-		break;
-#endif /* CONFIG_BMP_16BPP */
-#if defined(CONFIG_BMP_24BPP)
-	case 24:
-		for (i = 0; i < height; ++i) {
-			for (j = 0; j < width; j++) {
-				*(fb++) = *(bmap++);
-				*(fb++) = *(bmap++);
-				*(fb++) = *(bmap++);
-				*(fb++) = 0;
-			}
-			fb -= lcd_line_length + width * (bpix / 8);
-		}
-		break;
-#endif /* CONFIG_BMP_24BPP */
-#if defined(CONFIG_BMP_32BPP)
-	case 32:
-		for (i = 0; i < height; ++i) {
-			for (j = 0; j < width; j++) {
-				*(fb++) = *(bmap++);
-				*(fb++) = *(bmap++);
-				*(fb++) = *(bmap++);
-				*(fb++) = *(bmap++);
-			}
-			fb -= lcd_line_length + width * (bpix / 8);
-		}
-		break;
-#endif /* CONFIG_BMP_32BPP */
-	default:
-		break;
-	};
-
-	lcd_sync();
-	return 0;
-}
-#endif
-
-static void lcd_logo(void)
-{
-	lcd_logo_plot(0, 0);
-
-#ifdef CONFIG_LCD_INFO
-	lcd_set_col(LCD_INFO_X / VIDEO_FONT_WIDTH);
-	lcd_set_row(LCD_INFO_Y / VIDEO_FONT_HEIGHT);
-	lcd_show_board_info();
-#endif /* CONFIG_LCD_INFO */
-}
-
-#ifdef CONFIG_SPLASHIMAGE_GUARD
-static int on_splashimage(const char *name, const char *value, enum env_op op,
-	int flags)
-{
-	ulong addr;
-	int aligned;
-
-	if (op == env_op_delete)
-		return 0;
-
-	addr = hextoul(value, NULL);
-	/* See README.displaying-bmps */
-	aligned = (addr % 4 == 2);
-	if (!aligned) {
-		printf("Invalid splashimage value. Value must be 16 bit aligned, but not 32 bit aligned\n");
-		return -1;
-	}
-
-	return 0;
-}
-
-U_BOOT_ENV_CALLBACK(splashimage, on_splashimage);
-#endif
-
-int lcd_get_pixel_width(void)
-{
-	return panel_info.vl_col;
-}
-
-int lcd_get_pixel_height(void)
-{
-	return panel_info.vl_row;
-}
diff --git a/common/lcd_console.c b/common/lcd_console.c
deleted file mode 100644
index ed36c78..0000000
--- a/common/lcd_console.c
+++ /dev/null
@@ -1,260 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2001-2015
- * DENX Software Engineering -- wd@denx.de
- * Compulab Ltd - http://compulab.co.il/
- * Bernecker & Rainer Industrieelektronik GmbH - http://www.br-automation.com
- */
-
-#include <common.h>
-#include <command.h>
-#include <lcd.h>
-#include <log.h>
-#include <serial.h>
-#include <video_font.h>		/* Get font data, width and height */
-#if defined(CONFIG_LCD_LOGO)
-#include <bmp_logo.h>
-#endif
-
-static struct console_t cons;
-
-void lcd_set_col(short col)
-{
-	cons.curr_col = col;
-}
-
-void lcd_set_row(short row)
-{
-	cons.curr_row = row;
-}
-
-void lcd_position_cursor(unsigned col, unsigned row)
-{
-	cons.curr_col = min_t(short, col, cons.cols - 1);
-	cons.curr_row = min_t(short, row, cons.rows - 1);
-}
-
-int lcd_get_screen_rows(void)
-{
-	return cons.rows;
-}
-
-int lcd_get_screen_columns(void)
-{
-	return cons.cols;
-}
-
-static void lcd_putc_xy0(struct console_t *pcons, ushort x, ushort y, char c)
-{
-	int fg_color = lcd_getfgcolor();
-	int bg_color = lcd_getbgcolor();
-	int i, row;
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  y * pcons->lcdsizex +
-				  x;
-
-	for (row = 0; row < VIDEO_FONT_HEIGHT; row++) {
-		uchar bits = video_fontdata[c * VIDEO_FONT_HEIGHT + row];
-		for (i = 0; i < VIDEO_FONT_WIDTH; ++i) {
-			*dst++ = (bits & 0x80) ? fg_color : bg_color;
-			bits <<= 1;
-		}
-		dst += (pcons->lcdsizex - VIDEO_FONT_WIDTH);
-	}
-}
-
-static inline void console_setrow0(struct console_t *pcons, u32 row, int clr)
-{
-	int i;
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  row * VIDEO_FONT_HEIGHT *
-				  pcons->lcdsizex;
-
-	for (i = 0; i < (VIDEO_FONT_HEIGHT * pcons->lcdsizex); i++)
-		*dst++ = clr;
-}
-
-static inline void console_moverow0(struct console_t *pcons,
-				    u32 rowdst, u32 rowsrc)
-{
-	int i;
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  rowdst * VIDEO_FONT_HEIGHT *
-				  pcons->lcdsizex;
-
-	fbptr_t *src = (fbptr_t *)pcons->fbbase +
-				  rowsrc * VIDEO_FONT_HEIGHT *
-				  pcons->lcdsizex;
-
-	for (i = 0; i < (VIDEO_FONT_HEIGHT * pcons->lcdsizex); i++)
-		*dst++ = *src++;
-}
-
-static inline void console_back(void)
-{
-	if (--cons.curr_col < 0) {
-		cons.curr_col = cons.cols - 1;
-		if (--cons.curr_row < 0)
-			cons.curr_row = 0;
-	}
-
-	cons.fp_putc_xy(&cons,
-			cons.curr_col * VIDEO_FONT_WIDTH,
-			cons.curr_row * VIDEO_FONT_HEIGHT, ' ');
-}
-
-static inline void console_newline(void)
-{
-	const int rows = CONFIG_CONSOLE_SCROLL_LINES;
-	int bg_color = lcd_getbgcolor();
-	int i;
-
-	cons.curr_col = 0;
-
-	/* Check if we need to scroll the terminal */
-	if (++cons.curr_row >= cons.rows) {
-		for (i = 0; i < cons.rows-rows; i++)
-			cons.fp_console_moverow(&cons, i, i+rows);
-		for (i = 0; i < rows; i++)
-			cons.fp_console_setrow(&cons, cons.rows-i-1, bg_color);
-		cons.curr_row -= rows;
-	}
-	lcd_sync();
-}
-
-void console_calc_rowcol(struct console_t *pcons, u32 sizex, u32 sizey)
-{
-	pcons->cols = sizex / VIDEO_FONT_WIDTH;
-#if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
-	pcons->rows = (pcons->lcdsizey - BMP_LOGO_HEIGHT);
-	pcons->rows /= VIDEO_FONT_HEIGHT;
-#else
-	pcons->rows = sizey / VIDEO_FONT_HEIGHT;
-#endif
-}
-
-void __weak lcd_init_console_rot(struct console_t *pcons)
-{
-	return;
-}
-
-void lcd_init_console(void *address, int vl_cols, int vl_rows, int vl_rot)
-{
-	memset(&cons, 0, sizeof(cons));
-	cons.fbbase = address;
-
-	cons.lcdsizex = vl_cols;
-	cons.lcdsizey = vl_rows;
-	cons.lcdrot = vl_rot;
-
-	cons.fp_putc_xy = &lcd_putc_xy0;
-	cons.fp_console_moverow = &console_moverow0;
-	cons.fp_console_setrow = &console_setrow0;
-	console_calc_rowcol(&cons, cons.lcdsizex, cons.lcdsizey);
-
-	lcd_init_console_rot(&cons);
-
-	debug("lcd_console: have %d/%d col/rws on scr %dx%d (%d deg rotated)\n",
-	      cons.cols, cons.rows, cons.lcdsizex, cons.lcdsizey, vl_rot);
-}
-
-void lcd_putc(const char c)
-{
-	if (!lcd_is_enabled) {
-		serial_putc(c);
-
-		return;
-	}
-
-	switch (c) {
-	case '\r':
-		cons.curr_col = 0;
-		return;
-	case '\n':
-		console_newline();
-
-		return;
-	case '\t':	/* Tab (8 chars alignment) */
-		cons.curr_col +=  8;
-		cons.curr_col &= ~7;
-
-		if (cons.curr_col >= cons.cols)
-			console_newline();
-
-		return;
-	case '\b':
-		console_back();
-
-		return;
-	default:
-		cons.fp_putc_xy(&cons,
-				cons.curr_col * VIDEO_FONT_WIDTH,
-				cons.curr_row * VIDEO_FONT_HEIGHT, c);
-		if (++cons.curr_col >= cons.cols)
-			console_newline();
-	}
-}
-
-void lcd_puts(const char *s)
-{
-	if (!lcd_is_enabled) {
-		serial_puts(s);
-
-		return;
-	}
-
-	while (*s)
-		lcd_putc(*s++);
-
-	lcd_sync();
-}
-
-void lcd_printf(const char *fmt, ...)
-{
-	va_list args;
-	char buf[CONFIG_SYS_PBSIZE];
-
-	va_start(args, fmt);
-	vsprintf(buf, fmt, args);
-	va_end(args);
-
-	lcd_puts(buf);
-}
-
-static int do_lcd_setcursor(struct cmd_tbl *cmdtp, int flag, int argc,
-			    char *const argv[])
-{
-	unsigned int col, row;
-
-	if (argc != 3)
-		return CMD_RET_USAGE;
-
-	col = dectoul(argv[1], NULL);
-	row = dectoul(argv[2], NULL);
-	lcd_position_cursor(col, row);
-
-	return 0;
-}
-
-static int do_lcd_puts(struct cmd_tbl *cmdtp, int flag, int argc,
-		       char *const argv[])
-{
-	if (argc != 2)
-		return CMD_RET_USAGE;
-
-	lcd_puts(argv[1]);
-
-	return 0;
-}
-
-U_BOOT_CMD(
-	setcurs, 3,	1,	do_lcd_setcursor,
-	"set cursor position within screen",
-	"    <col> <row> in character"
-);
-
-U_BOOT_CMD(
-	lcdputs, 2,	1,	do_lcd_puts,
-	"print string on lcd-framebuffer",
-	"    <string>"
-);
diff --git a/common/lcd_console_rotation.c b/common/lcd_console_rotation.c
deleted file mode 100644
index a5f5c6d..0000000
--- a/common/lcd_console_rotation.c
+++ /dev/null
@@ -1,194 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2015
- * Bernecker & Rainer Industrieelektronik GmbH - http://www.br-automation.com
- */
-
-#include <common.h>
-#include <lcd.h>
-#include <video_font.h>		/* Get font data, width and height */
-
-static void lcd_putc_xy90(struct console_t *pcons, ushort x, ushort y, char c)
-{
-	int fg_color = lcd_getfgcolor();
-	int bg_color = lcd_getbgcolor();
-	int col, i;
-
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  (x+1) * pcons->lcdsizex -
-				  y;
-
-	uchar msk = 0x80;
-	uchar *pfont = video_fontdata + c * VIDEO_FONT_HEIGHT;
-	for (col = 0; col < VIDEO_FONT_WIDTH; ++col) {
-		for (i = 0; i < VIDEO_FONT_HEIGHT; ++i)
-			*dst-- = (*(pfont + i) & msk) ? fg_color : bg_color;
-		msk >>= 1;
-		dst += (pcons->lcdsizex + VIDEO_FONT_HEIGHT);
-	}
-}
-
-static inline void console_setrow90(struct console_t *pcons, u32 row, int clr)
-{
-	int i, j;
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  pcons->lcdsizex -
-				  row*VIDEO_FONT_HEIGHT+1;
-
-	for (j = 0; j < pcons->lcdsizey; j++) {
-		for (i = 0; i < VIDEO_FONT_HEIGHT; i++)
-			*dst-- = clr;
-		dst += (pcons->lcdsizex + VIDEO_FONT_HEIGHT);
-	}
-}
-
-static inline void console_moverow90(struct console_t *pcons,
-				      u32 rowdst, u32 rowsrc)
-{
-	int i, j;
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  pcons->lcdsizex -
-				  (rowdst*VIDEO_FONT_HEIGHT+1);
-
-	fbptr_t *src = (fbptr_t *)pcons->fbbase +
-				  pcons->lcdsizex -
-				  (rowsrc*VIDEO_FONT_HEIGHT+1);
-
-	for (j = 0; j < pcons->lcdsizey; j++) {
-		for (i = 0; i < VIDEO_FONT_HEIGHT; i++)
-			*dst-- = *src--;
-		src += (pcons->lcdsizex + VIDEO_FONT_HEIGHT);
-		dst += (pcons->lcdsizex + VIDEO_FONT_HEIGHT);
-	}
-}
-static void lcd_putc_xy180(struct console_t *pcons, ushort x, ushort y, char c)
-{
-	int fg_color = lcd_getfgcolor();
-	int bg_color = lcd_getbgcolor();
-	int i, row;
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  pcons->lcdsizex +
-				  pcons->lcdsizey * pcons->lcdsizex -
-				  y * pcons->lcdsizex -
-				  (x+1);
-
-	for (row = 0; row < VIDEO_FONT_HEIGHT; row++) {
-		uchar bits = video_fontdata[c * VIDEO_FONT_HEIGHT + row];
-
-		for (i = 0; i < VIDEO_FONT_WIDTH; ++i) {
-			*dst-- = (bits & 0x80) ? fg_color : bg_color;
-			bits <<= 1;
-		}
-		dst -= (pcons->lcdsizex - VIDEO_FONT_WIDTH);
-	}
-}
-
-static inline void console_setrow180(struct console_t *pcons, u32 row, int clr)
-{
-	int i;
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  (pcons->rows-row-1) * VIDEO_FONT_HEIGHT *
-				  pcons->lcdsizex;
-
-	for (i = 0; i < (VIDEO_FONT_HEIGHT * pcons->lcdsizex); i++)
-		*dst++ = clr;
-}
-
-static inline void console_moverow180(struct console_t *pcons,
-				      u32 rowdst, u32 rowsrc)
-{
-	int i;
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  (pcons->rows-rowdst-1) * VIDEO_FONT_HEIGHT *
-				  pcons->lcdsizex;
-
-	fbptr_t *src = (fbptr_t *)pcons->fbbase +
-				  (pcons->rows-rowsrc-1) * VIDEO_FONT_HEIGHT *
-				  pcons->lcdsizex;
-
-	for (i = 0; i < (VIDEO_FONT_HEIGHT * pcons->lcdsizex); i++)
-		*dst++ = *src++;
-}
-
-static void lcd_putc_xy270(struct console_t *pcons, ushort x, ushort y, char c)
-{
-	int fg_color = lcd_getfgcolor();
-	int bg_color = lcd_getbgcolor();
-	int i, col;
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  pcons->lcdsizey * pcons->lcdsizex -
-				  (x+1) * pcons->lcdsizex +
-				  y;
-
-	uchar msk = 0x80;
-	uchar *pfont = video_fontdata + c * VIDEO_FONT_HEIGHT;
-	for (col = 0; col < VIDEO_FONT_WIDTH; ++col) {
-		for (i = 0; i < VIDEO_FONT_HEIGHT; ++i)
-			*dst++ = (*(pfont + i) & msk) ? fg_color : bg_color;
-		msk >>= 1;
-		dst -= (pcons->lcdsizex + VIDEO_FONT_HEIGHT);
-	}
-}
-
-static inline void console_setrow270(struct console_t *pcons, u32 row, int clr)
-{
-	int i, j;
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  row*VIDEO_FONT_HEIGHT;
-
-	for (j = 0; j < pcons->lcdsizey; j++) {
-		for (i = 0; i < VIDEO_FONT_HEIGHT; i++)
-			*dst++ = clr;
-		dst += (pcons->lcdsizex - VIDEO_FONT_HEIGHT);
-	}
-}
-
-static inline void console_moverow270(struct console_t *pcons,
-				     u32 rowdst, u32 rowsrc)
-{
-	int i, j;
-	fbptr_t *dst = (fbptr_t *)pcons->fbbase +
-				  rowdst*VIDEO_FONT_HEIGHT;
-
-	fbptr_t *src = (fbptr_t *)pcons->fbbase +
-				  rowsrc*VIDEO_FONT_HEIGHT;
-
-	for (j = 0; j < pcons->lcdsizey; j++) {
-		for (i = 0; i < VIDEO_FONT_HEIGHT; i++)
-			*dst++ = *src++;
-		src += (pcons->lcdsizex - VIDEO_FONT_HEIGHT);
-		dst += (pcons->lcdsizex - VIDEO_FONT_HEIGHT);
-	}
-}
-
-static void console_calc_rowcol_rot(struct console_t *pcons)
-{
-	if (pcons->lcdrot == 1 || pcons->lcdrot == 3)
-		console_calc_rowcol(pcons, pcons->lcdsizey, pcons->lcdsizex);
-	else
-		console_calc_rowcol(pcons, pcons->lcdsizex, pcons->lcdsizey);
-}
-
-void lcd_init_console_rot(struct console_t *pcons)
-{
-	if (pcons->lcdrot == 0) {
-		return;
-	} else if (pcons->lcdrot == 1) {
-		pcons->fp_putc_xy = &lcd_putc_xy90;
-		pcons->fp_console_moverow = &console_moverow90;
-		pcons->fp_console_setrow = &console_setrow90;
-	} else if (pcons->lcdrot == 2) {
-		pcons->fp_putc_xy = &lcd_putc_xy180;
-		pcons->fp_console_moverow = &console_moverow180;
-		pcons->fp_console_setrow = &console_setrow180;
-	} else if (pcons->lcdrot == 3) {
-		pcons->fp_putc_xy = &lcd_putc_xy270;
-		pcons->fp_console_moverow = &console_moverow270;
-		pcons->fp_console_setrow = &console_setrow270;
-	} else {
-		printf("%s: invalid framebuffer rotation (%d)!\n",
-		       __func__, pcons->lcdrot);
-		return;
-	}
-	console_calc_rowcol_rot(pcons);
-}
diff --git a/common/splash.c b/common/splash.c
index 0e520cc..2e466a8 100644
--- a/common/splash.c
+++ b/common/splash.c
@@ -24,7 +24,7 @@
 #include <display_options.h>
 #include <env.h>
 #include <splash.h>
-#include <lcd.h>
+#include <video.h>
 
 static struct splash_location default_splash_locations[] = {
 	{
@@ -40,6 +40,12 @@
 		.devpart = "0:1",
 	},
 	{
+		.name = "mmc_raw",
+		.storage = SPLASH_STORAGE_MMC,
+		.flags = SPLASH_STORAGE_RAW,
+		.devpart = "0:1",
+	},
+	{
 		.name = "usb_fs",
 		.storage = SPLASH_STORAGE_USB,
 		.flags = SPLASH_STORAGE_FS,
@@ -113,7 +119,7 @@
 }
 #endif /* CONFIG_SPLASH_SCREEN_ALIGN */
 
-#if defined(CONFIG_DM_VIDEO) && !defined(CONFIG_HIDE_LOGO_VERSION)
+#if defined(CONFIG_VIDEO) && !defined(CONFIG_HIDE_LOGO_VERSION)
 
 #ifdef CONFIG_VIDEO_LOGO
 #include <bmp_logo.h>
@@ -145,12 +151,11 @@
 	vidconsole_put_string(dev, buf);
 	vidconsole_position_cursor(dev, 0, row);
 }
-#endif /* CONFIG_DM_VIDEO && !CONFIG_HIDE_LOGO_VERSION */
+#endif /* CONFIG_VIDEO && !CONFIG_HIDE_LOGO_VERSION */
 
 /*
  * Common function to show a splash image if env("splashimage") is set.
- * Is used for both dm_video and lcd video stacks. For additional
- * details please refer to doc/README.splashprepare.
+ * For additional details please refer to doc/README.splashprepare.
  */
 #if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_CMD_BMP)
 int splash_display(void)
@@ -176,7 +181,7 @@
 	if (x || y)
 		goto end;
 
-#if defined(CONFIG_DM_VIDEO) && !defined(CONFIG_HIDE_LOGO_VERSION)
+#if defined(CONFIG_VIDEO) && !defined(CONFIG_HIDE_LOGO_VERSION)
 	splash_display_banner();
 #endif
 end:
diff --git a/common/splash_source.c b/common/splash_source.c
index 87e55a5..a260137 100644
--- a/common/splash_source.c
+++ b/common/splash_source.c
@@ -65,6 +65,30 @@
 }
 #endif
 
+static int splash_mmc_read_raw(u32 bmp_load_addr, struct splash_location *location,
+			       size_t read_size)
+{
+	struct disk_partition partition;
+	struct blk_desc *desc;
+	lbaint_t blkcnt;
+	int ret, n;
+
+	if (!IS_ENABLED(CONFIG_CMD_MMC)) {
+		debug("%s: mmc support not available\n", __func__);
+		return -ENOSYS;
+	}
+
+	ret = part_get_info_by_dev_and_name_or_num("mmc", location->devpart, &desc,
+						   &partition, 1);
+	if (ret < 0)
+		return ret;
+
+	blkcnt = DIV_ROUND_UP(read_size, partition.blksz);
+	n = blk_dread(desc, partition.start, blkcnt, (void *)(uintptr_t)bmp_load_addr);
+
+	return (n == blkcnt) ? 0 : -EIO;
+}
+
 static int splash_storage_read_raw(struct splash_location *location,
 			       u32 bmp_load_addr, size_t read_size)
 {
@@ -75,6 +99,8 @@
 
 	offset = location->offset;
 	switch (location->storage) {
+	case SPLASH_STORAGE_MMC:
+		return splash_mmc_read_raw(bmp_load_addr, location, read_size);
 	case SPLASH_STORAGE_NAND:
 		return splash_nand_read_raw(bmp_load_addr, offset, read_size);
 	case SPLASH_STORAGE_SF:
@@ -422,6 +448,7 @@
 {
 	struct splash_location *splash_location;
 	char *env_splashimage_value;
+	char *devpart;
 	u32 bmp_load_addr;
 
 	env_splashimage_value = env_get("splashimage");
@@ -438,6 +465,10 @@
 	if (!splash_location)
 		return -EINVAL;
 
+	devpart = env_get("splashdevpart");
+	if (devpart)
+		splash_location->devpart = devpart;
+
 	if (splash_location->flags == SPLASH_STORAGE_RAW)
 		return splash_load_raw(splash_location, bmp_load_addr);
 	else if (splash_location->flags == SPLASH_STORAGE_FS)
diff --git a/common/stdio.c b/common/stdio.c
index 92811ba..cbedfdd 100644
--- a/common/stdio.c
+++ b/common/stdio.c
@@ -200,7 +200,7 @@
 		if (strcmp(sdev->name, name) == 0)
 			return sdev;
 	}
-	if (IS_ENABLED(CONFIG_DM_VIDEO)) {
+	if (IS_ENABLED(CONFIG_VIDEO)) {
 		/*
 		 * We did not find a suitable stdio device. If there is a video
 		 * driver with a name starting with 'vidconsole', we can try
@@ -340,7 +340,7 @@
 #if CONFIG_IS_ENABLED(SYS_I2C_LEGACY)
 	i2c_init_all();
 #endif
-	if (IS_ENABLED(CONFIG_DM_VIDEO)) {
+	if (IS_ENABLED(CONFIG_VIDEO)) {
 		/*
 		 * If the console setting is not in environment variables then
 		 * console_init_r() will not be calling iomux_doenv() (which
@@ -366,11 +366,6 @@
 		if (IS_ENABLED(CONFIG_SPLASH_SCREEN) &&
 		    IS_ENABLED(CONFIG_CMD_BMP))
 			splash_display();
-	} else {
-		if (IS_ENABLED(CONFIG_LCD))
-			drv_lcd_init();
-		if (IS_ENABLED(CONFIG_VIDEO_VCXK))
-			drv_video_init();
 	}
 
 	drv_system_init();
diff --git a/configs/am335x_guardian_defconfig b/configs/am335x_guardian_defconfig
index 8eeb855..fef4fd1 100644
--- a/configs/am335x_guardian_defconfig
+++ b/configs/am335x_guardian_defconfig
@@ -131,7 +131,6 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xd022
 CONFIG_USB_ETHER=y
 CONFIG_SYS_WHITE_ON_BLACK=y
-CONFIG_AM335X_LCD=y
 CONFIG_BMP_16BPP=y
 CONFIG_SPL_WDT=y
 # CONFIG_SPL_USE_TINY_PRINTF is not set
diff --git a/configs/aristainetos2c_defconfig b/configs/aristainetos2c_defconfig
index 7c421f5..3f6f579 100644
--- a/configs/aristainetos2c_defconfig
+++ b/configs/aristainetos2c_defconfig
@@ -113,7 +113,7 @@
 CONFIG_SYSRESET_WATCHDOG=y
 CONFIG_USB=y
 CONFIG_USB_STORAGE=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_DISPLAY=y
diff --git a/configs/aristainetos2ccslb_defconfig b/configs/aristainetos2ccslb_defconfig
index ed7e8c5..62da177 100644
--- a/configs/aristainetos2ccslb_defconfig
+++ b/configs/aristainetos2ccslb_defconfig
@@ -113,7 +113,7 @@
 CONFIG_SYSRESET_WATCHDOG=y
 CONFIG_USB=y
 CONFIG_USB_STORAGE=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_DISPLAY=y
diff --git a/configs/at91sam9x5ek_dataflash_defconfig b/configs/at91sam9x5ek_dataflash_defconfig
index da2f263..bfa8380 100644
--- a/configs/at91sam9x5ek_dataflash_defconfig
+++ b/configs/at91sam9x5ek_dataflash_defconfig
@@ -71,7 +71,7 @@
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/at91sam9x5ek_mmc_defconfig b/configs/at91sam9x5ek_mmc_defconfig
index 017afc2..bd05763 100644
--- a/configs/at91sam9x5ek_mmc_defconfig
+++ b/configs/at91sam9x5ek_mmc_defconfig
@@ -68,7 +68,7 @@
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/at91sam9x5ek_nandflash_defconfig b/configs/at91sam9x5ek_nandflash_defconfig
index 84a6024..603433b 100644
--- a/configs/at91sam9x5ek_nandflash_defconfig
+++ b/configs/at91sam9x5ek_nandflash_defconfig
@@ -70,7 +70,7 @@
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/at91sam9x5ek_spiflash_defconfig b/configs/at91sam9x5ek_spiflash_defconfig
index 145a989..31f245e 100644
--- a/configs/at91sam9x5ek_spiflash_defconfig
+++ b/configs/at91sam9x5ek_spiflash_defconfig
@@ -72,7 +72,7 @@
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/bananapi-m5_defconfig b/configs/bananapi-m5_defconfig
index 6ab2d8e..cd85e32 100644
--- a/configs/bananapi-m5_defconfig
+++ b/configs/bananapi-m5_defconfig
@@ -61,7 +61,7 @@
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/beelink-gsking-x_defconfig b/configs/beelink-gsking-x_defconfig
index 2c8c642..8b760fc 100644
--- a/configs/beelink-gsking-x_defconfig
+++ b/configs/beelink-gsking-x_defconfig
@@ -62,7 +62,7 @@
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/beelink-gtking_defconfig b/configs/beelink-gtking_defconfig
index 9848252..5f3cbe9 100644
--- a/configs/beelink-gtking_defconfig
+++ b/configs/beelink-gtking_defconfig
@@ -62,7 +62,7 @@
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/beelink-gtkingpro_defconfig b/configs/beelink-gtkingpro_defconfig
index 484e039..5924539 100644
--- a/configs/beelink-gtkingpro_defconfig
+++ b/configs/beelink-gtkingpro_defconfig
@@ -62,7 +62,7 @@
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/chromebit_mickey_defconfig b/configs/chromebit_mickey_defconfig
index 657db66..df94cac 100644
--- a/configs/chromebit_mickey_defconfig
+++ b/configs/chromebit_mickey_defconfig
@@ -99,7 +99,7 @@
 # CONFIG_SPL_DM_USB is not set
 CONFIG_USB_DWC2=y
 CONFIG_ROCKCHIP_USB2_PHY=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
diff --git a/configs/chromebook_bob_defconfig b/configs/chromebook_bob_defconfig
index d81129a..6ebd53e 100644
--- a/configs/chromebook_bob_defconfig
+++ b/configs/chromebook_bob_defconfig
@@ -110,7 +110,7 @@
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_VIDEO_ROCKCHIP_MAX_XRES=1280
diff --git a/configs/chromebook_jerry_defconfig b/configs/chromebook_jerry_defconfig
index 13ffafc..27f0ee7 100644
--- a/configs/chromebook_jerry_defconfig
+++ b/configs/chromebook_jerry_defconfig
@@ -106,7 +106,7 @@
 # CONFIG_SPL_DM_USB is not set
 CONFIG_USB_DWC2=y
 CONFIG_ROCKCHIP_USB2_PHY=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_CONSOLE_TRUETYPE=y
 CONFIG_DISPLAY=y
diff --git a/configs/chromebook_kevin_defconfig b/configs/chromebook_kevin_defconfig
index bafa9fb..7de787e 100644
--- a/configs/chromebook_kevin_defconfig
+++ b/configs/chromebook_kevin_defconfig
@@ -111,7 +111,7 @@
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_VIDEO_ROCKCHIP_MAX_XRES=2400
diff --git a/configs/chromebook_minnie_defconfig b/configs/chromebook_minnie_defconfig
index d80dd8e..928b2c3 100644
--- a/configs/chromebook_minnie_defconfig
+++ b/configs/chromebook_minnie_defconfig
@@ -105,7 +105,7 @@
 # CONFIG_SPL_DM_USB is not set
 CONFIG_USB_DWC2=y
 CONFIG_ROCKCHIP_USB2_PHY=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
diff --git a/configs/chromebook_speedy_defconfig b/configs/chromebook_speedy_defconfig
index 8e0214d..28b8c09 100644
--- a/configs/chromebook_speedy_defconfig
+++ b/configs/chromebook_speedy_defconfig
@@ -101,7 +101,7 @@
 # CONFIG_SPL_DM_USB is not set
 CONFIG_USB_DWC2=y
 CONFIG_ROCKCHIP_USB2_PHY=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_CONSOLE_TRUETYPE=y
 CONFIG_DISPLAY=y
diff --git a/configs/cm_fx6_defconfig b/configs/cm_fx6_defconfig
index e323438..ed267dd 100644
--- a/configs/cm_fx6_defconfig
+++ b/configs/cm_fx6_defconfig
@@ -112,7 +112,7 @@
 CONFIG_USB=y
 CONFIG_USB_KEYBOARD=y
 CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
diff --git a/configs/eb_cpu5282_defconfig b/configs/eb_cpu5282_defconfig
index b46d163..f74139d 100644
--- a/configs/eb_cpu5282_defconfig
+++ b/configs/eb_cpu5282_defconfig
@@ -53,4 +53,3 @@
 CONFIG_MII=y
 CONFIG_MCFUART=y
 CONFIG_SPLASH_SCREEN=y
-CONFIG_VIDEO_VCXK=y
diff --git a/configs/eb_cpu5282_internal_defconfig b/configs/eb_cpu5282_internal_defconfig
index cd0fe91..6cae31c 100644
--- a/configs/eb_cpu5282_internal_defconfig
+++ b/configs/eb_cpu5282_internal_defconfig
@@ -51,4 +51,3 @@
 CONFIG_MII=y
 CONFIG_MCFUART=y
 CONFIG_SPLASH_SCREEN=y
-CONFIG_VIDEO_VCXK=y
diff --git a/configs/evb-px30_defconfig b/configs/evb-px30_defconfig
index 4f88879..5c62163 100644
--- a/configs/evb-px30_defconfig
+++ b/configs/evb-px30_defconfig
@@ -109,9 +109,8 @@
 CONFIG_USB_EHCI_GENERIC=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
-CONFIG_LCD=y
 CONFIG_SPL_TINY_MEMSET=y
 CONFIG_TPL_TINY_MEMSET=y
 CONFIG_LZO=y
diff --git a/configs/evb-rk3288_defconfig b/configs/evb-rk3288_defconfig
index 40e235b..1838447 100644
--- a/configs/evb-rk3288_defconfig
+++ b/configs/evb-rk3288_defconfig
@@ -86,7 +86,7 @@
 CONFIG_ROCKCHIP_USB2_PHY=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
diff --git a/configs/evb-rk3399_defconfig b/configs/evb-rk3399_defconfig
index b55e0c2..504ba2c 100644
--- a/configs/evb-rk3399_defconfig
+++ b/configs/evb-rk3399_defconfig
@@ -75,7 +75,7 @@
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
diff --git a/configs/firefly-px30_defconfig b/configs/firefly-px30_defconfig
index 1717eb2..bf6c1c6 100644
--- a/configs/firefly-px30_defconfig
+++ b/configs/firefly-px30_defconfig
@@ -108,9 +108,8 @@
 CONFIG_USB_EHCI_GENERIC=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
-CONFIG_LCD=y
 CONFIG_SPL_TINY_MEMSET=y
 CONFIG_TPL_TINY_MEMSET=y
 CONFIG_LZO=y
diff --git a/configs/firefly-rk3288_defconfig b/configs/firefly-rk3288_defconfig
index 1349d64..4312e4f 100644
--- a/configs/firefly-rk3288_defconfig
+++ b/configs/firefly-rk3288_defconfig
@@ -87,7 +87,7 @@
 CONFIG_USB_ETHER_SMSC95XX=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
diff --git a/configs/gazerbeam_defconfig b/configs/gazerbeam_defconfig
index a432c05..b6698a5 100644
--- a/configs/gazerbeam_defconfig
+++ b/configs/gazerbeam_defconfig
@@ -218,7 +218,7 @@
 CONFIG_TPM_ATMEL_TWI=y
 CONFIG_TPM_AUTH_SESSIONS=y
 # CONFIG_TPM_V2 is not set
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_LOGICORE_DP_TX=y
 CONFIG_OSD=y
diff --git a/configs/ge_b1x5v2_defconfig b/configs/ge_b1x5v2_defconfig
index fefd990..3e51a8f 100644
--- a/configs/ge_b1x5v2_defconfig
+++ b/configs/ge_b1x5v2_defconfig
@@ -131,7 +131,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_WATCHDOG_TIMEOUT_MSECS=30000
 CONFIG_IMX_WATCHDOG=y
diff --git a/configs/ge_bx50v3_defconfig b/configs/ge_bx50v3_defconfig
index 09a8432..52d9569 100644
--- a/configs/ge_bx50v3_defconfig
+++ b/configs/ge_bx50v3_defconfig
@@ -93,7 +93,7 @@
 CONFIG_MXC_SPI=y
 CONFIG_SYSRESET=y
 CONFIG_SYSRESET_WATCHDOG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/gurnard_defconfig b/configs/gurnard_defconfig
index 01546de..aaeaaec 100644
--- a/configs/gurnard_defconfig
+++ b/configs/gurnard_defconfig
@@ -59,9 +59,8 @@
 CONFIG_ATMEL_PIT_TIMER=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_LOGO is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_LCD=y
-CONFIG_LCD=y
 CONFIG_CMD_DHRYSTONE=y
diff --git a/configs/gwventana_emmc_defconfig b/configs/gwventana_emmc_defconfig
index decbf5f..a4486a7 100644
--- a/configs/gwventana_emmc_defconfig
+++ b/configs/gwventana_emmc_defconfig
@@ -148,7 +148,7 @@
 CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_BACKLIGHT is not set
 # CONFIG_CMD_VIDCONSOLE is not set
@@ -161,6 +161,7 @@
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
+CONFIG_HIDE_LOGO_VERSION=y
 CONFIG_WATCHDOG_TIMEOUT_MSECS=60000
 CONFIG_IMX_WATCHDOG=y
 CONFIG_FDT_FIXUP_PARTITIONS=y
diff --git a/configs/gwventana_gw5904_defconfig b/configs/gwventana_gw5904_defconfig
index a5b3151..237eaf5 100644
--- a/configs/gwventana_gw5904_defconfig
+++ b/configs/gwventana_gw5904_defconfig
@@ -152,7 +152,7 @@
 CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_BACKLIGHT is not set
 # CONFIG_CMD_VIDCONSOLE is not set
@@ -165,6 +165,7 @@
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
+CONFIG_HIDE_LOGO_VERSION=y
 CONFIG_WATCHDOG_TIMEOUT_MSECS=60000
 CONFIG_IMX_WATCHDOG=y
 CONFIG_FDT_FIXUP_PARTITIONS=y
diff --git a/configs/gwventana_nand_defconfig b/configs/gwventana_nand_defconfig
index ff826de..1454150 100644
--- a/configs/gwventana_nand_defconfig
+++ b/configs/gwventana_nand_defconfig
@@ -158,7 +158,7 @@
 CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_BACKLIGHT is not set
 # CONFIG_CMD_VIDCONSOLE is not set
@@ -171,6 +171,7 @@
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
+CONFIG_HIDE_LOGO_VERSION=y
 CONFIG_WATCHDOG_TIMEOUT_MSECS=60000
 CONFIG_IMX_WATCHDOG=y
 CONFIG_FDT_FIXUP_PARTITIONS=y
diff --git a/configs/harmony_defconfig b/configs/harmony_defconfig
index 0dc0485..cf1db81 100644
--- a/configs/harmony_defconfig
+++ b/configs/harmony_defconfig
@@ -65,7 +65,7 @@
 CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_VIDEO_TEGRA20=y
 CONFIG_CONSOLE_SCROLL_LINES=10
diff --git a/configs/imx6dl_icore_nand_defconfig b/configs/imx6dl_icore_nand_defconfig
index 51c4a48..48e8ddb 100644
--- a/configs/imx6dl_icore_nand_defconfig
+++ b/configs/imx6dl_icore_nand_defconfig
@@ -68,7 +68,7 @@
 CONFIG_PINCTRL_IMX6=y
 CONFIG_MXC_UART=y
 CONFIG_IMX_THERMAL=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
diff --git a/configs/imx6q_icore_nand_defconfig b/configs/imx6q_icore_nand_defconfig
index 62533f1..2519852 100644
--- a/configs/imx6q_icore_nand_defconfig
+++ b/configs/imx6q_icore_nand_defconfig
@@ -69,7 +69,7 @@
 CONFIG_PINCTRL_IMX6=y
 CONFIG_MXC_UART=y
 CONFIG_IMX_THERMAL=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
diff --git a/configs/imx6qdl_icore_mmc_defconfig b/configs/imx6qdl_icore_mmc_defconfig
index 0ace5d9..0ed4516 100644
--- a/configs/imx6qdl_icore_mmc_defconfig
+++ b/configs/imx6qdl_icore_mmc_defconfig
@@ -91,7 +91,7 @@
 CONFIG_PINCTRL_IMX6=y
 CONFIG_MXC_UART=y
 CONFIG_IMX_THERMAL=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
diff --git a/configs/imx6qdl_icore_nand_defconfig b/configs/imx6qdl_icore_nand_defconfig
index 62533f1..2519852 100644
--- a/configs/imx6qdl_icore_nand_defconfig
+++ b/configs/imx6qdl_icore_nand_defconfig
@@ -69,7 +69,7 @@
 CONFIG_PINCTRL_IMX6=y
 CONFIG_MXC_UART=y
 CONFIG_IMX_THERMAL=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
diff --git a/configs/imx7_cm_defconfig b/configs/imx7_cm_defconfig
index 4dfb469..75718e5 100644
--- a/configs/imx7_cm_defconfig
+++ b/configs/imx7_cm_defconfig
@@ -108,7 +108,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
diff --git a/configs/imx8mp_rsb3720a1_4G_defconfig b/configs/imx8mp_rsb3720a1_4G_defconfig
index 3784890..6f58be8 100644
--- a/configs/imx8mp_rsb3720a1_4G_defconfig
+++ b/configs/imx8mp_rsb3720a1_4G_defconfig
@@ -155,7 +155,7 @@
 CONFIG_SYSRESET_PSCI=y
 CONFIG_SYSRESET_WATCHDOG=y
 CONFIG_DM_THERMAL=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_IMX_WATCHDOG=y
 CONFIG_SHA384=y
diff --git a/configs/imx8mp_rsb3720a1_6G_defconfig b/configs/imx8mp_rsb3720a1_6G_defconfig
index 469ba34..591fcf2 100644
--- a/configs/imx8mp_rsb3720a1_6G_defconfig
+++ b/configs/imx8mp_rsb3720a1_6G_defconfig
@@ -156,7 +156,7 @@
 CONFIG_SYSRESET_PSCI=y
 CONFIG_SYSRESET_WATCHDOG=y
 CONFIG_DM_THERMAL=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_IMX_WATCHDOG=y
 CONFIG_SHA384=y
diff --git a/configs/imxrt1050-evk_defconfig b/configs/imxrt1050-evk_defconfig
index 9ab4d76..c12e04d 100644
--- a/configs/imxrt1050-evk_defconfig
+++ b/configs/imxrt1050-evk_defconfig
@@ -73,7 +73,7 @@
 CONFIG_USB=y
 # CONFIG_SPL_DM_USB is not set
 CONFIG_USB_EHCI_HCD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_BACKLIGHT_GPIO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/khadas-vim3_android_ab_defconfig b/configs/khadas-vim3_android_ab_defconfig
index f3e9f11..d3a4ab7 100644
--- a/configs/khadas-vim3_android_ab_defconfig
+++ b/configs/khadas-vim3_android_ab_defconfig
@@ -95,7 +95,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/khadas-vim3_android_defconfig b/configs/khadas-vim3_android_defconfig
index f076b6e..827e994 100644
--- a/configs/khadas-vim3_android_defconfig
+++ b/configs/khadas-vim3_android_defconfig
@@ -93,7 +93,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/khadas-vim3_defconfig b/configs/khadas-vim3_defconfig
index 0cf4bac..701e70e 100644
--- a/configs/khadas-vim3_defconfig
+++ b/configs/khadas-vim3_defconfig
@@ -82,7 +82,7 @@
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/khadas-vim3l_android_ab_defconfig b/configs/khadas-vim3l_android_ab_defconfig
index 828ce6d..44ab1ed 100644
--- a/configs/khadas-vim3l_android_ab_defconfig
+++ b/configs/khadas-vim3l_android_ab_defconfig
@@ -95,7 +95,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/khadas-vim3l_android_defconfig b/configs/khadas-vim3l_android_defconfig
index ee1fa5c..30c5dc2 100644
--- a/configs/khadas-vim3l_android_defconfig
+++ b/configs/khadas-vim3l_android_defconfig
@@ -93,7 +93,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/khadas-vim3l_defconfig b/configs/khadas-vim3l_defconfig
index f1524f5..c78dfce 100644
--- a/configs/khadas-vim3l_defconfig
+++ b/configs/khadas-vim3l_defconfig
@@ -82,7 +82,7 @@
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/libretech-ac_defconfig b/configs/libretech-ac_defconfig
index f3734c5..3e30c25 100644
--- a/configs/libretech-ac_defconfig
+++ b/configs/libretech-ac_defconfig
@@ -76,7 +76,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/libretech-cc_defconfig b/configs/libretech-cc_defconfig
index 7bb8528..f5832cd 100644
--- a/configs/libretech-cc_defconfig
+++ b/configs/libretech-cc_defconfig
@@ -59,7 +59,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/libretech-cc_v2_defconfig b/configs/libretech-cc_v2_defconfig
index 2181115..42b76a2 100644
--- a/configs/libretech-cc_v2_defconfig
+++ b/configs/libretech-cc_v2_defconfig
@@ -70,7 +70,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/libretech-s905d-pc_defconfig b/configs/libretech-s905d-pc_defconfig
index 402b8a2..245194e 100644
--- a/configs/libretech-s905d-pc_defconfig
+++ b/configs/libretech-s905d-pc_defconfig
@@ -72,7 +72,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_VIDEO_MESON=y
 CONFIG_VIDEO_DT_SIMPLEFB=y
diff --git a/configs/libretech-s912-pc_defconfig b/configs/libretech-s912-pc_defconfig
index 7819e72..63137eb5 100644
--- a/configs/libretech-s912-pc_defconfig
+++ b/configs/libretech-s912-pc_defconfig
@@ -71,7 +71,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_VIDEO_MESON=y
 CONFIG_VIDEO_DT_SIMPLEFB=y
diff --git a/configs/ls1028aqds_tfa_SECURE_BOOT_defconfig b/configs/ls1028aqds_tfa_SECURE_BOOT_defconfig
index 038fbe5..753583d 100644
--- a/configs/ls1028aqds_tfa_SECURE_BOOT_defconfig
+++ b/configs/ls1028aqds_tfa_SECURE_BOOT_defconfig
@@ -94,7 +94,6 @@
 CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
-CONFIG_VIDEO=y
 CONFIG_WDT=y
 CONFIG_WDT_SP805=y
 CONFIG_RSA=y
diff --git a/configs/ls1028aqds_tfa_defconfig b/configs/ls1028aqds_tfa_defconfig
index d3edc79..b5e243b 100644
--- a/configs/ls1028aqds_tfa_defconfig
+++ b/configs/ls1028aqds_tfa_defconfig
@@ -100,7 +100,6 @@
 CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
-CONFIG_VIDEO=y
 CONFIG_WDT=y
 CONFIG_WDT_SP805=y
 CONFIG_OF_LIBFDT_OVERLAY=y
diff --git a/configs/ls1028ardb_tfa_SECURE_BOOT_defconfig b/configs/ls1028ardb_tfa_SECURE_BOOT_defconfig
index 2e454c2..fad0786 100644
--- a/configs/ls1028ardb_tfa_SECURE_BOOT_defconfig
+++ b/configs/ls1028ardb_tfa_SECURE_BOOT_defconfig
@@ -88,7 +88,6 @@
 CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
-CONFIG_VIDEO=y
 CONFIG_WDT=y
 CONFIG_WDT_SP805=y
 CONFIG_RSA=y
diff --git a/configs/ls1028ardb_tfa_defconfig b/configs/ls1028ardb_tfa_defconfig
index 7826b52..20354f7 100644
--- a/configs/ls1028ardb_tfa_defconfig
+++ b/configs/ls1028ardb_tfa_defconfig
@@ -98,7 +98,6 @@
 CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_ASIX88179=y
 CONFIG_USB_ETHER_RTL8152=y
-CONFIG_VIDEO=y
 CONFIG_WDT=y
 CONFIG_WDT_SP805=y
 CONFIG_OF_LIBFDT_OVERLAY=y
diff --git a/configs/m53menlo_defconfig b/configs/m53menlo_defconfig
index 4bd98d2..4bc70e4 100644
--- a/configs/m53menlo_defconfig
+++ b/configs/m53menlo_defconfig
@@ -115,17 +115,17 @@
 CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
-CONFIG_SPLASHIMAGE_GUARD=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
 CONFIG_SPLASH_SOURCE=y
 CONFIG_VIDEO_BMP_GZIP=y
+CONFIG_VIDEO_LOGO_MAX_SIZE=0x200000
 CONFIG_BMP_16BPP=y
 CONFIG_WATCHDOG_TIMEOUT_MSECS=8000
 CONFIG_IMX_WATCHDOG=y
diff --git a/configs/marsboard_defconfig b/configs/marsboard_defconfig
index ed9c843..f0c93d3 100644
--- a/configs/marsboard_defconfig
+++ b/configs/marsboard_defconfig
@@ -57,7 +57,7 @@
 CONFIG_USB=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_ASIX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_BACKLIGHT is not set
 # CONFIG_CMD_VIDCONSOLE is not set
diff --git a/configs/medcom-wide_defconfig b/configs/medcom-wide_defconfig
index d51a124..292ab8d 100644
--- a/configs/medcom-wide_defconfig
+++ b/configs/medcom-wide_defconfig
@@ -54,6 +54,6 @@
 CONFIG_USB_EHCI_TEGRA=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_VIDEO_TEGRA20=y
diff --git a/configs/miqi-rk3288_defconfig b/configs/miqi-rk3288_defconfig
index 75675e6..9c6de2b 100644
--- a/configs/miqi-rk3288_defconfig
+++ b/configs/miqi-rk3288_defconfig
@@ -84,7 +84,7 @@
 CONFIG_USB_ETHER_SMSC95XX=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
diff --git a/configs/mx53cx9020_defconfig b/configs/mx53cx9020_defconfig
index 6c3ba9c..7bb3893 100644
--- a/configs/mx53cx9020_defconfig
+++ b/configs/mx53cx9020_defconfig
@@ -35,7 +35,7 @@
 CONFIG_MXC_UART=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_MX5=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/mx53ppd_defconfig b/configs/mx53ppd_defconfig
index 7fadb6c..b54c90e 100644
--- a/configs/mx53ppd_defconfig
+++ b/configs/mx53ppd_defconfig
@@ -77,7 +77,7 @@
 CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_WATCHDOG_TIMEOUT_MSECS=8000
diff --git a/configs/mx6cuboxi_defconfig b/configs/mx6cuboxi_defconfig
index 9de5e77..8bb7a56 100644
--- a/configs/mx6cuboxi_defconfig
+++ b/configs/mx6cuboxi_defconfig
@@ -73,7 +73,7 @@
 CONFIG_IMX_THERMAL=y
 CONFIG_USB=y
 CONFIG_USB_KEYBOARD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_BACKLIGHT is not set
 # CONFIG_CMD_VIDCONSOLE is not set
diff --git a/configs/mx6qsabrelite_defconfig b/configs/mx6qsabrelite_defconfig
index 2834e47..e58f4b5 100644
--- a/configs/mx6qsabrelite_defconfig
+++ b/configs/mx6qsabrelite_defconfig
@@ -85,12 +85,13 @@
 CONFIG_CI_UDC=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_I2C_EDID=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
 CONFIG_VIDEO_BMP_GZIP=y
+CONFIG_VIDEO_LOGO_MAX_SIZE=0x600000
 CONFIG_VIDEO_BMP_RLE8=y
 CONFIG_BMP_16BPP=y
diff --git a/configs/mx6sabreauto_defconfig b/configs/mx6sabreauto_defconfig
index 093bb85..cb6a17b 100644
--- a/configs/mx6sabreauto_defconfig
+++ b/configs/mx6sabreauto_defconfig
@@ -112,7 +112,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
diff --git a/configs/mx6sabresd_defconfig b/configs/mx6sabresd_defconfig
index 5db8182..f7ef8ed 100644
--- a/configs/mx6sabresd_defconfig
+++ b/configs/mx6sabresd_defconfig
@@ -117,7 +117,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
diff --git a/configs/mx6ul_14x14_evk_defconfig b/configs/mx6ul_14x14_evk_defconfig
index b87973f..55ee1aa 100644
--- a/configs/mx6ul_14x14_evk_defconfig
+++ b/configs/mx6ul_14x14_evk_defconfig
@@ -99,7 +99,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_VIDEO_MXS=y
diff --git a/configs/mx6ul_9x9_evk_defconfig b/configs/mx6ul_9x9_evk_defconfig
index 8062095..3a90b09 100644
--- a/configs/mx6ul_9x9_evk_defconfig
+++ b/configs/mx6ul_9x9_evk_defconfig
@@ -88,7 +88,7 @@
 CONFIG_IMX_THERMAL=y
 CONFIG_USB=y
 CONFIG_USB_STORAGE=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_VIDEO_MXS=y
diff --git a/configs/nanopc-t4-rk3399_defconfig b/configs/nanopc-t4-rk3399_defconfig
index 951fd0c..c125663 100644
--- a/configs/nanopc-t4-rk3399_defconfig
+++ b/configs/nanopc-t4-rk3399_defconfig
@@ -70,7 +70,7 @@
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
 CONFIG_USB_GADGET=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/nanopi-m4-2gb-rk3399_defconfig b/configs/nanopi-m4-2gb-rk3399_defconfig
index 7d0e1f2..aa7e379 100644
--- a/configs/nanopi-m4-2gb-rk3399_defconfig
+++ b/configs/nanopi-m4-2gb-rk3399_defconfig
@@ -64,7 +64,7 @@
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/nanopi-m4-rk3399_defconfig b/configs/nanopi-m4-rk3399_defconfig
index 379ec87..32f6390 100644
--- a/configs/nanopi-m4-rk3399_defconfig
+++ b/configs/nanopi-m4-rk3399_defconfig
@@ -64,7 +64,7 @@
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/nanopi-m4b-rk3399_defconfig b/configs/nanopi-m4b-rk3399_defconfig
index 06cefc5..497385f 100644
--- a/configs/nanopi-m4b-rk3399_defconfig
+++ b/configs/nanopi-m4b-rk3399_defconfig
@@ -64,7 +64,7 @@
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/nanopi-neo4-rk3399_defconfig b/configs/nanopi-neo4-rk3399_defconfig
index 4bfbeb1..f47928d 100644
--- a/configs/nanopi-neo4-rk3399_defconfig
+++ b/configs/nanopi-neo4-rk3399_defconfig
@@ -64,7 +64,7 @@
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/nanopi-r4s-rk3399_defconfig b/configs/nanopi-r4s-rk3399_defconfig
index d8854ab..7cb1dc1 100644
--- a/configs/nanopi-r4s-rk3399_defconfig
+++ b/configs/nanopi-r4s-rk3399_defconfig
@@ -65,7 +65,7 @@
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/nitrogen6dl2g_defconfig b/configs/nitrogen6dl2g_defconfig
index 7da9dad..d1f7ec3 100644
--- a/configs/nitrogen6dl2g_defconfig
+++ b/configs/nitrogen6dl2g_defconfig
@@ -90,12 +90,13 @@
 CONFIG_CI_UDC=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_I2C_EDID=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
 CONFIG_VIDEO_BMP_GZIP=y
+CONFIG_VIDEO_LOGO_MAX_SIZE=0x600000
 CONFIG_VIDEO_BMP_RLE8=y
 CONFIG_BMP_16BPP=y
diff --git a/configs/nitrogen6dl_defconfig b/configs/nitrogen6dl_defconfig
index 2e9be9c..ef1ffad 100644
--- a/configs/nitrogen6dl_defconfig
+++ b/configs/nitrogen6dl_defconfig
@@ -90,12 +90,13 @@
 CONFIG_CI_UDC=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_I2C_EDID=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
 CONFIG_VIDEO_BMP_GZIP=y
+CONFIG_VIDEO_LOGO_MAX_SIZE=0x600000
 CONFIG_VIDEO_BMP_RLE8=y
 CONFIG_BMP_16BPP=y
diff --git a/configs/nitrogen6q2g_defconfig b/configs/nitrogen6q2g_defconfig
index dd513fa..2c3df8b 100644
--- a/configs/nitrogen6q2g_defconfig
+++ b/configs/nitrogen6q2g_defconfig
@@ -93,12 +93,13 @@
 CONFIG_CI_UDC=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_I2C_EDID=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
 CONFIG_VIDEO_BMP_GZIP=y
+CONFIG_VIDEO_LOGO_MAX_SIZE=0x600000
 CONFIG_VIDEO_BMP_RLE8=y
 CONFIG_BMP_16BPP=y
diff --git a/configs/nitrogen6q_defconfig b/configs/nitrogen6q_defconfig
index 9e4374c..fa394cf 100644
--- a/configs/nitrogen6q_defconfig
+++ b/configs/nitrogen6q_defconfig
@@ -93,12 +93,13 @@
 CONFIG_CI_UDC=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_I2C_EDID=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
 CONFIG_VIDEO_BMP_GZIP=y
+CONFIG_VIDEO_LOGO_MAX_SIZE=0x600000
 CONFIG_VIDEO_BMP_RLE8=y
 CONFIG_BMP_16BPP=y
diff --git a/configs/nitrogen6s1g_defconfig b/configs/nitrogen6s1g_defconfig
index aa28bee..cf48f31 100644
--- a/configs/nitrogen6s1g_defconfig
+++ b/configs/nitrogen6s1g_defconfig
@@ -90,12 +90,13 @@
 CONFIG_CI_UDC=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_I2C_EDID=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
 CONFIG_VIDEO_BMP_GZIP=y
+CONFIG_VIDEO_LOGO_MAX_SIZE=0x600000
 CONFIG_VIDEO_BMP_RLE8=y
 CONFIG_BMP_16BPP=y
diff --git a/configs/nitrogen6s_defconfig b/configs/nitrogen6s_defconfig
index d98c213..15e64ad 100644
--- a/configs/nitrogen6s_defconfig
+++ b/configs/nitrogen6s_defconfig
@@ -90,12 +90,13 @@
 CONFIG_CI_UDC=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_I2C_EDID=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
 CONFIG_VIDEO_BMP_GZIP=y
+CONFIG_VIDEO_LOGO_MAX_SIZE=0x600000
 CONFIG_VIDEO_BMP_RLE8=y
 CONFIG_BMP_16BPP=y
diff --git a/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig
index d24a8e7..8e55069 100644
--- a/configs/nokia_rx51_defconfig
+++ b/configs/nokia_rx51_defconfig
@@ -65,7 +65,7 @@
 CONFIG_USB=y
 CONFIG_USB_MUSB_UDC=y
 CONFIG_USB_OMAP3=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
diff --git a/configs/nyan-big_defconfig b/configs/nyan-big_defconfig
index 6607edd..e55da6e 100644
--- a/configs/nyan-big_defconfig
+++ b/configs/nyan-big_defconfig
@@ -98,7 +98,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0x701a
 CONFIG_CI_UDC=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_DISPLAY=y
diff --git a/configs/odroid-c2_defconfig b/configs/odroid-c2_defconfig
index 024a2e2..335a4a3 100644
--- a/configs/odroid-c2_defconfig
+++ b/configs/odroid-c2_defconfig
@@ -54,7 +54,7 @@
 CONFIG_USB=y
 CONFIG_USB_DWC2=y
 CONFIG_USB_KEYBOARD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/odroid-c4_defconfig b/configs/odroid-c4_defconfig
index d244e71..9389e34 100644
--- a/configs/odroid-c4_defconfig
+++ b/configs/odroid-c4_defconfig
@@ -62,7 +62,7 @@
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/odroid-go2_defconfig b/configs/odroid-go2_defconfig
index c0c0c4d..f4aa53a 100644
--- a/configs/odroid-go2_defconfig
+++ b/configs/odroid-go2_defconfig
@@ -112,9 +112,8 @@
 CONFIG_USB_EHCI_GENERIC=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
-CONFIG_LCD=y
 CONFIG_SPL_TINY_MEMSET=y
 CONFIG_TPL_TINY_MEMSET=y
 CONFIG_LZO=y
diff --git a/configs/odroid-hc4_defconfig b/configs/odroid-hc4_defconfig
index fe70d5f..b525358 100644
--- a/configs/odroid-hc4_defconfig
+++ b/configs/odroid-hc4_defconfig
@@ -80,7 +80,7 @@
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/odroid-n2_defconfig b/configs/odroid-n2_defconfig
index 3703d7e..fb91a5b 100644
--- a/configs/odroid-n2_defconfig
+++ b/configs/odroid-n2_defconfig
@@ -62,7 +62,7 @@
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/opos6uldev_defconfig b/configs/opos6uldev_defconfig
index e508b63..1c9579b 100644
--- a/configs/opos6uldev_defconfig
+++ b/configs/opos6uldev_defconfig
@@ -107,7 +107,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
diff --git a/configs/paz00_defconfig b/configs/paz00_defconfig
index bb11522..4cd53cd 100644
--- a/configs/paz00_defconfig
+++ b/configs/paz00_defconfig
@@ -49,7 +49,7 @@
 CONFIG_USB_EHCI_TEGRA=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_ASIX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_VIDEO_TEGRA20=y
 CONFIG_CONSOLE_SCROLL_LINES=10
diff --git a/configs/peach-pi_defconfig b/configs/peach-pi_defconfig
index 51210f8..512a539 100644
--- a/configs/peach-pi_defconfig
+++ b/configs/peach-pi_defconfig
@@ -80,7 +80,7 @@
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_HOST_ETHER=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_VIDCONSOLE_AS_LCD=y
 CONFIG_DISPLAY=y
@@ -89,6 +89,5 @@
 CONFIG_EXYNOS_FB=y
 CONFIG_VIDEO_BRIDGE=y
 CONFIG_VIDEO_BRIDGE_PARADE_PS862X=y
-CONFIG_LCD=y
 CONFIG_TPM=y
 CONFIG_ERRNO_STR=y
diff --git a/configs/peach-pit_defconfig b/configs/peach-pit_defconfig
index e2fbb8a..8b40caf 100644
--- a/configs/peach-pit_defconfig
+++ b/configs/peach-pit_defconfig
@@ -79,7 +79,7 @@
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_HOST_ETHER=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_VIDCONSOLE_AS_LCD=y
 CONFIG_DISPLAY=y
@@ -88,6 +88,5 @@
 CONFIG_EXYNOS_FB=y
 CONFIG_VIDEO_BRIDGE=y
 CONFIG_VIDEO_BRIDGE_PARADE_PS862X=y
-CONFIG_LCD=y
 CONFIG_TPM=y
 CONFIG_ERRNO_STR=y
diff --git a/configs/pico-dwarf-imx7d_defconfig b/configs/pico-dwarf-imx7d_defconfig
index 57a54fd..e0148f0 100644
--- a/configs/pico-dwarf-imx7d_defconfig
+++ b/configs/pico-dwarf-imx7d_defconfig
@@ -92,7 +92,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_SPLASH_SCREEN=y
diff --git a/configs/pico-hobbit-imx7d_defconfig b/configs/pico-hobbit-imx7d_defconfig
index 61ceb89..97d9895 100644
--- a/configs/pico-hobbit-imx7d_defconfig
+++ b/configs/pico-hobbit-imx7d_defconfig
@@ -92,7 +92,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_SPLASH_SCREEN=y
diff --git a/configs/pico-imx6_defconfig b/configs/pico-imx6_defconfig
index ef72461..63fdca3 100644
--- a/configs/pico-imx6_defconfig
+++ b/configs/pico-imx6_defconfig
@@ -88,7 +88,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_BACKLIGHT is not set
 # CONFIG_CMD_VIDCONSOLE is not set
diff --git a/configs/pico-imx6ul_defconfig b/configs/pico-imx6ul_defconfig
index 7384b9b..cd13959 100644
--- a/configs/pico-imx6ul_defconfig
+++ b/configs/pico-imx6ul_defconfig
@@ -83,7 +83,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_VIDEO_MXS=y
 CONFIG_SPLASH_SCREEN=y
diff --git a/configs/pico-imx7d_bl33_defconfig b/configs/pico-imx7d_bl33_defconfig
index 49a8051..a94f03e 100644
--- a/configs/pico-imx7d_bl33_defconfig
+++ b/configs/pico-imx7d_bl33_defconfig
@@ -90,7 +90,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_VIDEO_MXS=y
diff --git a/configs/pico-imx7d_defconfig b/configs/pico-imx7d_defconfig
index 62658bf..a694d86 100644
--- a/configs/pico-imx7d_defconfig
+++ b/configs/pico-imx7d_defconfig
@@ -92,7 +92,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_VIDEO_MXS=y
diff --git a/configs/pico-nymph-imx7d_defconfig b/configs/pico-nymph-imx7d_defconfig
index 57a54fd..e0148f0 100644
--- a/configs/pico-nymph-imx7d_defconfig
+++ b/configs/pico-nymph-imx7d_defconfig
@@ -92,7 +92,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_SPLASH_SCREEN=y
diff --git a/configs/pico-pi-imx7d_defconfig b/configs/pico-pi-imx7d_defconfig
index 4853ab3..f8509e2 100644
--- a/configs/pico-pi-imx7d_defconfig
+++ b/configs/pico-pi-imx7d_defconfig
@@ -92,7 +92,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_SPLASH_SCREEN=y
diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig
index 5d9a841..6971d6b 100644
--- a/configs/pinebook-pro-rk3399_defconfig
+++ b/configs/pinebook-pro-rk3399_defconfig
@@ -97,7 +97,7 @@
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_RTL8152=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_EDP=y
diff --git a/configs/pm9261_defconfig b/configs/pm9261_defconfig
index 0e9cb5d..d82d92a 100644
--- a/configs/pm9261_defconfig
+++ b/configs/pm9261_defconfig
@@ -63,11 +63,8 @@
 CONFIG_SYS_USB_OHCI_SLOT_NAME="at91sam9261"
 CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS=2
 CONFIG_USB_ATMEL=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_LCD=y
 CONFIG_ATMEL_LCD_BGR555=y
-CONFIG_LCD=y
-CONFIG_LCD_INFO=y
-CONFIG_LCD_LOGO=y
 CONFIG_REGEX=y
diff --git a/configs/pm9263_defconfig b/configs/pm9263_defconfig
index 2a16c83..637c2b6 100644
--- a/configs/pm9263_defconfig
+++ b/configs/pm9263_defconfig
@@ -66,11 +66,8 @@
 CONFIG_SYS_USB_OHCI_SLOT_NAME="at91sam9263"
 CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS=2
 CONFIG_USB_ATMEL=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_LCD=y
 CONFIG_ATMEL_LCD_BGR555=y
-CONFIG_LCD=y
-CONFIG_LCD_INFO=y
-CONFIG_LCD_LOGO=y
 CONFIG_JFFS2_NAND=y
diff --git a/configs/puma-rk3399_defconfig b/configs/puma-rk3399_defconfig
index 34186d1..c64c6b8 100644
--- a/configs/puma-rk3399_defconfig
+++ b/configs/puma-rk3399_defconfig
@@ -107,7 +107,7 @@
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
diff --git a/configs/px30-core-ctouch2-of10-px30_defconfig b/configs/px30-core-ctouch2-of10-px30_defconfig
index 2fb8bd8..65efd03 100644
--- a/configs/px30-core-ctouch2-of10-px30_defconfig
+++ b/configs/px30-core-ctouch2-of10-px30_defconfig
@@ -108,9 +108,8 @@
 CONFIG_USB_EHCI_GENERIC=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
-CONFIG_LCD=y
 CONFIG_SPL_TINY_MEMSET=y
 CONFIG_TPL_TINY_MEMSET=y
 CONFIG_LZO=y
diff --git a/configs/px30-core-ctouch2-px30_defconfig b/configs/px30-core-ctouch2-px30_defconfig
index 76f81ae..c7e66d3 100644
--- a/configs/px30-core-ctouch2-px30_defconfig
+++ b/configs/px30-core-ctouch2-px30_defconfig
@@ -108,9 +108,8 @@
 CONFIG_USB_EHCI_GENERIC=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
-CONFIG_LCD=y
 CONFIG_SPL_TINY_MEMSET=y
 CONFIG_TPL_TINY_MEMSET=y
 CONFIG_LZO=y
diff --git a/configs/px30-core-edimm2.2-px30_defconfig b/configs/px30-core-edimm2.2-px30_defconfig
index 8493500..9ec4320 100644
--- a/configs/px30-core-edimm2.2-px30_defconfig
+++ b/configs/px30-core-edimm2.2-px30_defconfig
@@ -108,9 +108,8 @@
 CONFIG_USB_EHCI_GENERIC=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
-CONFIG_LCD=y
 CONFIG_SPL_TINY_MEMSET=y
 CONFIG_TPL_TINY_MEMSET=y
 CONFIG_LZO=y
diff --git a/configs/radxa-zero_defconfig b/configs/radxa-zero_defconfig
index d3744f4..1c84cfc 100644
--- a/configs/radxa-zero_defconfig
+++ b/configs/radxa-zero_defconfig
@@ -57,7 +57,7 @@
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/riotboard_defconfig b/configs/riotboard_defconfig
index bd17c02..8ed96c2 100644
--- a/configs/riotboard_defconfig
+++ b/configs/riotboard_defconfig
@@ -73,7 +73,7 @@
 CONFIG_USB=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_ASIX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_BACKLIGHT is not set
 # CONFIG_CMD_VIDCONSOLE is not set
diff --git a/configs/roc-pc-mezzanine-rk3399_defconfig b/configs/roc-pc-mezzanine-rk3399_defconfig
index be1f9db..c8e57f6 100644
--- a/configs/roc-pc-mezzanine-rk3399_defconfig
+++ b/configs/roc-pc-mezzanine-rk3399_defconfig
@@ -88,7 +88,7 @@
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
 CONFIG_USB_GADGET=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/roc-pc-rk3399_defconfig b/configs/roc-pc-rk3399_defconfig
index 4625e47..ed37c68 100644
--- a/configs/roc-pc-rk3399_defconfig
+++ b/configs/roc-pc-rk3399_defconfig
@@ -85,7 +85,7 @@
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
 CONFIG_USB_GADGET=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/rock-pi-4-rk3399_defconfig b/configs/rock-pi-4-rk3399_defconfig
index f8a57f6..a6a5292 100644
--- a/configs/rock-pi-4-rk3399_defconfig
+++ b/configs/rock-pi-4-rk3399_defconfig
@@ -78,7 +78,7 @@
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
 CONFIG_USB_GADGET=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/rock-pi-4c-rk3399_defconfig b/configs/rock-pi-4c-rk3399_defconfig
index 9aa7809..411a5fd 100644
--- a/configs/rock-pi-4c-rk3399_defconfig
+++ b/configs/rock-pi-4c-rk3399_defconfig
@@ -78,7 +78,7 @@
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
 CONFIG_USB_GADGET=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/rock-pi-n10-rk3399pro_defconfig b/configs/rock-pi-n10-rk3399pro_defconfig
index ed77ac2..40b4d7d 100644
--- a/configs/rock-pi-n10-rk3399pro_defconfig
+++ b/configs/rock-pi-n10-rk3399pro_defconfig
@@ -74,7 +74,7 @@
 CONFIG_USB_KEYBOARD=y
 # CONFIG_USB_KEYBOARD_FN_KEYS is not set
 CONFIG_USB_GADGET=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/rock-pi-n8-rk3288_defconfig b/configs/rock-pi-n8-rk3288_defconfig
index 6227ad3..bd2fb5d 100644
--- a/configs/rock-pi-n8-rk3288_defconfig
+++ b/configs/rock-pi-n8-rk3288_defconfig
@@ -83,7 +83,7 @@
 # CONFIG_USB_KEYBOARD_FN_KEYS is not set
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/rock2_defconfig b/configs/rock2_defconfig
index d639ed2..3f06446 100644
--- a/configs/rock2_defconfig
+++ b/configs/rock2_defconfig
@@ -83,7 +83,7 @@
 CONFIG_USB_KEYBOARD=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig
index daa0d3d..9e7d846 100644
--- a/configs/rock960-rk3399_defconfig
+++ b/configs/rock960-rk3399_defconfig
@@ -82,7 +82,7 @@
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig
index 87fe8c4..309efa7 100644
--- a/configs/rockpro64-rk3399_defconfig
+++ b/configs/rockpro64-rk3399_defconfig
@@ -98,7 +98,7 @@
 CONFIG_USB_ETHER_MCS7830=y
 CONFIG_USB_ETHER_RTL8152=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig
index 0bac245..6766451 100644
--- a/configs/rpi_0_w_defconfig
+++ b/configs/rpi_0_w_defconfig
@@ -41,7 +41,7 @@
 CONFIG_USB_KEYBOARD=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig
index 700a152..498acc3 100644
--- a/configs/rpi_2_defconfig
+++ b/configs/rpi_2_defconfig
@@ -42,7 +42,7 @@
 CONFIG_USB_KEYBOARD=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig
index 06aefc4..0ffb466 100644
--- a/configs/rpi_3_32b_defconfig
+++ b/configs/rpi_3_32b_defconfig
@@ -43,7 +43,7 @@
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_LAN78XX=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/rpi_3_b_plus_defconfig b/configs/rpi_3_b_plus_defconfig
index 05b3bac..e112fca 100644
--- a/configs/rpi_3_b_plus_defconfig
+++ b/configs/rpi_3_b_plus_defconfig
@@ -42,7 +42,7 @@
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_LAN78XX=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig
index c9ecc6e..94f5d03 100644
--- a/configs/rpi_3_defconfig
+++ b/configs/rpi_3_defconfig
@@ -42,7 +42,7 @@
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_LAN78XX=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig
index e9c18f6..8c03252 100644
--- a/configs/rpi_4_32b_defconfig
+++ b/configs/rpi_4_32b_defconfig
@@ -57,7 +57,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig
index 1163750..46104c9 100644
--- a/configs/rpi_4_defconfig
+++ b/configs/rpi_4_defconfig
@@ -57,7 +57,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig
index 364a153..433ec8b 100644
--- a/configs/rpi_arm64_defconfig
+++ b/configs/rpi_arm64_defconfig
@@ -49,7 +49,7 @@
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_LAN78XX=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig
index 7a0540a..1e11f37 100644
--- a/configs/rpi_defconfig
+++ b/configs/rpi_defconfig
@@ -41,7 +41,7 @@
 CONFIG_USB_KEYBOARD=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/s5p4418_nanopi2_defconfig b/configs/s5p4418_nanopi2_defconfig
index f3a3165..ce46f84 100644
--- a/configs/s5p4418_nanopi2_defconfig
+++ b/configs/s5p4418_nanopi2_defconfig
@@ -55,7 +55,7 @@
 CONFIG_DM_PMIC=y
 CONFIG_DM_REGULATOR=y
 CONFIG_CONS_INDEX=0
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_NX=y
diff --git a/configs/s5pc210_universal_defconfig b/configs/s5pc210_universal_defconfig
index c2e1b67..9443be7 100644
--- a/configs/s5pc210_universal_defconfig
+++ b/configs/s5pc210_universal_defconfig
@@ -62,3 +62,4 @@
 CONFIG_USB_GADGET_DWC2_OTG_PHY=y
 CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_USB_FUNCTION_THOR=y
+CONFIG_VIDEO_LOGO_MAX_SIZE=0x4e236
diff --git a/configs/sama5d27_som1_ek_mmc1_defconfig b/configs/sama5d27_som1_ek_mmc1_defconfig
index 8b99f21..c9b5223 100644
--- a/configs/sama5d27_som1_ek_mmc1_defconfig
+++ b/configs/sama5d27_som1_ek_mmc1_defconfig
@@ -110,7 +110,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d27_som1_ek_mmc_defconfig b/configs/sama5d27_som1_ek_mmc_defconfig
index 55a26b5..8e5907c 100644
--- a/configs/sama5d27_som1_ek_mmc_defconfig
+++ b/configs/sama5d27_som1_ek_mmc_defconfig
@@ -110,7 +110,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d27_som1_ek_qspiflash_defconfig b/configs/sama5d27_som1_ek_qspiflash_defconfig
index f86a9cc..8684f08 100644
--- a/configs/sama5d27_som1_ek_qspiflash_defconfig
+++ b/configs/sama5d27_som1_ek_qspiflash_defconfig
@@ -109,7 +109,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d27_wlsom1_ek_mmc_defconfig b/configs/sama5d27_wlsom1_ek_mmc_defconfig
index 3bb3cf4..47dc1d9 100644
--- a/configs/sama5d27_wlsom1_ek_mmc_defconfig
+++ b/configs/sama5d27_wlsom1_ek_mmc_defconfig
@@ -115,7 +115,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d27_wlsom1_ek_qspiflash_defconfig b/configs/sama5d27_wlsom1_ek_qspiflash_defconfig
index d2bb748..bc03fec 100644
--- a/configs/sama5d27_wlsom1_ek_qspiflash_defconfig
+++ b/configs/sama5d27_wlsom1_ek_qspiflash_defconfig
@@ -119,7 +119,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d2_xplained_emmc_defconfig b/configs/sama5d2_xplained_emmc_defconfig
index b27379c..20b3124 100644
--- a/configs/sama5d2_xplained_emmc_defconfig
+++ b/configs/sama5d2_xplained_emmc_defconfig
@@ -109,7 +109,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d2_xplained_mmc_defconfig b/configs/sama5d2_xplained_mmc_defconfig
index f63156d..f39c084 100644
--- a/configs/sama5d2_xplained_mmc_defconfig
+++ b/configs/sama5d2_xplained_mmc_defconfig
@@ -111,7 +111,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d2_xplained_qspiflash_defconfig b/configs/sama5d2_xplained_qspiflash_defconfig
index 9526465..993470e 100644
--- a/configs/sama5d2_xplained_qspiflash_defconfig
+++ b/configs/sama5d2_xplained_qspiflash_defconfig
@@ -111,7 +111,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d2_xplained_spiflash_defconfig b/configs/sama5d2_xplained_spiflash_defconfig
index fabd4ec..639cf0d 100644
--- a/configs/sama5d2_xplained_spiflash_defconfig
+++ b/configs/sama5d2_xplained_spiflash_defconfig
@@ -115,7 +115,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d36ek_cmp_mmc_defconfig b/configs/sama5d36ek_cmp_mmc_defconfig
index b3e6b53..7b8efdc 100644
--- a/configs/sama5d36ek_cmp_mmc_defconfig
+++ b/configs/sama5d36ek_cmp_mmc_defconfig
@@ -70,7 +70,7 @@
 CONFIG_SYSRESET_AT91=y
 CONFIG_TIMER=y
 CONFIG_ATMEL_PIT_TIMER=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d36ek_cmp_nandflash_defconfig b/configs/sama5d36ek_cmp_nandflash_defconfig
index a9632a1..81acb4e 100644
--- a/configs/sama5d36ek_cmp_nandflash_defconfig
+++ b/configs/sama5d36ek_cmp_nandflash_defconfig
@@ -70,7 +70,7 @@
 CONFIG_SYSRESET_AT91=y
 CONFIG_TIMER=y
 CONFIG_ATMEL_PIT_TIMER=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d36ek_cmp_spiflash_defconfig b/configs/sama5d36ek_cmp_spiflash_defconfig
index 5f5caf9..f328d59 100644
--- a/configs/sama5d36ek_cmp_spiflash_defconfig
+++ b/configs/sama5d36ek_cmp_spiflash_defconfig
@@ -72,7 +72,7 @@
 CONFIG_SYSRESET_AT91=y
 CONFIG_TIMER=y
 CONFIG_ATMEL_PIT_TIMER=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d3xek_mmc_defconfig b/configs/sama5d3xek_mmc_defconfig
index fce358c..74cacf5 100644
--- a/configs/sama5d3xek_mmc_defconfig
+++ b/configs/sama5d3xek_mmc_defconfig
@@ -114,5 +114,5 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d3xek_nandflash_defconfig b/configs/sama5d3xek_nandflash_defconfig
index 9a4c1d8..01b92ce 100644
--- a/configs/sama5d3xek_nandflash_defconfig
+++ b/configs/sama5d3xek_nandflash_defconfig
@@ -116,5 +116,5 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d3xek_spiflash_defconfig b/configs/sama5d3xek_spiflash_defconfig
index 9595c06..28345c3 100644
--- a/configs/sama5d3xek_spiflash_defconfig
+++ b/configs/sama5d3xek_spiflash_defconfig
@@ -115,5 +115,5 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig
index 0cbdfb9..3e89b20 100644
--- a/configs/sama5d4_xplained_mmc_defconfig
+++ b/configs/sama5d4_xplained_mmc_defconfig
@@ -106,7 +106,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig
index 2e0e06c..ee209a5 100644
--- a/configs/sama5d4_xplained_nandflash_defconfig
+++ b/configs/sama5d4_xplained_nandflash_defconfig
@@ -110,7 +110,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
index 3c2c9d6..6039b9e 100644
--- a/configs/sama5d4_xplained_spiflash_defconfig
+++ b/configs/sama5d4_xplained_spiflash_defconfig
@@ -112,7 +112,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d4ek_mmc_defconfig b/configs/sama5d4ek_mmc_defconfig
index 23336c5..3fb3afe 100644
--- a/configs/sama5d4ek_mmc_defconfig
+++ b/configs/sama5d4ek_mmc_defconfig
@@ -104,7 +104,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d4ek_nandflash_defconfig b/configs/sama5d4ek_nandflash_defconfig
index 0b4a2c6..0410c12 100644
--- a/configs/sama5d4ek_nandflash_defconfig
+++ b/configs/sama5d4ek_nandflash_defconfig
@@ -108,7 +108,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sama5d4ek_spiflash_defconfig b/configs/sama5d4ek_spiflash_defconfig
index cca6c47..8ff511e 100644
--- a/configs/sama5d4ek_spiflash_defconfig
+++ b/configs/sama5d4ek_spiflash_defconfig
@@ -107,7 +107,7 @@
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_ATMEL_HLCD=y
diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig
index e28f1e8..1423a2b 100644
--- a/configs/sandbox64_defconfig
+++ b/configs/sandbox64_defconfig
@@ -228,7 +228,7 @@
 CONFIG_USB=y
 CONFIG_USB_EMUL=y
 CONFIG_USB_KEYBOARD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_CONSOLE_ROTATION=y
 CONFIG_CONSOLE_TRUETYPE=y
 CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index 34e9067..42f6e27 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -294,10 +294,11 @@
 CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_COPY=y
 CONFIG_CONSOLE_ROTATION=y
 CONFIG_CONSOLE_TRUETYPE=y
+CONFIG_CONSOLE_TRUETYPE_MAX_METRICS=10
 CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
 CONFIG_I2C_EDID=y
 CONFIG_VIDEO_SANDBOX_SDL=y
diff --git a/configs/sandbox_flattree_defconfig b/configs/sandbox_flattree_defconfig
index 9d8da25..e18f9a0 100644
--- a/configs/sandbox_flattree_defconfig
+++ b/configs/sandbox_flattree_defconfig
@@ -194,7 +194,7 @@
 CONFIG_USB=y
 CONFIG_USB_EMUL=y
 CONFIG_USB_KEYBOARD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_CONSOLE_ROTATION=y
 CONFIG_CONSOLE_TRUETYPE=y
 CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
diff --git a/configs/sandbox_noinst_defconfig b/configs/sandbox_noinst_defconfig
index 8e69f08..ef3e289 100644
--- a/configs/sandbox_noinst_defconfig
+++ b/configs/sandbox_noinst_defconfig
@@ -221,7 +221,7 @@
 CONFIG_USB=y
 CONFIG_USB_EMUL=y
 CONFIG_USB_KEYBOARD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_CONSOLE_ROTATION=y
 CONFIG_CONSOLE_TRUETYPE=y
 CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
diff --git a/configs/sandbox_spl_defconfig b/configs/sandbox_spl_defconfig
index af5092b..3dc041e 100644
--- a/configs/sandbox_spl_defconfig
+++ b/configs/sandbox_spl_defconfig
@@ -224,7 +224,7 @@
 CONFIG_USB=y
 CONFIG_USB_EMUL=y
 CONFIG_USB_KEYBOARD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_CONSOLE_ROTATION=y
 CONFIG_CONSOLE_TRUETYPE=y
 CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
diff --git a/configs/sandbox_vpl_defconfig b/configs/sandbox_vpl_defconfig
index c31adbb..8128f6e 100644
--- a/configs/sandbox_vpl_defconfig
+++ b/configs/sandbox_vpl_defconfig
@@ -231,7 +231,7 @@
 CONFIG_USB=y
 CONFIG_USB_EMUL=y
 CONFIG_USB_KEYBOARD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_CONSOLE_ROTATION=y
 CONFIG_CONSOLE_TRUETYPE=y
 CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
diff --git a/configs/seaboard_defconfig b/configs/seaboard_defconfig
index e3895f5..2b96ec5 100644
--- a/configs/seaboard_defconfig
+++ b/configs/seaboard_defconfig
@@ -60,7 +60,7 @@
 CONFIG_USB_KEYBOARD=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_ASIX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_VIDEO_TEGRA20=y
 CONFIG_CONSOLE_SCROLL_LINES=10
diff --git a/configs/sei510_defconfig b/configs/sei510_defconfig
index b26e065..59036cc 100644
--- a/configs/sei510_defconfig
+++ b/configs/sei510_defconfig
@@ -80,7 +80,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/sei610_defconfig b/configs/sei610_defconfig
index 2302c9e..09d3cfb 100644
--- a/configs/sei610_defconfig
+++ b/configs/sei610_defconfig
@@ -80,7 +80,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/snow_defconfig b/configs/snow_defconfig
index 57cb6bd..9c2292a 100644
--- a/configs/snow_defconfig
+++ b/configs/snow_defconfig
@@ -90,7 +90,7 @@
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_ASIX88179=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_VIDCONSOLE_AS_LCD=y
 CONFIG_DISPLAY=y
@@ -100,7 +100,6 @@
 CONFIG_VIDEO_BRIDGE=y
 CONFIG_VIDEO_BRIDGE_PARADE_PS862X=y
 CONFIG_VIDEO_BRIDGE_NXP_PTN3460=y
-CONFIG_LCD=y
 CONFIG_TPM=y
 CONFIG_ERRNO_STR=y
 CONFIG_UNIT_TEST=y
diff --git a/configs/spring_defconfig b/configs/spring_defconfig
index ab9dd9d..0cc0556 100644
--- a/configs/spring_defconfig
+++ b/configs/spring_defconfig
@@ -91,7 +91,7 @@
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_ASIX88179=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_VIDCONSOLE_AS_LCD=y
 CONFIG_DISPLAY=y
@@ -100,6 +100,5 @@
 CONFIG_EXYNOS_FB=y
 CONFIG_VIDEO_BRIDGE=y
 CONFIG_VIDEO_BRIDGE_PARADE_PS862X=y
-CONFIG_LCD=y
 CONFIG_TPM=y
 CONFIG_ERRNO_STR=y
diff --git a/configs/starqltechn_defconfig b/configs/starqltechn_defconfig
index 4f84f5f..7955076 100644
--- a/configs/starqltechn_defconfig
+++ b/configs/starqltechn_defconfig
@@ -29,7 +29,7 @@
 CONFIG_PMIC_QCOM=y
 # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
 CONFIG_SPMI_MSM=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_VIDEO_SIMPLE=y
 CONFIG_VIDEO_DT_SIMPLEFB=y
diff --git a/configs/stemmy_defconfig b/configs/stemmy_defconfig
index f1d3ef5..90f2970 100644
--- a/configs/stemmy_defconfig
+++ b/configs/stemmy_defconfig
@@ -40,7 +40,7 @@
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_VENDOR_NUM=0x04e8
 CONFIG_USB_GADGET_PRODUCT_NUM=0x685d
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_VIDEO_MCDE_SIMPLE=y
 # CONFIG_EFI_LOADER is not set
diff --git a/configs/stm32746g-eval_defconfig b/configs/stm32746g-eval_defconfig
index 7200446..50d721f 100644
--- a/configs/stm32746g-eval_defconfig
+++ b/configs/stm32746g-eval_defconfig
@@ -53,7 +53,7 @@
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_STM32_QSPI=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_BACKLIGHT_GPIO=y
 CONFIG_VIDEO_STM32=y
 CONFIG_VIDEO_STM32_MAX_XRES=480
diff --git a/configs/stm32746g-eval_spl_defconfig b/configs/stm32746g-eval_spl_defconfig
index ff42952..498b478 100644
--- a/configs/stm32746g-eval_spl_defconfig
+++ b/configs/stm32746g-eval_spl_defconfig
@@ -79,7 +79,7 @@
 CONFIG_DM_SPI=y
 CONFIG_STM32_QSPI=y
 CONFIG_SPL_TIMER=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_BACKLIGHT_GPIO=y
 CONFIG_VIDEO_STM32=y
 CONFIG_VIDEO_STM32_MAX_XRES=480
diff --git a/configs/stm32f746-disco_defconfig b/configs/stm32f746-disco_defconfig
index a8edf11..dfbc766 100644
--- a/configs/stm32f746-disco_defconfig
+++ b/configs/stm32f746-disco_defconfig
@@ -53,7 +53,7 @@
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_STM32_QSPI=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_BACKLIGHT_GPIO=y
 CONFIG_VIDEO_STM32=y
 CONFIG_VIDEO_STM32_MAX_XRES=480
diff --git a/configs/stm32f746-disco_spl_defconfig b/configs/stm32f746-disco_spl_defconfig
index 0e358e8..e9b0f82 100644
--- a/configs/stm32f746-disco_spl_defconfig
+++ b/configs/stm32f746-disco_spl_defconfig
@@ -79,7 +79,7 @@
 CONFIG_DM_SPI=y
 CONFIG_STM32_QSPI=y
 CONFIG_SPL_TIMER=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_BACKLIGHT_GPIO=y
 CONFIG_VIDEO_STM32=y
 CONFIG_VIDEO_STM32_MAX_XRES=480
diff --git a/configs/stm32f769-disco_defconfig b/configs/stm32f769-disco_defconfig
index 3e7b5bd..122f2ad 100644
--- a/configs/stm32f769-disco_defconfig
+++ b/configs/stm32f769-disco_defconfig
@@ -53,7 +53,7 @@
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_STM32_QSPI=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_BACKLIGHT_GPIO=y
 CONFIG_VIDEO_LCD_ORISETECH_OTM8009A=y
 CONFIG_VIDEO_STM32=y
diff --git a/configs/stm32f769-disco_spl_defconfig b/configs/stm32f769-disco_spl_defconfig
index f0a1b66..ccec43d 100644
--- a/configs/stm32f769-disco_spl_defconfig
+++ b/configs/stm32f769-disco_spl_defconfig
@@ -79,7 +79,7 @@
 CONFIG_DM_SPI=y
 CONFIG_STM32_QSPI=y
 CONFIG_SPL_TIMER=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_BACKLIGHT_GPIO=y
 CONFIG_VIDEO_LCD_ORISETECH_OTM8009A=y
 CONFIG_VIDEO_STM32=y
diff --git a/configs/stm32mp15_basic_defconfig b/configs/stm32mp15_basic_defconfig
index 33680dc..86ebbef 100644
--- a/configs/stm32mp15_basic_defconfig
+++ b/configs/stm32mp15_basic_defconfig
@@ -169,7 +169,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0483
 CONFIG_USB_GADGET_PRODUCT_NUM=0x5720
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_BACKLIGHT_GPIO=y
 CONFIG_VIDEO_LCD_ORISETECH_OTM8009A=y
 CONFIG_VIDEO_LCD_RAYDIUM_RM68200=y
diff --git a/configs/stm32mp15_defconfig b/configs/stm32mp15_defconfig
index ec8fb37..caa79e6 100644
--- a/configs/stm32mp15_defconfig
+++ b/configs/stm32mp15_defconfig
@@ -145,7 +145,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0483
 CONFIG_USB_GADGET_PRODUCT_NUM=0x5720
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_BACKLIGHT_GPIO=y
 CONFIG_VIDEO_LCD_ORISETECH_OTM8009A=y
 CONFIG_VIDEO_LCD_RAYDIUM_RM68200=y
diff --git a/configs/stm32mp15_trusted_defconfig b/configs/stm32mp15_trusted_defconfig
index 9cfa9a2..3309c2e 100644
--- a/configs/stm32mp15_trusted_defconfig
+++ b/configs/stm32mp15_trusted_defconfig
@@ -145,7 +145,7 @@
 CONFIG_USB_GADGET_VENDOR_NUM=0x0483
 CONFIG_USB_GADGET_PRODUCT_NUM=0x5720
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_BACKLIGHT_GPIO=y
 CONFIG_VIDEO_LCD_ORISETECH_OTM8009A=y
 CONFIG_VIDEO_LCD_RAYDIUM_RM68200=y
diff --git a/configs/tbs2910_defconfig b/configs/tbs2910_defconfig
index 9a6751b..8c4cfe5 100644
--- a/configs/tbs2910_defconfig
+++ b/configs/tbs2910_defconfig
@@ -102,7 +102,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
 CONFIG_CI_UDC=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_LOGO is not set
 # CONFIG_BACKLIGHT is not set
 # CONFIG_CMD_VIDCONSOLE is not set
diff --git a/configs/tec_defconfig b/configs/tec_defconfig
index 99d3490..13bc7a9 100644
--- a/configs/tec_defconfig
+++ b/configs/tec_defconfig
@@ -54,6 +54,6 @@
 CONFIG_USB_EHCI_TEGRA=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_VIDEO_TEGRA20=y
diff --git a/configs/theadorable_debug_defconfig b/configs/theadorable_debug_defconfig
index 3d84bf9..d5f4f77 100644
--- a/configs/theadorable_debug_defconfig
+++ b/configs/theadorable_debug_defconfig
@@ -92,7 +92,7 @@
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
 CONFIG_VIDEO_MVEBU=y
diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig
index 27ff352..ccd9738 100644
--- a/configs/tinker-rk3288_defconfig
+++ b/configs/tinker-rk3288_defconfig
@@ -92,7 +92,7 @@
 CONFIG_USB_ETHER_SMSC95XX=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
 CONFIG_DISPLAY_ROCKCHIP_HDMI=y
diff --git a/configs/tinker-s-rk3288_defconfig b/configs/tinker-s-rk3288_defconfig
index 28ae79b..4ea36be 100644
--- a/configs/tinker-s-rk3288_defconfig
+++ b/configs/tinker-s-rk3288_defconfig
@@ -92,7 +92,7 @@
 CONFIG_USB_ETHER_SMSC95XX=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
diff --git a/configs/trats2_defconfig b/configs/trats2_defconfig
index c86c397..a441756 100644
--- a/configs/trats2_defconfig
+++ b/configs/trats2_defconfig
@@ -65,4 +65,5 @@
 CONFIG_USB_GADGET_DWC2_OTG_PHY=y
 CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_USB_FUNCTION_THOR=y
+CONFIG_VIDEO_LOGO_MAX_SIZE=0x4e236
 CONFIG_LIB_HW_RAND=y
diff --git a/configs/trats_defconfig b/configs/trats_defconfig
index 9bded4c..76e2c26 100644
--- a/configs/trats_defconfig
+++ b/configs/trats_defconfig
@@ -62,4 +62,5 @@
 CONFIG_USB_GADGET_DWC2_OTG_PHY=y
 CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_USB_FUNCTION_THOR=y
+CONFIG_VIDEO_LOGO_MAX_SIZE=0x4e236
 CONFIG_LIB_HW_RAND=y
diff --git a/configs/ventana_defconfig b/configs/ventana_defconfig
index aac5983..1230020 100644
--- a/configs/ventana_defconfig
+++ b/configs/ventana_defconfig
@@ -52,7 +52,7 @@
 CONFIG_USB_KEYBOARD=y
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_ASIX=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_VIDEO_TEGRA20=y
 CONFIG_CONSOLE_SCROLL_LINES=10
diff --git a/configs/vyasa-rk3288_defconfig b/configs/vyasa-rk3288_defconfig
index 4b5b1db..8c9d68b 100644
--- a/configs/vyasa-rk3288_defconfig
+++ b/configs/vyasa-rk3288_defconfig
@@ -93,7 +93,7 @@
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_FUNCTION_MASS_STORAGE=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
diff --git a/configs/wandboard_defconfig b/configs/wandboard_defconfig
index 6b49b40..cbf5a5d 100644
--- a/configs/wandboard_defconfig
+++ b/configs/wandboard_defconfig
@@ -75,7 +75,7 @@
 CONFIG_MXC_UART=y
 CONFIG_DM_THERMAL=y
 CONFIG_USB=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_LOGO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP32 is not set
diff --git a/configs/wetek-core2_defconfig b/configs/wetek-core2_defconfig
index a1322d6..8d273f9 100644
--- a/configs/wetek-core2_defconfig
+++ b/configs/wetek-core2_defconfig
@@ -62,7 +62,7 @@
 CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
 CONFIG_USB_GADGET_DWC2_OTG=y
 CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 # CONFIG_VIDEO_BPP8 is not set
 # CONFIG_VIDEO_BPP16 is not set
 CONFIG_SYS_WHITE_ON_BLACK=y
diff --git a/configs/xilinx_zynqmp_virt_defconfig b/configs/xilinx_zynqmp_virt_defconfig
index 1591f22..f203a0f 100644
--- a/configs/xilinx_zynqmp_virt_defconfig
+++ b/configs/xilinx_zynqmp_virt_defconfig
@@ -221,11 +221,10 @@
 CONFIG_USB_FUNCTION_THOR=y
 CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
-CONFIG_DM_VIDEO=y
+CONFIG_VIDEO=y
 CONFIG_VIDEO_COPY=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_SEPS525=y
-CONFIG_LCD=y
 CONFIG_SPLASH_SCREEN=y
 CONFIG_BMP_16BPP=y
 CONFIG_BMP_24BPP=y
diff --git a/doc/README.bus_vcxk b/doc/README.bus_vcxk
deleted file mode 100644
index aaa1565..0000000
--- a/doc/README.bus_vcxk
+++ /dev/null
@@ -1,67 +0,0 @@
-SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2008-2009
- * BuS Elektronik GmbH & Co. KG <www.bus-elektronik.de>
- * Jens Scharsig <esw@bus-elektronik.de>
- */
-
-U-Boot vcxk video controller driver
-======================================
-
-By defining CONFIG_VIDEO_VCXK this driver can be used with VC2K, VC4K and
-VC8K devices on following boards:
-
-board           | ARCH          | Vendor
------------------------------------------------------------------------
-EB+CPU5282-T1   | MCF5282       | BuS Elektronik GmbH & Co. KG
-EB+MCF-EVB123   | MCF5282       | BuS Elektronik GmbH & Co. KG
-EB+CPUx9K2      | AT91RM9200    | BuS Elektronik GmbH & Co. KG
-ZLSA            | AT91RM9200    | Ruf Telematik AG
-
-Driver configuration
---------------------
-
-The driver needs some defines to describe the target hardware:
-
-CONFIG_SYS_VCXK_BASE
-
-	base address of VCxK hardware memory
-
-CONFIG_SYS_VCXK_DEFAULT_LINEALIGN
-
-	defines the physical alignment of a pixel row
-
-CONFIG_SYS_VCXK_DOUBLEBUFFERED
-
-	some boards that use vcxk prevent read from framebuffer memory.
-	define this option to enable double buffering (needs 16KiB RAM)
-
-CONFIG_SYS_VCXK_<xxxx>_PIN
-
-	defines the number of the I/O line PIN in the port
-	valid values for <xxxx> are:
-
-		ACKNOWLEDGE
-			describes the acknowledge line from vcxk hardware
-
-		ENABLE
-			describes the enable line to vcxk hardware
-
-		INVERT
-			describes the invert line to vcxk hardware
-
-		RESET
-			describes the reset line to vcxk hardware
-
-		REQUEST
-			describes the request line to vcxk hardware
-
-CONFIG_SYS_VCXK_<xxxx>_PORT
-
-	defines the I/O port which is connected with the line
-	for valid values for <xxxx> see CONFIG_SYS_VCXK_<xxxx>_PIN
-
-CONFIG_SYS_VCXK_<xxxx>_DDR
-
-	defines the register which configures the direction
-	for valid values for <xxxx> see CONFIG_SYS_VCXK_<xxxx>_PIN
diff --git a/doc/develop/driver-model/migration.rst b/doc/develop/driver-model/migration.rst
index 645c45b..43665de 100644
--- a/doc/develop/driver-model/migration.rst
+++ b/doc/develop/driver-model/migration.rst
@@ -80,7 +80,7 @@
 Deadline: 2019.07
 
 The video subsystem has supported driver model since early 2016. Maintainers
-should submit patches switching over to using CONFIG_DM_VIDEO and other base
+should submit patches switching over to using CONFIG_VIDEO and other base
 driver model options in time for inclusion in the 2019.07 release.
 
 CONFIG_DM_ETH
diff --git a/doc/usage/cmd/font.rst b/doc/usage/cmd/font.rst
new file mode 100644
index 0000000..6fb0823
--- /dev/null
+++ b/doc/usage/cmd/font.rst
@@ -0,0 +1,52 @@
+.. SPDX-License-Identifier: GPL-2.0+:
+
+font command
+============
+
+Synopis
+-------
+
+::
+
+    font list
+    font select <name> [<size>]
+    font size <size>
+
+
+Description
+-----------
+
+The *font* command allows selection of the font to use on the video console.
+This is available when the Truetype console is in use. This is the case when
+`CONFIG_CONSOLE_TRUETYPE` is enabled.
+
+
+font list
+~~~~~~~~~
+
+This lists the available fonts, using the name of the font file in the build.
+
+
+font select
+~~~~~~~~~~~
+
+This selects a new font and optionally changes the size.
+
+
+font size
+~~~~~~~~~
+
+This changes the font size only.
+
+
+Examples
+--------
+
+::
+
+    => font list
+    nimbus_sans_l_regular
+    cantoraone_regular
+    => font size 40
+    => font select cantoraone_regular 20
+    =>
diff --git a/doc/usage/environment.rst b/doc/usage/environment.rst
index 7906ace..15897f6 100644
--- a/doc/usage/environment.rst
+++ b/doc/usage/environment.rst
@@ -63,8 +63,8 @@
 Example::
 
     stdout=serial
-    #ifdef CONFIG_LCD
-    stdout+=,lcd
+    #ifdef CONFIG_VIDEO
+    stdout+=,vidconsole
     #endif
     bootcmd=
         /* U-Boot script for booting */
diff --git a/doc/usage/index.rst b/doc/usage/index.rst
index 9022101..c601d35 100644
--- a/doc/usage/index.rst
+++ b/doc/usage/index.rst
@@ -48,6 +48,7 @@
    cmd/fatinfo
    cmd/fatload
    cmd/fdt
+   cmd/font
    cmd/for
    cmd/gpio
    cmd/load
diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
index cfcd6fd..dd1ad91 100644
--- a/drivers/pci/Makefile
+++ b/drivers/pci/Makefile
@@ -3,7 +3,7 @@
 # (C) Copyright 2000-2007
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 
-obj-$(CONFIG_DM_VIDEO) += pci_rom.o
+obj-$(CONFIG_VIDEO) += pci_rom.o
 obj-$(CONFIG_PCI) += pci-uclass.o pci_auto.o
 obj-$(CONFIG_DM_PCI_COMPAT) += pci_compat.o
 obj-$(CONFIG_PCI_SANDBOX) += pci_sandbox.o
diff --git a/drivers/pci/pci_rom.c b/drivers/pci/pci_rom.c
index 27a24da..47b6e6e 100644
--- a/drivers/pci/pci_rom.c
+++ b/drivers/pci/pci_rom.c
@@ -325,7 +325,6 @@
 	return ret;
 }
 
-#ifdef CONFIG_DM_VIDEO
 int vesa_setup_video_priv(struct vesa_mode_info *vesa,
 			  struct video_priv *uc_priv,
 			  struct video_uc_plat *plat)
@@ -398,4 +397,3 @@
 
 	return 0;
 }
-#endif
diff --git a/drivers/serial/sandbox.c b/drivers/serial/sandbox.c
index 13b5492..f400381 100644
--- a/drivers/serial/sandbox.c
+++ b/drivers/serial/sandbox.c
@@ -12,7 +12,6 @@
 #include <common.h>
 #include <console.h>
 #include <dm.h>
-#include <lcd.h>
 #include <os.h>
 #include <serial.h>
 #include <video.h>
@@ -140,7 +139,7 @@
 		return 0;
 
 	os_usleep(100);
-	if (IS_ENABLED(CONFIG_DM_VIDEO) && !IS_ENABLED(CONFIG_SPL_BUILD))
+	if (IS_ENABLED(CONFIG_VIDEO) && !IS_ENABLED(CONFIG_SPL_BUILD))
 		video_sync_all();
 	avail = membuff_putraw(&priv->buf, 100, false, &data);
 	if (!avail)
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 4ecc158..c841b99 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -4,7 +4,7 @@
 
 menu "Graphics support"
 
-config DM_VIDEO
+config VIDEO
 	bool "Enable driver model support for LCD/video"
 	depends on DM
 	help
@@ -14,9 +14,10 @@
 	  option compiles in the video uclass and routes all LCD/video access
 	  through this.
 
+if VIDEO
+
 config VIDEO_LOGO
 	bool "Show the U-Boot logo on the display"
-	depends on DM_VIDEO
 	default y if !SPLASH_SCREEN
 	select VIDEO_BMP_RLE8
 	help
@@ -27,7 +28,6 @@
 
 config BACKLIGHT
 	bool "Enable panel backlight uclass support"
-	depends on DM_VIDEO
 	default y
 	help
 	  This provides backlight uclass driver that enables basic panel
@@ -35,7 +35,6 @@
 
 config VIDEO_PCI_DEFAULT_FB_SIZE
 	hex "Default framebuffer size to use if no drivers request it"
-	depends on DM_VIDEO
 	default 0x1000000 if X86 && PCI
 	default 0 if !(X86 && PCI)
 	help
@@ -54,7 +53,6 @@
 
 config VIDEO_COPY
 	bool "Enable copying the frame buffer to a hardware copy"
-	depends on DM_VIDEO
 	help
 	  On some machines (e.g. x86), reading from the frame buffer is very
 	  slow because it is uncached. To improve performance, this feature
@@ -85,17 +83,8 @@
 	  it understands the standard device tree
 	  (leds/backlight/gpio-backlight.txt)
 
-config CMD_VIDCONSOLE
-	bool "Enable vidconsole commands lcdputs and setcurs"
-	depends on DM_VIDEO
-	default y
-	help
-	  Enabling this will provide 'setcurs' and 'lcdputs' commands which
-	  support cursor positioning and drawing strings on video framebuffer.
-
 config VIDEO_BPP8
 	bool "Support 8-bit-per-pixel displays"
-	depends on DM_VIDEO
 	default y
 	help
 	  Support drawing text and bitmaps onto a 8-bit-per-pixel display.
@@ -105,7 +94,6 @@
 
 config VIDEO_BPP16
 	bool "Support 16-bit-per-pixel displays"
-	depends on DM_VIDEO
 	default y
 	help
 	  Support drawing text and bitmaps onto a 16-bit-per-pixel display.
@@ -115,7 +103,6 @@
 
 config VIDEO_BPP32
 	bool "Support 32-bit-per-pixel displays"
-	depends on DM_VIDEO
 	default y
 	help
 	  Support drawing text and bitmaps onto a 32-bit-per-pixel display.
@@ -125,7 +112,6 @@
 
 config VIDEO_ANSI
 	bool "Support ANSI escape sequences in video console"
-	depends on DM_VIDEO
 	default y
 	help
 	  Enable ANSI escape sequence decoding for a more fully functional
@@ -133,7 +119,6 @@
 
 config VIDEO_MIPI_DSI
 	bool "Support MIPI DSI interface"
-	depends on DM_VIDEO
 	help
 	  Support MIPI DSI interface for driving a MIPI compatible device.
 	  The MIPI Display Serial Interface (MIPI DSI) defines a high-speed
@@ -141,8 +126,7 @@
 
 config CONSOLE_NORMAL
 	bool "Support a simple text console"
-	depends on DM_VIDEO
-	default y if DM_VIDEO
+	default y
 	help
 	  Support drawing text on the frame buffer console so that it can be
 	  used as a console. Rotation is not supported by this driver (see
@@ -151,7 +135,6 @@
 
 config CONSOLE_ROTATION
 	bool "Support rotated displays"
-	depends on DM_VIDEO
 	help
 	  Sometimes, for example if the display is mounted in portrait
 	  mode or even if it's mounted landscape but rotated by 180degree,
@@ -164,23 +147,12 @@
 
 config CONSOLE_TRUETYPE
 	bool "Support a console that uses TrueType fonts"
-	depends on DM_VIDEO
 	help
 	  TrueTrype fonts can provide outline-drawing capability rather than
 	  needing to provide a bitmap for each font and size that is needed.
 	  With this option you can adjust the text size and use a variety of
 	  fonts. Note that this is noticeably slower than with normal console.
 
-config DM_PANEL_HX8238D
-	bool "Enable Himax HX-8238D LCD driver"
-	depends on DM_VIDEO
-	help
-	  Support for HX-8238D LCD Panel
-	  The  HX8238-D is a single chip controller and driver LSI that
-	  integrates the power circuit.
-	  It can drive a maximum 960x240 dot graphics on a-TFT panel
-	  displays in 16M colors with dithering.
-
 config CONSOLE_TRUETYPE_SIZE
 	int "TrueType font size"
 	depends on CONSOLE_TRUETYPE
@@ -194,6 +166,21 @@
 	  method to select the display's physical size, which would allow
 	  U-Boot to calculate the correct font size.
 
+config CONSOLE_TRUETYPE_MAX_METRICS
+	int "TrueType maximum number of font / size combinations"
+	depends on CONSOLE_TRUETYPE
+	default 10 if EXPO
+	default 1
+	help
+	  This sets the number of font / size combinations which can be used by
+	  the console. For simple console use a single font is enough. When
+	  boot menus are in use, this may need to be increased.
+
+	  Note that a separate entry is needed for each font size, even if the
+	  font itself is the same. This is because the entry caches various
+	  font metrics which are expensive to regenerate each time the font
+	  size changes.
+
 config SYS_WHITE_ON_BLACK
 	bool "Display console as white on a black background"
 	default y if ARCH_AT91 || ARCH_EXYNOS || ARCH_ROCKCHIP || ARCH_TEGRA || X86 || ARCH_SUNXI
@@ -213,7 +200,6 @@
 
 config PANEL
 	bool "Enable panel uclass support"
-	depends on DM_VIDEO
 	default y
 	help
 	  This provides panel uclass driver that enables basic panel support.
@@ -226,11 +212,20 @@
 	  This turns on a simple panel driver that enables a compatible
 	  video panel.
 
+config PANEL_HX8238D
+	bool "Enable Himax HX-8238D LCD driver"
+	depends on PANEL
+	help
+	  Support for HX-8238D LCD Panel
+	  The  HX8238-D is a single chip controller and driver LSI that
+	  integrates the power circuit.
+	  It can drive a maximum 960x240 dot graphics on a-TFT panel
+	  displays in 16M colors with dithering.
+
 source "drivers/video/fonts/Kconfig"
 
 config VIDCONSOLE_AS_LCD
 	bool "Use 'vidconsole' when CONFIG_VIDCONSOLE_AS_NAME string is seen in stdout"
-	depends on DM_VIDEO
 	help
 	  This is a work-around for boards which have 'lcd' or 'vga' in their
 	  stdout environment variable, but have moved to use driver model for
@@ -423,7 +418,7 @@
 
 config ATMEL_LCD
 	bool "Atmel LCD panel support"
-	depends on LCD && ARCH_AT91
+	depends on ARCH_AT91
 
 config ATMEL_LCD_BGR555
 	bool "Display in BGR555 mode"
@@ -440,7 +435,6 @@
 
 config VIDEO_LCD_ORISETECH_OTM8009A
 	bool "OTM8009A DSI LCD panel support"
-	depends on DM_VIDEO
 	select VIDEO_MIPI_DSI
 	help
 	Say Y here if you want to enable support for Orise Technology
@@ -448,7 +442,6 @@
 
 config VIDEO_LCD_RAYDIUM_RM68200
 	bool "RM68200 DSI LCD panel support"
-	depends on DM_VIDEO
 	select VIDEO_MIPI_DSI
 	help
 	Say Y here if you want to enable support for Raydium RM68200
@@ -484,7 +477,6 @@
 
 config VIDEO_LCD_TDO_TL070WSH30
 	bool "TDO TL070WSH30 DSI LCD panel support"
-	depends on DM_VIDEO
 	select VIDEO_MIPI_DSI
 	help
 	Say Y here if you want to enable support for TDO TL070WSH30
@@ -581,8 +573,6 @@
 	help
 	   HLCDC supports video output to an attached LCD panel.
 
-source "drivers/video/ti/Kconfig"
-
 source "drivers/video/exynos/Kconfig"
 
 config LOGICORE_DP_TX
@@ -624,7 +614,7 @@
 
 config VIDEO_ARM_MALIDP
 	bool "Enable Arm Mali Display Processor support"
-	depends on DM_VIDEO && OF_CONTROL
+	depends on OF_CONTROL
 	select VEXPRESS_CLK
 	help
 	  This enables support for Arm Ltd Mali Display Processors from
@@ -652,7 +642,6 @@
 
 config VIDEO_TEGRA124
 	bool "Enable video support on Tegra124"
-	depends on DM_VIDEO
 	help
 	   Tegra124 supports many video output options including eDP and
 	   HDMI. At present only eDP is supported by U-Boot. This option
@@ -665,7 +654,6 @@
 
 config VIDEO_MXS
 	bool "Enable video support on i.MX28/i.MX6UL/i.MX7 SoCs"
-	depends on DM_VIDEO
 	help
 	  Enable framebuffer driver for i.MX28/i.MX6UL/i.MX7 processors
 
@@ -679,14 +667,14 @@
 
 config VIDEO_SEPS525
 	bool "Enable video support for Seps525"
-	depends on DM_VIDEO && DM_GPIO
+	depends on DM_GPIO
 	help
 	  Enable support for the Syncoam PM-OLED display driver (RGB 160x128).
 	  Currently driver is supporting only SPI interface.
 
 config VIDEO_ZYNQMP_DPSUB
 	bool "Enable video support for ZynqMP Display Port"
-	depends on DM_VIDEO && ZYNQMP_POWER_DOMAIN
+	depends on ZYNQMP_POWER_DOMAIN
 	help
 	  Enable support for Xilinx ZynqMP Display Port. Currently this file
 	  is used as placeholder for driver. The main reason is to record
@@ -694,18 +682,8 @@
 
 source "drivers/video/nexell/Kconfig"
 
-config VIDEO
-	bool "Enable legacy video support"
-	depends on !DM_VIDEO
-	help
-	  Define this for video support, without using driver model. Some
-	  drivers use this because they are not yet converted to driver
-	  model. Video drivers typically provide a colour text console and
-	  cursor.
-
 config CONSOLE_SCROLL_LINES
 	int "Number of lines to scroll the console by"
-	depends on DM_VIDEO || LCD
 	default 1
 	help
 	  When the console need to be scrolled, this is the number of
@@ -713,26 +691,6 @@
 	  console jump but can help speed up operation when scrolling
 	  is slow.
 
-config LCD
-	bool "Enable legacy LCD support"
-	help
-	  Define this to enable LCD support (for output to LCD display).
-	  You will also need to select an LCD driver using an additional
-	  CONFIG option. See the README for details. Drives which have been
-	  converted to driver model will instead used CONFIG_DM_VIDEO.
-
-config LCD_INFO
-	bool "Show LCD info on-screen"
-	depends on LCD
-
-config LCD_LOGO
-	bool "Show a logo on screen"
-	depends on LCD
-
-config LCD_INFO_BELOW_LOGO
-	bool "Show LCD info below the on-screen logo"
-	depends on LCD_INFO && LCD_LOGO
-
 config VIDEO_DW_HDMI
 	bool
 	help
@@ -783,7 +741,6 @@
 
 config VIDEO_MCDE_SIMPLE
 	bool "Simple driver for ST-Ericsson MCDE with preconfigured display"
-	depends on DM_VIDEO
 	help
 	  Enables a simple display driver for ST-Ericsson MCDE
 	  (Multichannel Display Engine), which reads the configuration from
@@ -831,23 +788,10 @@
 	  image data before it is processed and sent to the frame buffer by
 	  U-Boot. Define your own version to use this feature.
 
-config SPLASHIMAGE_GUARD
-	bool "Support unaligned BMP images"
-	depends on SPLASH_SCREEN
-	help
-	  If this option is set, then U-Boot will prevent the environment
-	  variable "splashimage" from being set to a problematic address
-	  (see doc/README.displaying-bmps).
-
-	  This option is useful for targets where, due to alignment
-	  restrictions, an improperly aligned BMP image will cause a data
-	  abort. If you think you will not have problems with unaligned
-	  accesses (for example because your toolchain prevents them)
-	  there is no need to set this option.
+if SPLASH_SCREEN
 
 config SPLASH_SCREEN_ALIGN
 	bool "Allow positioning the splash image anywhere on the display"
-	depends on SPLASH_SCREEN || CMD_BMP
 	help
 	  If this option is set the splash image can be freely positioned
 	  on the screen. Environment variable "splashpos" specifies the
@@ -867,9 +811,17 @@
 	  	=> vertically centered image
 	  	   at x = dspWidth - bmpWidth - 9
 
+config HIDE_LOGO_VERSION
+	bool "Hide the version information on the splash screen"
+	help
+	  Normally the U-Boot version string is shown on the display when the
+	  splash screen is enabled. This information is not otherwise visible
+	  since video starts up after U-Boot has displayed the initial banner.
+
+	  Enable this option to hide this information.
+
 config SPLASH_SOURCE
 	bool "Control the source of the splash image"
-	depends on SPLASH_SCREEN
 	help
 	  Use the splash_source.c library. This library provides facilities to
 	  declare board specific splash image locations, routines for loading
@@ -900,6 +852,8 @@
 	  In case the environment variable "splashfile" is not defined the
 	  default name 'splash.bmp' will be used.
 
+endif # SPLASH_SCREEN
+
 config VIDEO_BMP_GZIP
 	bool "Gzip compressed BMP image support"
 	depends on CMD_BMP || SPLASH_SCREEN
@@ -908,35 +862,35 @@
 	  images, gzipped BMP images can be displayed via the
 	  splashscreen support or the bmp command.
 
+config VIDEO_LOGO_MAX_SIZE
+	hex "Maximum size of the bitmap logo in bytes"
+	default 0x100000
+	help
+	  Sets the maximum uncompressed size of the logo. This is needed when
+	  decompressing a BMP file using the gzip algorithm, since it cannot
+	  read the size from the bitmap header.
+
 config VIDEO_BMP_RLE8
 	bool "Run length encoded BMP image (RLE8) support"
-	depends on DM_VIDEO
 	help
 	  If this option is set, the 8-bit RLE compressed BMP images
 	  is supported.
 
 config BMP_16BPP
 	bool "16-bit-per-pixel BMP image support"
-	depends on DM_VIDEO || LCD
 	help
 	  Support display of bitmaps file with 16-bit-per-pixel
 
 config BMP_24BPP
 	bool "24-bit-per-pixel BMP image support"
-	depends on DM_VIDEO || LCD
 	help
 	  Support display of bitmaps file with 24-bit-per-pixel.
 
 config BMP_32BPP
 	bool "32-bit-per-pixel BMP image support"
-	depends on DM_VIDEO || LCD
 	help
 	  Support display of bitmaps file with 32-bit-per-pixel.
 
-config VIDEO_VCXK
-	bool "Enable VCXK video controller driver support"
-	help
-	  This enables VCXK driver which can be used with VC2K, VC4K
-	  and VC8K devices on various boards from BuS Elektronik GmbH.
+endif # VIDEO
 
 endmenu
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 7019b26..40a871d 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -12,10 +12,10 @@
 obj-$(CONFIG_CONSOLE_TRUETYPE) += console_truetype.o fonts/
 obj-$(CONFIG_DISPLAY) += display-uclass.o
 obj-$(CONFIG_VIDEO_MIPI_DSI) += dsi-host-uclass.o
-obj-$(CONFIG_DM_VIDEO) += video-uclass.o vidconsole-uclass.o
-obj-$(CONFIG_DM_VIDEO) += video_bmp.o
+obj-$(CONFIG_VIDEO) += video-uclass.o vidconsole-uclass.o
+obj-$(CONFIG_VIDEO) += video_bmp.o
 obj-$(CONFIG_PANEL) += panel-uclass.o
-obj-$(CONFIG_DM_PANEL_HX8238D) += hx8238d.o
+obj-$(CONFIG_PANEL_HX8238D) += hx8238d.o
 obj-$(CONFIG_SIMPLE_PANEL) += simple_panel.o
 
 obj-$(CONFIG_VIDEO_LOGO) += u_boot_logo.o
@@ -26,12 +26,10 @@
 obj-${CONFIG_VIDEO_ROCKCHIP} += rockchip/
 obj-${CONFIG_VIDEO_STM32} += stm32/
 obj-${CONFIG_VIDEO_TEGRA124} += tegra124/
-obj-y += ti/
 
 obj-$(CONFIG_ATMEL_HLCD) += atmel_hlcdfb.o
 obj-$(CONFIG_ATMEL_LCD) += atmel_lcdfb.o
 obj-$(CONFIG_IHS_VIDEO_OUT) += ihs_video_out.o
-obj-$(CONFIG_LD9040) += ld9040.o
 obj-$(CONFIG_LG4573) += lg4573.o
 obj-$(CONFIG_LOGICORE_DP_TX) += logicore_dp_tx.o
 obj-$(CONFIG_NXP_TDA19988) += tda19988.o
@@ -64,7 +62,6 @@
 obj-$(CONFIG_VIDEO_SANDBOX_SDL) += sandbox_sdl.o
 obj-$(CONFIG_VIDEO_SIMPLE) += simplefb.o
 obj-$(CONFIG_VIDEO_TEGRA20) += tegra.o
-obj-$(CONFIG_VIDEO_VCXK) += bus_vcxk.o
 obj-$(CONFIG_VIDEO_VESA) += vesa.o
 obj-$(CONFIG_VIDEO_SEPS525) += seps525.o
 obj-$(CONFIG_VIDEO_ZYNQMP_DPSUB) += zynqmp_dpsub.o
diff --git a/drivers/video/atmel_hlcdfb.c b/drivers/video/atmel_hlcdfb.c
index c7b59b7..2bf19a6 100644
--- a/drivers/video/atmel_hlcdfb.c
+++ b/drivers/video/atmel_hlcdfb.c
@@ -17,238 +17,13 @@
 #include <clk.h>
 #include <dm.h>
 #include <fdtdec.h>
-#include <lcd.h>
 #include <video.h>
 #include <wait_bit.h>
 #include <atmel_hlcdc.h>
 #include <linux/bug.h>
 
-#if defined(CONFIG_LCD_LOGO)
-#include <bmp_logo.h>
-#endif
-
 DECLARE_GLOBAL_DATA_PTR;
 
-#ifndef CONFIG_DM_VIDEO
-
-/* configurable parameters */
-#define ATMEL_LCDC_CVAL_DEFAULT		0xc8
-#define ATMEL_LCDC_DMA_BURST_LEN	8
-#ifndef ATMEL_LCDC_GUARD_TIME
-#define ATMEL_LCDC_GUARD_TIME		1
-#endif
-
-#define ATMEL_LCDC_FIFO_SIZE		512
-
-/*
- * the CLUT register map as following
- * RCLUT(24 ~ 16), GCLUT(15 ~ 8), BCLUT(7 ~ 0)
- */
-void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue)
-{
-	writel(panel_info.mmio + ATMEL_LCDC_LUT(regno),
-	       ((red << LCDC_BASECLUT_RCLUT_Pos) & LCDC_BASECLUT_RCLUT_Msk)
-	       | ((green << LCDC_BASECLUT_GCLUT_Pos) & LCDC_BASECLUT_GCLUT_Msk)
-	       | ((blue << LCDC_BASECLUT_BCLUT_Pos) & LCDC_BASECLUT_BCLUT_Msk));
-}
-
-ushort *configuration_get_cmap(void)
-{
-#if defined(CONFIG_LCD_LOGO)
-	return bmp_logo_palette;
-#else
-	return NULL;
-#endif
-}
-
-void lcd_ctrl_init(void *lcdbase)
-{
-	unsigned long value;
-	struct lcd_dma_desc *desc;
-	struct atmel_hlcd_regs *regs;
-	int ret;
-
-	if (!has_lcdc())
-		return;     /* No lcdc */
-
-	regs = (struct atmel_hlcd_regs *)panel_info.mmio;
-
-	/* Disable DISP signal */
-	writel(LCDC_LCDDIS_DISPDIS, &regs->lcdc_lcddis);
-	ret = wait_for_bit_le32(&regs->lcdc_lcdsr, LCDC_LCDSR_DISPSTS,
-				false, 1000, false);
-	if (ret)
-		printf("%s: %d: Timeout!\n", __func__, __LINE__);
-	/* Disable synchronization */
-	writel(LCDC_LCDDIS_SYNCDIS, &regs->lcdc_lcddis);
-	ret = wait_for_bit_le32(&regs->lcdc_lcdsr, LCDC_LCDSR_LCDSTS,
-				false, 1000, false);
-	if (ret)
-		printf("%s: %d: Timeout!\n", __func__, __LINE__);
-	/* Disable pixel clock */
-	writel(LCDC_LCDDIS_CLKDIS, &regs->lcdc_lcddis);
-	ret = wait_for_bit_le32(&regs->lcdc_lcdsr, LCDC_LCDSR_CLKSTS,
-				false, 1000, false);
-	if (ret)
-		printf("%s: %d: Timeout!\n", __func__, __LINE__);
-	/* Disable PWM */
-	writel(LCDC_LCDDIS_PWMDIS, &regs->lcdc_lcddis);
-	ret = wait_for_bit_le32(&regs->lcdc_lcdsr, LCDC_LCDSR_PWMSTS,
-				false, 1000, false);
-	if (ret)
-		printf("%s: %d: Timeout!\n", __func__, __LINE__);
-
-	/* Set pixel clock */
-	value = get_lcdc_clk_rate(0) / panel_info.vl_clk;
-	if (get_lcdc_clk_rate(0) % panel_info.vl_clk)
-		value++;
-
-	if (value < 1) {
-		/* Using system clock as pixel clock */
-		writel(LCDC_LCDCFG0_CLKDIV(0)
-			| LCDC_LCDCFG0_CGDISHCR
-			| LCDC_LCDCFG0_CGDISHEO
-			| LCDC_LCDCFG0_CGDISOVR1
-			| LCDC_LCDCFG0_CGDISBASE
-			| panel_info.vl_clk_pol
-			| LCDC_LCDCFG0_CLKSEL,
-			&regs->lcdc_lcdcfg0);
-
-	} else {
-		writel(LCDC_LCDCFG0_CLKDIV(value - 2)
-			| LCDC_LCDCFG0_CGDISHCR
-			| LCDC_LCDCFG0_CGDISHEO
-			| LCDC_LCDCFG0_CGDISOVR1
-			| LCDC_LCDCFG0_CGDISBASE
-			| panel_info.vl_clk_pol,
-			&regs->lcdc_lcdcfg0);
-	}
-
-	/* Initialize control register 5 */
-	value = 0;
-
-	value |= panel_info.vl_sync;
-
-#ifndef LCD_OUTPUT_BPP
-	/* Output is 24bpp */
-	value |= LCDC_LCDCFG5_MODE_OUTPUT_24BPP;
-#else
-	switch (LCD_OUTPUT_BPP) {
-	case 12:
-		value |= LCDC_LCDCFG5_MODE_OUTPUT_12BPP;
-		break;
-	case 16:
-		value |= LCDC_LCDCFG5_MODE_OUTPUT_16BPP;
-		break;
-	case 18:
-		value |= LCDC_LCDCFG5_MODE_OUTPUT_18BPP;
-		break;
-	case 24:
-		value |= LCDC_LCDCFG5_MODE_OUTPUT_24BPP;
-		break;
-	default:
-		BUG();
-		break;
-	}
-#endif
-
-	value |= LCDC_LCDCFG5_GUARDTIME(ATMEL_LCDC_GUARD_TIME);
-	value |= (LCDC_LCDCFG5_DISPDLY | LCDC_LCDCFG5_VSPDLYS);
-	writel(value, &regs->lcdc_lcdcfg5);
-
-	/* Vertical & Horizontal Timing */
-	value = LCDC_LCDCFG1_VSPW(panel_info.vl_vsync_len - 1);
-	value |= LCDC_LCDCFG1_HSPW(panel_info.vl_hsync_len - 1);
-	writel(value, &regs->lcdc_lcdcfg1);
-
-	value = LCDC_LCDCFG2_VBPW(panel_info.vl_upper_margin);
-	value |= LCDC_LCDCFG2_VFPW(panel_info.vl_lower_margin - 1);
-	writel(value, &regs->lcdc_lcdcfg2);
-
-	value = LCDC_LCDCFG3_HBPW(panel_info.vl_left_margin - 1);
-	value |= LCDC_LCDCFG3_HFPW(panel_info.vl_right_margin - 1);
-	writel(value, &regs->lcdc_lcdcfg3);
-
-	/* Display size */
-	value = LCDC_LCDCFG4_RPF(panel_info.vl_row - 1);
-	value |= LCDC_LCDCFG4_PPL(panel_info.vl_col - 1);
-	writel(value, &regs->lcdc_lcdcfg4);
-
-	writel(LCDC_BASECFG0_BLEN_AHB_INCR4 | LCDC_BASECFG0_DLBO,
-	       &regs->lcdc_basecfg0);
-
-	switch (NBITS(panel_info.vl_bpix)) {
-	case 16:
-		writel(LCDC_BASECFG1_RGBMODE_16BPP_RGB_565,
-		       &regs->lcdc_basecfg1);
-		break;
-	case 32:
-		writel(LCDC_BASECFG1_RGBMODE_24BPP_RGB_888,
-		       &regs->lcdc_basecfg1);
-		break;
-	default:
-		BUG();
-		break;
-	}
-
-	writel(LCDC_BASECFG2_XSTRIDE(0), &regs->lcdc_basecfg2);
-	writel(0, &regs->lcdc_basecfg3);
-	writel(LCDC_BASECFG4_DMA, &regs->lcdc_basecfg4);
-
-	/* Disable all interrupts */
-	writel(~0UL, &regs->lcdc_lcdidr);
-	writel(~0UL, &regs->lcdc_baseidr);
-
-	/* Setup the DMA descriptor, this descriptor will loop to itself */
-	desc = (struct lcd_dma_desc *)(lcdbase - 16);
-
-	desc->address = (u32)lcdbase;
-	/* Disable DMA transfer interrupt & descriptor loaded interrupt. */
-	desc->control = LCDC_BASECTRL_ADDIEN | LCDC_BASECTRL_DSCRIEN
-			| LCDC_BASECTRL_DMAIEN | LCDC_BASECTRL_DFETCH;
-	desc->next = (u32)desc;
-
-	/* Flush the DMA descriptor if we enabled dcache */
-	flush_dcache_range((u32)desc, (u32)desc + sizeof(*desc));
-
-	writel(desc->address, &regs->lcdc_baseaddr);
-	writel(desc->control, &regs->lcdc_basectrl);
-	writel(desc->next, &regs->lcdc_basenext);
-	writel(LCDC_BASECHER_CHEN | LCDC_BASECHER_UPDATEEN,
-	       &regs->lcdc_basecher);
-
-	/* Enable LCD */
-	value = readl(&regs->lcdc_lcden);
-	writel(value | LCDC_LCDEN_CLKEN, &regs->lcdc_lcden);
-	ret = wait_for_bit_le32(&regs->lcdc_lcdsr, LCDC_LCDSR_CLKSTS,
-				true, 1000, false);
-	if (ret)
-		printf("%s: %d: Timeout!\n", __func__, __LINE__);
-	value = readl(&regs->lcdc_lcden);
-	writel(value | LCDC_LCDEN_SYNCEN, &regs->lcdc_lcden);
-	ret = wait_for_bit_le32(&regs->lcdc_lcdsr, LCDC_LCDSR_LCDSTS,
-				true, 1000, false);
-	if (ret)
-		printf("%s: %d: Timeout!\n", __func__, __LINE__);
-	value = readl(&regs->lcdc_lcden);
-	writel(value | LCDC_LCDEN_DISPEN, &regs->lcdc_lcden);
-	ret = wait_for_bit_le32(&regs->lcdc_lcdsr, LCDC_LCDSR_DISPSTS,
-				true, 1000, false);
-	if (ret)
-		printf("%s: %d: Timeout!\n", __func__, __LINE__);
-	value = readl(&regs->lcdc_lcden);
-	writel(value | LCDC_LCDEN_PWMEN, &regs->lcdc_lcden);
-	ret = wait_for_bit_le32(&regs->lcdc_lcdsr, LCDC_LCDSR_PWMSTS,
-				true, 1000, false);
-	if (ret)
-		printf("%s: %d: Timeout!\n", __func__, __LINE__);
-
-	/* Enable flushing if we enabled dcache */
-	lcd_set_flush_dcache(1);
-}
-
-#else
-
 enum {
 	LCD_MAX_WIDTH		= 1024,
 	LCD_MAX_HEIGHT		= 768,
@@ -565,5 +340,3 @@
 	.of_to_plat = atmel_hlcdc_of_to_plat,
 	.priv_auto	= sizeof(struct atmel_hlcdc_priv),
 };
-
-#endif
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
index c38cac1..5a7a54a 100644
--- a/drivers/video/atmel_lcdfb.c
+++ b/drivers/video/atmel_lcdfb.c
@@ -16,21 +16,18 @@
 #include <asm/io.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/clk.h>
-#include <lcd.h>
 #include <bmp_layout.h>
 #include <atmel_lcdc.h>
 #include <linux/delay.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#ifdef CONFIG_DM_VIDEO
 enum {
 	/* Maximum LCD size we support */
 	LCD_MAX_WIDTH		= 1366,
 	LCD_MAX_HEIGHT		= 768,
 	LCD_MAX_LOG2_BPP	= VIDEO_BPP16,
 };
-#endif
 
 struct atmel_fb_priv {
 	struct display_timing timing;
@@ -52,69 +49,6 @@
 #define lcdc_readl(mmio, reg)		__raw_readl((mmio)+(reg))
 #define lcdc_writel(mmio, reg, val)	__raw_writel((val), (mmio)+(reg))
 
-#ifndef CONFIG_DM_VIDEO
-ushort *configuration_get_cmap(void)
-{
-	return (ushort *)(panel_info.mmio + ATMEL_LCDC_LUT(0));
-}
-
-#if defined(CONFIG_BMP_16BPP) && defined(CONFIG_ATMEL_LCD_BGR555)
-void fb_put_word(uchar **fb, uchar **from)
-{
-	*(*fb)++ = (((*from)[0] & 0x1f) << 2) | ((*from)[1] & 0x03);
-	*(*fb)++ = ((*from)[0] & 0xe0) | (((*from)[1] & 0x7c) >> 2);
-	*from += 2;
-}
-#endif
-
-#ifdef CONFIG_LCD_LOGO
-#include <bmp_logo.h>
-void lcd_logo_set_cmap(void)
-{
-	int i;
-	uint lut_entry;
-	ushort colreg;
-	uint *cmap = (uint *)configuration_get_cmap();
-
-	for (i = 0; i < BMP_LOGO_COLORS; ++i) {
-		colreg = bmp_logo_palette[i];
-#ifdef CONFIG_ATMEL_LCD_BGR555
-		lut_entry = ((colreg & 0x000F) << 11) |
-				((colreg & 0x00F0) <<  2) |
-				((colreg & 0x0F00) >>  7);
-#else
-		lut_entry = ((colreg & 0x000F) << 1) |
-				((colreg & 0x00F0) << 3) |
-				((colreg & 0x0F00) << 4);
-#endif
-		*(cmap + BMP_LOGO_OFFSET) = lut_entry;
-		cmap++;
-	}
-}
-#endif
-
-void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue)
-{
-#if defined(CONFIG_ATMEL_LCD_BGR555)
-	lcdc_writel(panel_info.mmio, ATMEL_LCDC_LUT(regno),
-		    (red >> 3) | ((green & 0xf8) << 2) | ((blue & 0xf8) << 7));
-#else
-	lcdc_writel(panel_info.mmio, ATMEL_LCDC_LUT(regno),
-		    (blue >> 3) | ((green & 0xfc) << 3) | ((red & 0xf8) << 8));
-#endif
-}
-
-void lcd_set_cmap(struct bmp_image *bmp, unsigned colors)
-{
-	int i;
-
-	for (i = 0; i < colors; ++i) {
-		struct bmp_color_table_entry cte = bmp->color_table[i];
-		lcd_setcolreg(i, cte.red, cte.green, cte.blue);
-	}
-}
-#endif
-
 static void atmel_fb_init(ulong addr, struct display_timing *timing, int bpix,
 			  bool tft, bool cont_pol_low, ulong lcdbase)
 {
@@ -209,41 +143,6 @@
 		    (ATMEL_LCDC_GUARD_TIME << ATMEL_LCDC_GUARDT_OFFSET) | ATMEL_LCDC_PWR);
 }
 
-#ifndef CONFIG_DM_VIDEO
-void lcd_ctrl_init(void *lcdbase)
-{
-	struct display_timing timing;
-
-	timing.flags = 0;
-	if (!(panel_info.vl_sync & ATMEL_LCDC_INVLINE_INVERTED))
-		timing.flags |= DISPLAY_FLAGS_HSYNC_HIGH;
-	if (!(panel_info.vl_sync & ATMEL_LCDC_INVFRAME_INVERTED))
-		timing.flags |= DISPLAY_FLAGS_VSYNC_LOW;
-	timing.pixelclock.typ = panel_info.vl_clk;
-
-	timing.hactive.typ = panel_info.vl_col;
-	timing.hfront_porch.typ = panel_info.vl_right_margin;
-	timing.hback_porch.typ = panel_info.vl_left_margin;
-	timing.hsync_len.typ = panel_info.vl_hsync_len;
-
-	timing.vactive.typ = panel_info.vl_row;
-	timing.vfront_porch.typ = panel_info.vl_clk;
-	timing.vback_porch.typ = panel_info.vl_clk;
-	timing.vsync_len.typ = panel_info.vl_clk;
-
-	atmel_fb_init(panel_info.mmio, &timing, panel_info.vl_bpix,
-		      panel_info.vl_tft, panel_info.vl_cont_pol_low,
-		      (ulong)lcdbase);
-}
-
-ulong calc_fbsize(void)
-{
-	return ((panel_info.vl_col * panel_info.vl_row *
-		NBITS(panel_info.vl_bpix)) / 8) + PAGE_SIZE;
-}
-#endif
-
-#ifdef CONFIG_DM_VIDEO
 static int atmel_fb_lcd_probe(struct udevice *dev)
 {
 	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
@@ -310,4 +209,3 @@
 	.plat_auto	= sizeof(struct atmel_lcd_plat),
 	.priv_auto	= sizeof(struct atmel_fb_priv),
 };
-#endif
diff --git a/drivers/video/bus_vcxk.c b/drivers/video/bus_vcxk.c
deleted file mode 100644
index 3863662..0000000
--- a/drivers/video/bus_vcxk.c
+++ /dev/null
@@ -1,426 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2005-2009
- * Jens Scharsig @ BuS Elektronik GmbH & Co. KG, <esw@bus-elektronik.de>
- */
-
-#include <common.h>
-#include <bmp_layout.h>
-#include <log.h>
-#include <asm/io.h>
-
-vu_char  *vcxk_bws      = ((vu_char *) (CONFIG_SYS_VCXK_BASE));
-vu_short *vcxk_bws_word = ((vu_short *)(CONFIG_SYS_VCXK_BASE));
-vu_long  *vcxk_bws_long = ((vu_long *) (CONFIG_SYS_VCXK_BASE));
-
-#ifdef CONFIG_AT91RM9200
-	#include <asm/arch/hardware.h>
-	#include <asm/arch/at91_pio.h>
-
-	#ifndef VCBITMASK
-		#define VCBITMASK(bitno)	(0x0001 << (bitno % 16))
-	#endif
-at91_pio_t *pio = (at91_pio_t *) AT91_PIO_BASE;
-#define VCXK_INIT_PIN(PORT, PIN, DDR, I0O1) \
-	do { \
-		writel(PIN, &pio->PORT.per); \
-		writel(PIN, &pio->PORT.DDR); \
-		writel(PIN, &pio->PORT.mddr); \
-		if (!I0O1) \
-			writel(PIN, &pio->PORT.puer); \
-	} while (0);
-
-#define VCXK_SET_PIN(PORT, PIN)	writel(PIN, &pio->PORT.sodr);
-#define VCXK_CLR_PIN(PORT, PIN)	writel(PIN, &pio->PORT.codr);
-
-#define VCXK_ACKNOWLEDGE	\
-	(!(readl(&pio->CONFIG_SYS_VCXK_ACKNOWLEDGE_PORT.pdsr) & \
-			CONFIG_SYS_VCXK_ACKNOWLEDGE_PIN))
-#elif defined(CONFIG_MCF52x2)
-	#include <asm/m5282.h>
-	#ifndef VCBITMASK
-		#define VCBITMASK(bitno) (0x8000 >> (bitno % 16))
-	#endif
-
-	#define VCXK_INIT_PIN(PORT, PIN, DDR, I0O1) \
-		if (I0O1) DDR |= PIN; else DDR &= ~PIN;
-
-	#define VCXK_SET_PIN(PORT, PIN)	PORT |= PIN;
-	#define VCXK_CLR_PIN(PORT, PIN)	PORT &= ~PIN;
-
-	#define VCXK_ACKNOWLEDGE \
-		(!(CONFIG_SYS_VCXK_ACKNOWLEDGE_PORT &	\
-			CONFIG_SYS_VCXK_ACKNOWLEDGE_PIN))
-
-#else
-	#error no vcxk support for selected ARCH
-#endif
-
-#define VCXK_DISABLE\
-	VCXK_SET_PIN(CONFIG_SYS_VCXK_ENABLE_PORT, CONFIG_SYS_VCXK_ENABLE_PIN)
-#define VCXK_ENABLE\
-	VCXK_CLR_PIN(CONFIG_SYS_VCXK_ENABLE_PORT, CONFIG_SYS_VCXK_ENABLE_PIN)
-
-#ifndef CONFIG_SYS_VCXK_DOUBLEBUFFERED
-	#define VCXK_BWS(x, data)		vcxk_bws[x] = data;
-	#define VCXK_BWS_WORD_SET(x, mask)	vcxk_bws_word[x] |= mask;
-	#define VCXK_BWS_WORD_CLEAR(x, mask)	vcxk_bws_word[x] &= ~mask;
-	#define VCXK_BWS_LONG(x, data)		vcxk_bws_long[x] = data;
-#else
-	u_char double_bws[16384];
-	u_short *double_bws_word;
-	u_long  *double_bws_long;
-	#define VCXK_BWS(x,data)	\
-		double_bws[x] = data; vcxk_bws[x] = data;
-	#define VCXK_BWS_WORD_SET(x,mask)	\
-		double_bws_word[x] |= mask;	\
-		vcxk_bws_word[x] = double_bws_word[x];
-	#define VCXK_BWS_WORD_CLEAR(x,mask)	\
-		double_bws_word[x] &= ~mask;	\
-		vcxk_bws_word[x] = double_bws_word[x];
-	#define VCXK_BWS_LONG(x,data) \
-		double_bws_long[x] = data; vcxk_bws_long[x] = data;
-#endif
-
-#define VC4K16_Bright1	vcxk_bws_word[0x20004 / 2]
-#define VC4K16_Bright2	vcxk_bws_word[0x20006 / 2]
-#define VC2K_Bright	vcxk_bws[0x8000]
-#define VC8K_BrightH	vcxk_bws[0xC000]
-#define VC8K_BrightL	vcxk_bws[0xC001]
-
-vu_char VC4K16;
-
-u_long display_width;
-u_long display_height;
-u_long display_bwidth;
-
-ulong search_vcxk_driver(void);
-void vcxk_cls(void);
-void vcxk_setbrightness(unsigned int side, short brightness);
-int vcxk_request(void);
-int vcxk_acknowledge_wait(void);
-void vcxk_clear(void);
-
-/*
- ****f* bus_vcxk/vcxk_init
- * FUNCTION
- * initialalize Video Controller
- * PARAMETERS
- * width	visible display width in pixel
- * height	visible display height  in pixel
- ***
- */
-
-int vcxk_init(unsigned long width, unsigned long height)
-{
-#ifdef CONFIG_SYS_VCXK_RESET_PORT
-	VCXK_INIT_PIN(CONFIG_SYS_VCXK_RESET_PORT,
-		CONFIG_SYS_VCXK_RESET_PIN, CONFIG_SYS_VCXK_RESET_DDR, 1)
-	VCXK_SET_PIN(CONFIG_SYS_VCXK_RESET_PORT, CONFIG_SYS_VCXK_RESET_PIN);
-#endif
-
-#ifdef CONFIG_SYS_VCXK_DOUBLEBUFFERED
-	double_bws_word  = (u_short *)double_bws;
-	double_bws_long  = (u_long *)double_bws;
-	debug("%px %px %px\n", double_bws, double_bws_word, double_bws_long);
-#endif
-	display_width  = width;
-	display_height = height;
-#if (CONFIG_SYS_VCXK_DEFAULT_LINEALIGN == 4)
-	display_bwidth = ((width + 31) / 8) & ~0x3;
-#elif (CONFIG_SYS_VCXK_DEFAULT_LINEALIGN == 2)
-	display_bwidth = ((width + 15) / 8) & ~0x1;
-#else
-	#error CONFIG_SYS_VCXK_DEFAULT_LINEALIGN is invalid
-#endif
-	debug("linesize ((%ld + 15) / 8 & ~0x1) = %ld\n",
-		display_width, display_bwidth);
-
-#ifdef CONFIG_SYS_VCXK_AUTODETECT
-	VC4K16 = 0;
-	vcxk_bws_long[1] = 0x0;
-	vcxk_bws_long[1] = 0x55AAAA55;
-	vcxk_bws_long[5] = 0x0;
-	if (vcxk_bws_long[1] == 0x55AAAA55)
-		VC4K16 = 1;
-#else
-	VC4K16 = 1;
-	debug("No autodetect: use vc4k\n");
-#endif
-
-	VCXK_INIT_PIN(CONFIG_SYS_VCXK_INVERT_PORT,
-		CONFIG_SYS_VCXK_INVERT_PIN, CONFIG_SYS_VCXK_INVERT_DDR, 1)
-	VCXK_SET_PIN(CONFIG_SYS_VCXK_INVERT_PORT, CONFIG_SYS_VCXK_INVERT_PIN)
-
-	VCXK_SET_PIN(CONFIG_SYS_VCXK_REQUEST_PORT, CONFIG_SYS_VCXK_REQUEST_PIN);
-	VCXK_INIT_PIN(CONFIG_SYS_VCXK_REQUEST_PORT,
-		CONFIG_SYS_VCXK_REQUEST_PIN, CONFIG_SYS_VCXK_REQUEST_DDR, 1)
-
-	VCXK_INIT_PIN(CONFIG_SYS_VCXK_ACKNOWLEDGE_PORT,
-		CONFIG_SYS_VCXK_ACKNOWLEDGE_PIN,
-		CONFIG_SYS_VCXK_ACKNOWLEDGE_DDR, 0)
-
-	VCXK_DISABLE;
-	VCXK_INIT_PIN(CONFIG_SYS_VCXK_ENABLE_PORT,
-		CONFIG_SYS_VCXK_ENABLE_PIN, CONFIG_SYS_VCXK_ENABLE_DDR, 1)
-
-	vcxk_cls();
-	vcxk_cls();	/* clear second/hidden page */
-
-	vcxk_setbrightness(3, 1000);
-	VCXK_ENABLE;
-	return 1;
-}
-
-/*
- ****f* bus_vcxk/vcxk_setpixel
- * FUNCTION
- * set the pixel[x,y] with the given color
- * PARAMETER
- * x		pixel colum
- * y		pixel row
- * color	<0x40 off/black
- *			>0x40 on
- ***
- */
-
-void vcxk_setpixel(int x, int y, unsigned long color)
-{
-	vu_short dataptr;
-
-	if ((x < display_width) && (y < display_height)) {
-		dataptr = ((x / 16)) + (y * (display_bwidth >> 1));
-
-		color = ((color >> 16) & 0xFF) |
-			    ((color >> 8) & 0xFF) | (color & 0xFF);
-
-		if (color > 0x40) {
-			VCXK_BWS_WORD_SET(dataptr, VCBITMASK(x));
-		} else {
-			VCXK_BWS_WORD_CLEAR(dataptr, VCBITMASK(x));
-		}
-	}
-}
-
-/*
- ****f* bus_vcxk/vcxk_loadimage
- * FUNCTION
- * copies a binary image to display memory
- ***
- */
-
-void vcxk_loadimage(ulong source)
-{
-	int cnt;
-	vcxk_acknowledge_wait();
-	if (VC4K16) {
-		for (cnt = 0; cnt < (16384 / 4); cnt++) {
-			VCXK_BWS_LONG(cnt, (*(ulong *) source));
-			source = source + 4;
-		}
-	} else {
-		for (cnt = 0; cnt < 16384; cnt++) {
-			VCXK_BWS_LONG(cnt*2, (*(vu_char *) source));
-			source++;
-		}
-	}
-	vcxk_request();
-}
-
-/*
- ****f* bus_vcxk/vcxk_cls
- * FUNCTION
- * clear the display
- ***
- */
-
-void vcxk_cls(void)
-{
-	vcxk_acknowledge_wait();
-	vcxk_clear();
-	vcxk_request();
-}
-
-/*
- ****f* bus_vcxk/vcxk_clear(void)
- * FUNCTION
- * clear the display memory
- ***
- */
-
-void vcxk_clear(void)
-{
-	int cnt;
-
-	for (cnt = 0; cnt < (16384 / 4); cnt++) {
-		VCXK_BWS_LONG(cnt, 0)
-	}
-}
-
-/*
- ****f* bus_vcxk/vcxk_setbrightness
- * FUNCTION
- * set the display brightness
- * PARAMETER
- * side	1	set front side brightness
- *		2	set back  side brightness
- *		3	set brightness for both sides
- * brightness 0..1000
- ***
- */
-
-void vcxk_setbrightness(unsigned int side, short brightness)
-{
-	if (VC4K16) {
-		if ((side == 0) || (side & 0x1))
-			VC4K16_Bright1 = brightness + 23;
-		if ((side == 0) || (side & 0x2))
-			VC4K16_Bright2 = brightness + 23;
-	} else	{
-		VC2K_Bright = (brightness >> 4) + 2;
-		VC8K_BrightH = (brightness + 23) >> 8;
-		VC8K_BrightL = (brightness + 23) & 0xFF;
-	}
-}
-
-/*
- ****f* bus_vcxk/vcxk_request
- * FUNCTION
- * requests viewing of display memory
- ***
- */
-
-int vcxk_request(void)
-{
-	VCXK_CLR_PIN(CONFIG_SYS_VCXK_REQUEST_PORT,
-		CONFIG_SYS_VCXK_REQUEST_PIN)
-	VCXK_SET_PIN(CONFIG_SYS_VCXK_REQUEST_PORT,
-		CONFIG_SYS_VCXK_REQUEST_PIN);
-	return 1;
-}
-
-/*
- ****f* bus_vcxk/vcxk_acknowledge_wait
- * FUNCTION
- * wait for acknowledge viewing requests
- ***
- */
-
-int vcxk_acknowledge_wait(void)
-{
-	while (VCXK_ACKNOWLEDGE)
-		;
-	return 1;
-}
-
-/*
- ****f* bus_vcxk/vcxk_draw_mono
- * FUNCTION
- * copies a monochrom bitmap (BMP-Format) from given memory
- * PARAMETER
- * dataptr	pointer to bitmap
- * x		output bitmap @ columne
- * y		output bitmap @ row
- ***
- */
-
-void vcxk_draw_mono(unsigned char *dataptr, unsigned long linewidth,
-	unsigned long  cp_width, unsigned long cp_height)
-{
-	unsigned char *lineptr;
-	unsigned long xcnt, ycnt;
-
-	for (ycnt = cp_height; ycnt > 0; ycnt--) {
-		lineptr	= dataptr;
-		for (xcnt = 0; xcnt < cp_width; xcnt++) {
-			if ((*lineptr << (xcnt % 8)) & 0x80)
-				vcxk_setpixel(xcnt, ycnt - 1, 0xFFFFFF);
-			else
-				vcxk_setpixel(xcnt, ycnt-1, 0);
-
-			if ((xcnt % 8) == 7)
-				lineptr++;
-		} /* endfor xcnt */
-		dataptr = dataptr + linewidth;
-	} /* endfor ycnt */
-}
-
-/*
- ****f* bus_vcxk/vcxk_display_bitmap
- * FUNCTION
- * copies a bitmap (BMP-Format) to the given position
- * PARAMETER
- * addr		pointer to bitmap
- * x		output bitmap @ columne
- * y		output bitmap @ row
- ***
- */
-
-int vcxk_display_bitmap(ulong addr, int x, int y)
-{
-	struct bmp_image *bmp;
-	unsigned long width;
-	unsigned long height;
-	unsigned long bpp;
-
-	unsigned long lw;
-
-	unsigned long c_width;
-	unsigned long c_height;
-	unsigned char *dataptr;
-
-	bmp = (struct bmp_image *)addr;
-	if ((bmp->header.signature[0] == 'B') &&
-	    (bmp->header.signature[1] == 'M')) {
-		width        = le32_to_cpu(bmp->header.width);
-		height       = le32_to_cpu(bmp->header.height);
-		bpp          = le16_to_cpu(bmp->header.bit_count);
-
-		dataptr = (unsigned char *) bmp +
-				le32_to_cpu(bmp->header.data_offset);
-
-		if (display_width < (width + x))
-			c_width = display_width - x;
-		else
-			c_width = width;
-		if (display_height < (height + y))
-			c_height = display_height - y;
-		else
-			c_height = height;
-
-		lw = (((width + 7) / 8) + 3) & ~0x3;
-
-		if (c_height < height)
-			dataptr = dataptr + lw * (height - c_height);
-		switch (bpp) {
-		case 1:
-			vcxk_draw_mono(dataptr, lw, c_width, c_height);
-			break;
-		default:
-			printf("Error: %ld bit per pixel "
-				"not supported by VCxK\n", bpp);
-			return 0;
-		}
-	} else	{
-		printf("Error: no valid bmp at %lx\n", (ulong) bmp);
-		return 0;
-	}
-	return 1;
-}
-
-/*
- ****f* bus_vcxk/video_display_bitmap
- ***
- */
-
-int video_display_bitmap(ulong addr, int x, int y)
-{
-	vcxk_acknowledge_wait();
-	if (vcxk_display_bitmap(addr, x, y)) {
-		vcxk_request();
-		return 0;
-	}
-	return 1;
-}
-
-/* EOF */
diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c
index c04b449..6859c9f 100644
--- a/drivers/video/console_truetype.c
+++ b/drivers/video/console_truetype.c
@@ -94,17 +94,16 @@
 #define POS_HISTORY_SIZE	(CONFIG_SYS_CBSIZE * 11 / 10)
 
 /**
- * struct console_tt_priv - Private data for this driver
+ * struct console_tt_metrics - Information about a font / size combination
  *
+ * This caches various font metrics which are expensive to regenerate each time
+ * the font size changes. There is one of these for each font / size combination
+ * that is being used
+ *
+ * @font_name:	Name of the font
  * @font_size:	Vertical font size in pixels
  * @font_data:	Pointer to TrueType font file contents
  * @font:	TrueType font information for the current font
- * @pos:	List of cursor positions for each character written. This is
- *		used to handle backspace. We clear the frame buffer between
- *		the last position and the current position, thus erasing the
- *		last character. We record enough characters to go back to the
- *		start of the current command line.
- * @pos_ptr:	Current position in the position history
  * @baseline:	Pixel offset of the font's baseline from the cursor position.
  *		This is the 'ascent' of the font, scaled to pixel coordinates.
  *		It measures the distance from the baseline to the top of the
@@ -113,25 +112,46 @@
  *		of the font. It is used by the STB library to generate images
  *		of the correct size.
  */
-struct console_tt_priv {
+struct console_tt_metrics {
+	const char *font_name;
 	int font_size;
-	u8 *font_data;
+	const u8 *font_data;
 	stbtt_fontinfo font;
-	struct pos_info pos[POS_HISTORY_SIZE];
-	int pos_ptr;
 	int baseline;
 	double scale;
 };
 
+/**
+ * struct console_tt_priv - Private data for this driver
+ *
+ * @cur_met:	Current metrics being used
+ * @metrics:	List metrics that can be used
+ * @num_metrics:	Number of available metrics
+ * @pos:	List of cursor positions for each character written. This is
+ *		used to handle backspace. We clear the frame buffer between
+ *		the last position and the current position, thus erasing the
+ *		last character. We record enough characters to go back to the
+ *		start of the current command line.
+ * @pos_ptr:	Current position in the position history
+ */
+struct console_tt_priv {
+	struct console_tt_metrics *cur_met;
+	struct console_tt_metrics metrics[CONFIG_CONSOLE_TRUETYPE_MAX_METRICS];
+	int num_metrics;
+	struct pos_info pos[POS_HISTORY_SIZE];
+	int pos_ptr;
+};
+
 static int console_truetype_set_row(struct udevice *dev, uint row, int clr)
 {
 	struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent);
 	struct console_tt_priv *priv = dev_get_priv(dev);
+	struct console_tt_metrics *met = priv->cur_met;
 	void *end, *line;
 	int ret;
 
-	line = vid_priv->fb + row * priv->font_size * vid_priv->line_length;
-	end = line + priv->font_size * vid_priv->line_length;
+	line = vid_priv->fb + row * met->font_size * vid_priv->line_length;
+	end = line + met->font_size * vid_priv->line_length;
 
 	switch (vid_priv->bpix) {
 #ifdef CONFIG_VIDEO_BPP8
@@ -176,19 +196,20 @@
 {
 	struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent);
 	struct console_tt_priv *priv = dev_get_priv(dev);
+	struct console_tt_metrics *met = priv->cur_met;
 	void *dst;
 	void *src;
 	int i, diff, ret;
 
-	dst = vid_priv->fb + rowdst * priv->font_size * vid_priv->line_length;
-	src = vid_priv->fb + rowsrc * priv->font_size * vid_priv->line_length;
-	ret = vidconsole_memmove(dev, dst, src, priv->font_size *
+	dst = vid_priv->fb + rowdst * met->font_size * vid_priv->line_length;
+	src = vid_priv->fb + rowsrc * met->font_size * vid_priv->line_length;
+	ret = vidconsole_memmove(dev, dst, src, met->font_size *
 				 vid_priv->line_length * count);
 	if (ret)
 		return ret;
 
 	/* Scroll up our position history */
-	diff = (rowsrc - rowdst) * priv->font_size;
+	diff = (rowsrc - rowdst) * met->font_size;
 	for (i = 0; i < priv->pos_ptr; i++)
 		priv->pos[i].ypos -= diff;
 
@@ -202,7 +223,8 @@
 	struct udevice *vid = dev->parent;
 	struct video_priv *vid_priv = dev_get_uclass_priv(vid);
 	struct console_tt_priv *priv = dev_get_priv(dev);
-	stbtt_fontinfo *font = &priv->font;
+	struct console_tt_metrics *met = priv->cur_met;
+	stbtt_fontinfo *font = &met->font;
 	int width, height, xoff, yoff;
 	double xpos, x_shift;
 	int lsb;
@@ -222,7 +244,7 @@
 	 * this character */
 	xpos = frac(VID_TO_PIXEL((double)x));
 	if (vc_priv->last_ch) {
-		xpos += priv->scale * stbtt_GetCodepointKernAdvance(font,
+		xpos += met->scale * stbtt_GetCodepointKernAdvance(font,
 							vc_priv->last_ch, ch);
 	}
 
@@ -233,7 +255,7 @@
 	 * it dictates how much the cursor will move forward on the line.
 	 */
 	x_shift = xpos - (double)tt_floor(xpos);
-	xpos += advance * priv->scale;
+	xpos += advance * met->scale;
 	width_frac = (int)VID_TO_POS(xpos);
 	if (x + width_frac >= vc_priv->xsize_frac)
 		return -EAGAIN;
@@ -252,7 +274,7 @@
 	 * image of the character. For empty characters, like ' ', data will
 	 * return NULL;
 	 */
-	data = stbtt_GetCodepointBitmapSubpixel(font, priv->scale, priv->scale,
+	data = stbtt_GetCodepointBitmapSubpixel(font, met->scale, met->scale,
 						x_shift, 0, ch, &width, &height,
 						&xoff, &yoff);
 	if (!data)
@@ -262,7 +284,7 @@
 	bits = data;
 	start = vid_priv->fb + y * vid_priv->line_length +
 		VID_TO_PIXEL(x) * VNBYTES(vid_priv->bpix);
-	linenum = priv->baseline + yoff;
+	linenum = met->baseline + yoff;
 	if (linenum > 0)
 		start += linenum * vid_priv->line_length;
 	line = start;
@@ -526,69 +548,210 @@
 	{} /* sentinel */
 };
 
-#define FONT_BEGIN(name)	__ttf_ ## name ## _begin
-#define FONT_END(name)		__ttf_ ## name ## _end
-#define FONT_IS_VALID(name)	(abs(FONT_END(name) - FONT_BEGIN) > 4)
+/**
+ * font_valid() - Check if a font-table entry is valid
+ *
+ * Depending on available files in the build system, fonts may end up being
+ * empty.
+ *
+ * @return true if the entry is valid
+ */
+static inline bool font_valid(struct font_info *tab)
+{
+	return abs(tab->begin - tab->end) > 4;
+}
 
 /**
  * console_truetype_find_font() - Find a suitable font
  *
- * This searched for the first available font.
+ * This searches for the first available font.
  *
- * Return: pointer to the font, or NULL if none is found
+ * Return: pointer to the font-table entry, or NULL if none is found
  */
-static u8 *console_truetype_find_font(void)
+static struct font_info *console_truetype_find_font(void)
 {
 	struct font_info *tab;
 
 	for (tab = font_table; tab->begin; tab++) {
-		if (abs(tab->begin - tab->end) > 4) {
+		if (font_valid(tab)) {
 			debug("%s: Font '%s', at %p, size %lx\n", __func__,
 			      tab->name, tab->begin,
 			      (ulong)(tab->end - tab->begin));
-			return tab->begin;
+			return tab;
 		}
 	}
 
 	return NULL;
 }
 
-static int console_truetype_probe(struct udevice *dev)
+void vidconsole_list_fonts(void)
 {
-	struct vidconsole_priv *vc_priv = dev_get_uclass_priv(dev);
+	struct font_info *tab;
+
+	for (tab = font_table; tab->begin; tab++) {
+		if (abs(tab->begin - tab->end) > 4)
+			printf("%s\n", tab->name);
+	}
+}
+
+/**
+ * vidconsole_add_metrics() - Add a new font/size combination
+ *
+ * @dev:	Video console device to update
+ * @font_name:	Name of font
+ * @font_size:	Size of the font (norminal pixel height)
+ * @font_data:	Pointer to the font data
+ * @return 0 if OK, -EPERM if stbtt failed, -E2BIG if the the metrics table is
+ *	full
+ */
+static int vidconsole_add_metrics(struct udevice *dev, const char *font_name,
+				  uint font_size, const void *font_data)
+{
 	struct console_tt_priv *priv = dev_get_priv(dev);
-	struct udevice *vid_dev = dev->parent;
-	struct video_priv *vid_priv = dev_get_uclass_priv(vid_dev);
-	stbtt_fontinfo *font = &priv->font;
+	struct console_tt_metrics *met;
+	stbtt_fontinfo *font;
 	int ascent;
 
-	debug("%s: start\n", __func__);
-	if (vid_priv->font_size)
-		priv->font_size = vid_priv->font_size;
-	else
-		priv->font_size = CONFIG_CONSOLE_TRUETYPE_SIZE;
-	priv->font_data = console_truetype_find_font();
-	if (!priv->font_data) {
-		debug("%s: Could not find any fonts\n", __func__);
-		return -EBFONT;
-	}
+	if (priv->num_metrics == CONFIG_CONSOLE_TRUETYPE_MAX_METRICS)
+		return log_msg_ret("num", -E2BIG);
 
-	vc_priv->x_charsize = priv->font_size;
-	vc_priv->y_charsize = priv->font_size;
-	vc_priv->xstart_frac = VID_TO_POS(2);
-	vc_priv->cols = vid_priv->xsize / priv->font_size;
-	vc_priv->rows = vid_priv->ysize / priv->font_size;
-	vc_priv->tab_width_frac = VID_TO_POS(priv->font_size) * 8 / 2;
+	met = &priv->metrics[priv->num_metrics];
+	met->font_name = font_name;
+	met->font_size = font_size;
+	met->font_data = font_data;
 
-	if (!stbtt_InitFont(font, priv->font_data, 0)) {
+	font = &met->font;
+	if (!stbtt_InitFont(font, font_data, 0)) {
 		debug("%s: Font init failed\n", __func__);
 		return -EPERM;
 	}
 
 	/* Pre-calculate some things we will need regularly */
-	priv->scale = stbtt_ScaleForPixelHeight(font, priv->font_size);
+	met->scale = stbtt_ScaleForPixelHeight(font, font_size);
 	stbtt_GetFontVMetrics(font, &ascent, 0, 0);
-	priv->baseline = (int)(ascent * priv->scale);
+	met->baseline = (int)(ascent * met->scale);
+
+	return priv->num_metrics++;
+}
+
+/**
+ * find_metrics() - Find the metrics for a given font and size
+ *
+ * @dev:	Video console device to update
+ * @name:	Name of font
+ * @size:	Size of the font (norminal pixel height)
+ * @return metrics, if found, else NULL
+ */
+static struct console_tt_metrics *find_metrics(struct udevice *dev,
+					       const char *name, uint size)
+{
+	struct console_tt_priv *priv = dev_get_priv(dev);
+	int i;
+
+	for (i = 0; i < priv->num_metrics; i++) {
+		struct console_tt_metrics *met = &priv->metrics[i];
+
+		if (!strcmp(name, met->font_name) && met->font_size == size)
+			return met;
+	}
+
+	return NULL;
+}
+
+static void select_metrics(struct udevice *dev, struct console_tt_metrics *met)
+{
+	struct vidconsole_priv *vc_priv = dev_get_uclass_priv(dev);
+	struct console_tt_priv *priv = dev_get_priv(dev);
+	struct udevice *vid_dev = dev_get_parent(dev);
+	struct video_priv *vid_priv = dev_get_uclass_priv(vid_dev);
+
+	priv->cur_met = met;
+	vc_priv->x_charsize = met->font_size;
+	vc_priv->y_charsize = met->font_size;
+	vc_priv->xstart_frac = VID_TO_POS(2);
+	vc_priv->cols = vid_priv->xsize / met->font_size;
+	vc_priv->rows = vid_priv->ysize / met->font_size;
+	vc_priv->tab_width_frac = VID_TO_POS(met->font_size) * 8 / 2;
+}
+
+int vidconsole_select_font(struct udevice *dev, const char *name, uint size)
+{
+	struct console_tt_priv *priv = dev_get_priv(dev);
+	struct console_tt_metrics *met;
+	struct font_info *tab;
+
+	if (name || size) {
+		if (!size)
+			size = CONFIG_CONSOLE_TRUETYPE_SIZE;
+		if (!name)
+			name = priv->cur_met->font_name;
+
+		met = find_metrics(dev, name, size);
+		if (!met) {
+			for (tab = font_table; tab->begin; tab++) {
+				if (font_valid(tab) &&
+				    !strcmp(name, tab->name)) {
+					int ret;
+
+					ret = vidconsole_add_metrics(dev,
+						tab->name, size, tab->begin);
+					if (ret < 0)
+						return log_msg_ret("add", ret);
+
+					met = &priv->metrics[ret];
+					break;
+				}
+			}
+		}
+		if (!met)
+			return log_msg_ret("find", -ENOENT);
+	} else {
+		/* Use the default font */
+		met = priv->metrics;
+	}
+
+	select_metrics(dev, met);
+
+	return 0;
+}
+
+const char *vidconsole_get_font(struct udevice *dev, uint *sizep)
+{
+	struct console_tt_priv *priv = dev_get_priv(dev);
+	struct console_tt_metrics *met = priv->cur_met;
+
+	*sizep = met->font_size;
+
+	return met->font_name;
+}
+
+static int console_truetype_probe(struct udevice *dev)
+{
+	struct console_tt_priv *priv = dev_get_priv(dev);
+	struct udevice *vid_dev = dev->parent;
+	struct video_priv *vid_priv = dev_get_uclass_priv(vid_dev);
+	struct font_info *tab;
+	uint font_size;
+	int ret;
+
+	debug("%s: start\n", __func__);
+	if (vid_priv->font_size)
+		font_size = vid_priv->font_size;
+	else
+		font_size = CONFIG_CONSOLE_TRUETYPE_SIZE;
+	tab = console_truetype_find_font();
+	if (!tab) {
+		debug("%s: Could not find any fonts\n", __func__);
+		return -EBFONT;
+	}
+
+	ret = vidconsole_add_metrics(dev, tab->name, font_size, tab->begin);
+	if (ret < 0)
+		return log_msg_ret("add", ret);
+	priv->cur_met = &priv->metrics[ret];
+
+	select_metrics(dev, &priv->metrics[ret]);
+
 	debug("%s: ready\n", __func__);
 
 	return 0;
diff --git a/drivers/video/dw_mipi_dsi.c b/drivers/video/dw_mipi_dsi.c
index a5b38ac..6d9c5a9 100644
--- a/drivers/video/dw_mipi_dsi.c
+++ b/drivers/video/dw_mipi_dsi.c
@@ -621,8 +621,8 @@
 	htotal = timings->hactive.typ + timings->hfront_porch.typ +
 		 timings->hback_porch.typ + timings->hsync_len.typ;
 
-	hsa = timings->hback_porch.typ;
-	hbp = timings->hsync_len.typ;
+	hsa = timings->hsync_len.typ;
+	hbp = timings->hback_porch.typ;
 
 	/*
 	 * TODO dw drv improvements
@@ -644,9 +644,9 @@
 	u32 vactive, vsa, vfp, vbp;
 
 	vactive = timings->vactive.typ;
-	vsa =  timings->vback_porch.typ;
+	vsa =  timings->vsync_len.typ;
 	vfp =  timings->vfront_porch.typ;
-	vbp = timings->vsync_len.typ;
+	vbp = timings->vback_porch.typ;
 
 	dsi_write(dsi, DSI_VID_VACTIVE_LINES, vactive);
 	dsi_write(dsi, DSI_VID_VSA_LINES, vsa);
diff --git a/drivers/video/exynos/Kconfig b/drivers/video/exynos/Kconfig
index 37e661b..599d19d 100644
--- a/drivers/video/exynos/Kconfig
+++ b/drivers/video/exynos/Kconfig
@@ -1,7 +1,7 @@
 
 menuconfig VIDEO_EXYNOS
 	bool "Enable Exynos video support"
-	depends on DM_VIDEO
+	depends on VIDEO
 	help
 	  Enable support for various video output options on Exynos SoCs.
 
diff --git a/drivers/video/exynos/exynos_mipi_dsi_common.c b/drivers/video/exynos/exynos_mipi_dsi_common.c
index ab7d61a..be67ceb 100644
--- a/drivers/video/exynos/exynos_mipi_dsi_common.c
+++ b/drivers/video/exynos/exynos_mipi_dsi_common.c
@@ -7,7 +7,6 @@
  */
 
 #include <common.h>
-#include <lcd.h>
 #include <log.h>
 #include <linux/delay.h>
 #include <linux/err.h>
diff --git a/drivers/video/imx/Kconfig b/drivers/video/imx/Kconfig
index 78eb0f2..afe950b 100644
--- a/drivers/video/imx/Kconfig
+++ b/drivers/video/imx/Kconfig
@@ -1,7 +1,7 @@
 
 config VIDEO_IPUV3
 	bool "i.MX IPUv3 Core video support"
-	depends on DM_VIDEO && (MX5 || MX6)
+	depends on VIDEO && (MX5 || MX6)
 	help
 	  This enables framebuffer driver for i.MX processors working
 	  on the IPUv3(Image Processing Unit) internal graphic processor.
diff --git a/drivers/video/ld9040.c b/drivers/video/ld9040.c
deleted file mode 100644
index a36bc2f..0000000
--- a/drivers/video/ld9040.c
+++ /dev/null
@@ -1,112 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * ld9040 AMOLED LCD panel driver.
- *
- * Copyright (C) 2012 Samsung Electronics
- * Donghwa Lee <dh09.lee@samsung.com>
- */
-
-#include <common.h>
-#include <spi.h>
-#include <linux/delay.h>
-
-static const unsigned char SEQ_USER_SETTING[] = {
-	0xF0, 0x5A, 0x5A
-};
-
-static const unsigned char SEQ_ELVSS_ON[] = {
-	0xB1, 0x0D, 0x00, 0x16,
-};
-
-static const unsigned char SEQ_GTCON[] = {
-	0xF7, 0x09, 0x00, 0x00,
-};
-
-static const unsigned char SEQ_PANEL_CONDITION[] = {
-	0xF8, 0x05, 0x65, 0x96, 0x71, 0x7D, 0x19, 0x3B,
-	0x0D, 0x19, 0x7E, 0x0D, 0xE2, 0x00, 0x00, 0x7E,
-	0x7D, 0x07, 0x07, 0x20, 0x20, 0x20, 0x02, 0x02,
-};
-
-static const unsigned char SEQ_GAMMA_SET1[] = {
-	0xF9, 0x00, 0xA7, 0xB4, 0xAE, 0xBF, 0x00, 0x91,
-	0x00, 0xB2, 0xB4, 0xAA, 0xBB, 0x00, 0xAC, 0x00,
-	0xB3, 0xB1, 0xAA, 0xBC, 0x00, 0xB3,
-};
-
-static const unsigned char SEQ_GAMMA_CTRL[] = {
-	0xFB, 0x02, 0x5A,
-};
-
-static const unsigned char SEQ_DISPCTL[] = {
-	0xF2, 0x02, 0x08, 0x08, 0x10, 0x10,
-};
-
-static const unsigned char SEQ_MANPWR[] = {
-	0xB0, 0x04,
-};
-
-static const unsigned char SEQ_PWR_CTRL[] = {
-	0xF4, 0x0A, 0x87, 0x25, 0x6A, 0x44, 0x02, 0x88,
-};
-
-static const unsigned char SEQ_SLPOUT[] = {
-	0x11,
-};
-
-static const unsigned char SEQ_DISPON[] = {
-	0x29,
-};
-
-static const unsigned char SEQ_DISPOFF[] = {
-	0x28,
-};
-
-static void ld9040_spi_write(const unsigned char *wbuf, unsigned int size_cmd)
-{
-	int i = 0;
-
-	/*
-	 * Data are transmitted in 9-bit words:
-	 * the first bit is command/parameter, the other are the value.
-	 * The value's LSB is shifted to MSB position, to be sent as 9th bit
-	 */
-
-	unsigned int data_out = 0, data_in = 0;
-	for (i = 0; i < size_cmd; i++) {
-		data_out = wbuf[i] >> 1;
-		if (i != 0)
-			data_out += 0x0080;
-		if (wbuf[i] & 0x01)
-			data_out += 0x8000;
-		spi_xfer(NULL, 9, &data_out, &data_in, SPI_XFER_BEGIN);
-	}
-}
-
-void ld9040_cfg_ldo(void)
-{
-	udelay(10);
-
-	ld9040_spi_write(SEQ_USER_SETTING,
-					ARRAY_SIZE(SEQ_USER_SETTING));
-	ld9040_spi_write(SEQ_PANEL_CONDITION,
-					ARRAY_SIZE(SEQ_PANEL_CONDITION));
-	ld9040_spi_write(SEQ_DISPCTL, ARRAY_SIZE(SEQ_DISPCTL));
-	ld9040_spi_write(SEQ_MANPWR, ARRAY_SIZE(SEQ_MANPWR));
-	ld9040_spi_write(SEQ_PWR_CTRL, ARRAY_SIZE(SEQ_PWR_CTRL));
-	ld9040_spi_write(SEQ_ELVSS_ON, ARRAY_SIZE(SEQ_ELVSS_ON));
-	ld9040_spi_write(SEQ_GTCON, ARRAY_SIZE(SEQ_GTCON));
-	ld9040_spi_write(SEQ_GAMMA_SET1, ARRAY_SIZE(SEQ_GAMMA_SET1));
-	ld9040_spi_write(SEQ_GAMMA_CTRL, ARRAY_SIZE(SEQ_GAMMA_CTRL));
-	ld9040_spi_write(SEQ_SLPOUT, ARRAY_SIZE(SEQ_SLPOUT));
-
-	udelay(120);
-}
-
-void ld9040_enable_ldo(unsigned int onoff)
-{
-	if (onoff)
-		ld9040_spi_write(SEQ_DISPON, ARRAY_SIZE(SEQ_DISPON));
-	else
-		ld9040_spi_write(SEQ_DISPOFF, ARRAY_SIZE(SEQ_DISPOFF));
-}
diff --git a/drivers/video/meson/Kconfig b/drivers/video/meson/Kconfig
index 0c9ddeb..3c2d72d 100644
--- a/drivers/video/meson/Kconfig
+++ b/drivers/video/meson/Kconfig
@@ -6,7 +6,7 @@
 
 config VIDEO_MESON
 	bool "Enable Amlogic Meson video support"
-	depends on DM_VIDEO
+	depends on VIDEO
 	select DISPLAY
 	help
 	  Enable Amlogic Meson Video Processing Unit video support.
diff --git a/drivers/video/nexell_display.c b/drivers/video/nexell_display.c
index 090fd6e..5595796 100644
--- a/drivers/video/nexell_display.c
+++ b/drivers/video/nexell_display.c
@@ -16,7 +16,6 @@
 #include <linux/compat.h>
 #include <linux/err.h>
 #include <video.h>		/* For struct video_uc_plat */
-#include <lcd.h>
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <asm/arch/display.h>
@@ -481,56 +480,6 @@
 	return NULL;
 }
 
-#if defined CONFIG_LCD
-
-/* default lcd */
-struct vidinfo panel_info = {
-	.vl_col = 320, .vl_row = 240, .vl_bpix = 32,
-};
-
-void lcd_ctrl_init(void *lcdbase)
-{
-	vidinfo_t *pi = &panel_info;
-	struct nx_display_dev *dp;
-	int bpix;
-
-	dp = nx_display_setup();
-	if (!dp)
-		return NULL;
-
-	switch (dp->depth) {
-	case 2:
-		bpix = LCD_COLOR16;
-		break;
-	case 3:
-	case 4:
-		bpix = LCD_COLOR32;
-		break;
-	default:
-		printf("fail : not support LCD bit per pixel %d\n",
-		       dp->depth * 8);
-		return NULL;
-	}
-
-	dp->panel_info = pi;
-
-	/* set resolution with config */
-	pi->vl_bpix = bpix;
-	pi->vl_col = dp->fb_plane->width;
-	pi->vl_row = dp->fb_plane->height;
-	pi->priv = dp;
-	gd->fb_base = dp->fb_addr;
-}
-
-void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue)
-{
-}
-
-__weak void lcd_enable(void)
-{
-}
-#endif
-
 static int nx_display_probe(struct udevice *dev)
 {
 	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
@@ -593,7 +542,7 @@
 
 	/*
 	 * set environment variable "fb_addr" (frame buffer address), required
-	 * for splash image, which is not set if CONFIG_DM_VIDEO is enabled).
+	 * for splash image, which is not set if CONFIG_VIDEO is enabled).
 	 */
 	sprintf(addr, "0x%x", dp->fb_addr);
 	debug("%s(): env_set(\"fb_addr\", %s) ...\n", __func__, addr);
diff --git a/drivers/video/rockchip/Kconfig b/drivers/video/rockchip/Kconfig
index 0ade631..b038663 100644
--- a/drivers/video/rockchip/Kconfig
+++ b/drivers/video/rockchip/Kconfig
@@ -10,7 +10,7 @@
 
 menuconfig VIDEO_ROCKCHIP
 	bool "Enable Rockchip Video Support"
-	depends on DM_VIDEO
+	depends on VIDEO
 	help
 	  Rockchip SoCs provide video output capabilities for High-Definition
 	  Multimedia Interface (HDMI), Low-voltage Differential Signalling
diff --git a/drivers/video/simplefb.c b/drivers/video/simplefb.c
index 2b0d883..235ec76 100644
--- a/drivers/video/simplefb.c
+++ b/drivers/video/simplefb.c
@@ -43,7 +43,11 @@
 
 	uc_priv->xsize = fdtdec_get_uint(blob, node, "width", 0);
 	uc_priv->ysize = fdtdec_get_uint(blob, node, "height", 0);
-	uc_priv->rot = 0;
+	uc_priv->rot = fdtdec_get_uint(blob, node, "rot", 0);
+	if (uc_priv->rot > 3) {
+		log_debug("%s: invalid rot\n", __func__);
+		return log_msg_ret("rot", -EINVAL);
+	}
 
 	format = fdt_getprop(blob, node, "format", NULL);
 	debug("%s: %dx%d@%s\n", __func__, uc_priv->xsize, uc_priv->ysize, format);
diff --git a/drivers/video/stm32/Kconfig b/drivers/video/stm32/Kconfig
index 95d51bb..4806606 100644
--- a/drivers/video/stm32/Kconfig
+++ b/drivers/video/stm32/Kconfig
@@ -7,7 +7,7 @@
 
 menuconfig VIDEO_STM32
 	bool "Enable STM32 video support"
-	depends on DM_VIDEO
+	depends on VIDEO
 	help
 	  STM32 supports many video output options including RGB and
 	  DSI. This option enables these supports which can be used on
diff --git a/drivers/video/tegra124/display.c b/drivers/video/tegra124/display.c
index f642b3b..78ab3f9 100644
--- a/drivers/video/tegra124/display.c
+++ b/drivers/video/tegra124/display.c
@@ -12,7 +12,6 @@
 #include <errno.h>
 #include <display.h>
 #include <edid.h>
-#include <lcd.h>
 #include <log.h>
 #include <part.h>
 #include <video.h>
diff --git a/drivers/video/ti/Kconfig b/drivers/video/ti/Kconfig
deleted file mode 100644
index 3081e9e..0000000
--- a/drivers/video/ti/Kconfig
+++ /dev/null
@@ -1,8 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0+
-#
-# Copyright (C) 2020 Dario Binacchi <dariobin@libero.it>
-#
-config AM335X_LCD
-	bool "Enable AM335x video support"
-	help
-	   Supports video output to an attached LCD panel.
diff --git a/drivers/video/ti/Makefile b/drivers/video/ti/Makefile
deleted file mode 100644
index ddddd59..0000000
--- a/drivers/video/ti/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0+
-#
-# Copyright (C) 2020 Dario Binacchi <dariobin@libero.it>
-#
-
-ifdef CONFIG_DM_VIDEO
-obj-$(CONFIG_AM335X_LCD) += tilcdc.o tilcdc-panel.o
-else
-obj-$(CONFIG_AM335X_LCD) += am335x-fb.o
-endif
diff --git a/drivers/video/ti/am335x-fb.c b/drivers/video/ti/am335x-fb.c
deleted file mode 100644
index 680ea47..0000000
--- a/drivers/video/ti/am335x-fb.c
+++ /dev/null
@@ -1,318 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2013-2018 Hannes Schmelzer <oe5hpm@oevsv.at>
- * B&R Industrial Automation GmbH - http://www.br-automation.com
- * Copyright (C) 2020 Dario Binacchi <dariobin@libero.it>
- *
- * minimal framebuffer driver for TI's AM335x SoC to be compatible with
- * Wolfgang Denk's LCD-Framework (CONFIG_LCD, common/lcd.c)
- *
- * - supporting 16/24/32bit RGB/TFT raster Mode (not using palette)
- * - sets up LCD controller as in 'am335x_lcdpanel' struct given
- * - starts output DMA from gd->fb_base buffer
- */
-#include <common.h>
-#include <lcd.h>
-#include <log.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/omap.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/global_data.h>
-#include <asm/io.h>
-#include <linux/delay.h>
-#include <linux/err.h>
-#include "am335x-fb.h"
-
-#define LCDC_FMAX				200000000
-
-/* LCD Control Register */
-#define LCDC_CTRL_CLK_DIVISOR_MASK		GENMASK(15, 8)
-#define LCDC_CTRL_RASTER_MODE			BIT(0)
-#define LCDC_CTRL_CLK_DIVISOR(x)		(((x) & GENMASK(7, 0)) << 8)
-/* LCD Clock Enable Register */
-#define LCDC_CLKC_ENABLE_CORECLKEN		BIT(0)
-#define LCDC_CLKC_ENABLE_LIDDCLKEN		BIT(1)
-#define LCDC_CLKC_ENABLE_DMACLKEN		BIT(2)
-/* LCD DMA Control Register */
-#define LCDC_DMA_CTRL_BURST_SIZE(x)		(((x) & GENMASK(2, 0)) << 4)
-#define LCDC_DMA_CTRL_BURST_1			0x0
-#define LCDC_DMA_CTRL_BURST_2			0x1
-#define LCDC_DMA_CTRL_BURST_4			0x2
-#define LCDC_DMA_CTRL_BURST_8			0x3
-#define LCDC_DMA_CTRL_BURST_16			0x4
-#define LCDC_DMA_CTRL_FIFO_TH(x)		(((x) & GENMASK(2, 0)) << 8)
-/* LCD Timing_0 Register */
-#define LCDC_RASTER_TIMING_0_HORMSB(x)	((((x) - 1) & BIT(10)) >> 7)
-#define LCDC_RASTER_TIMING_0_HORLSB(x) (((((x) >> 4) - 1) & GENMASK(5, 0)) << 4)
-#define LCDC_RASTER_TIMING_0_HSWLSB(x)	((((x) - 1) & GENMASK(5, 0)) << 10)
-#define LCDC_RASTER_TIMING_0_HFPLSB(x)	((((x) - 1) & GENMASK(7, 0)) << 16)
-#define LCDC_RASTER_TIMING_0_HBPLSB(x)	((((x) - 1) & GENMASK(7, 0)) << 24)
-/* LCD Timing_1 Register */
-#define LCDC_RASTER_TIMING_1_VERLSB(x)		(((x) - 1) & GENMASK(9, 0))
-#define LCDC_RASTER_TIMING_1_VSW(x)	((((x) - 1) & GENMASK(5, 0)) << 10)
-#define LCDC_RASTER_TIMING_1_VFP(x)		(((x) & GENMASK(7, 0)) << 16)
-#define LCDC_RASTER_TIMING_1_VBP(x)		(((x) & GENMASK(7, 0)) << 24)
-/* LCD Timing_2 Register */
-#define LCDC_RASTER_TIMING_2_HFPMSB(x)	((((x) - 1) & GENMASK(9, 8)) >> 8)
-#define LCDC_RASTER_TIMING_2_HBPMSB(x)	((((x) - 1) & GENMASK(9, 8)) >> 4)
-#define LCDC_RASTER_TIMING_2_ACB(x)		(((x) & GENMASK(7, 0)) << 8)
-#define LCDC_RASTER_TIMING_2_ACBI(x)		(((x) & GENMASK(3, 0)) << 16)
-#define LCDC_RASTER_TIMING_2_VSYNC_INVERT	BIT(20)
-#define LCDC_RASTER_TIMING_2_HSYNC_INVERT	BIT(21)
-#define LCDC_RASTER_TIMING_2_PXCLK_INVERT	BIT(22)
-#define LCDC_RASTER_TIMING_2_DE_INVERT		BIT(23)
-#define LCDC_RASTER_TIMING_2_HSVS_RISEFALL	BIT(24)
-#define LCDC_RASTER_TIMING_2_HSVS_CONTROL	BIT(25)
-#define LCDC_RASTER_TIMING_2_VERMSB(x)		((((x) - 1) & BIT(10)) << 16)
-#define LCDC_RASTER_TIMING_2_HSWMSB(x)	((((x) - 1) & GENMASK(9, 6)) << 21)
-/* LCD Raster Ctrl Register */
-#define LCDC_RASTER_CTRL_ENABLE			BIT(0)
-#define LCDC_RASTER_CTRL_TFT_MODE		BIT(7)
-#define LCDC_RASTER_CTRL_DATA_ORDER		BIT(8)
-#define LCDC_RASTER_CTRL_REQDLY(x)		(((x) & GENMASK(7, 0)) << 12)
-#define LCDC_RASTER_CTRL_PALMODE_RAWDATA	(0x02 << 20)
-#define LCDC_RASTER_CTRL_TFT_ALT_ENABLE		BIT(23)
-#define LCDC_RASTER_CTRL_TFT_24BPP_MODE		BIT(25)
-#define LCDC_RASTER_CTRL_TFT_24BPP_UNPACK	BIT(26)
-
-struct am335x_lcdhw {
-	unsigned int		pid;			/* 0x00 */
-	unsigned int		ctrl;			/* 0x04 */
-	unsigned int		gap0;			/* 0x08 */
-	unsigned int		lidd_ctrl;		/* 0x0C */
-	unsigned int		lidd_cs0_conf;		/* 0x10 */
-	unsigned int		lidd_cs0_addr;		/* 0x14 */
-	unsigned int		lidd_cs0_data;		/* 0x18 */
-	unsigned int		lidd_cs1_conf;		/* 0x1C */
-	unsigned int		lidd_cs1_addr;		/* 0x20 */
-	unsigned int		lidd_cs1_data;		/* 0x24 */
-	unsigned int		raster_ctrl;		/* 0x28 */
-	unsigned int		raster_timing0;		/* 0x2C */
-	unsigned int		raster_timing1;		/* 0x30 */
-	unsigned int		raster_timing2;		/* 0x34 */
-	unsigned int		raster_subpanel;	/* 0x38 */
-	unsigned int		raster_subpanel2;	/* 0x3C */
-	unsigned int		lcddma_ctrl;		/* 0x40 */
-	unsigned int		lcddma_fb0_base;	/* 0x44 */
-	unsigned int		lcddma_fb0_ceiling;	/* 0x48 */
-	unsigned int		lcddma_fb1_base;	/* 0x4C */
-	unsigned int		lcddma_fb1_ceiling;	/* 0x50 */
-	unsigned int		sysconfig;		/* 0x54 */
-	unsigned int		irqstatus_raw;		/* 0x58 */
-	unsigned int		irqstatus;		/* 0x5C */
-	unsigned int		irqenable_set;		/* 0x60 */
-	unsigned int		irqenable_clear;	/* 0x64 */
-	unsigned int		gap1;			/* 0x68 */
-	unsigned int		clkc_enable;		/* 0x6C */
-	unsigned int		clkc_reset;		/* 0x70 */
-};
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if !defined(LCD_CNTL_BASE)
-#error "hw-base address of LCD-Controller (LCD_CNTL_BASE) not defined!"
-#endif
-
-/* Macro definitions */
-#define FBSIZE(x)	(((x)->hactive * (x)->vactive * (x)->bpp) >> 3)
-
-#define LCDC_RASTER_TIMING_2_INVMASK(x)		((x) & GENMASK(25, 20))
-
-static struct am335x_lcdhw *lcdhw = (void *)LCD_CNTL_BASE;
-
-int lcd_get_size(int *line_length)
-{
-	*line_length = (panel_info.vl_col * NBITS(panel_info.vl_bpix)) / 8;
-	return *line_length * panel_info.vl_row + 0x20;
-}
-
-struct dpll_data {
-	unsigned long rounded_rate;
-	u16 rounded_m;
-	u8 rounded_n;
-	u8 rounded_div;
-};
-
-/**
- * am335x_dpll_round_rate() - Round a target rate for an OMAP DPLL
- *
- * @dpll_data: struct dpll_data pointer for the DPLL
- * @rate:      New DPLL clock rate
- * Return: rounded rate and the computed m, n and div values in the dpll_data
- *         structure, or -ve error code.
- */
-static ulong am335x_dpll_round_rate(struct dpll_data *dd, ulong rate)
-{
-	unsigned int m, n, d;
-	unsigned long rounded_rate;
-	int err, err_r;
-
-	dd->rounded_rate = -EFAULT;
-	err = rate;
-	err_r = err;
-
-	for (d = 2; err && d < 255; d++) {
-		for (m = 2; m < 2047; m++) {
-			if ((V_OSCK * m) < (rate * d))
-				continue;
-
-			n = (V_OSCK * m) / (rate * d);
-			if (n > 127)
-				break;
-
-			if (((V_OSCK * m) / n) > LCDC_FMAX)
-				break;
-
-			rounded_rate = (V_OSCK * m) / n / d;
-			err = abs(rounded_rate - rate);
-			if (err < err_r) {
-				err_r = err;
-				dd->rounded_rate = rounded_rate;
-				dd->rounded_m = m;
-				dd->rounded_n = n;
-				dd->rounded_div = d;
-				if (err == 0)
-					break;
-			}
-		}
-	}
-
-	debug("DPLL display: best error %d Hz (M %d, N %d, DIV %d)\n",
-	      err_r, dd->rounded_m, dd->rounded_n, dd->rounded_div);
-
-	return dd->rounded_rate;
-}
-
-/**
- * am335x_fb_set_pixel_clk_rate() - Set pixel clock rate.
- *
- * @am335x_lcdhw: Base address of the LCD controller registers.
- * @rate:         New clock rate in Hz.
- * Return: new rate, or -ve error code.
- */
-static ulong am335x_fb_set_pixel_clk_rate(struct am335x_lcdhw *regs, ulong rate)
-{
-	struct dpll_params dpll_disp = { 1, 0, 1, -1, -1, -1, -1 };
-	struct dpll_data dd;
-	ulong round_rate;
-	u32 reg;
-
-	round_rate = am335x_dpll_round_rate(&dd, rate);
-	if (IS_ERR_VALUE(round_rate))
-		return round_rate;
-
-	dpll_disp.m = dd.rounded_m;
-	dpll_disp.n = dd.rounded_n;
-	do_setup_dpll(&dpll_disp_regs, &dpll_disp);
-
-	reg = readl(&regs->ctrl) & ~LCDC_CTRL_CLK_DIVISOR_MASK;
-	reg |= LCDC_CTRL_CLK_DIVISOR(dd.rounded_div);
-	writel(reg, &regs->ctrl);
-	return round_rate;
-}
-
-int am335xfb_init(struct am335x_lcdpanel *panel)
-{
-	u32 raster_ctrl = 0;
-	struct cm_dpll *const cmdpll = (struct cm_dpll *)CM_DPLL;
-	ulong rate;
-	u32 reg;
-
-	if (gd->fb_base == 0) {
-		printf("ERROR: no valid fb_base stored in GLOBAL_DATA_PTR!\n");
-		return -1;
-	}
-	if (panel == NULL) {
-		printf("ERROR: missing ptr to am335x_lcdpanel!\n");
-		return -1;
-	}
-
-	/* We can already set the bits for the raster_ctrl in this check */
-	switch (panel->bpp) {
-	case 16:
-		break;
-	case 32:
-		raster_ctrl |= LCDC_RASTER_CTRL_TFT_24BPP_UNPACK;
-		/* fallthrough */
-	case 24:
-		raster_ctrl |= LCDC_RASTER_CTRL_TFT_24BPP_MODE;
-		break;
-	default:
-		pr_err("am335x-fb: invalid bpp value: %d\n", panel->bpp);
-		return -1;
-	}
-
-	/* check given clock-frequency */
-	if (panel->pxl_clk > (LCDC_FMAX / 2)) {
-		pr_err("am335x-fb: requested pxl-clk: %d not supported!\n",
-		       panel->pxl_clk);
-		return -1;
-	}
-
-	debug("setting up LCD-Controller for %dx%dx%d (hfp=%d,hbp=%d,hsw=%d / ",
-	      panel->hactive, panel->vactive, panel->bpp,
-	      panel->hfp, panel->hbp, panel->hsw);
-	debug("vfp=%d,vbp=%d,vsw=%d / clk=%d)\n",
-	      panel->vfp, panel->vfp, panel->vsw, panel->pxl_clk);
-	debug("using frambuffer at 0x%08x with size %d.\n",
-	      (unsigned int)gd->fb_base, FBSIZE(panel));
-
-	rate = am335x_fb_set_pixel_clk_rate(lcdhw, panel->pxl_clk);
-	if (IS_ERR_VALUE(rate))
-		return rate;
-
-	/* clock source for LCDC from dispPLL M2 */
-	writel(0x0, &cmdpll->clklcdcpixelclk);
-
-	/* palette default entry */
-	memset((void *)gd->fb_base, 0, 0x20);
-	*(unsigned int *)gd->fb_base = 0x4000;
-	/* point fb behind palette */
-	gd->fb_base += 0x20;
-
-	/* turn ON display through powercontrol function if accessible */
-	if (panel->panel_power_ctrl != NULL)
-		panel->panel_power_ctrl(1);
-
-	debug("am335x-fb: wait for stable power ...\n");
-	mdelay(panel->pup_delay);
-	lcdhw->clkc_enable = LCDC_CLKC_ENABLE_CORECLKEN |
-		LCDC_CLKC_ENABLE_LIDDCLKEN | LCDC_CLKC_ENABLE_DMACLKEN;
-	lcdhw->raster_ctrl = 0;
-
-	reg = lcdhw->ctrl & LCDC_CTRL_CLK_DIVISOR_MASK;
-	reg |= LCDC_CTRL_RASTER_MODE;
-	lcdhw->ctrl = reg;
-
-	lcdhw->lcddma_fb0_base = gd->fb_base;
-	lcdhw->lcddma_fb0_ceiling = gd->fb_base + FBSIZE(panel);
-	lcdhw->lcddma_fb1_base = gd->fb_base;
-	lcdhw->lcddma_fb1_ceiling = gd->fb_base + FBSIZE(panel);
-	lcdhw->lcddma_ctrl = LCDC_DMA_CTRL_BURST_SIZE(LCDC_DMA_CTRL_BURST_16);
-
-	lcdhw->raster_timing0 = LCDC_RASTER_TIMING_0_HORLSB(panel->hactive) |
-				LCDC_RASTER_TIMING_0_HORMSB(panel->hactive) |
-				LCDC_RASTER_TIMING_0_HFPLSB(panel->hfp) |
-				LCDC_RASTER_TIMING_0_HBPLSB(panel->hbp) |
-				LCDC_RASTER_TIMING_0_HSWLSB(panel->hsw);
-	lcdhw->raster_timing1 = LCDC_RASTER_TIMING_1_VBP(panel->vbp) |
-				LCDC_RASTER_TIMING_1_VFP(panel->vfp) |
-				LCDC_RASTER_TIMING_1_VSW(panel->vsw) |
-				LCDC_RASTER_TIMING_1_VERLSB(panel->vactive);
-	lcdhw->raster_timing2 = LCDC_RASTER_TIMING_2_HSWMSB(panel->hsw) |
-				LCDC_RASTER_TIMING_2_VERMSB(panel->vactive) |
-				LCDC_RASTER_TIMING_2_INVMASK(panel->pol) |
-				LCDC_RASTER_TIMING_2_HBPMSB(panel->hbp) |
-				LCDC_RASTER_TIMING_2_HFPMSB(panel->hfp) |
-				0x0000FF00;	/* clk cycles for ac-bias */
-	lcdhw->raster_ctrl =	raster_ctrl |
-				LCDC_RASTER_CTRL_PALMODE_RAWDATA |
-				LCDC_RASTER_CTRL_TFT_MODE |
-				LCDC_RASTER_CTRL_ENABLE;
-
-	debug("am335x-fb: waiting picture to be stable.\n.");
-	mdelay(panel->pon_delay);
-
-	return 0;
-}
diff --git a/drivers/video/ti/am335x-fb.h b/drivers/video/ti/am335x-fb.h
deleted file mode 100644
index ad9b015..0000000
--- a/drivers/video/ti/am335x-fb.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2013-2018 Hannes Schmelzer <oe5hpm@oevsv.at> -
- * B&R Industrial Automation GmbH - http://www.br-automation.com
- */
-
-#ifndef AM335X_FB_H
-#define AM335X_FB_H
-
-#define HSVS_CONTROL		BIT(25)	/*
-					 * 0 = lcd_lp and lcd_fp are driven on
-					 * opposite edges of pixel clock than
-					 * the lcd_pixel_o
-					 * 1 = lcd_lp and lcd_fp are driven
-					 * according to bit 24 Note that this
-					 * bit MUST be set to '0' for Passive
-					 * Matrix displays the edge timing is
-					 * fixed
-					 */
-#define HSVS_RISEFALL		BIT(24)	/*
-					 * 0 = lcd_lp and lcd_fp are driven on
-					 * the rising edge of pixel clock (bit
-					 * 25 must be set to 1)
-					 * 1 = lcd_lp and lcd_fp are driven on
-					 * the falling edge of pixel clock (bit
-					 * 25 must be set to 1)
-					 */
-#define DE_INVERT		BIT(23)	/*
-					 * 0 = DE is low-active
-					 * 1 = DE is high-active
-					 */
-#define PXCLK_INVERT		BIT(22)	/*
-					 * 0 = pix-clk is high-active
-					 * 1 = pic-clk is low-active
-					 */
-#define HSYNC_INVERT		BIT(21)	/*
-					 * 0 = HSYNC is active high
-					 * 1 = HSYNC is avtive low
-					 */
-#define VSYNC_INVERT		BIT(20)	/*
-					 * 0 = VSYNC is active high
-					 * 1 = VSYNC is active low
-					 */
-
-struct am335x_lcdpanel {
-	unsigned int	hactive;	/* Horizontal active area */
-	unsigned int	vactive;	/* Vertical active area */
-	unsigned int	bpp;		/* bits per pixel */
-	unsigned int	hfp;		/* Horizontal front porch */
-	unsigned int	hbp;		/* Horizontal back porch */
-	unsigned int	hsw;		/* Horizontal Sync Pulse Width */
-	unsigned int	vfp;		/* Vertical front porch */
-	unsigned int	vbp;		/* Vertical back porch */
-	unsigned int	vsw;		/* Vertical Sync Pulse Width */
-	unsigned int	pxl_clk;	/* Pixel clock */
-	unsigned int	pol;		/* polarity of sync, clock signals */
-	unsigned int	pup_delay;	/*
-					 * time in ms after power on to
-					 * initialization of lcd-controller
-					 * (VCC ramp up time)
-					 */
-	unsigned int	pon_delay;	/*
-					 * time in ms after initialization of
-					 * lcd-controller (pic stabilization)
-					 */
-	void (*panel_power_ctrl)(int);	/* fp for power on/off display */
-};
-
-int am335xfb_init(struct am335x_lcdpanel *panel);
-
-#endif  /* AM335X_FB_H */
diff --git a/drivers/video/ti/tilcdc-panel.c b/drivers/video/ti/tilcdc-panel.c
deleted file mode 100644
index df95086..0000000
--- a/drivers/video/ti/tilcdc-panel.c
+++ /dev/null
@@ -1,172 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * OMAP panel support
- *
- * Copyright (C) 2020 Dario Binacchi <dariobin@libero.it>
- */
-
-#include <common.h>
-#include <backlight.h>
-#include <clk.h>
-#include <display.h>
-#include <dm.h>
-#include <dm/device_compat.h>
-#include <log.h>
-#include <panel.h>
-#include <asm/gpio.h>
-#include <linux/err.h>
-#include "tilcdc.h"
-
-struct tilcdc_panel_priv {
-	struct tilcdc_panel_info info;
-	struct display_timing timing;
-	struct udevice *backlight;
-	struct gpio_desc enable;
-};
-
-static int tilcdc_panel_enable_backlight(struct udevice *dev)
-{
-	struct tilcdc_panel_priv *priv = dev_get_priv(dev);
-
-	if (dm_gpio_is_valid(&priv->enable))
-		dm_gpio_set_value(&priv->enable, 1);
-
-	if (priv->backlight)
-		return backlight_enable(priv->backlight);
-
-	return 0;
-}
-
-static int tilcdc_panel_set_backlight(struct udevice *dev, int percent)
-{
-	struct tilcdc_panel_priv *priv = dev_get_priv(dev);
-
-	if (dm_gpio_is_valid(&priv->enable))
-		dm_gpio_set_value(&priv->enable, 1);
-
-	if (priv->backlight)
-		return backlight_set_brightness(priv->backlight, percent);
-
-	return 0;
-}
-
-int tilcdc_panel_get_display_info(struct udevice *dev,
-				  struct tilcdc_panel_info *info)
-{
-	struct tilcdc_panel_priv *priv = dev_get_priv(dev);
-
-	memcpy(info, &priv->info, sizeof(*info));
-	return 0;
-}
-
-static int tilcdc_panel_get_display_timing(struct udevice *dev,
-					   struct display_timing *timing)
-{
-	struct tilcdc_panel_priv *priv = dev_get_priv(dev);
-
-	memcpy(timing, &priv->timing, sizeof(*timing));
-	return 0;
-}
-
-static int tilcdc_panel_remove(struct udevice *dev)
-{
-	struct tilcdc_panel_priv *priv = dev_get_priv(dev);
-
-	if (dm_gpio_is_valid(&priv->enable))
-		dm_gpio_free(dev, &priv->enable);
-
-	return 0;
-}
-
-static int tilcdc_panel_probe(struct udevice *dev)
-{
-	struct tilcdc_panel_priv *priv = dev_get_priv(dev);
-	int err;
-
-	err = uclass_get_device_by_phandle(UCLASS_PANEL_BACKLIGHT, dev,
-					   "backlight", &priv->backlight);
-	if (err)
-		dev_warn(dev, "failed to get backlight\n");
-
-	err = gpio_request_by_name(dev, "enable-gpios", 0, &priv->enable,
-				   GPIOD_IS_OUT);
-	if (err) {
-		dev_warn(dev, "failed to get enable GPIO\n");
-		if (err != -ENOENT)
-			return err;
-	}
-
-	return 0;
-}
-
-static int tilcdc_panel_of_to_plat(struct udevice *dev)
-{
-	struct tilcdc_panel_priv *priv = dev_get_priv(dev);
-	ofnode node;
-	int err;
-
-	err = ofnode_decode_display_timing(dev_ofnode(dev), 0, &priv->timing);
-	if (err) {
-		dev_err(dev, "failed to get display timing\n");
-		return err;
-	}
-
-	node = dev_read_subnode(dev, "panel-info");
-	if (!ofnode_valid(node)) {
-		dev_err(dev, "missing 'panel-info' node\n");
-		return -ENXIO;
-	}
-
-	err |= ofnode_read_u32(node, "ac-bias", &priv->info.ac_bias);
-	err |= ofnode_read_u32(node, "ac-bias-intrpt",
-			       &priv->info.ac_bias_intrpt);
-	err |= ofnode_read_u32(node, "dma-burst-sz", &priv->info.dma_burst_sz);
-	err |= ofnode_read_u32(node, "bpp", &priv->info.bpp);
-	err |= ofnode_read_u32(node, "fdd", &priv->info.fdd);
-	err |= ofnode_read_u32(node, "sync-edge", &priv->info.sync_edge);
-	err |= ofnode_read_u32(node, "sync-ctrl", &priv->info.sync_ctrl);
-	err |= ofnode_read_u32(node, "raster-order", &priv->info.raster_order);
-	err |= ofnode_read_u32(node, "fifo-th", &priv->info.fifo_th);
-	if (err) {
-		dev_err(dev, "failed to get panel info\n");
-		return err;
-	}
-
-	/* optional */
-	priv->info.tft_alt_mode = ofnode_read_bool(node, "tft-alt-mode");
-	priv->info.invert_pxl_clk = ofnode_read_bool(node, "invert-pxl-clk");
-
-	dev_dbg(dev, "LCD: %dx%d, bpp=%d, clk=%d Hz\n",
-		priv->timing.hactive.typ, priv->timing.vactive.typ,
-		priv->info.bpp, priv->timing.pixelclock.typ);
-	dev_dbg(dev, "     hbp=%d, hfp=%d, hsw=%d\n",
-		priv->timing.hback_porch.typ, priv->timing.hfront_porch.typ,
-		priv->timing.hsync_len.typ);
-	dev_dbg(dev, "     vbp=%d, vfp=%d, vsw=%d\n",
-		priv->timing.vback_porch.typ, priv->timing.vfront_porch.typ,
-		priv->timing.vsync_len.typ);
-
-	return 0;
-}
-
-static const struct panel_ops tilcdc_panel_ops = {
-	.enable_backlight = tilcdc_panel_enable_backlight,
-	.set_backlight = tilcdc_panel_set_backlight,
-	.get_display_timing = tilcdc_panel_get_display_timing,
-};
-
-static const struct udevice_id tilcdc_panel_ids[] = {
-	{.compatible = "ti,tilcdc,panel"},
-	{}
-};
-
-U_BOOT_DRIVER(tilcdc_panel) = {
-	.name = "tilcdc_panel",
-	.id = UCLASS_PANEL,
-	.of_match = tilcdc_panel_ids,
-	.ops = &tilcdc_panel_ops,
-	.of_to_plat = tilcdc_panel_of_to_plat,
-	.probe = tilcdc_panel_probe,
-	.remove = tilcdc_panel_remove,
-	.priv_auto = sizeof(struct tilcdc_panel_priv),
-};
diff --git a/drivers/video/ti/tilcdc-panel.h b/drivers/video/ti/tilcdc-panel.h
deleted file mode 100644
index 6bcfbf8..0000000
--- a/drivers/video/ti/tilcdc-panel.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2020 Dario Binacchi <dariobin@libero.it>
- */
-
-#ifndef _TILCDC_PANEL_H
-#define _TILCDC_PANEL_H
-
-#include "tilcdc.h"
-
-int tilcdc_panel_get_display_info(struct udevice *dev,
-				  struct tilcdc_panel_info *info);
-
-#endif /* _TILCDC_PANEL_H */
diff --git a/drivers/video/ti/tilcdc.c b/drivers/video/ti/tilcdc.c
deleted file mode 100644
index 90c1edd..0000000
--- a/drivers/video/ti/tilcdc.c
+++ /dev/null
@@ -1,426 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2020 Dario Binacchi <dariobin@libero.it>
- */
-
-#include <common.h>
-#include <clk.h>
-#include <dm.h>
-#include <dm/device_compat.h>
-#include <lcd.h>
-#include <log.h>
-#include <panel.h>
-#include <video.h>
-#include <asm/global_data.h>
-#include <asm/io.h>
-#include <asm/utils.h>
-#include "tilcdc.h"
-#include "tilcdc-panel.h"
-
-#define LCDC_FMAX				200000000
-
-/* LCD Control Register */
-#define LCDC_CTRL_CLK_DIVISOR_MASK		GENMASK(15, 8)
-#define LCDC_CTRL_RASTER_MODE			BIT(0)
-#define LCDC_CTRL_CLK_DIVISOR(x)		(((x) & GENMASK(7, 0)) << 8)
-/* LCD Clock Enable Register */
-#define LCDC_CLKC_ENABLE_CORECLKEN		BIT(0)
-#define LCDC_CLKC_ENABLE_LIDDCLKEN		BIT(1)
-#define LCDC_CLKC_ENABLE_DMACLKEN		BIT(2)
-/* LCD DMA Control Register */
-#define LCDC_DMA_CTRL_BURST_SIZE(x)		(((x) & GENMASK(2, 0)) << 4)
-#define LCDC_DMA_CTRL_BURST_1			0x0
-#define LCDC_DMA_CTRL_BURST_2			0x1
-#define LCDC_DMA_CTRL_BURST_4			0x2
-#define LCDC_DMA_CTRL_BURST_8			0x3
-#define LCDC_DMA_CTRL_BURST_16			0x4
-#define LCDC_DMA_CTRL_FIFO_TH(x)		(((x) & GENMASK(2, 0)) << 8)
-/* LCD Timing_0 Register */
-#define LCDC_RASTER_TIMING_0_HORMSB(x)	((((x) - 1) & BIT(10)) >> 7)
-#define LCDC_RASTER_TIMING_0_HORLSB(x) (((((x) >> 4) - 1) & GENMASK(5, 0)) << 4)
-#define LCDC_RASTER_TIMING_0_HSWLSB(x)	((((x) - 1) & GENMASK(5, 0)) << 10)
-#define LCDC_RASTER_TIMING_0_HFPLSB(x)	((((x) - 1) & GENMASK(7, 0)) << 16)
-#define LCDC_RASTER_TIMING_0_HBPLSB(x)	((((x) - 1) & GENMASK(7, 0)) << 24)
-/* LCD Timing_1 Register */
-#define LCDC_RASTER_TIMING_1_VERLSB(x)		(((x) - 1) & GENMASK(9, 0))
-#define LCDC_RASTER_TIMING_1_VSW(x)	((((x) - 1) & GENMASK(5, 0)) << 10)
-#define LCDC_RASTER_TIMING_1_VFP(x)		(((x) & GENMASK(7, 0)) << 16)
-#define LCDC_RASTER_TIMING_1_VBP(x)		(((x) & GENMASK(7, 0)) << 24)
-/* LCD Timing_2 Register */
-#define LCDC_RASTER_TIMING_2_HFPMSB(x)	((((x) - 1) & GENMASK(9, 8)) >> 8)
-#define LCDC_RASTER_TIMING_2_HBPMSB(x)	((((x) - 1) & GENMASK(9, 8)) >> 4)
-#define LCDC_RASTER_TIMING_2_ACB(x)		(((x) & GENMASK(7, 0)) << 8)
-#define LCDC_RASTER_TIMING_2_ACBI(x)		(((x) & GENMASK(3, 0)) << 16)
-#define LCDC_RASTER_TIMING_2_VSYNC_INVERT	BIT(20)
-#define LCDC_RASTER_TIMING_2_HSYNC_INVERT	BIT(21)
-#define LCDC_RASTER_TIMING_2_PXCLK_INVERT	BIT(22)
-#define LCDC_RASTER_TIMING_2_DE_INVERT		BIT(23)
-#define LCDC_RASTER_TIMING_2_HSVS_RISEFALL	BIT(24)
-#define LCDC_RASTER_TIMING_2_HSVS_CONTROL	BIT(25)
-#define LCDC_RASTER_TIMING_2_VERMSB(x)		((((x) - 1) & BIT(10)) << 16)
-#define LCDC_RASTER_TIMING_2_HSWMSB(x)	((((x) - 1) & GENMASK(9, 6)) << 21)
-/* LCD Raster Ctrl Register */
-#define LCDC_RASTER_CTRL_ENABLE			BIT(0)
-#define LCDC_RASTER_CTRL_TFT_MODE		BIT(7)
-#define LCDC_RASTER_CTRL_DATA_ORDER		BIT(8)
-#define LCDC_RASTER_CTRL_REQDLY(x)		(((x) & GENMASK(7, 0)) << 12)
-#define LCDC_RASTER_CTRL_PALMODE_RAWDATA	(0x02 << 20)
-#define LCDC_RASTER_CTRL_TFT_ALT_ENABLE		BIT(23)
-#define LCDC_RASTER_CTRL_TFT_24BPP_MODE		BIT(25)
-#define LCDC_RASTER_CTRL_TFT_24BPP_UNPACK	BIT(26)
-
-enum {
-	LCDC_MAX_WIDTH = 2048,
-	LCDC_MAX_HEIGHT = 2048,
-	LCDC_MAX_LOG2_BPP = VIDEO_BPP32,
-};
-
-struct tilcdc_regs {
-	u32 pid;
-	u32 ctrl;
-	u32 gap0;
-	u32 lidd_ctrl;
-	u32 lidd_cs0_conf;
-	u32 lidd_cs0_addr;
-	u32 lidd_cs0_data;
-	u32 lidd_cs1_conf;
-	u32 lidd_cs1_addr;
-	u32 lidd_cs1_data;
-	u32 raster_ctrl;
-	u32 raster_timing0;
-	u32 raster_timing1;
-	u32 raster_timing2;
-	u32 raster_subpanel;
-	u32 raster_subpanel2;
-	u32 lcddma_ctrl;
-	u32 lcddma_fb0_base;
-	u32 lcddma_fb0_ceiling;
-	u32 lcddma_fb1_base;
-	u32 lcddma_fb1_ceiling;
-	u32 sysconfig;
-	u32 irqstatus_raw;
-	u32 irqstatus;
-	u32 irqenable_set;
-	u32 irqenable_clear;
-	u32 gap1;
-	u32 clkc_enable;
-	u32 clkc_reset;
-};
-
-struct tilcdc_priv {
-	struct tilcdc_regs *regs;
-	struct clk gclk;
-	struct clk dpll_m2_clk;
-};
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static ulong tilcdc_set_pixel_clk_rate(struct udevice *dev, ulong rate)
-{
-	struct tilcdc_priv *priv = dev_get_priv(dev);
-	struct tilcdc_regs *regs = priv->regs;
-	ulong mult_rate, mult_round_rate, best_err, err;
-	u32 v;
-	int div, i;
-
-	best_err = rate;
-	div = 0;
-	for (i = 2; i <= 255; i++) {
-		mult_rate = rate * i;
-		mult_round_rate = clk_round_rate(&priv->gclk, mult_rate);
-		if (IS_ERR_VALUE(mult_round_rate))
-			return mult_round_rate;
-
-		err = mult_rate - mult_round_rate;
-		if (err < best_err) {
-			best_err = err;
-			div = i;
-			if (err == 0)
-				break;
-		}
-	}
-
-	if (div == 0) {
-		dev_err(dev, "failed to find a divisor\n");
-		return -EFAULT;
-	}
-
-	mult_rate = clk_set_rate(&priv->gclk, rate * div);
-	v = readl(&regs->ctrl) & ~LCDC_CTRL_CLK_DIVISOR_MASK;
-	v |= LCDC_CTRL_CLK_DIVISOR(div);
-	writel(v, &regs->ctrl);
-	rate = mult_rate / div;
-	dev_dbg(dev, "rate=%ld, div=%d, err=%ld\n", rate, div, err);
-	return rate;
-}
-
-static int tilcdc_remove(struct udevice *dev)
-{
-	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
-	struct tilcdc_priv *priv = dev_get_priv(dev);
-
-	uc_plat->base -= 0x20;
-	uc_plat->size += 0x20;
-	clk_release_all(&priv->gclk, 1);
-	clk_release_all(&priv->dpll_m2_clk, 1);
-	return 0;
-}
-
-static int tilcdc_probe(struct udevice *dev)
-{
-	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
-	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
-	struct tilcdc_priv *priv = dev_get_priv(dev);
-	struct tilcdc_regs *regs = priv->regs;
-	struct udevice *panel, *clk_dev;
-	struct tilcdc_panel_info info;
-	struct display_timing timing;
-	ulong rate;
-	u32 reg;
-	int err;
-
-	/* Before relocation we don't need to do anything */
-	if (!(gd->flags & GD_FLG_RELOC))
-		return 0;
-
-	err = uclass_get_device(UCLASS_PANEL, 0, &panel);
-	if (err) {
-		dev_err(dev, "failed to get panel\n");
-		return err;
-	}
-
-	err = panel_get_display_timing(panel, &timing);
-	if (err) {
-		dev_err(dev, "failed to get display timing\n");
-		return err;
-	}
-
-	if (timing.pixelclock.typ > (LCDC_FMAX / 2)) {
-		dev_err(dev, "invalid display clock-frequency: %d Hz\n",
-			timing.pixelclock.typ);
-		return -EINVAL;
-	}
-
-	if (timing.hactive.typ > LCDC_MAX_WIDTH)
-		timing.hactive.typ = LCDC_MAX_WIDTH;
-
-	if (timing.vactive.typ > LCDC_MAX_HEIGHT)
-		timing.vactive.typ = LCDC_MAX_HEIGHT;
-
-	err = tilcdc_panel_get_display_info(panel, &info);
-	if (err) {
-		dev_err(dev, "failed to get panel info\n");
-		return err;
-	}
-
-	switch (info.bpp) {
-	case 16:
-	case 24:
-	case 32:
-		break;
-	default:
-		dev_err(dev, "invalid seting, bpp: %d\n", info.bpp);
-		return -EINVAL;
-	}
-
-	switch (info.dma_burst_sz) {
-	case 1:
-	case 2:
-	case 4:
-	case 8:
-	case 16:
-		break;
-	default:
-		dev_err(dev, "invalid setting, dma-burst-sz: %d\n",
-			info.dma_burst_sz);
-		return -EINVAL;
-	}
-
-	err = uclass_get_device_by_name(UCLASS_CLK, "lcd_gclk@534", &clk_dev);
-	if (err) {
-		dev_err(dev, "failed to get lcd_gclk device\n");
-		return err;
-	}
-
-	err = clk_request(clk_dev, &priv->gclk);
-	if (err) {
-		dev_err(dev, "failed to get %s clock\n", clk_dev->name);
-		return err;
-	}
-
-	rate = tilcdc_set_pixel_clk_rate(dev, timing.pixelclock.typ);
-	if (IS_ERR_VALUE(rate)) {
-		dev_err(dev, "failed to set pixel clock rate\n");
-		return rate;
-	}
-
-	err = uclass_get_device_by_name(UCLASS_CLK, "dpll_disp_m2_ck@4a4",
-					&clk_dev);
-	if (err) {
-		dev_err(dev, "failed to get dpll_disp_m2 clock device\n");
-		return err;
-	}
-
-	err = clk_request(clk_dev, &priv->dpll_m2_clk);
-	if (err) {
-		dev_err(dev, "failed to get %s clock\n", clk_dev->name);
-		return err;
-	}
-
-	err = clk_set_parent(&priv->gclk, &priv->dpll_m2_clk);
-	if (err) {
-		dev_err(dev, "failed to set %s clock as %s's parent\n",
-			priv->dpll_m2_clk.dev->name, priv->gclk.dev->name);
-		return err;
-	}
-
-	/* palette default entry */
-	memset((void *)uc_plat->base, 0, 0x20);
-	*(unsigned int *)uc_plat->base = 0x4000;
-	/* point fb behind palette */
-	uc_plat->base += 0x20;
-	uc_plat->size -= 0x20;
-
-	writel(LCDC_CLKC_ENABLE_CORECLKEN | LCDC_CLKC_ENABLE_LIDDCLKEN |
-	       LCDC_CLKC_ENABLE_DMACLKEN, &regs->clkc_enable);
-	writel(0, &regs->raster_ctrl);
-
-	reg = readl(&regs->ctrl) & LCDC_CTRL_CLK_DIVISOR_MASK;
-	reg |= LCDC_CTRL_RASTER_MODE;
-	writel(reg, &regs->ctrl);
-
-	reg = (timing.hactive.typ * timing.vactive.typ * info.bpp) >> 3;
-	reg += uc_plat->base;
-	writel(uc_plat->base, &regs->lcddma_fb0_base);
-	writel(reg, &regs->lcddma_fb0_ceiling);
-	writel(uc_plat->base, &regs->lcddma_fb1_base);
-	writel(reg, &regs->lcddma_fb1_ceiling);
-
-	reg = LCDC_DMA_CTRL_FIFO_TH(info.fifo_th);
-	switch (info.dma_burst_sz) {
-	case 1:
-		reg |= LCDC_DMA_CTRL_BURST_SIZE(LCDC_DMA_CTRL_BURST_1);
-		break;
-	case 2:
-		reg |= LCDC_DMA_CTRL_BURST_SIZE(LCDC_DMA_CTRL_BURST_2);
-		break;
-	case 4:
-		reg |= LCDC_DMA_CTRL_BURST_SIZE(LCDC_DMA_CTRL_BURST_4);
-		break;
-	case 8:
-		reg |= LCDC_DMA_CTRL_BURST_SIZE(LCDC_DMA_CTRL_BURST_8);
-		break;
-	case 16:
-		reg |= LCDC_DMA_CTRL_BURST_SIZE(LCDC_DMA_CTRL_BURST_16);
-		break;
-	}
-
-	writel(reg, &regs->lcddma_ctrl);
-
-	writel(LCDC_RASTER_TIMING_0_HORLSB(timing.hactive.typ) |
-	       LCDC_RASTER_TIMING_0_HORMSB(timing.hactive.typ) |
-	       LCDC_RASTER_TIMING_0_HFPLSB(timing.hfront_porch.typ) |
-	       LCDC_RASTER_TIMING_0_HBPLSB(timing.hback_porch.typ) |
-	       LCDC_RASTER_TIMING_0_HSWLSB(timing.hsync_len.typ),
-	       &regs->raster_timing0);
-
-	writel(LCDC_RASTER_TIMING_1_VBP(timing.vback_porch.typ) |
-	       LCDC_RASTER_TIMING_1_VFP(timing.vfront_porch.typ) |
-	       LCDC_RASTER_TIMING_1_VSW(timing.vsync_len.typ) |
-	       LCDC_RASTER_TIMING_1_VERLSB(timing.vactive.typ),
-	       &regs->raster_timing1);
-
-	reg = LCDC_RASTER_TIMING_2_ACB(info.ac_bias) |
-		LCDC_RASTER_TIMING_2_ACBI(info.ac_bias_intrpt) |
-		LCDC_RASTER_TIMING_2_HSWMSB(timing.hsync_len.typ) |
-		LCDC_RASTER_TIMING_2_VERMSB(timing.vactive.typ) |
-		LCDC_RASTER_TIMING_2_HBPMSB(timing.hback_porch.typ) |
-		LCDC_RASTER_TIMING_2_HFPMSB(timing.hfront_porch.typ);
-
-	if (timing.flags & DISPLAY_FLAGS_VSYNC_LOW)
-		reg |= LCDC_RASTER_TIMING_2_VSYNC_INVERT;
-
-	if (timing.flags & DISPLAY_FLAGS_HSYNC_LOW)
-		reg |= LCDC_RASTER_TIMING_2_HSYNC_INVERT;
-
-	if (info.invert_pxl_clk)
-		reg |= LCDC_RASTER_TIMING_2_PXCLK_INVERT;
-
-	if (info.sync_edge)
-		reg |= LCDC_RASTER_TIMING_2_HSVS_RISEFALL;
-
-	if (info.sync_ctrl)
-		reg |= LCDC_RASTER_TIMING_2_HSVS_CONTROL;
-
-	writel(reg, &regs->raster_timing2);
-
-	reg = LCDC_RASTER_CTRL_PALMODE_RAWDATA | LCDC_RASTER_CTRL_TFT_MODE |
-		LCDC_RASTER_CTRL_ENABLE | LCDC_RASTER_CTRL_REQDLY(info.fdd);
-
-	if (info.tft_alt_mode)
-		reg |= LCDC_RASTER_CTRL_TFT_ALT_ENABLE;
-
-	if (info.bpp == 24)
-		reg |= LCDC_RASTER_CTRL_TFT_24BPP_MODE;
-	else if (info.bpp == 32)
-		reg |= LCDC_RASTER_CTRL_TFT_24BPP_MODE |
-			LCDC_RASTER_CTRL_TFT_24BPP_UNPACK;
-
-	if (info.raster_order)
-		reg |= LCDC_RASTER_CTRL_DATA_ORDER;
-
-	writel(reg, &regs->raster_ctrl);
-
-	uc_priv->xsize = timing.hactive.typ;
-	uc_priv->ysize = timing.vactive.typ;
-	uc_priv->bpix = log_2_n_round_up(info.bpp);
-
-	err = panel_enable_backlight(panel);
-	if (err) {
-		dev_err(dev, "failed to enable panel backlight\n");
-		return err;
-	}
-
-	return 0;
-}
-
-static int tilcdc_of_to_plat(struct udevice *dev)
-{
-	struct tilcdc_priv *priv = dev_get_priv(dev);
-
-	priv->regs = (struct tilcdc_regs *)dev_read_addr(dev);
-	if ((fdt_addr_t)priv->regs == FDT_ADDR_T_NONE) {
-		dev_err(dev, "failed to get base address\n");
-		return -EINVAL;
-	}
-
-	dev_dbg(dev, "LCD: base address=0x%x\n", (unsigned int)priv->regs);
-	return 0;
-}
-
-static int tilcdc_bind(struct udevice *dev)
-{
-	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
-
-	uc_plat->size = ((LCDC_MAX_WIDTH * LCDC_MAX_HEIGHT *
-			  (1 << LCDC_MAX_LOG2_BPP)) >> 3) + 0x20;
-
-	dev_dbg(dev, "frame buffer size 0x%x\n", uc_plat->size);
-	return 0;
-}
-
-static const struct udevice_id tilcdc_ids[] = {
-	{.compatible = "ti,am33xx-tilcdc"},
-	{}
-};
-
-U_BOOT_DRIVER(tilcdc) = {
-	.name = "tilcdc",
-	.id = UCLASS_VIDEO,
-	.of_match = tilcdc_ids,
-	.bind = tilcdc_bind,
-	.of_to_plat = tilcdc_of_to_plat,
-	.probe = tilcdc_probe,
-	.remove = tilcdc_remove,
-	.priv_auto = sizeof(struct tilcdc_priv)
-};
diff --git a/drivers/video/ti/tilcdc.h b/drivers/video/ti/tilcdc.h
deleted file mode 100644
index 2645921..0000000
--- a/drivers/video/ti/tilcdc.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2020 Dario Binacchi <dariobin@libero.it>
- */
-
-#ifndef _TILCDC_H
-#define _TILCDC_H
-
-/**
- * tilcdc_panel_info: Panel parameters
- *
- * @ac_bias: AC Bias Pin Frequency
- * @ac_bias_intrpt: AC Bias Pin Transitions per Interrupt
- * @dma_burst_sz: DMA burst size
- * @bpp: Bits per pixel
- * @fdd: FIFO DMA Request Delay
- * @tft_alt_mode: TFT Alternative Signal Mapping (Only for active)
- * @invert_pxl_clk: Invert pixel clock
- * @sync_edge: Horizontal and Vertical Sync Edge: 0=rising 1=falling
- * @sync_ctrl: Horizontal and Vertical Sync: Control: 0=ignore
- * @raster_order: Raster Data Order Select: 1=Most-to-least 0=Least-to-most
- * @fifo_th: DMA FIFO threshold
- */
-struct tilcdc_panel_info {
-	u32 ac_bias;
-	u32 ac_bias_intrpt;
-	u32 dma_burst_sz;
-	u32 bpp;
-	u32 fdd;
-	bool tft_alt_mode;
-	bool invert_pxl_clk;
-	u32 sync_edge;
-	u32 sync_ctrl;
-	u32 raster_order;
-	u32 fifo_th;
-};
-
-#endif /* _TILCDC_H */
diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c
index f42db40..6bdfb6e 100644
--- a/drivers/video/vidconsole-uclass.c
+++ b/drivers/video/vidconsole-uclass.c
@@ -19,15 +19,6 @@
 #include <video_font.h>		/* Bitmap font for code page 437 */
 #include <linux/ctype.h>
 
-/*
- * Structure to describe a console color
- */
-struct vid_rgb {
-	u32 r;
-	u32 g;
-	u32 b;
-};
-
 /* By default we scroll by a single line */
 #ifndef CONFIG_CONSOLE_SCROLL_LINES
 #define CONFIG_CONSOLE_SCROLL_LINES 1
@@ -124,61 +115,6 @@
 	}
 }
 
-static const struct vid_rgb colors[VID_COLOR_COUNT] = {
-	{ 0x00, 0x00, 0x00 },  /* black */
-	{ 0xc0, 0x00, 0x00 },  /* red */
-	{ 0x00, 0xc0, 0x00 },  /* green */
-	{ 0xc0, 0x60, 0x00 },  /* brown */
-	{ 0x00, 0x00, 0xc0 },  /* blue */
-	{ 0xc0, 0x00, 0xc0 },  /* magenta */
-	{ 0x00, 0xc0, 0xc0 },  /* cyan */
-	{ 0xc0, 0xc0, 0xc0 },  /* light gray */
-	{ 0x80, 0x80, 0x80 },  /* gray */
-	{ 0xff, 0x00, 0x00 },  /* bright red */
-	{ 0x00, 0xff, 0x00 },  /* bright green */
-	{ 0xff, 0xff, 0x00 },  /* yellow */
-	{ 0x00, 0x00, 0xff },  /* bright blue */
-	{ 0xff, 0x00, 0xff },  /* bright magenta */
-	{ 0x00, 0xff, 0xff },  /* bright cyan */
-	{ 0xff, 0xff, 0xff },  /* white */
-};
-
-u32 vid_console_color(struct video_priv *priv, unsigned int idx)
-{
-	switch (priv->bpix) {
-	case VIDEO_BPP16:
-		if (CONFIG_IS_ENABLED(VIDEO_BPP16)) {
-			return ((colors[idx].r >> 3) << 11) |
-			       ((colors[idx].g >> 2) <<  5) |
-			       ((colors[idx].b >> 3) <<  0);
-		}
-		break;
-	case VIDEO_BPP32:
-		if (CONFIG_IS_ENABLED(VIDEO_BPP32)) {
-			if (priv->format == VIDEO_X2R10G10B10)
-				return (colors[idx].r << 22) |
-				       (colors[idx].g << 12) |
-				       (colors[idx].b <<  2);
-			else
-				return (colors[idx].r << 16) |
-				       (colors[idx].g <<  8) |
-				       (colors[idx].b <<  0);
-		}
-		break;
-	default:
-		break;
-	}
-
-	/*
-	 * For unknown bit arrangements just support
-	 * black and white.
-	 */
-	if (idx)
-		return 0xffffff; /* white */
-
-	return 0x000000; /* black */
-}
-
 static char *parsenum(char *s, int *num)
 {
 	char *end;
@@ -186,6 +122,15 @@
 	return end;
 }
 
+void vidconsole_set_cursor_pos(struct udevice *dev, int x, int y)
+{
+	struct vidconsole_priv *priv = dev_get_uclass_priv(dev);
+
+	priv->xcur_frac = VID_TO_POS(x);
+	priv->xstart_frac = priv->xcur_frac;
+	priv->ycur = y;
+}
+
 /**
  * set_cursor_position() - set cursor position
  *
@@ -441,28 +386,28 @@
 			case 1:
 				/* bold */
 				vid_priv->fg_col_idx |= 8;
-				vid_priv->colour_fg = vid_console_color(
+				vid_priv->colour_fg = video_index_to_colour(
 						vid_priv, vid_priv->fg_col_idx);
 				break;
 			case 7:
 				/* reverse video */
-				vid_priv->colour_fg = vid_console_color(
+				vid_priv->colour_fg = video_index_to_colour(
 						vid_priv, vid_priv->bg_col_idx);
-				vid_priv->colour_bg = vid_console_color(
+				vid_priv->colour_bg = video_index_to_colour(
 						vid_priv, vid_priv->fg_col_idx);
 				break;
 			case 30 ... 37:
 				/* foreground color */
 				vid_priv->fg_col_idx &= ~7;
 				vid_priv->fg_col_idx |= val - 30;
-				vid_priv->colour_fg = vid_console_color(
+				vid_priv->colour_fg = video_index_to_colour(
 						vid_priv, vid_priv->fg_col_idx);
 				break;
 			case 40 ... 47:
 				/* background color, also mask the bold bit */
 				vid_priv->bg_col_idx &= ~0xf;
 				vid_priv->bg_col_idx |= val - 40;
-				vid_priv->colour_bg = vid_console_color(
+				vid_priv->colour_bg = video_index_to_colour(
 						vid_priv, vid_priv->bg_col_idx);
 				break;
 			default:
@@ -672,64 +617,14 @@
 }
 #endif
 
-#if CONFIG_IS_ENABLED(CMD_VIDCONSOLE)
 void vidconsole_position_cursor(struct udevice *dev, unsigned col, unsigned row)
 {
 	struct vidconsole_priv *priv = dev_get_uclass_priv(dev);
 	struct udevice *vid_dev = dev->parent;
 	struct video_priv *vid_priv = dev_get_uclass_priv(vid_dev);
+	short x, y;
 
-	col *= priv->x_charsize;
-	row *= priv->y_charsize;
-	priv->xcur_frac = VID_TO_POS(min_t(short, col, vid_priv->xsize - 1));
-	priv->xstart_frac = priv->xcur_frac;
-	priv->ycur = min_t(short, row, vid_priv->ysize - 1);
+	x = min_t(short, col * priv->x_charsize, vid_priv->xsize - 1);
+	y = min_t(short, row * priv->y_charsize, vid_priv->ysize - 1);
+	vidconsole_set_cursor_pos(dev, x, y);
 }
-
-static int do_video_setcursor(struct cmd_tbl *cmdtp, int flag, int argc,
-			      char *const argv[])
-{
-	unsigned int col, row;
-	struct udevice *dev;
-
-	if (argc != 3)
-		return CMD_RET_USAGE;
-
-	if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
-		return CMD_RET_FAILURE;
-	col = dectoul(argv[1], NULL);
-	row = dectoul(argv[2], NULL);
-	vidconsole_position_cursor(dev, col, row);
-
-	return 0;
-}
-
-static int do_video_puts(struct cmd_tbl *cmdtp, int flag, int argc,
-			 char *const argv[])
-{
-	struct udevice *dev;
-	const char *s;
-
-	if (argc != 2)
-		return CMD_RET_USAGE;
-
-	if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
-		return CMD_RET_FAILURE;
-	for (s = argv[1]; *s; s++)
-		vidconsole_put_char(dev, *s);
-
-	return video_sync(dev->parent, false);
-}
-
-U_BOOT_CMD(
-	setcurs, 3,	1,	do_video_setcursor,
-	"set cursor position within screen",
-	"    <col> <row> in character"
-);
-
-U_BOOT_CMD(
-	lcdputs, 2,	1,	do_video_puts,
-	"print string on video framebuffer",
-	"    <string>"
-);
-#endif /* CONFIG_IS_ENABLED(CMD_VIDCONSOLE) */
diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c
index 01e8af5..0ce376c 100644
--- a/drivers/video/video-uclass.c
+++ b/drivers/video/video-uclass.c
@@ -64,6 +64,13 @@
 	ulong video_ptr;
 };
 
+/** struct vid_rgb - Describes a video colour */
+struct vid_rgb {
+	u32 r;
+	u32 g;
+	u32 b;
+};
+
 void video_set_flush_dcache(struct udevice *dev, bool flush)
 {
 	struct video_priv *priv = dev_get_uclass_priv(dev);
@@ -119,7 +126,7 @@
 	return 0;
 }
 
-int video_clear(struct udevice *dev)
+int video_fill(struct udevice *dev, u32 colour)
 {
 	struct video_priv *priv = dev_get_uclass_priv(dev);
 	int ret;
@@ -131,7 +138,7 @@
 			u16 *end = priv->fb + priv->fb_size;
 
 			while (ppix < end)
-				*ppix++ = priv->colour_bg;
+				*ppix++ = colour;
 			break;
 		}
 	case VIDEO_BPP32:
@@ -140,11 +147,11 @@
 			u32 *end = priv->fb + priv->fb_size;
 
 			while (ppix < end)
-				*ppix++ = priv->colour_bg;
+				*ppix++ = colour;
 			break;
 		}
 	default:
-		memset(priv->fb, priv->colour_bg, priv->fb_size);
+		memset(priv->fb, colour, priv->fb_size);
 		break;
 	}
 	ret = video_sync_copy(dev, priv->fb, priv->fb + priv->fb_size);
@@ -154,6 +161,73 @@
 	return video_sync(dev, false);
 }
 
+int video_clear(struct udevice *dev)
+{
+	struct video_priv *priv = dev_get_uclass_priv(dev);
+	int ret;
+
+	ret = video_fill(dev, priv->colour_bg);
+	if (ret)
+		return ret;
+
+	return 0;
+}
+
+static const struct vid_rgb colours[VID_COLOUR_COUNT] = {
+	{ 0x00, 0x00, 0x00 },  /* black */
+	{ 0xc0, 0x00, 0x00 },  /* red */
+	{ 0x00, 0xc0, 0x00 },  /* green */
+	{ 0xc0, 0x60, 0x00 },  /* brown */
+	{ 0x00, 0x00, 0xc0 },  /* blue */
+	{ 0xc0, 0x00, 0xc0 },  /* magenta */
+	{ 0x00, 0xc0, 0xc0 },  /* cyan */
+	{ 0xc0, 0xc0, 0xc0 },  /* light gray */
+	{ 0x80, 0x80, 0x80 },  /* gray */
+	{ 0xff, 0x00, 0x00 },  /* bright red */
+	{ 0x00, 0xff, 0x00 },  /* bright green */
+	{ 0xff, 0xff, 0x00 },  /* yellow */
+	{ 0x00, 0x00, 0xff },  /* bright blue */
+	{ 0xff, 0x00, 0xff },  /* bright magenta */
+	{ 0x00, 0xff, 0xff },  /* bright cyan */
+	{ 0xff, 0xff, 0xff },  /* white */
+};
+
+u32 video_index_to_colour(struct video_priv *priv, unsigned int idx)
+{
+	switch (priv->bpix) {
+	case VIDEO_BPP16:
+		if (CONFIG_IS_ENABLED(VIDEO_BPP16)) {
+			return ((colours[idx].r >> 3) << 11) |
+			       ((colours[idx].g >> 2) <<  5) |
+			       ((colours[idx].b >> 3) <<  0);
+		}
+		break;
+	case VIDEO_BPP32:
+		if (CONFIG_IS_ENABLED(VIDEO_BPP32)) {
+			if (priv->format == VIDEO_X2R10G10B10)
+				return (colours[idx].r << 22) |
+				       (colours[idx].g << 12) |
+				       (colours[idx].b <<  2);
+			else
+				return (colours[idx].r << 16) |
+				       (colours[idx].g <<  8) |
+				       (colours[idx].b <<  0);
+		}
+		break;
+	default:
+		break;
+	}
+
+	/*
+	 * For unknown bit arrangements just support
+	 * black and white.
+	 */
+	if (idx)
+		return 0xffffff; /* white */
+
+	return 0x000000; /* black */
+}
+
 void video_set_default_colors(struct udevice *dev, bool invert)
 {
 	struct video_priv *priv = dev_get_uclass_priv(dev);
@@ -176,8 +250,8 @@
 	}
 	priv->fg_col_idx = fore;
 	priv->bg_col_idx = back;
-	priv->colour_fg = vid_console_color(priv, fore);
-	priv->colour_bg = vid_console_color(priv, back);
+	priv->colour_fg = video_index_to_colour(priv, fore);
+	priv->colour_bg = video_index_to_colour(priv, back);
 }
 
 /* Flush video activity to the caches */
@@ -332,6 +406,11 @@
 
 SPLASH_DECL(u_boot_logo);
 
+void *video_get_u_boot_logo(void)
+{
+	return SPLASH_START(u_boot_logo);
+}
+
 static int show_splash(struct udevice *dev)
 {
 	u8 *data = SPLASH_START(u_boot_logo);
@@ -342,6 +421,17 @@
 	return 0;
 }
 
+int video_default_font_height(struct udevice *dev)
+{
+	struct vidconsole_priv *vc_priv = dev_get_uclass_priv(dev);
+
+	if (IS_ENABLED(CONFIG_CONSOLE_TRUETYPE))
+		return IF_ENABLED_INT(CONFIG_CONSOLE_TRUETYPE,
+				      CONFIG_CONSOLE_TRUETYPE_SIZE);
+
+	return vc_priv->y_charsize;
+}
+
 /* Set up the display ready for use */
 static int video_post_probe(struct udevice *dev)
 {
diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c
index 082895a..6188a13 100644
--- a/drivers/video/video_bmp.c
+++ b/drivers/video/video_bmp.c
@@ -229,6 +229,16 @@
 	*axis = max(0, (int)axis_alignment);
 }
 
+void video_bmp_get_info(void *bmp_image, ulong *widthp, ulong *heightp,
+			uint *bpixp)
+{
+	struct bmp_image *bmp = bmp_image;
+
+	*widthp = get_unaligned_le32(&bmp->header.width);
+	*heightp = get_unaligned_le32(&bmp->header.height);
+	*bpixp = get_unaligned_le16(&bmp->header.bit_count);
+}
+
 int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y,
 		      bool align)
 {
@@ -253,9 +263,7 @@
 		return -EINVAL;
 	}
 
-	width = get_unaligned_le32(&bmp->header.width);
-	height = get_unaligned_le32(&bmp->header.height);
-	bmp_bpix = get_unaligned_le16(&bmp->header.bit_count);
+	video_bmp_get_info(bmp, &width, &height, &bmp_bpix);
 	hdr_size = get_unaligned_le16(&bmp->header.size);
 	debug("hdr_size=%d, bmp_bpix=%d\n", hdr_size, bmp_bpix);
 	palette = (void *)bmp + 14 + hdr_size;
@@ -283,7 +291,7 @@
 	    !(bmp_bpix == 24 && bpix == 16) &&
 	    !(bmp_bpix == 24 && bpix == 32)) {
 		printf("Error: %d bit/pixel mode, but BMP has %d bit/pixel\n",
-		       bpix, get_unaligned_le16(&bmp->header.bit_count));
+		       bpix, colours);
 		return -EPERM;
 	}
 
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
index 2d55fe2..c4b2bb4 100644
--- a/include/asm-generic/global_data.h
+++ b/include/asm-generic/global_data.h
@@ -68,7 +68,7 @@
 	 * @mem_clk: memory clock rate in Hz
 	 */
 	unsigned long mem_clk;
-#if defined(CONFIG_LCD) || defined(CONFIG_DM_VIDEO)
+#if defined(CONFIG_VIDEO)
 	/**
 	 * @fb_base: base address of frame buffer memory
 	 */
@@ -359,7 +359,7 @@
 	 */
 	struct membuff console_in;
 #endif
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 	/**
 	 * @video_top: top of video frame buffer area
 	 */
diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h
index 12726c1..5576a5f 100644
--- a/include/configs/at91sam9261ek.h
+++ b/include/configs/at91sam9261ek.h
@@ -16,13 +16,6 @@
 
 #include <asm/hardware.h>
 
-/*
- * Hardware drivers
- */
-
-/* LCD */
-#define LCD_BPP				LCD_COLOR8
-
 /* SDRAM */
 #define CONFIG_SYS_SDRAM_BASE		0x20000000
 #define CONFIG_SYS_SDRAM_SIZE		0x04000000
diff --git a/include/configs/at91sam9263ek.h b/include/configs/at91sam9263ek.h
index 8c6d1cd..02d04d0 100644
--- a/include/configs/at91sam9263ek.h
+++ b/include/configs/at91sam9263ek.h
@@ -22,13 +22,6 @@
 #define CONFIG_SYS_AT91_MAIN_CLOCK	16367660 /* 16.367 MHz crystal */
 #define CONFIG_SYS_AT91_SLOW_CLOCK	32768
 
-/*
- * Hardware drivers
- */
-
-/* LCD */
-#define LCD_BPP				LCD_COLOR8
-
 /* SDRAM */
 #define CONFIG_SYS_SDRAM_BASE		ATMEL_BASE_CS1
 #define CONFIG_SYS_SDRAM_SIZE		0x04000000
diff --git a/include/configs/at91sam9m10g45ek.h b/include/configs/at91sam9m10g45ek.h
index b55d2e3..2d257c4 100644
--- a/include/configs/at91sam9m10g45ek.h
+++ b/include/configs/at91sam9m10g45ek.h
@@ -14,11 +14,6 @@
 #define CONFIG_SYS_AT91_SLOW_CLOCK      32768
 #define CONFIG_SYS_AT91_MAIN_CLOCK      12000000 /* from 12 MHz crystal */
 
-/* general purpose I/O */
-
-/* LCD */
-#define LCD_BPP				LCD_COLOR8
-
 /* SDRAM */
 #define CONFIG_SYS_SDRAM_BASE           0x70000000
 #define CONFIG_SYS_SDRAM_SIZE		0x08000000
diff --git a/include/configs/at91sam9n12ek.h b/include/configs/at91sam9n12ek.h
index 4d49298..f2ca4f3 100644
--- a/include/configs/at91sam9n12ek.h
+++ b/include/configs/at91sam9n12ek.h
@@ -14,11 +14,6 @@
 #define CONFIG_SYS_AT91_MAIN_CLOCK	16000000	/* main clock xtal */
 
 /* Misc CPU related */
-
-/* LCD */
-#define LCD_BPP				LCD_COLOR16
-#define LCD_OUTPUT_BPP			24
-
 #define CONFIG_SYS_SDRAM_BASE		0x20000000
 #define CONFIG_SYS_SDRAM_SIZE		0x08000000
 
diff --git a/include/configs/at91sam9rlek.h b/include/configs/at91sam9rlek.h
index e418edd..bc687fc 100644
--- a/include/configs/at91sam9rlek.h
+++ b/include/configs/at91sam9rlek.h
@@ -16,13 +16,6 @@
 #define CONFIG_SYS_AT91_SLOW_CLOCK	32768		/* slow clock xtal */
 #define CONFIG_SYS_AT91_MAIN_CLOCK	12000000	/* main clock xtal */
 
-/*
- * Hardware drivers
- */
-
-/* LCD */
-#define LCD_BPP				LCD_COLOR8
-
 /* SDRAM */
 #define CONFIG_SYS_SDRAM_BASE		ATMEL_BASE_CS1
 #define CONFIG_SYS_SDRAM_SIZE		0x04000000
diff --git a/include/configs/brxre1.h b/include/configs/brxre1.h
index 4d91a77..410b3e6 100644
--- a/include/configs/brxre1.h
+++ b/include/configs/brxre1.h
@@ -14,10 +14,6 @@
 #include <configs/bur_cfg_common.h>
 #include <configs/bur_am335x_common.h>
 #include <linux/stringify.h>
-/* ------------------------------------------------------------------------- */
-#define LCD_BPP				LCD_COLOR32
-
-/* memory */
 
 /* Clock Defines */
 #define V_OSCK				26000000  /* Clock output from T2 */
diff --git a/include/configs/colibri-imx6ull.h b/include/configs/colibri-imx6ull.h
index 79b1284..321edab 100644
--- a/include/configs/colibri-imx6ull.h
+++ b/include/configs/colibri-imx6ull.h
@@ -137,7 +137,7 @@
 /* USB Device Firmware Update support */
 #define DFU_DEFAULT_POLL_TIMEOUT	300
 
-#if defined(CONFIG_DM_VIDEO)
+#if defined(CONFIG_VIDEO)
 #define MXS_LCDIF_BASE MX6UL_LCDIF1_BASE_ADDR
 #endif
 
diff --git a/include/configs/ge_b1x5v2.h b/include/configs/ge_b1x5v2.h
index 95ba20c..176f80b 100644
--- a/include/configs/ge_b1x5v2.h
+++ b/include/configs/ge_b1x5v2.h
@@ -34,7 +34,6 @@
 #define CONFIG_USBD_HS
 
 /* Video */
-#define CONFIG_HIDE_LOGO_VERSION
 #define CONFIG_IMX_VIDEO_SKIP
 
 /* Memory */
diff --git a/include/configs/ge_bx50v3.h b/include/configs/ge_bx50v3.h
index ad00769..ab8c66f 100644
--- a/include/configs/ge_bx50v3.h
+++ b/include/configs/ge_bx50v3.h
@@ -103,7 +103,6 @@
 #define CONFIG_SYS_FSL_USDHC_NUM	3
 
 /* Framebuffer */
-#define CONFIG_HIDE_LOGO_VERSION
 #define CONFIG_IMX_HDMI
 #define CONFIG_IMX_VIDEO_SKIP
 
diff --git a/include/configs/gw_ventana.h b/include/configs/gw_ventana.h
index 82076ff..bba64af 100644
--- a/include/configs/gw_ventana.h
+++ b/include/configs/gw_ventana.h
@@ -47,7 +47,6 @@
 /* Framebuffer and LCD */
 #define CONFIG_IMX_HDMI
 #define CONFIG_IMX_VIDEO_SKIP
-#define CONFIG_HIDE_LOGO_VERSION  /* Custom config to hide U-boot version */
 
 /* Miscellaneous configurable options */
 #define CONFIG_HWCONFIG
diff --git a/include/configs/imxrt1050-evk.h b/include/configs/imxrt1050-evk.h
index e36718d..d1a7dab 100644
--- a/include/configs/imxrt1050-evk.h
+++ b/include/configs/imxrt1050-evk.h
@@ -18,7 +18,7 @@
 #define DMAMEM_BASE			(PHYS_SDRAM + PHYS_SDRAM_SIZE - \
 					 DMAMEM_SZ_ALL)
 
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 #define CONFIG_EXTRA_ENV_SETTINGS \
 		"stdin=serial\0" \
 		"stdout=serial,vidconsole\0" \
diff --git a/include/configs/m53menlo.h b/include/configs/m53menlo.h
index 0499e63..03e1619 100644
--- a/include/configs/m53menlo.h
+++ b/include/configs/m53menlo.h
@@ -78,11 +78,6 @@
 #define CONFIG_MXC_USB_FLAGS		0
 #endif
 
-/*
- * LCD
- */
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE	(2 << 20)
-
 /* LVDS display */
 #define CONFIG_SYS_LDB_CLOCK			33260000
 #define CONFIG_IMX_VIDEO_SKIP
diff --git a/include/configs/meson64.h b/include/configs/meson64.h
index 40803ee..0c41df2 100644
--- a/include/configs/meson64.h
+++ b/include/configs/meson64.h
@@ -17,7 +17,7 @@
 #endif
 
 /* For splashscreen */
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 #define STDOUT_CFG "vidconsole,serial"
 #else
 #define STDOUT_CFG "serial"
diff --git a/include/configs/mx23evk.h b/include/configs/mx23evk.h
index 3507e83..4c05312 100644
--- a/include/configs/mx23evk.h
+++ b/include/configs/mx23evk.h
@@ -15,17 +15,6 @@
 #define PHYS_SDRAM_1_SIZE		0x08000000	/* Max 128 MB RAM */
 #define CONFIG_SYS_SDRAM_BASE		PHYS_SDRAM_1
 
-/* Environment */
-
-/* Environment is in MMC */
-
-/* USB */
-
-/* Framebuffer support */
-#ifdef CONFIG_DM_VIDEO
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE	(512 << 10)
-#endif
-
 /* Extra Environments */
 #define CONFIG_EXTRA_ENV_SETTINGS \
 	"update_sd_firmware_filename=u-boot.sd\0" \
diff --git a/include/configs/mx28evk.h b/include/configs/mx28evk.h
index 9f3ac48..140f5e9 100644
--- a/include/configs/mx28evk.h
+++ b/include/configs/mx28evk.h
@@ -22,13 +22,6 @@
 #define	CONFIG_RTC_MXS
 #endif
 
-/* USB */
-
-/* Framebuffer support */
-#ifdef CONFIG_DM_VIDEO
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE	(512 << 10)
-#endif
-
 /* Extra Environment */
 #define CONFIG_EXTRA_ENV_SETTINGS \
 	"ubifs_file=filesystem.ubifs\0" \
diff --git a/include/configs/nitrogen6x.h b/include/configs/nitrogen6x.h
index 26e6de2..d507f8f 100644
--- a/include/configs/nitrogen6x.h
+++ b/include/configs/nitrogen6x.h
@@ -27,7 +27,6 @@
 #define CONFIG_MXC_USB_FLAGS	0
 
 /* Framebuffer and LCD */
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (6 * 1024 * 1024)
 #define CONFIG_IMX_HDMI
 #define CONFIG_IMX_VIDEO_SKIP
 
diff --git a/include/configs/nyan-big.h b/include/configs/nyan-big.h
index bc57545..c59e103 100644
--- a/include/configs/nyan-big.h
+++ b/include/configs/nyan-big.h
@@ -18,11 +18,6 @@
 #define CONFIG_TEGRA_ENABLE_UARTA
 #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTA_BASE
 
-/* Environment in eMMC, at the end of 2nd "boot sector" */
-
-/* Align LCD to 1MB boundary */
-#define CONFIG_LCD_ALIGNMENT	MMU_SECTION_SIZE
-
 /* SPI */
 #define CONFIG_SPI_FLASH_SIZE          (4 << 20)
 
diff --git a/include/configs/pico-imx6ul.h b/include/configs/pico-imx6ul.h
index 2ac48c4..c0d837d 100644
--- a/include/configs/pico-imx6ul.h
+++ b/include/configs/pico-imx6ul.h
@@ -102,9 +102,7 @@
 #define CONFIG_SYS_INIT_RAM_ADDR	IRAM_BASE_ADDR
 #define CONFIG_SYS_INIT_RAM_SIZE	IRAM_SIZE
 
-/* environment organization */
-
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 #define MXS_LCDIF_BASE MX6UL_LCDIF1_BASE_ADDR
 #endif
 
diff --git a/include/configs/pm9261.h b/include/configs/pm9261.h
index 797e44f..7f9442a 100644
--- a/include/configs/pm9261.h
+++ b/include/configs/pm9261.h
@@ -124,13 +124,6 @@
 		 AT91_WDT_MR_WDDIS |				\
 		 AT91_WDT_MR_WDD(0xfff))
 
-/*
- * Hardware drivers
- */
-
-/* LCD */
-#define LCD_BPP				LCD_COLOR8
-
 /* SDRAM */
 #define PHYS_SDRAM				0x20000000
 #define PHYS_SDRAM_SIZE				0x04000000	/* 64 megs */
diff --git a/include/configs/pm9263.h b/include/configs/pm9263.h
index bb5bd8b..00d159f 100644
--- a/include/configs/pm9263.h
+++ b/include/configs/pm9263.h
@@ -136,12 +136,6 @@
 		 AT91_WDT_MR_WDDIS |				\
 		 AT91_WDT_MR_WDD(0xfff))
 
-/*
- * Hardware drivers
- */
-/* LCD */
-#define LCD_BPP				LCD_COLOR8
-
 /* SDRAM */
 #define PHYS_SDRAM		0x20000000
 #define PHYS_SDRAM_SIZE		0x04000000	/* 64 megs */
diff --git a/include/configs/pxm2.h b/include/configs/pxm2.h
index 4f24b13..586a7ed 100644
--- a/include/configs/pxm2.h
+++ b/include/configs/pxm2.h
@@ -18,11 +18,6 @@
 #define DDR_IOCTRL_VAL		0x18b
 #define DDR_PLL_FREQ		266
 
-#define BOARD_DFU_BUTTON_GPIO	59
-#define BOARD_LCD_POWER		111
-#define BOARD_BACK_LIGHT	112
-#define BOARD_TOUCH_POWER	57
-
 #define CONFIG_ENV_SETTINGS_BUTTONS_AND_LEDS \
 	"button_dfu0=59\0" \
 	"led0=117,0,1\0" \
diff --git a/include/configs/s5pc210_universal.h b/include/configs/s5pc210_universal.h
index 137537d..668b526 100644
--- a/include/configs/s5pc210_universal.h
+++ b/include/configs/s5pc210_universal.h
@@ -98,9 +98,6 @@
 /* Common misc for Samsung */
 #define CONFIG_MISC_COMMON
 
-/* Download menu - Samsung common */
-#define CONFIG_LCD_MENU
-
 /* Download menu - definitions for check keys */
 #ifndef __ASSEMBLY__
 
@@ -114,13 +111,4 @@
 #define KEY_VOL_DOWN_GPIO		EXYNOS4_GPIO_X21
 #endif /* __ASSEMBLY__ */
 
-/* LCD console */
-#define LCD_BPP			LCD_COLOR16
-
-/*
- * LCD Settings
- */
-#define CONFIG_LD9040
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE ((500 * 160 * 4) + 54)
-
 #endif	/* __CONFIG_H */
diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h
index b48e40b..ccb3842 100644
--- a/include/configs/sama5d3xek.h
+++ b/include/configs/sama5d3xek.h
@@ -25,9 +25,6 @@
  */
 #define ATMEL_PMC_UHP			(1 <<  6)
 
-/* board specific (not enough SRAM) */
-#define CONFIG_SAMA5D3_LCD_BASE		0x23E00000
-
 /* NOR flash */
 #ifdef CONFIG_MTD_NOR_FLASH
 #define CONFIG_SYS_FLASH_BASE		0x10000000
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index fe90d55..12666b7 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -301,7 +301,7 @@
 	"stdin=serial\0"
 #endif
 
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 #define CONSOLE_STDOUT_SETTINGS \
 	"stdout=serial,vidconsole\0" \
 	"stderr=serial,vidconsole\0"
diff --git a/include/configs/tegra-common-post.h b/include/configs/tegra-common-post.h
index c8f9d7c..4e20e1d 100644
--- a/include/configs/tegra-common-post.h
+++ b/include/configs/tegra-common-post.h
@@ -37,13 +37,7 @@
 #define STDIN_KBD_USB ""
 #endif
 
-#ifdef CONFIG_LCD
-#define STDOUT_LCD ",lcd"
-#else
-#define STDOUT_LCD ""
-#endif
-
-#ifdef CONFIG_DM_VIDEO
+#ifdef CONFIG_VIDEO
 #define STDOUT_VIDEO ",vidconsole"
 #else
 #define STDOUT_VIDEO ""
@@ -57,8 +51,8 @@
 
 #define TEGRA_DEVICE_SETTINGS \
 	"stdin=serial" STDIN_KBD_KBC STDIN_KBD_USB STDOUT_CROS_EC "\0" \
-	"stdout=serial" STDOUT_LCD STDOUT_VIDEO "\0" \
-	"stderr=serial" STDOUT_LCD STDOUT_VIDEO "\0" \
+	"stdout=serial" STDOUT_VIDEO "\0" \
+	"stderr=serial" STDOUT_VIDEO "\0" \
 	""
 
 #ifndef BOARD_EXTRA_ENV_SETTINGS
diff --git a/include/configs/tegra20-common.h b/include/configs/tegra20-common.h
index 71867bb..617bfb2 100644
--- a/include/configs/tegra20-common.h
+++ b/include/configs/tegra20-common.h
@@ -54,11 +54,6 @@
 	"fdt_addr_r=0x03000000\0" \
 	"ramdisk_addr_r=0x03100000\0"
 
-/* Defines for SPL */
-
-/* Align LCD to 1MB boundary */
-#define CONFIG_LCD_ALIGNMENT	MMU_SECTION_SIZE
-
 #ifdef CONFIG_TEGRA_LP0
 #define TEGRA_LP0_ADDR			0x1C406000
 #define TEGRA_LP0_SIZE			0x2000
diff --git a/include/configs/trats.h b/include/configs/trats.h
index 530b413..ca31868 100644
--- a/include/configs/trats.h
+++ b/include/configs/trats.h
@@ -128,9 +128,6 @@
 /* Common misc for Samsung */
 #define CONFIG_MISC_COMMON
 
-/* Download menu - Samsung common */
-#define CONFIG_LCD_MENU
-
 /* Download menu - definitions for check keys */
 #ifndef __ASSEMBLY__
 
@@ -144,10 +141,4 @@
 #define KEY_VOL_DOWN_GPIO		EXYNOS4_GPIO_X21
 #endif /* __ASSEMBLY__ */
 
-/* LCD console */
-#define LCD_BPP			LCD_COLOR16
-
-/* LCD */
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE  ((500 * 160 * 4) + 54)
-
 #endif	/* __CONFIG_H */
diff --git a/include/configs/trats2.h b/include/configs/trats2.h
index 06c1fcd..f324ea7 100644
--- a/include/configs/trats2.h
+++ b/include/configs/trats2.h
@@ -118,9 +118,6 @@
 /* Common misc for Samsung */
 #define CONFIG_MISC_COMMON
 
-/* Download menu - Samsung common */
-#define CONFIG_LCD_MENU
-
 /* Download menu - definitions for check keys */
 #ifndef __ASSEMBLY__
 
@@ -134,10 +131,4 @@
 #define KEY_VOL_DOWN_GPIO		EXYNOS4X12_GPIO_X33
 #endif /* __ASSEMBLY__ */
 
-/* LCD console */
-#define LCD_BPP                 LCD_COLOR16
-
-/* LCD */
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE ((500 * 160 * 4) + 54)
-
 #endif	/* __CONFIG_H */
diff --git a/include/env_callback.h b/include/env_callback.h
index d5d2b2f..1eae0ef 100644
--- a/include/env_callback.h
+++ b/include/env_callback.h
@@ -24,12 +24,6 @@
 #define SILENT_CALLBACK
 #endif
 
-#ifdef CONFIG_SPLASHIMAGE_GUARD
-#define SPLASHIMAGE_CALLBACK "splashimage:splashimage,"
-#else
-#define SPLASHIMAGE_CALLBACK
-#endif
-
 #ifdef CONFIG_REGEX
 #define ENV_DOT_ESCAPE "\\"
 #else
@@ -74,7 +68,6 @@
 	BOOTSTD_CALLBACK \
 	"loadaddr:loadaddr," \
 	SILENT_CALLBACK \
-	SPLASHIMAGE_CALLBACK \
 	"stdin:console,stdout:console,stderr:console," \
 	"serial#:serialno," \
 	CONFIG_ENV_CALLBACK_LIST_STATIC
diff --git a/include/lcd.h b/include/lcd.h
deleted file mode 100644
index 4f18069..0000000
--- a/include/lcd.h
+++ /dev/null
@@ -1,218 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * MPC823 and PXA LCD Controller
- *
- * Modeled after video interface by Paolo Scaffardi
- *
- *
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- */
-
-#ifndef _LCD_H_
-#define _LCD_H_
-#include <lcd_console.h>
-#if defined(CONFIG_CMD_BMP) || defined(CONFIG_SPLASH_SCREEN)
-#include <bmp_layout.h>
-#include <asm/byteorder.h>
-#endif
-
-int bmp_display(ulong addr, int x, int y);
-struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp,
-			     void **alloc_addr);
-
-#ifndef CONFIG_DM_VIDEO
-
-extern char lcd_is_enabled;
-extern int lcd_line_length;
-extern struct vidinfo panel_info;
-
-void lcd_ctrl_init(void *lcdbase);
-void lcd_enable(void);
-void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue);
-ulong lcd_setmem(ulong addr);
-
-/**
- * Set whether we need to flush the dcache when changing the LCD image. This
- * defaults to off.
- *
- * @param flush		non-zero to flush cache after update, 0 to skip
- */
-void lcd_set_flush_dcache(int flush);
-
-#if defined(CONFIG_ATMEL_LCD) || defined(CONFIG_ATMEL_HLCD)
-#include <atmel_lcd.h>
-#elif defined(CONFIG_EXYNOS_FB)
-#include <exynos_lcd.h>
-#else
-typedef struct vidinfo {
-	ushort	vl_col;		/* Number of columns (i.e. 160) */
-	ushort	vl_row;		/* Number of rows (i.e. 100) */
-	ushort	vl_rot;		/* Rotation of Display (0, 1, 2, 3) */
-	u_char	vl_bpix;	/* Bits per pixel, 0 = 1 */
-	ushort	*cmap;		/* Pointer to the colormap */
-	void	*priv;		/* Pointer to driver-specific data */
-} vidinfo_t;
-
-static __maybe_unused ushort *configuration_get_cmap(void)
-{
-	return panel_info.cmap;
-}
-#endif
-
-ushort *configuration_get_cmap(void);
-
-extern vidinfo_t panel_info;
-
-void lcd_putc(const char c);
-void lcd_puts(const char *s);
-void lcd_printf(const char *fmt, ...);
-void lcd_clear(void);
-int lcd_display_bitmap(ulong bmp_image, int x, int y);
-
-/**
- * Get the width of the LCD in pixels
- *
- * Return: width of LCD in pixels
- */
-int lcd_get_pixel_width(void);
-
-/**
- * Get the height of the LCD in pixels
- *
- * Return: height of LCD in pixels
- */
-int lcd_get_pixel_height(void);
-
-/**
- * Get the number of text lines/rows on the LCD
- *
- * Return: number of rows
- */
-int lcd_get_screen_rows(void);
-
-/**
- * Get the number of text columns on the LCD
- *
- * Return: number of columns
- */
-int lcd_get_screen_columns(void);
-
-/**
- * Get the background color of the LCD
- *
- * Return: background color value
- */
-int lcd_getbgcolor(void);
-
-/**
- * Get the foreground color of the LCD
- *
- * Return: foreground color value
- */
-int lcd_getfgcolor(void);
-
-/**
- * Set the position of the text cursor
- *
- * @param col	Column to place cursor (0 = left side)
- * @param row	Row to place cursor (0 = top line)
- */
-void lcd_position_cursor(unsigned col, unsigned row);
-
-/* Allow boards to customize the information displayed */
-void lcd_show_board_info(void);
-
-/* Return the size of the LCD frame buffer, and the line length */
-int lcd_get_size(int *line_length);
-
-/* Update the LCD / flush the cache */
-void lcd_sync(void);
-
-/*
- *  Information about displays we are using. This is for configuring
- *  the LCD controller and memory allocation. Someone has to know what
- *  is connected, as we can't autodetect anything.
- */
-#define CONFIG_SYS_HIGH	0	/* Pins are active high			*/
-#define CONFIG_SYS_LOW	1	/* Pins are active low			*/
-
-#define LCD_MONOCHROME	0
-#define LCD_COLOR2	1
-#define LCD_COLOR4	2
-#define LCD_COLOR8	3
-#define LCD_COLOR16	4
-#define LCD_COLOR32	5
-
-#if defined(CONFIG_LCD_INFO_BELOW_LOGO)
-#define LCD_INFO_X		0
-#define LCD_INFO_Y		(BMP_LOGO_HEIGHT + VIDEO_FONT_HEIGHT)
-#elif defined(CONFIG_LCD_LOGO)
-#define LCD_INFO_X		(BMP_LOGO_WIDTH + 4 * VIDEO_FONT_WIDTH)
-#define LCD_INFO_Y		VIDEO_FONT_HEIGHT
-#else
-#define LCD_INFO_X		VIDEO_FONT_WIDTH
-#define LCD_INFO_Y		VIDEO_FONT_HEIGHT
-#endif
-
-/* Default to 8bpp if bit depth not specified */
-#ifndef LCD_BPP
-#define LCD_BPP			LCD_COLOR8
-#endif
-
-#ifndef LCD_DF
-#define LCD_DF			1
-#endif
-
-/* Calculate nr. of bits per pixel  and nr. of colors */
-#define NBITS(bit_code)		(1 << (bit_code))
-#define NCOLORS(bit_code)	(1 << NBITS(bit_code))
-
-#if LCD_BPP == LCD_COLOR8
-# define CONSOLE_COLOR_BLACK	0
-# define CONSOLE_COLOR_RED	1
-# define CONSOLE_COLOR_GREEN	2
-# define CONSOLE_COLOR_YELLOW	3
-# define CONSOLE_COLOR_BLUE	4
-# define CONSOLE_COLOR_MAGENTA	5
-# define CONSOLE_COLOR_CYAN	6
-# define CONSOLE_COLOR_GREY	14
-# define CONSOLE_COLOR_WHITE	15		/* Must remain last / highest */
-#elif LCD_BPP == LCD_COLOR32
-#define CONSOLE_COLOR_RED	0x00ff0000
-#define CONSOLE_COLOR_GREEN	0x0000ff00
-#define CONSOLE_COLOR_YELLOW	0x00ffff00
-#define CONSOLE_COLOR_BLUE	0x000000ff
-#define CONSOLE_COLOR_MAGENTA	0x00ff00ff
-#define CONSOLE_COLOR_CYAN	0x0000ffff
-#define CONSOLE_COLOR_GREY	0x00aaaaaa
-#define CONSOLE_COLOR_BLACK	0x00000000
-#define CONSOLE_COLOR_WHITE	0x00ffffff	/* Must remain last / highest */
-#define NBYTES(bit_code)	(NBITS(bit_code) >> 3)
-#else /* 16bpp color definitions */
-# define CONSOLE_COLOR_BLACK	0x0000
-# define CONSOLE_COLOR_RED	0xF800
-# define CONSOLE_COLOR_GREEN	0x07E0
-# define CONSOLE_COLOR_YELLOW	0xFFE0
-# define CONSOLE_COLOR_BLUE	0x001F
-# define CONSOLE_COLOR_MAGENTA	0xF81F
-# define CONSOLE_COLOR_CYAN	0x07FF
-# define CONSOLE_COLOR_GREY	0xC618
-# define CONSOLE_COLOR_WHITE	0xffff		/* Must remain last / highest */
-#endif /* color definitions */
-
-#if LCD_BPP == LCD_COLOR16
-#define fbptr_t ushort
-#elif LCD_BPP == LCD_COLOR32
-#define fbptr_t u32
-#else
-#define fbptr_t uchar
-#endif
-
-#ifndef PAGE_SIZE
-#define PAGE_SIZE	4096
-#endif
-
-#endif /* !CONFIG_DM_VIDEO */
-
-#endif	/* _LCD_H_ */
diff --git a/include/ld9040.h b/include/ld9040.h
deleted file mode 100644
index 58413d0..0000000
--- a/include/ld9040.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * ld9040 AMOLED LCD panel driver.
- *
- * Copyright (C) 2012 Samsung Electronics
- * Donghwa Lee <dh09.lee@samsung.com>
- */
-
-#ifndef __LD9040_H_
-#define __LD9040_H_
-
-void ld9040_cfg_ldo(void);
-void ld9040_enable_ldo(unsigned int onoff);
-
-#endif /* __LD9040_H_ */
diff --git a/include/libtizen.h b/include/libtizen.h
index 655d4cb..15e0145 100644
--- a/include/libtizen.h
+++ b/include/libtizen.h
@@ -9,8 +9,4 @@
 
 #define HD_RESOLUTION	0
 
-#ifdef CONFIG_LCD
-void get_tizen_logo_info(vidinfo_t *vid);
-#endif
-
 #endif	/* _LIBTIZEN_H_ */
diff --git a/include/samsung/misc.h b/include/samsung/misc.h
index 4ff28a1..89546a1 100644
--- a/include/samsung/misc.h
+++ b/include/samsung/misc.h
@@ -9,21 +9,6 @@
 void set_board_info(void);
 #endif
 
-#ifdef CONFIG_LCD_MENU
-enum {
-	BOOT_MODE_INFO,
-	BOOT_MODE_THOR,
-	BOOT_MODE_UMS,
-	BOOT_MODE_DFU,
-	BOOT_MODE_GPT,
-	BOOT_MODE_ENV,
-	BOOT_MODE_EXIT,
-};
-
-void keys_init(void);
-void check_boot_mode(void);
-#endif /* CONFIG_LCD_MENU */
-
 #ifdef CONFIG_CMD_BMP
 void draw_logo(void);
 #endif
diff --git a/include/test/suites.h b/include/test/suites.h
index 44025cc..a01000e 100644
--- a/include/test/suites.h
+++ b/include/test/suites.h
@@ -39,6 +39,7 @@
 int do_ut_dm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
 int do_ut_env(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
 int do_ut_fdt(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
+int do_ut_font(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
 int do_ut_lib(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
 int do_ut_loadm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
 int do_ut_log(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]);
diff --git a/include/video.h b/include/video.h
index 43e2c89..43f2e2c 100644
--- a/include/video.h
+++ b/include/video.h
@@ -131,6 +131,41 @@
 
 #define video_get_ops(dev)        ((struct video_ops *)(dev)->driver->ops)
 
+/** enum colour_idx - the 16 colors supported by consoles */
+enum colour_idx {
+	VID_BLACK = 0,
+	VID_RED,
+	VID_GREEN,
+	VID_BROWN,
+	VID_BLUE,
+	VID_MAGENTA,
+	VID_CYAN,
+	VID_LIGHT_GRAY,
+	VID_GRAY,
+	VID_LIGHT_RED,
+	VID_LIGHT_GREEN,
+	VID_YELLOW,
+	VID_LIGHT_BLUE,
+	VID_LIGHT_MAGENTA,
+	VID_LIGHT_CYAN,
+	VID_WHITE,
+
+	VID_COLOUR_COUNT
+};
+
+/**
+ * video_index_to_colour() - convert a color code to a pixel's internal
+ * representation
+ *
+ * The caller has to guarantee that the color index is less than
+ * VID_COLOR_COUNT.
+ *
+ * @priv	private data of the console device
+ * @idx		color index
+ * Return:	color value
+ */
+u32 video_index_to_colour(struct video_priv *priv, unsigned int idx);
+
 /**
  * video_reserve() - Reserve frame-buffer memory for video devices
  *
@@ -150,14 +185,23 @@
 int video_reserve(ulong *addrp);
 
 /**
- * video_clear() - Clear a device's frame buffer to background color.
+ * video_clear() - Clear a device's frame buffer to background colour.
  *
  * @dev:	Device to clear
- * Return: 0
+ * Return: 0 on success
  */
 int video_clear(struct udevice *dev);
 
 /**
+ * video_fill() - Fill a device's frame buffer to a colour.
+ *
+ * @dev:	Device to fill
+ * @colour:	Colour to use, in the frame buffer's format
+ * Return: 0 on success
+ */
+int video_fill(struct udevice *dev, u32 colour);
+
+/**
  * video_sync() - Sync a device's frame buffer with its hardware
  *
  * @vid:	Device to sync
@@ -180,6 +224,17 @@
 void video_sync_all(void);
 
 /**
+ * video_bmp_get_info() - Get information about a bitmap image
+ *
+ * @bmp_image: Pointer to BMP image to check
+ * @widthp: Returns width in pixels
+ * @heightp: Returns height in pixels
+ * @bpixp: Returns log2 of bits per pixel
+ */
+void video_bmp_get_info(void *bmp_image, ulong *widthp, ulong *heightp,
+			uint *bpixp);
+
+/**
  * video_bmp_display() - Display a BMP file
  *
  * @dev:	Device to display the bitmap on
@@ -231,6 +286,15 @@
  */
 void video_set_default_colors(struct udevice *dev, bool invert);
 
+/**
+ * video_default_font_height() - Get the default font height
+ *
+ * @dev:	video device
+ * Returns: Default font height in pixels, which depends on which console driver
+ * is in use
+ */
+int video_default_font_height(struct udevice *dev);
+
 #ifdef CONFIG_VIDEO_COPY
 /**
  * vidconsole_sync_copy() - Sync back to the copy framebuffer
@@ -275,4 +339,20 @@
  */
 bool video_is_active(void);
 
+/**
+ * video_get_u_boot_logo() - Get a pointer to the U-Boot logo
+ *
+ * Returns: Pointer to logo
+ */
+void *video_get_u_boot_logo(void);
+
+/*
+ * bmp_display() - Display BMP (bitmap) data located in memory
+ *
+ * @addr: address of the bmp data
+ * @x: Position of bitmap from the left side, in pixels
+ * @y: Position of bitmap from the top, in pixels
+ */
+int bmp_display(ulong addr, int x, int y);
+
 #endif
diff --git a/include/video_console.h b/include/video_console.h
index 5921767..d755eb7 100644
--- a/include/video_console.h
+++ b/include/video_console.h
@@ -15,30 +15,6 @@
 #define VID_TO_PIXEL(x)	((x) / VID_FRAC_DIV)
 #define VID_TO_POS(x)	((x) * VID_FRAC_DIV)
 
-/*
- * The 16 colors supported by the console
- */
-enum color_idx {
-	VID_BLACK = 0,
-	VID_RED,
-	VID_GREEN,
-	VID_BROWN,
-	VID_BLUE,
-	VID_MAGENTA,
-	VID_CYAN,
-	VID_LIGHT_GRAY,
-	VID_GRAY,
-	VID_LIGHT_RED,
-	VID_LIGTH_GREEN,
-	VID_YELLOW,
-	VID_LIGHT_BLUE,
-	VID_LIGHT_MAGENTA,
-	VID_LIGHT_CYAN,
-	VID_WHITE,
-
-	VID_COLOR_COUNT
-};
-
 /**
  * struct vidconsole_priv - uclass-private data about a console device
  *
@@ -244,17 +220,41 @@
 				unsigned row);
 
 /**
- * vid_console_color() - convert a color code to a pixel's internal
- * representation
+ * vidconsole_set_cursor_pos() - set cursor position
  *
- * The caller has to guarantee that the color index is less than
- * VID_COLOR_COUNT.
+ * The cursor is set to the new position and the start-of-line information is
+ * updated to the same position, so that a newline will return to @x
  *
- * @priv	private data of the console device
- * @idx		color index
- * Return:	color value
+ * @dev:	video console device to update
+ * @x:		x position from left in pixels
+ * @y:		y position from top in pixels
  */
-u32 vid_console_color(struct video_priv *priv, unsigned int idx);
+void vidconsole_set_cursor_pos(struct udevice *dev, int x, int y);
+
+/**
+ * vidconsole_list_fonts() - List the available fonts
+ *
+ * This shows a list on the console
+ */
+void vidconsole_list_fonts(void);
+
+/**
+ * vidconsole_select_font() - Select a font to use
+ *
+ * @dev: vidconsole device
+ * @name: Font name
+ * @size: Size of the font (norminal pixel height) or 0 for default
+ */
+int vidconsole_select_font(struct udevice *dev, const char *name, uint size);
+
+/**
+ * vidconsole_get_font() - get the current font name and size
+ *
+ * @dev: vidconsole device
+ * @sizep: Place to put the font size (nominal height in pixels)
+ * Returns: Current font name
+ */
+const char *vidconsole_get_font(struct udevice *dev, uint *sizep);
 
 #ifdef CONFIG_VIDEO_COPY
 /**
diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile
index e187d2a..f8e8afe 100644
--- a/lib/efi_loader/Makefile
+++ b/lib/efi_loader/Makefile
@@ -66,7 +66,7 @@
 endif
 obj-y += efi_watchdog.o
 obj-$(CONFIG_EFI_ESRT) += efi_esrt.o
-obj-$(CONFIG_DM_VIDEO) += efi_gop.o
+obj-$(CONFIG_VIDEO) += efi_gop.o
 obj-$(CONFIG_BLK) += efi_disk.o
 obj-$(CONFIG_NET) += efi_net.o
 obj-$(CONFIG_GENERATE_ACPI_TABLE) += efi_acpi.o
diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c
index ab83f8b..4d08dd3 100644
--- a/lib/efi_loader/efi_console.c
+++ b/lib/efi_loader/efi_console.c
@@ -353,7 +353,7 @@
 	int rows = 25, cols = 80;
 	int ret = -ENODEV;
 
-	if (IS_ENABLED(CONFIG_DM_VIDEO))
+	if (IS_ENABLED(CONFIG_VIDEO))
 		ret = query_vidconsole(&rows, &cols);
 	if (ret)
 		ret = query_console_serial(&rows, &cols);
diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c
index 20bd7ff..d1dc2f2 100644
--- a/lib/efi_loader/efi_gop.c
+++ b/lib/efi_loader/efi_gop.c
@@ -252,21 +252,13 @@
 	efi_uintn_t vid_bpp = 0;
 
 	switch (gopobj->bpix) {
-#ifdef CONFIG_DM_VIDEO
 	case VIDEO_BPP32:
-#else
-	case LCD_COLOR32:
-#endif
 		if (gopobj->info.pixel_format == EFI_GOT_BGRA8)
 			vid_bpp = 32;
 		else
 			vid_bpp = 30;
 		break;
-#ifdef CONFIG_DM_VIDEO
 	case VIDEO_BPP16:
-#else
-	case LCD_COLOR16:
-#endif
 		vid_bpp = 16;
 		break;
 	}
@@ -476,8 +468,6 @@
 	u64 fb_base, fb_size;
 	void *fb;
 	efi_status_t ret;
-
-#ifdef CONFIG_DM_VIDEO
 	struct udevice *vdev;
 	struct video_priv *priv;
 
@@ -495,26 +485,10 @@
 	fb_base = (uintptr_t)priv->fb;
 	fb_size = priv->fb_size;
 	fb = priv->fb;
-#else
-	int line_len;
-
-	bpix = panel_info.vl_bpix;
-	format = VIDEO_UNKNOWN;
-	col = panel_info.vl_col;
-	row = panel_info.vl_row;
-	fb_base = gd->fb_base;
-	fb_size = lcd_get_size(&line_len);
-	fb = (void*)gd->fb_base;
-#endif
 
 	switch (bpix) {
-#ifdef CONFIG_DM_VIDEO
 	case VIDEO_BPP16:
 	case VIDEO_BPP32:
-#else
-	case LCD_COLOR32:
-	case LCD_COLOR16:
-#endif
 		break;
 	default:
 		/* So far, we only work in 16 or 32 bit mode */
@@ -553,11 +527,7 @@
 	gopobj->info.version = 0;
 	gopobj->info.width = col;
 	gopobj->info.height = row;
-#ifdef CONFIG_DM_VIDEO
 	if (bpix == VIDEO_BPP32)
-#else
-	if (bpix == LCD_COLOR32)
-#endif
 	{
 		if (format == VIDEO_X2R10G10B10) {
 			gopobj->info.pixel_format = EFI_GOT_BITMASK;
diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c
index 9d71893..a340bc3 100644
--- a/lib/efi_loader/efi_setup.c
+++ b/lib/efi_loader/efi_setup.c
@@ -326,11 +326,11 @@
 			goto out;
 	}
 
-#if defined(CONFIG_LCD) || defined(CONFIG_DM_VIDEO)
-	ret = efi_gop_register();
-	if (ret != EFI_SUCCESS)
-		goto out;
-#endif
+	if (IS_ENABLED(CONFIG_VIDEO)) {
+		ret = efi_gop_register();
+		if (ret != EFI_SUCCESS)
+			goto out;
+	}
 #ifdef CONFIG_NET
 	ret = efi_net_register();
 	if (ret != EFI_SUCCESS)
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 4c760fe..1855652 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -64,7 +64,6 @@
 CONFIG_G_DNL_UMS_PRODUCT_NUM
 CONFIG_G_DNL_UMS_VENDOR_NUM
 CONFIG_HDMI_ENCODER_I2C_ADDR
-CONFIG_HIDE_LOGO_VERSION
 CONFIG_HIKEY_GPIO
 CONFIG_HOSTNAME
 CONFIG_HPS_ALTERAGRP_DBGATCLK
@@ -262,9 +261,6 @@
 CONFIG_KSNET_SERDES_SGMII_BASE
 CONFIG_L1_INIT_RAM
 CONFIG_L2_CACHE
-CONFIG_LCD_ALIGNMENT
-CONFIG_LCD_MENU
-CONFIG_LD9040
 CONFIG_LEGACY_BOOTCMD_ENV
 CONFIG_LOADS_ECHO
 CONFIG_LOWPOWER_ADDR
@@ -389,7 +385,6 @@
 CONFIG_RTC_MCFRRTC
 CONFIG_RTC_MXS
 CONFIG_RTC_PT7C4338
-CONFIG_SAMA5D3_LCD_BASE
 CONFIG_SANDBOX_ARCH
 CONFIG_SANDBOX_SDL
 CONFIG_SANDBOX_SPI_MAX_BUS
@@ -1280,7 +1275,6 @@
 CONFIG_SYS_VCXK_REQUEST_DDR
 CONFIG_SYS_VCXK_REQUEST_PIN
 CONFIG_SYS_VCXK_REQUEST_PORT
-CONFIG_SYS_VIDEO_LOGO_MAX_SIZE
 CONFIG_SYS_VSC7385_BASE
 CONFIG_SYS_VSC7385_BASE_PHYS
 CONFIG_SYS_VSC7385_BR_PRELIM
diff --git a/test/cmd/Makefile b/test/cmd/Makefile
index f2a5f4e..6dd6e81 100644
--- a/test/cmd/Makefile
+++ b/test/cmd/Makefile
@@ -11,6 +11,7 @@
 obj-y += mem.o
 obj-$(CONFIG_CMD_ADDRMAP) += addrmap.o
 obj-$(CONFIG_CMD_FDT) += fdt.o
+obj-$(CONFIG_CONSOLE_TRUETYPE) += font.o
 obj-$(CONFIG_CMD_LOADM) += loadm.o
 obj-$(CONFIG_CMD_MEM_SEARCH) += mem_search.o
 obj-$(CONFIG_CMD_PINMUX) += pinmux.o
diff --git a/test/cmd/font.c b/test/cmd/font.c
new file mode 100644
index 0000000..7a4156a
--- /dev/null
+++ b/test/cmd/font.c
@@ -0,0 +1,77 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Tests for font command
+ *
+ * Copyright 2022 Google LLC
+ */
+
+#include <common.h>
+#include <console.h>
+#include <dm.h>
+#include <video_console.h>
+#include <test/suites.h>
+#include <test/ut.h>
+
+/* Declare a new fdt test */
+#define FONT_TEST(_name, _flags)	UNIT_TEST(_name, _flags, font_test)
+
+/* Test 'fdt addr' resizing an fdt */
+static int font_test_base(struct unit_test_state *uts)
+{
+	struct udevice *dev;
+	int max_metrics;
+	uint size;
+	int ret;
+
+	ut_assertok(uclass_first_device_err(UCLASS_VIDEO, &dev));
+	ut_assertok(uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev));
+
+	ut_assertok(console_record_reset_enable());
+	ut_assertok(run_command("font list", 0));
+	ut_assert_nextline("nimbus_sans_l_regular");
+	ut_assert_nextline("cantoraone_regular");
+	ut_assertok(ut_check_console_end(uts));
+
+	ut_asserteq_str("nimbus_sans_l_regular",
+			vidconsole_get_font(dev, &size));
+	ut_asserteq(18, size);
+
+	max_metrics = 1;
+	if (IS_ENABLED(CONFIG_CONSOLE_TRUETYPE))
+		max_metrics = IF_ENABLED_INT(CONFIG_CONSOLE_TRUETYPE,
+				     CONFIG_CONSOLE_TRUETYPE_MAX_METRICS);
+
+	ret = run_command("font select cantoraone_regular 40", 0);
+	if (max_metrics < 2) {
+		ut_asserteq(1, ret);
+		ut_assert_nextline("Failed (error -7)");
+		ut_assertok(ut_check_console_end(uts));
+		return 0;
+	}
+
+	ut_assertok(ret);
+	ut_assertok(ut_check_console_end(uts));
+
+	ut_asserteq_str("cantoraone_regular",
+			vidconsole_get_font(dev, &size));
+	ut_asserteq(40, size);
+
+	ut_assertok(run_command("font size 30", 0));
+	ut_assertok(ut_check_console_end(uts));
+
+	ut_asserteq_str("cantoraone_regular",
+			vidconsole_get_font(dev, &size));
+	ut_asserteq(30, size);
+
+	return 0;
+}
+FONT_TEST(font_test_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT |
+	  UT_TESTF_CONSOLE_REC | UT_TESTF_DM);
+
+int do_ut_font(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
+{
+	struct unit_test *tests = UNIT_TEST_SUITE_START(font_Test);
+	const int n_ents = UNIT_TEST_SUITE_COUNT(font_test);
+
+	return cmd_ut_category("font", "font_test_", tests, n_ents, argc, argv);
+}
diff --git a/test/cmd_ut.c b/test/cmd_ut.c
index 99e53dd..dc88c5f 100644
--- a/test/cmd_ut.c
+++ b/test/cmd_ut.c
@@ -49,6 +49,9 @@
 #ifdef CONFIG_CMD_FDT
 	U_BOOT_CMD_MKENT(fdt, CONFIG_SYS_MAXARGS, 1, do_ut_fdt, "", ""),
 #endif
+#ifdef CONFIG_CONSOLE_TRUETYPE
+	U_BOOT_CMD_MKENT(font, CONFIG_SYS_MAXARGS, 1, do_ut_font, "", ""),
+#endif
 #ifdef CONFIG_UT_OPTEE
 	U_BOOT_CMD_MKENT(optee, CONFIG_SYS_MAXARGS, 1, do_ut_optee, "", ""),
 #endif
@@ -144,6 +147,9 @@
 #ifdef CONFIG_CMD_FDT
 	"ut fdt [test-name] - test of the fdt command\n"
 #endif
+#ifdef CONFIG_CONSOLE_TRUETYPE
+	"ut font [test-name] - test of the font command\n"
+#endif
 #ifdef CONFIG_UT_LIB
 	"ut lib [test-name] - test library functions\n"
 #endif
diff --git a/test/dm/Makefile b/test/dm/Makefile
index fd7d310..cc3cc45 100644
--- a/test/dm/Makefile
+++ b/test/dm/Makefile
@@ -69,7 +69,7 @@
 obj-y += ofread.o
 obj-y += of_extra.o
 obj-$(CONFIG_OSD) += osd.o
-obj-$(CONFIG_DM_VIDEO) += panel.o
+obj-$(CONFIG_VIDEO) += panel.o
 obj-$(CONFIG_EFI_PARTITION) += part.o
 obj-$(CONFIG_PCI) += pci.o
 obj-$(CONFIG_P2SB) += p2sb.o
@@ -112,7 +112,7 @@
 obj-$(CONFIG_TIMER) += timer.o
 obj-$(CONFIG_TPM_V2) += tpm.o
 obj-$(CONFIG_DM_USB) += usb.o
-obj-$(CONFIG_DM_VIDEO) += video.o
+obj-$(CONFIG_VIDEO) += video.o
 ifeq ($(CONFIG_VIRTIO_SANDBOX),y)
 obj-y += virtio.o
 obj-$(CONFIG_VIRTIO_RNG) += virtio_device.o
diff --git a/tools/Makefile b/tools/Makefile
index 34a1aa7..af6a710 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -25,7 +25,6 @@
 # Enable all the config-independent tools
 ifneq ($(HOST_TOOLS_ALL),)
 CONFIG_ARCH_KIRKWOOD = y
-CONFIG_LCD_LOGO = y
 CONFIG_CMD_LOADS = y
 CONFIG_CMD_NET = y
 CONFIG_XWAY_SWAP_BYTES = y
@@ -48,7 +47,6 @@
 
 hostprogs-$(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER) += atmel_pmecc_params
 
-hostprogs-$(CONFIG_LCD_LOGO) += bmp_logo
 hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo
 HOSTCFLAGS_bmp_logo.o := -pedantic
 
@@ -278,8 +276,6 @@
 # Generated LCD/video logo
 LOGO_H = $(objtree)/include/bmp_logo.h
 LOGO_DATA_H = $(objtree)/include/bmp_logo_data.h
-LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H)
-LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_DATA_H)
 LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H)
 LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_DATA_H)
 
@@ -316,7 +312,7 @@
 $(LOGO_H):	$(obj)/bmp_logo $(LOGO_BMP)
 	$(obj)/bmp_logo --gen-info $(LOGO_BMP) > $@
 
-ifeq ($(CONFIG_DM_VIDEO),y)
+ifeq ($(CONFIG_VIDEO),y)
 $(LOGO_DATA_H):	$(obj)/bmp_logo $(LOGO_BMP)
 	$(obj)/bmp_logo --gen-bmp $(LOGO_BMP) > $@
 else