aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2022-10-30 17:16:35 -0400
committerTom Rini <trini@konsulko.com>2022-10-30 17:16:35 -0400
commit218e2c45af83f2cb7b1374b9023b4ced6eb0bb77 (patch)
treee78dcbb902ebca32f6048b74e67414419dc4edab
parent6f02819cceb19c334f1dbd6eccefb4ccfae319f9 (diff)
parentb86986c7b314f1378ca5be8df49310a6ce7302f8 (diff)
downloadu-boot-WIP/30Oct2022.zip
u-boot-WIP/30Oct2022.tar.gz
u-boot-WIP/30Oct2022.tar.bz2
Merge tag 'video-20221030' of https://source.denx.de/u-boot/custodians/u-boot-videoWIP/30Oct2022
- 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
-rw-r--r--MAINTAINERS2
-rw-r--r--README74
-rw-r--r--api/api_display.c22
-rw-r--r--arch/Kconfig2
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c39
-rw-r--r--arch/arm/mach-at91/armv7/sama5d3_devices.c33
-rw-r--r--arch/arm/mach-exynos/include/mach/mipi_dsim.h1
-rw-r--r--arch/arm/mach-imx/cpu.c2
-rw-r--r--arch/arm/mach-imx/mx6/Kconfig2
-rw-r--r--arch/arm/mach-imx/mx6/soc.c2
-rw-r--r--arch/arm/mach-imx/mx7/soc.c2
-rw-r--r--arch/arm/mach-nexell/include/mach/display_dev.h7
-rw-r--r--arch/arm/mach-omap2/am33xx/Kconfig4
-rw-r--r--arch/arm/mach-omap2/am33xx/clock_am33xx.c4
-rw-r--r--arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c2
-rw-r--r--arch/arm/mach-sunxi/Kconfig6
-rw-r--r--arch/arm/mach-tegra/board2.c4
-rw-r--r--arch/x86/Kconfig2
-rw-r--r--board/BuR/brxre1/board.c9
-rw-r--r--board/BuR/common/br_resetc.c6
-rw-r--r--board/BuR/common/bur_common.h6
-rw-r--r--board/BuR/common/common.c225
-rw-r--r--board/BuS/eb_cpu5282/eb_cpu5282.c82
-rw-r--r--board/aristainetos/aristainetos.c4
-rw-r--r--board/atmel/at91sam9261ek/at91sam9261ek.c95
-rw-r--r--board/atmel/at91sam9263ek/at91sam9263ek.c108
-rw-r--r--board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c103
-rw-r--r--board/atmel/at91sam9n12ek/at91sam9n12ek.c64
-rw-r--r--board/atmel/at91sam9rlek/at91sam9rlek.c88
-rw-r--r--board/atmel/at91sam9x5ek/at91sam9x5ek.c2
-rw-r--r--board/atmel/common/Makefile2
-rw-r--r--board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c2
-rw-r--r--board/atmel/sama5d27_wlsom1_ek/sama5d27_wlsom1_ek.c2
-rw-r--r--board/atmel/sama5d2_xplained/sama5d2_xplained.c2
-rw-r--r--board/atmel/sama5d3xek/sama5d3xek.c2
-rw-r--r--board/atmel/sama5d4_xplained/sama5d4_xplained.c2
-rw-r--r--board/atmel/sama5d4ek/sama5d4ek.c2
-rw-r--r--board/beckhoff/mx53cx9020/Makefile2
-rw-r--r--board/bluewater/gurnard/gurnard.c5
-rw-r--r--board/bosch/guardian/board.c70
-rw-r--r--board/compal/paz00/paz00.c2
-rw-r--r--board/compulab/common/Makefile1
-rw-r--r--board/compulab/common/omap3_display.c452
-rw-r--r--board/freescale/imx8ulp_evk/imx8ulp_evk.c2
-rw-r--r--board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c2
-rw-r--r--board/ge/mx53ppd/Makefile2
-rw-r--r--board/l+g/vinco/vinco.c1
-rw-r--r--board/menlo/m53menlo/m53menlo.c6
-rw-r--r--board/nvidia/harmony/harmony.c1
-rw-r--r--board/raspberrypi/rpi/rpi.c1
-rw-r--r--board/ronetix/pm9263/pm9263.c112
-rw-r--r--board/samsung/common/board.c5
-rw-r--r--board/samsung/common/misc.c340
-rw-r--r--board/samsung/trats/trats.c1
-rw-r--r--board/samsung/trats2/trats2.c22
-rw-r--r--board/samsung/universal_c210/universal.c2
-rw-r--r--board/st/stm32f746-disco/stm32f746-disco.c1
-rw-r--r--board/technexion/pico-imx7d/README1
-rw-r--r--board/technexion/pico-imx7d/pico-imx7d.c4
-rw-r--r--board/toradex/colibri-imx6ull/colibri-imx6ull.c4
-rw-r--r--board/toradex/colibri_imx7/colibri_imx7.c6
-rw-r--r--board/toradex/common/tdx-common.c2
-rw-r--r--boot/pxe_utils.c3
-rw-r--r--cmd/Kconfig16
-rw-r--r--cmd/Makefile3
-rw-r--r--cmd/bdinfo.c5
-rw-r--r--cmd/bmp.c42
-rw-r--r--cmd/cls.c2
-rw-r--r--cmd/font.c81
-rw-r--r--cmd/video.c61
-rw-r--r--common/Kconfig2
-rw-r--r--common/Makefile4
-rw-r--r--common/board_f.c27
-rw-r--r--common/fdt_simplefb.c10
-rw-r--r--common/fdt_support.c29
-rw-r--r--common/lcd.c578
-rw-r--r--common/lcd_console.c260
-rw-r--r--common/lcd_console_rotation.c194
-rw-r--r--common/splash.c17
-rw-r--r--common/splash_source.c31
-rw-r--r--common/stdio.c9
-rw-r--r--configs/am335x_guardian_defconfig1
-rw-r--r--configs/aristainetos2c_defconfig2
-rw-r--r--configs/aristainetos2ccslb_defconfig2
-rw-r--r--configs/at91sam9x5ek_dataflash_defconfig2
-rw-r--r--configs/at91sam9x5ek_mmc_defconfig2
-rw-r--r--configs/at91sam9x5ek_nandflash_defconfig2
-rw-r--r--configs/at91sam9x5ek_spiflash_defconfig2
-rw-r--r--configs/bananapi-m5_defconfig2
-rw-r--r--configs/beelink-gsking-x_defconfig2
-rw-r--r--configs/beelink-gtking_defconfig2
-rw-r--r--configs/beelink-gtkingpro_defconfig2
-rw-r--r--configs/chromebit_mickey_defconfig2
-rw-r--r--configs/chromebook_bob_defconfig2
-rw-r--r--configs/chromebook_jerry_defconfig2
-rw-r--r--configs/chromebook_kevin_defconfig2
-rw-r--r--configs/chromebook_minnie_defconfig2
-rw-r--r--configs/chromebook_speedy_defconfig2
-rw-r--r--configs/cm_fx6_defconfig2
-rw-r--r--configs/eb_cpu5282_defconfig1
-rw-r--r--configs/eb_cpu5282_internal_defconfig1
-rw-r--r--configs/evb-px30_defconfig3
-rw-r--r--configs/evb-rk3288_defconfig2
-rw-r--r--configs/evb-rk3399_defconfig2
-rw-r--r--configs/firefly-px30_defconfig3
-rw-r--r--configs/firefly-rk3288_defconfig2
-rw-r--r--configs/gazerbeam_defconfig2
-rw-r--r--configs/ge_b1x5v2_defconfig2
-rw-r--r--configs/ge_bx50v3_defconfig2
-rw-r--r--configs/gurnard_defconfig3
-rw-r--r--configs/gwventana_emmc_defconfig3
-rw-r--r--configs/gwventana_gw5904_defconfig3
-rw-r--r--configs/gwventana_nand_defconfig3
-rw-r--r--configs/harmony_defconfig2
-rw-r--r--configs/imx6dl_icore_nand_defconfig2
-rw-r--r--configs/imx6q_icore_nand_defconfig2
-rw-r--r--configs/imx6qdl_icore_mmc_defconfig2
-rw-r--r--configs/imx6qdl_icore_nand_defconfig2
-rw-r--r--configs/imx7_cm_defconfig2
-rw-r--r--configs/imx8mp_rsb3720a1_4G_defconfig2
-rw-r--r--configs/imx8mp_rsb3720a1_6G_defconfig2
-rw-r--r--configs/imxrt1050-evk_defconfig2
-rw-r--r--configs/khadas-vim3_android_ab_defconfig2
-rw-r--r--configs/khadas-vim3_android_defconfig2
-rw-r--r--configs/khadas-vim3_defconfig2
-rw-r--r--configs/khadas-vim3l_android_ab_defconfig2
-rw-r--r--configs/khadas-vim3l_android_defconfig2
-rw-r--r--configs/khadas-vim3l_defconfig2
-rw-r--r--configs/libretech-ac_defconfig2
-rw-r--r--configs/libretech-cc_defconfig2
-rw-r--r--configs/libretech-cc_v2_defconfig2
-rw-r--r--configs/libretech-s905d-pc_defconfig2
-rw-r--r--configs/libretech-s912-pc_defconfig2
-rw-r--r--configs/ls1028aqds_tfa_SECURE_BOOT_defconfig1
-rw-r--r--configs/ls1028aqds_tfa_defconfig1
-rw-r--r--configs/ls1028ardb_tfa_SECURE_BOOT_defconfig1
-rw-r--r--configs/ls1028ardb_tfa_defconfig1
-rw-r--r--configs/m53menlo_defconfig4
-rw-r--r--configs/marsboard_defconfig2
-rw-r--r--configs/medcom-wide_defconfig2
-rw-r--r--configs/miqi-rk3288_defconfig2
-rw-r--r--configs/mx53cx9020_defconfig2
-rw-r--r--configs/mx53ppd_defconfig2
-rw-r--r--configs/mx6cuboxi_defconfig2
-rw-r--r--configs/mx6qsabrelite_defconfig3
-rw-r--r--configs/mx6sabreauto_defconfig2
-rw-r--r--configs/mx6sabresd_defconfig2
-rw-r--r--configs/mx6ul_14x14_evk_defconfig2
-rw-r--r--configs/mx6ul_9x9_evk_defconfig2
-rw-r--r--configs/nanopc-t4-rk3399_defconfig2
-rw-r--r--configs/nanopi-m4-2gb-rk3399_defconfig2
-rw-r--r--configs/nanopi-m4-rk3399_defconfig2
-rw-r--r--configs/nanopi-m4b-rk3399_defconfig2
-rw-r--r--configs/nanopi-neo4-rk3399_defconfig2
-rw-r--r--configs/nanopi-r4s-rk3399_defconfig2
-rw-r--r--configs/nitrogen6dl2g_defconfig3
-rw-r--r--configs/nitrogen6dl_defconfig3
-rw-r--r--configs/nitrogen6q2g_defconfig3
-rw-r--r--configs/nitrogen6q_defconfig3
-rw-r--r--configs/nitrogen6s1g_defconfig3
-rw-r--r--configs/nitrogen6s_defconfig3
-rw-r--r--configs/nokia_rx51_defconfig2
-rw-r--r--configs/nyan-big_defconfig2
-rw-r--r--configs/odroid-c2_defconfig2
-rw-r--r--configs/odroid-c4_defconfig2
-rw-r--r--configs/odroid-go2_defconfig3
-rw-r--r--configs/odroid-hc4_defconfig2
-rw-r--r--configs/odroid-n2_defconfig2
-rw-r--r--configs/opos6uldev_defconfig2
-rw-r--r--configs/paz00_defconfig2
-rw-r--r--configs/peach-pi_defconfig3
-rw-r--r--configs/peach-pit_defconfig3
-rw-r--r--configs/pico-dwarf-imx7d_defconfig2
-rw-r--r--configs/pico-hobbit-imx7d_defconfig2
-rw-r--r--configs/pico-imx6_defconfig2
-rw-r--r--configs/pico-imx6ul_defconfig2
-rw-r--r--configs/pico-imx7d_bl33_defconfig2
-rw-r--r--configs/pico-imx7d_defconfig2
-rw-r--r--configs/pico-nymph-imx7d_defconfig2
-rw-r--r--configs/pico-pi-imx7d_defconfig2
-rw-r--r--configs/pinebook-pro-rk3399_defconfig2
-rw-r--r--configs/pm9261_defconfig5
-rw-r--r--configs/pm9263_defconfig5
-rw-r--r--configs/puma-rk3399_defconfig2
-rw-r--r--configs/px30-core-ctouch2-of10-px30_defconfig3
-rw-r--r--configs/px30-core-ctouch2-px30_defconfig3
-rw-r--r--configs/px30-core-edimm2.2-px30_defconfig3
-rw-r--r--configs/radxa-zero_defconfig2
-rw-r--r--configs/riotboard_defconfig2
-rw-r--r--configs/roc-pc-mezzanine-rk3399_defconfig2
-rw-r--r--configs/roc-pc-rk3399_defconfig2
-rw-r--r--configs/rock-pi-4-rk3399_defconfig2
-rw-r--r--configs/rock-pi-4c-rk3399_defconfig2
-rw-r--r--configs/rock-pi-n10-rk3399pro_defconfig2
-rw-r--r--configs/rock-pi-n8-rk3288_defconfig2
-rw-r--r--configs/rock2_defconfig2
-rw-r--r--configs/rock960-rk3399_defconfig2
-rw-r--r--configs/rockpro64-rk3399_defconfig2
-rw-r--r--configs/rpi_0_w_defconfig2
-rw-r--r--configs/rpi_2_defconfig2
-rw-r--r--configs/rpi_3_32b_defconfig2
-rw-r--r--configs/rpi_3_b_plus_defconfig2
-rw-r--r--configs/rpi_3_defconfig2
-rw-r--r--configs/rpi_4_32b_defconfig2
-rw-r--r--configs/rpi_4_defconfig2
-rw-r--r--configs/rpi_arm64_defconfig2
-rw-r--r--configs/rpi_defconfig2
-rw-r--r--configs/s5p4418_nanopi2_defconfig2
-rw-r--r--configs/s5pc210_universal_defconfig1
-rw-r--r--configs/sama5d27_som1_ek_mmc1_defconfig2
-rw-r--r--configs/sama5d27_som1_ek_mmc_defconfig2
-rw-r--r--configs/sama5d27_som1_ek_qspiflash_defconfig2
-rw-r--r--configs/sama5d27_wlsom1_ek_mmc_defconfig2
-rw-r--r--configs/sama5d27_wlsom1_ek_qspiflash_defconfig2
-rw-r--r--configs/sama5d2_xplained_emmc_defconfig2
-rw-r--r--configs/sama5d2_xplained_mmc_defconfig2
-rw-r--r--configs/sama5d2_xplained_qspiflash_defconfig2
-rw-r--r--configs/sama5d2_xplained_spiflash_defconfig2
-rw-r--r--configs/sama5d36ek_cmp_mmc_defconfig2
-rw-r--r--configs/sama5d36ek_cmp_nandflash_defconfig2
-rw-r--r--configs/sama5d36ek_cmp_spiflash_defconfig2
-rw-r--r--configs/sama5d3xek_mmc_defconfig2
-rw-r--r--configs/sama5d3xek_nandflash_defconfig2
-rw-r--r--configs/sama5d3xek_spiflash_defconfig2
-rw-r--r--configs/sama5d4_xplained_mmc_defconfig2
-rw-r--r--configs/sama5d4_xplained_nandflash_defconfig2
-rw-r--r--configs/sama5d4_xplained_spiflash_defconfig2
-rw-r--r--configs/sama5d4ek_mmc_defconfig2
-rw-r--r--configs/sama5d4ek_nandflash_defconfig2
-rw-r--r--configs/sama5d4ek_spiflash_defconfig2
-rw-r--r--configs/sandbox64_defconfig2
-rw-r--r--configs/sandbox_defconfig3
-rw-r--r--configs/sandbox_flattree_defconfig2
-rw-r--r--configs/sandbox_noinst_defconfig2
-rw-r--r--configs/sandbox_spl_defconfig2
-rw-r--r--configs/sandbox_vpl_defconfig2
-rw-r--r--configs/seaboard_defconfig2
-rw-r--r--configs/sei510_defconfig2
-rw-r--r--configs/sei610_defconfig2
-rw-r--r--configs/snow_defconfig3
-rw-r--r--configs/spring_defconfig3
-rw-r--r--configs/starqltechn_defconfig2
-rw-r--r--configs/stemmy_defconfig2
-rw-r--r--configs/stm32746g-eval_defconfig2
-rw-r--r--configs/stm32746g-eval_spl_defconfig2
-rw-r--r--configs/stm32f746-disco_defconfig2
-rw-r--r--configs/stm32f746-disco_spl_defconfig2
-rw-r--r--configs/stm32f769-disco_defconfig2
-rw-r--r--configs/stm32f769-disco_spl_defconfig2
-rw-r--r--configs/stm32mp15_basic_defconfig2
-rw-r--r--configs/stm32mp15_defconfig2
-rw-r--r--configs/stm32mp15_trusted_defconfig2
-rw-r--r--configs/tbs2910_defconfig2
-rw-r--r--configs/tec_defconfig2
-rw-r--r--configs/theadorable_debug_defconfig2
-rw-r--r--configs/tinker-rk3288_defconfig2
-rw-r--r--configs/tinker-s-rk3288_defconfig2
-rw-r--r--configs/trats2_defconfig1
-rw-r--r--configs/trats_defconfig1
-rw-r--r--configs/ventana_defconfig2
-rw-r--r--configs/vyasa-rk3288_defconfig2
-rw-r--r--configs/wandboard_defconfig2
-rw-r--r--configs/wetek-core2_defconfig2
-rw-r--r--configs/xilinx_zynqmp_virt_defconfig3
-rw-r--r--doc/README.bus_vcxk67
-rw-r--r--doc/develop/driver-model/migration.rst2
-rw-r--r--doc/usage/cmd/font.rst52
-rw-r--r--doc/usage/environment.rst4
-rw-r--r--doc/usage/index.rst1
-rw-r--r--drivers/pci/Makefile2
-rw-r--r--drivers/pci/pci_rom.c2
-rw-r--r--drivers/serial/sandbox.c3
-rw-r--r--drivers/video/Kconfig154
-rw-r--r--drivers/video/Makefile9
-rw-r--r--drivers/video/atmel_hlcdfb.c227
-rw-r--r--drivers/video/atmel_lcdfb.c102
-rw-r--r--drivers/video/bus_vcxk.c426
-rw-r--r--drivers/video/console_truetype.c265
-rw-r--r--drivers/video/dw_mipi_dsi.c8
-rw-r--r--drivers/video/exynos/Kconfig2
-rw-r--r--drivers/video/exynos/exynos_mipi_dsi_common.c1
-rw-r--r--drivers/video/imx/Kconfig2
-rw-r--r--drivers/video/ld9040.c112
-rw-r--r--drivers/video/meson/Kconfig2
-rw-r--r--drivers/video/nexell_display.c53
-rw-r--r--drivers/video/rockchip/Kconfig2
-rw-r--r--drivers/video/simplefb.c6
-rw-r--r--drivers/video/stm32/Kconfig2
-rw-r--r--drivers/video/tegra124/display.c1
-rw-r--r--drivers/video/ti/Kconfig8
-rw-r--r--drivers/video/ti/Makefile10
-rw-r--r--drivers/video/ti/am335x-fb.c318
-rw-r--r--drivers/video/ti/am335x-fb.h71
-rw-r--r--drivers/video/ti/tilcdc-panel.c172
-rw-r--r--drivers/video/ti/tilcdc-panel.h14
-rw-r--r--drivers/video/ti/tilcdc.c426
-rw-r--r--drivers/video/ti/tilcdc.h38
-rw-r--r--drivers/video/vidconsole-uclass.c141
-rw-r--r--drivers/video/video-uclass.c102
-rw-r--r--drivers/video/video_bmp.c16
-rw-r--r--include/asm-generic/global_data.h4
-rw-r--r--include/configs/at91sam9261ek.h7
-rw-r--r--include/configs/at91sam9263ek.h7
-rw-r--r--include/configs/at91sam9m10g45ek.h5
-rw-r--r--include/configs/at91sam9n12ek.h5
-rw-r--r--include/configs/at91sam9rlek.h7
-rw-r--r--include/configs/brxre1.h4
-rw-r--r--include/configs/colibri-imx6ull.h2
-rw-r--r--include/configs/ge_b1x5v2.h1
-rw-r--r--include/configs/ge_bx50v3.h1
-rw-r--r--include/configs/gw_ventana.h1
-rw-r--r--include/configs/imxrt1050-evk.h2
-rw-r--r--include/configs/m53menlo.h5
-rw-r--r--include/configs/meson64.h2
-rw-r--r--include/configs/mx23evk.h11
-rw-r--r--include/configs/mx28evk.h7
-rw-r--r--include/configs/nitrogen6x.h1
-rw-r--r--include/configs/nyan-big.h5
-rw-r--r--include/configs/pico-imx6ul.h4
-rw-r--r--include/configs/pm9261.h7
-rw-r--r--include/configs/pm9263.h6
-rw-r--r--include/configs/pxm2.h5
-rw-r--r--include/configs/s5pc210_universal.h12
-rw-r--r--include/configs/sama5d3xek.h3
-rw-r--r--include/configs/sunxi-common.h2
-rw-r--r--include/configs/tegra-common-post.h12
-rw-r--r--include/configs/tegra20-common.h5
-rw-r--r--include/configs/trats.h9
-rw-r--r--include/configs/trats2.h9
-rw-r--r--include/env_callback.h7
-rw-r--r--include/lcd.h218
-rw-r--r--include/ld9040.h15
-rw-r--r--include/libtizen.h4
-rw-r--r--include/samsung/misc.h15
-rw-r--r--include/test/suites.h1
-rw-r--r--include/video.h84
-rw-r--r--include/video_console.h64
-rw-r--r--lib/efi_loader/Makefile2
-rw-r--r--lib/efi_loader/efi_console.c2
-rw-r--r--lib/efi_loader/efi_gop.c30
-rw-r--r--lib/efi_loader/efi_setup.c10
-rw-r--r--scripts/config_whitelist.txt6
-rw-r--r--test/cmd/Makefile1
-rw-r--r--test/cmd/font.c77
-rw-r--r--test/cmd_ut.c6
-rw-r--r--test/dm/Makefile4
-rw-r--r--tools/Makefile6
348 files changed, 1149 insertions, 6203 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index cb4d445..048db37 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1466,8 +1466,6 @@ M: Anatolij Gustschin <agust@denx.de>
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 @@ The following options need to be configured:
- 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 @@ int display_get_info(int type, struct display_info *di)
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 @@ int display_draw_bitmap(ulong bitmap, int x, int y)
{
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 @@ config X86
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 @@ config ARCH_APPLE
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 @@ void at91_mci_hw_init(void)
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 @@ void at91_gmac_hw_init(void)
}
#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 @@ void arch_preboot_os(void)
/* 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 @@ config TARGET_KOSAGI_NOVENA
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 @@ const struct boot_mode soc_boot_modes[] = {
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 @@ int boot_mode_getprisec(void)
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 @@ config TARGET_AM335X_GUARDIAN
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 @@ void enable_basic_clocks(void)
&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 @@ static int do_stm32prog(struct cmd_tbl *cmdtp, int flag, int argc,
}
}
- 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 @@ config VIDEO_SUNXI
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_MODE
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 SUNXI_DE2
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 @@ int board_init(void)
#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 @@ int board_init(void)
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 VBT_ADDR
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 @@ int board_late_init(void)
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 @@ void __led_set(led_id_t mask, int state)
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 @@ static void at91sam9261ek_dm9000_hw_init(void)
}
#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 @@ int board_init(void)
#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 @@ static void at91sam9263ek_nand_hw_init(void)
}
#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 @@ int board_init(void)
#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 @@ static void at91sam9m10g45ek_usb_hw_init(void)
}
#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 @@ int board_init(void)
#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 @@ static void at91sam9n12ek_nand_hw_init(void)
}
#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 @@ int board_init(void)
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 @@ static void at91sam9rlek_nand_hw_init(void)
}
#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 @@ int board_init(void)
#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 @@ static void at91sam9x5ek_nand_hw_init(void)
#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 @@ static void board_usb_hw_init(void)
#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 @@ static void rgb_leds_init(void)
#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 @@ static void board_usb_hw_init(void)
#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 @@ int board_late_init(void)
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 @@ static void sama5d4_xplained_usb_hw_init(void)
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 @@ static void sama5d4ek_usb_hw_init(void)
#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 @@ static void lcd_splash(int width, int height)
}
#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 @@ int board_init(void)
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 @@ void lcdbacklight_en(void)
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 @@ int board_late_init(void)
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 @@ void pin_mux_mmc(void)
}
#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 @@ int board_init(void)
}
/* 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 @@ int board_phy_config(struct phy_device *phydev)
}
#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 @@ int board_late_init(void)
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 @@ int board_late_init(void)
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 @@ static void pm9263_nand_hw_init(void)
}
#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 @@ int board_init(void)
#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 @@ int misc_init_r(void)
#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 @@ void set_board_info(void)
}
#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 @@ int g_dnl_board_usb_cable_connected(void)
#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 @@ option in the defconfig
@@ -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 @@ int board_early_init_f(void)
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 @@ int board_init(void)
/* 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 @@ static void setup_gpmi_nand(void)
}
#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 @@ int board_late_init(void)
}
#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 @@ static void setup_gpmi_nand(void)
}
#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 @@ static int setup_lcd(void)
*/
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 @@ int board_fix_fdt(void *rw_fdt_blob)
#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 @@ void handle_pxe_menu(struct pxe_context *ctx, struct pxe_menu *cfg)
/* 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 @@ menu "Misc commands"
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_CONITRACE
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 @@ config CMD_UUID
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_EXT2) += ext2.o
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_WDT) += wdt.o
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 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
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 @@ struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp,
/*
* 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 @@ static int bmp_info(ulong addr)
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 @@ int bmp_display(ulong addr, int x, int y)
}
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 @@ static int do_video_clear(struct cmd_tbl *cmdtp, int flag, int argc,
/* 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_FLUSH_SUPPORT
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_I2C_EDID) += edid.o
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 @@ __weak int arch_reserve_mmu(void)
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 @@ static int fdt_simplefb_configure_node(void *blob, int off)
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 @@ static int fdt_simplefb_configure_node(void *blob, int off)
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 @@ int fdt_simplefb_enable_existing_node(void *blob)
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 @@ int fdt_set_status_by_pathf(void *fdt, enum fdt_status status, const char *fmt,
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 @@ static struct splash_location default_splash_locations[] = {
.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 @@ void splash_get_pos(int *x, int *y)
}
#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 @@ void splash_display_banner(void)
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 @@ int splash_display(void)
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 @@ static int splash_nand_read_raw(u32 bmp_load_addr, int offset, size_t read_size)
}
#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 @@ static int splash_storage_read_raw(struct splash_location *location,
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 @@ int splash_source_load(struct splash_location *locations, uint size)
{
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 @@ int splash_source_load(struct splash_location *locations, uint size)
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 @@ struct stdio_dev *stdio_get_by_name(const char *name)
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 @@ int stdio_add_devices(void)
#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 @@ int stdio_add_devices(void)
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_VENDOR_NUM=0x0451
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=y
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=y
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_ATMEL_PIT_TIMER=y
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_ATMEL_PIT_TIMER=y
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_ATMEL_PIT_TIMER=y
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_ATMEL_PIT_TIMER=y
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_PRODUCT_NUM=0xfada
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_PRODUCT_NUM=0xfada
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_PRODUCT_NUM=0xfada
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_PRODUCT_NUM=0xfada
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_USB=y
# 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_ASIX88179=y
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_USB=y
# 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_ASIX88179=y
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_USB=y
# 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_USB=y
# 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_MXC_SPI=y
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_MCFFEC=y
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_MCFFEC=y
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_HCD=y
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_USB_DWC2=y
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_ASIX88179=y
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_HCD=y
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_ASIX=y
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_MPC83XX_TIMER=y
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_VENDOR_NUM=0x0525
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_DM_SPI=y
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_TIMER=y
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_CI_UDC=y
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_I2C_EDID=y
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_CI_UDC=y
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_I2C_EDID=y
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_CI_UDC=y
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_I2C_EDID=y
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_HOST_ETHER=y
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=y
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=y
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=y
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=y
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_MANUFACTURER="FSL"
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_SPL_SYSRESET=y
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_SPL_SYSRESET=y
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_IMX_GPT_TIMER=y
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_VENDOR_NUM=0x1b8e
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_VENDOR_NUM=0x1b8e
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_PRODUCT_NUM=0xfada
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_VENDOR_NUM=0x1b8e
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_VENDOR_NUM=0x1b8e
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_PRODUCT_NUM=0xfada
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_VENDOR_NUM=0x1b8e
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_VENDOR_NUM=0x1b8e
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_VENDOR_NUM=0x1b8e
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_VENDOR_NUM=0x1b8e
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_VENDOR_NUM=0x1b8e
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_NXP_FSPI=y
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_NXP_FSPI=y
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_NXP_FSPI=y
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_HOST_ETHER=y
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_HOST_ETHER=y
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_IMX_THERMAL=y
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_HCD=y
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_ASIX=y
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_DM_REGULATOR=y
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_HOST_ETHER=y
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_DM_THERMAL=y
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_USB_GADGET_PRODUCT_NUM=0xa4a5
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_VENDOR_NUM=0x0525
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_MANUFACTURER="FSL"
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_MANUFACTURER="FSL"
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_SOFT_SPI=y
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_MCS7830=y
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_ASIX88179=y
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_ASIX88179=y
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_ASIX88179=y
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_ASIX88179=y
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_ASIX88179=y
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_USB_GADGET_PRODUCT_NUM=0xa4a5
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_USB_GADGET_PRODUCT_NUM=0xa4a5
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_USB_GADGET_PRODUCT_NUM=0xa4a5
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_USB_GADGET_PRODUCT_NUM=0xa4a5
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_USB_GADGET_PRODUCT_NUM=0xa4a5
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_USB_GADGET_PRODUCT_NUM=0xa4a5
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_SPI=y
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_VENDOR_NUM=0x0955
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_SYSINFO_SMBIOS=y
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_PRODUCT_NUM=0xfada
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_HCD=y
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_PRODUCT_NUM=0xfada
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_PRODUCT_NUM=0xfada
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_VENDOR_NUM=0x0525
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_HCD=y
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=y
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_DP=y
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=y
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_DP=y
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_MANUFACTURER="FSL"
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_MANUFACTURER="FSL"
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_MANUFACTURER="FSL"
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_MANUFACTURER="FSL"
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_VENDOR_NUM=0x0525
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_MANUFACTURER="FSL"
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_MANUFACTURER="FSL"
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_MANUFACTURER="FSL"
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_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
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_USB=y
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_USB=y
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_ASIX88179=y
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_HCD=y
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_HCD=y
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_HCD=y
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_PRODUCT_NUM=0xfada
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_IMX_THERMAL=y
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_MCS7830=y
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_MCS7830=y
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_MCS7830=y
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_MCS7830=y
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_DWC3_GENERIC=y
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=y
# 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_ROCKCHIP_USB2_PHY=y
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_ASIX88179=y
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_ASIX88179=y
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_DWC2=y
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_DWC2=y
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_KEYBOARD=y
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_KEYBOARD=y
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_KEYBOARD=y
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_VENDOR_NUM=0x0525
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_VENDOR_NUM=0x0525
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_KEYBOARD=y
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_DWC2=y
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_PINCTRL=y
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=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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=y
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=y
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=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_EHCI_HCD=y
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_SANDBOX_TIMER=y
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=y
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_SANDBOX_TIMER=y
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_SANDBOX_TIMER=y
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_SANDBOX_TIMER=y
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_SANDBOX_TIMER=y
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_ULPI=y
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_VENDOR_NUM=0x18d1
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_VENDOR_NUM=0x18d1
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_XHCI_DWC3=y
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_EXYNOS_FB=y
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_XHCI_DWC3=y
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_DP=y
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_DM_PMIC=y
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_MUSB_GADGET=y
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_MII=y
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_SPI=y
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_MII=y
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_SPI=y
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_DM_REGULATOR=y
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_SPI=y
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_MANUFACTURER="STMicroelectronics"
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_MANUFACTURER="STMicroelectronics"
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_MANUFACTURER="STMicroelectronics"
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_VENDOR_NUM=0x0525
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_HCD=y
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_KIRKWOOD_SPI=y
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_ASIX=y
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_ASIX=y
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=y
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=y
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_ULPI=y
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_ETHER_SMSC95XX=y
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_DM_SCSI=y
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_VENDOR_NUM=0x1b8e
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_GADGET_PRODUCT_NUM=0x0300
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 @@ CONFIG_DM_VIDEO
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 @@ For example, for snapper9260 you would create a text file called
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 @@ Shell commands
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 @@ err:
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 @@ int vesa_setup_video(struct udevice *dev, int (*int15_handler)(void))
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 @@ static int sandbox_serial_pending(struct udevice *dev, bool input)
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 @@ config DM_VIDEO
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 VIDEO_LOGO
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 BACKLIGHT
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_PCI_DEFAULT_FB_SIZE
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 @@ config BACKLIGHT_GPIO
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_BPP8
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_BPP16
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_BPP32
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_ANSI
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 VIDEO_MIPI_DSI
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_NORMAL
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_ROTATION
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 @@ config CONSOLE_TRUETYPE_SIZE
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 NO_FB_CLEAR
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 @@ config SIMPLE_PANEL
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 VIDEO_LCD_ANX9804
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_BCM2835
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_ORISETECH_OTM8009A
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_SSD2828_RESET
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 @@ config ATMEL_HLCD
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 @@ source "drivers/video/rockchip/Kconfig"
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_TEGRA20
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 @@ source "drivers/video/imx/Kconfig"
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_NX
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 @@ config VIDEO_ZYNQMP_DPSUB
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 @@ config CONSOLE_SCROLL_LINES
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_DT_SIMPLEFB
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 @@ config SPLASH_SCREEN
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 @@ config SPLASH_SCREEN_ALIGN
=> 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 @@ config SPLASH_SOURCE
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 @@ config VIDEO_BMP_GZIP
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_ROTATION) += console_rotate.o
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_EXYNOS_FB} += exynos/
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_DSI_HOST_SANDBOX) += sandbox_dsi_host.o
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 @@ U_BOOT_DRIVER(atmel_hlcdfb) = {
.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 @@ struct atmel_fb_priv {
#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 @@ static void atmel_fb_init(ulong addr, struct display_timing *timing, int bpix,
(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 @@ U_BOOT_DRIVER(atmel_fb) = {
.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 @@ struct pos_info {
#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 @@ struct pos_info {
* 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 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst,
{
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 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y,
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 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y,
* 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 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y,
* 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 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y,
* 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 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y,
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 @@ static struct font_info font_table[] = {
{} /* 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 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 console_tt_metrics *met;
+ stbtt_fontinfo *font;
+ int ascent;
+
+ if (priv->num_metrics == CONFIG_CONSOLE_TRUETYPE_MAX_METRICS)
+ return log_msg_ret("num", -E2BIG);
+
+ met = &priv->metrics[priv->num_metrics];
+ met->font_name = font_name;
+ met->font_size = font_size;
+ met->font_data = font_data;
+
+ 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 */
+ met->scale = stbtt_ScaleForPixelHeight(font, font_size);
+ stbtt_GetFontVMetrics(font, &ascent, 0, 0);
+ 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);
- stbtt_fontinfo *font = &priv->font;
- int ascent;
+ struct font_info *tab;
+ uint font_size;
+ int ret;
debug("%s: start\n", __func__);
if (vid_priv->font_size)
- priv->font_size = vid_priv->font_size;
+ 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) {
+ font_size = CONFIG_CONSOLE_TRUETYPE_SIZE;
+ tab = console_truetype_find_font();
+ if (!tab) {
debug("%s: Could not find any fonts\n", __func__);
return -EBFONT;
}
- 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;
+ 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];
- if (!stbtt_InitFont(font, priv->font_data, 0)) {
- debug("%s: Font init failed\n", __func__);
- return -EPERM;
- }
+ select_metrics(dev, &priv->metrics[ret]);
- /* Pre-calculate some things we will need regularly */
- priv->scale = stbtt_ScaleForPixelHeight(font, priv->font_size);
- stbtt_GetFontVMetrics(font, &ascent, 0, 0);
- priv->baseline = (int)(ascent * priv->scale);
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 @@ static void dw_mipi_dsi_line_timer_config(struct dw_mipi_dsi *dsi,
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 @@ static void dw_mipi_dsi_vertical_timing_config(struct dw_mipi_dsi *dsi,
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 @@ err_setup:
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 @@ static int nx_display_probe(struct udevice *dev)
/*
* 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 @@ static int simple_video_probe(struct udevice *dev)
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 void vidconsole_newline(struct udevice *dev)
}
}
-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 @@ static char *parsenum(char *s, int *num)
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 @@ static void vidconsole_escape_char(struct udevice *dev, char ch)
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 @@ int vidconsole_memmove(struct udevice *dev, void *dst, const void *src,
}
#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 @@ struct video_uc_priv {
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 @@ int video_reserve(ulong *addrp)
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 @@ int video_clear(struct udevice *dev)
u16 *end = priv->fb + priv->fb_size;
while (ppix < end)
- *ppix++ = priv->colour_bg;
+ *ppix++ = colour;
break;
}
case VIDEO_BPP32:
@@ -140,11 +147,11 @@ int video_clear(struct udevice *dev)
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 @@ int video_clear(struct udevice *dev)
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 @@ void video_set_default_colors(struct udevice *dev, bool invert)
}
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 @@ int video_sync_copy_all(struct udevice *dev)
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 @@ static int show_splash(struct udevice *dev)
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 @@ static void video_splash_align_axis(int *axis, unsigned long panel_size,
*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 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y,
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 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y,
!(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 @@ struct global_data {
* @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 global_data {
*/
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 @@ int universal_spi_read(void);
/* 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 @@ int universal_spi_read(void);
#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 @@ u32 get_board_rev(void);
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_compression(struct cmd_tbl *cmdtp, int flag, int argc,
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 @@ struct video_ops {
#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 @@ struct video_ops {
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 @@ int video_sync(struct udevice *vid, bool force);
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_flush_dcache(struct udevice *dev, bool flush);
*/
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 @@ static inline int video_sync_copy_all(struct udevice *dev)
*/
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 @@ struct video_priv;
#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 @@ void vidconsole_position_cursor(struct udevice *dev, unsigned col,
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
+ *
+ * @dev: video console device to update
+ * @x: x position from left in pixels
+ * @y: y position from top in pixels
+ */
+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
*
- * @priv private data of the console device
- * @idx color index
- * Return: color value
+ * @dev: vidconsole device
+ * @sizep: Place to put the font size (nominal height in pixels)
+ * Returns: Current font name
*/
-u32 vid_console_color(struct video_priv *priv, unsigned int idx);
+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 @@ obj-$(CONFIG_EFI_VARIABLES_PRESEED) += efi_var_seed.o
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 @@ void efi_setup_console_size(void)
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 @@ static efi_uintn_t gop_get_bpp(struct efi_gop *this)
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 @@ efi_status_t efi_gop_register(void)
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 @@ efi_status_t efi_gop_register(void)
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 @@ efi_status_t efi_gop_register(void)
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 @@ efi_status_t efi_init_obj_list(void)
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_THOR_VENDOR_NUM
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_SGMII2_BASE
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_MC13XXX
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_INVERT_PORT
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 @@ endif
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 @@ static struct cmd_tbl cmd_ut_sub[] = {
#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 @@ static char ut_help_text[] =
#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 += ofnode.o
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_TEE) += tee.o
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 @@ CONFIG_BUILD_ENVCRC ?= $(ENVCRC-y)
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 @@ always := $(hostprogs-y)
# 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 @@ __build: $(LOGO-y)
$(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