summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2026-07-06 18:26:12 -0600
committerTom Rini <[email protected]>2026-07-06 18:26:12 -0600
commitee5d46b45ec0c63f8f9dd1e816e0dac3452ccc3d (patch)
tree800cd9e204ca027144070101884c0d5d3c00130f /drivers/video
parentece349ade2973e220f524ce59e59711cc919263f (diff)
parenta18265f1ccb7a272721ed4286ed3b5a6182ff424 (diff)
Merge branch 'next'
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/Kconfig210
-rw-r--r--drivers/video/bridge/Kconfig4
-rw-r--r--drivers/video/bridge/anx6345.c2
-rw-r--r--drivers/video/bridge/ps862x.c2
-rw-r--r--drivers/video/bridge/ptn3460.c2
-rw-r--r--drivers/video/console_normal.c2
-rw-r--r--drivers/video/console_rotate.c6
-rw-r--r--drivers/video/console_truetype.c2
-rw-r--r--drivers/video/dw_mipi_dsi.c2
-rw-r--r--drivers/video/imx/Kconfig2
-rw-r--r--drivers/video/imx/ipu.h1
-rw-r--r--drivers/video/imx/ipu_common.c13
-rw-r--r--drivers/video/imx/ldb.c2
-rw-r--r--drivers/video/meson/meson_vpu.c8
-rw-r--r--drivers/video/rockchip/Kconfig4
-rw-r--r--drivers/video/simplefb.c17
-rw-r--r--drivers/video/stm32/stm32_dsi.c2
-rw-r--r--drivers/video/sunxi/sunxi_de2.c2
-rw-r--r--drivers/video/sunxi/sunxi_display.c2
-rw-r--r--drivers/video/tda19988.c2
-rw-r--r--drivers/video/tegra/Kconfig42
-rw-r--r--drivers/video/tegra/dsi.c2
-rw-r--r--drivers/video/ti/Kconfig2
-rw-r--r--drivers/video/tidss/Kconfig4
-rw-r--r--drivers/video/zynqmp/Kconfig6
25 files changed, 183 insertions, 160 deletions
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index c2acc13139c..15000e21840 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -29,6 +29,13 @@ config VIDEO_FONT_4X6
Provides character bitmap data in header file.
When selecting multiple fonts, you may want to enable CMD_SELECT_FONT too.
+config VIDEO_FONT_6X8
+ bool "6 x 8 font size"
+ help
+ Font for video console driver, 6 x 8 pixels.
+ Provides character bitmap data in header file.
+ When selecting multiple fonts, you may want to enable CMD_SELECT_FONT too.
+
config VIDEO_FONT_8X16
bool "8 x 16 font size"
default y
@@ -247,10 +254,10 @@ 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
help
- Normally the display is black on a white background, Enable this
- option to invert this, i.e. white on a black background. This can be
- better in low-light situations or to reduce eye strain in some
- cases.
+ Normally the display is black on a white background, Enable this
+ option to invert this, i.e. white on a black background. This can be
+ better in low-light situations or to reduce eye strain in some
+ cases.
config NO_FB_CLEAR
bool "Skip framebuffer clear"
@@ -508,10 +515,10 @@ config FRAMEBUFFER_VESA_MODE
config VIDEO_LCD_ANX9804
bool "ANX9804 bridge chip"
- ---help---
- Support for the ANX9804 bridge chip, which can take pixel data coming
- from a parallel LCD interface and translate it on the fy into a DP
- interface for driving eDP TFT displays. It uses I2C for configuration.
+ help
+ Support for the ANX9804 bridge chip, which can take pixel data coming
+ from a parallel LCD interface and translate it on the fy into a DP
+ interface for driving eDP TFT displays. It uses I2C for configuration.
config ATMEL_LCD
bool "Atmel LCD panel support"
@@ -534,7 +541,7 @@ config VIDEO_BCM2835
that U-Boot can access it with full colour depth.
config VIDEO_LCD_ENDEAVORU
- tristate "Endeavoru 720x1280 DSI video mode panel"
+ bool "Endeavoru 720x1280 DSI video mode panel"
depends on PANEL && BACKLIGHT
select VIDEO_MIPI_DSI
help
@@ -549,8 +556,8 @@ config VIDEO_LCD_HIMAX_HX8394
depends on PANEL && BACKLIGHT
select VIDEO_MIPI_DSI
help
- Say Y here if you want to enable support for Himax HX8394
- dsi 4dl panel.
+ Say Y here if you want to enable support for Himax HX8394
+ dsi 4dl panel.
config VIDEO_LCD_ILITEK_ILI9806E
bool "Ilitek ILI9806E-based panels"
@@ -561,7 +568,7 @@ config VIDEO_LCD_ILITEK_ILI9806E
is implemented.
config VIDEO_LCD_MOT
- tristate "Atrix 4G and Droid X2 540x960 DSI video mode panel"
+ bool "Atrix 4G and Droid X2 540x960 DSI video mode panel"
depends on PANEL && BACKLIGHT
select VIDEO_MIPI_DSI
help
@@ -574,15 +581,15 @@ config VIDEO_LCD_NOVATEK_NT35510
bool "Novatek NT35510 DSI LCD panel support"
select VIDEO_MIPI_DSI
help
- Say Y here if you want to enable support for Novatek nt35510
- dsi panel.
+ Say Y here if you want to enable support for Novatek nt35510
+ dsi panel.
config VIDEO_LCD_ORISETECH_OTM8009A
bool "OTM8009A DSI LCD panel support"
select VIDEO_MIPI_DSI
help
- Say Y here if you want to enable support for Orise Technology
- otm8009a 480x800 dsi 2dl panel.
+ Say Y here if you want to enable support for Orise Technology
+ otm8009a 480x800 dsi 2dl panel.
config VIDEO_LCD_LG_LD070WX3
bool "LD070WX3 DSI LCD panel support"
@@ -602,13 +609,14 @@ config VIDEO_LCD_LG_LH400WV3
config VIDEO_LCD_RAYDIUM_RM68200
bool "RM68200 DSI LCD panel support"
+ depends on BACKLIGHT
select VIDEO_MIPI_DSI
help
- Say Y here if you want to enable support for Raydium RM68200
- 720x1280 DSI video mode panel.
+ Say Y here if you want to enable support for Raydium RM68200
+ 720x1280 DSI video mode panel.
config VIDEO_LCD_RENESAS_R61307
- tristate "Renesas R61307 DSI video mode panel"
+ bool "Renesas R61307 DSI video mode panel"
depends on PANEL && BACKLIGHT
select VIDEO_MIPI_DSI
help
@@ -617,7 +625,7 @@ config VIDEO_LCD_RENESAS_R61307
resolution and uses 24 bit RGB per pixel.
config VIDEO_LCD_RENESAS_R69328
- tristate "Renesas R69328 720x1280 DSI video mode panel"
+ bool "Renesas R69328 720x1280 DSI video mode panel"
depends on PANEL && BACKLIGHT
select VIDEO_MIPI_DSI
help
@@ -626,7 +634,7 @@ config VIDEO_LCD_RENESAS_R69328
resolution and uses 24 bit RGB per pixel.
config VIDEO_LCD_SAMSUNG_LTL106HL02
- tristate "Samsung LTL106HL02 1920x1080 DSI video mode panel"
+ bool "Samsung LTL106HL02 1920x1080 DSI video mode panel"
depends on PANEL && BACKLIGHT
select VIDEO_MIPI_DSI
help
@@ -635,7 +643,7 @@ config VIDEO_LCD_SAMSUNG_LTL106HL02
resolution (1920x1080).
config VIDEO_LCD_SHARP_LQ079L1SX01
- tristate "Sharp LQ079L1SX01 1536x2048 DSI video mode panel"
+ bool "Sharp LQ079L1SX01 1536x2048 DSI video mode panel"
depends on PANEL && BACKLIGHT
select VIDEO_MIPI_DSI
help
@@ -644,7 +652,7 @@ config VIDEO_LCD_SHARP_LQ079L1SX01
resolution (1536x2048).
config VIDEO_LCD_SHARP_LQ101R1SX01
- tristate "Sharp LQ101R1SX01 2560x1600 DSI video mode panel"
+ bool "Sharp LQ101R1SX01 2560x1600 DSI video mode panel"
depends on PANEL && BACKLIGHT
select VIDEO_MIPI_DSI
help
@@ -654,41 +662,41 @@ config VIDEO_LCD_SHARP_LQ101R1SX01
config VIDEO_LCD_SSD2828
bool "SSD2828 bridge chip"
- ---help---
- Support for the SSD2828 bridge chip, which can take pixel data coming
- from a parallel LCD interface and translate it on the fly into MIPI DSI
- interface for driving a MIPI compatible LCD panel. It uses SPI for
- configuration.
+ help
+ Support for the SSD2828 bridge chip, which can take pixel data coming
+ from a parallel LCD interface and translate it on the fly into MIPI DSI
+ interface for driving a MIPI compatible LCD panel. It uses SPI for
+ configuration.
config VIDEO_LCD_SSD2828_TX_CLK
int "SSD2828 TX_CLK frequency (in MHz)"
depends on VIDEO_LCD_SSD2828
default 0
- ---help---
- The frequency of the crystal, which is clocking SSD2828. It may be
- anything in the 8MHz-30MHz range and the exact value should be
- retrieved from the board schematics. Or in the case of Allwinner
- hardware, it can be usually found as 'lcd_xtal_freq' variable in
- FEX files. It can be also set to 0 for selecting PCLK from the
- parallel LCD interface instead of TX_CLK as the PLL clock source.
+ help
+ The frequency of the crystal, which is clocking SSD2828. It may be
+ anything in the 8MHz-30MHz range and the exact value should be
+ retrieved from the board schematics. Or in the case of Allwinner
+ hardware, it can be usually found as 'lcd_xtal_freq' variable in
+ FEX files. It can be also set to 0 for selecting PCLK from the
+ parallel LCD interface instead of TX_CLK as the PLL clock source.
config VIDEO_LCD_SSD2828_RESET
string "RESET pin of SSD2828"
depends on VIDEO_LCD_SSD2828
default ""
- ---help---
- The reset pin of SSD2828 chip. This takes a string in the format
- understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
+ help
+ The reset pin of SSD2828 chip. This takes a string in the format
+ understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
config VIDEO_LCD_TDO_TL070WSH30
bool "TDO TL070WSH30 DSI LCD panel support"
select VIDEO_MIPI_DSI
help
- Say Y here if you want to enable support for TDO TL070WSH30
- 1024x600 DSI video mode panel.
+ Say Y here if you want to enable support for TDO TL070WSH30
+ 1024x600 DSI video mode panel.
config VIDEO_LCD_HITACHI_TX10D07VM0BAA
- tristate "Hitachi TX10D07VM0BAA 480x800 MIPI DSI video mode panel"
+ bool "Hitachi TX10D07VM0BAA 480x800 MIPI DSI video mode panel"
depends on PANEL && BACKLIGHT
select VIDEO_MIPI_DSI
help
@@ -697,13 +705,13 @@ config VIDEO_LCD_HITACHI_TX10D07VM0BAA
config VIDEO_LCD_HITACHI_TX18D42VM
bool "Hitachi tx18d42vm LVDS LCD panel support"
- ---help---
- Support for Hitachi tx18d42vm LVDS LCD panels, these panels have a
- lcd controller which needs to be initialized over SPI, once that is
- done they work like a regular LVDS panel.
+ help
+ Support for Hitachi tx18d42vm LVDS LCD panels, these panels have a
+ lcd controller which needs to be initialized over SPI, once that is
+ done they work like a regular LVDS panel.
config VIDEO_LCD_SONY_L4F00430T01
- tristate "Sony L4F00430T01 480x800 LCD panel support"
+ bool "Sony L4F00430T01 480x800 LCD panel support"
depends on PANEL
help
Say Y here if you want to enable support for Sony L4F00430T01
@@ -712,7 +720,7 @@ config VIDEO_LCD_SONY_L4F00430T01
data comes from RGB.
config VIDEO_LCD_SAMSUNG_S6E63M0
- tristate "Samsung S6E63M0 controller based panel support"
+ bool "Samsung S6E63M0 controller based panel support"
depends on PANEL && BACKLIGHT
help
Say Y here if you want to enable support for Samsung S6E63M0
@@ -723,44 +731,44 @@ config VIDEO_LCD_SPI_CS
string "SPI CS pin for LCD related config job"
depends on VIDEO_LCD_SSD2828 || VIDEO_LCD_HITACHI_TX18D42VM
default ""
- ---help---
- This is one of the SPI communication pins, involved in setting up a
- working LCD configuration. The exact role of SPI may differ for
- different hardware setups. The option takes a string in the format
- understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
+ help
+ This is one of the SPI communication pins, involved in setting up a
+ working LCD configuration. The exact role of SPI may differ for
+ different hardware setups. The option takes a string in the format
+ understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
config VIDEO_LCD_SPI_SCLK
string "SPI SCLK pin for LCD related config job"
depends on VIDEO_LCD_SSD2828 || VIDEO_LCD_HITACHI_TX18D42VM
default ""
- ---help---
- This is one of the SPI communication pins, involved in setting up a
- working LCD configuration. The exact role of SPI may differ for
- different hardware setups. The option takes a string in the format
- understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
+ help
+ This is one of the SPI communication pins, involved in setting up a
+ working LCD configuration. The exact role of SPI may differ for
+ different hardware setups. The option takes a string in the format
+ understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
config VIDEO_LCD_SPI_MOSI
string "SPI MOSI pin for LCD related config job"
depends on VIDEO_LCD_SSD2828 || VIDEO_LCD_HITACHI_TX18D42VM
default ""
- ---help---
- This is one of the SPI communication pins, involved in setting up a
- working LCD configuration. The exact role of SPI may differ for
- different hardware setups. The option takes a string in the format
- understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
+ help
+ This is one of the SPI communication pins, involved in setting up a
+ working LCD configuration. The exact role of SPI may differ for
+ different hardware setups. The option takes a string in the format
+ understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
config VIDEO_LCD_SPI_MISO
string "SPI MISO pin for LCD related config job (optional)"
depends on VIDEO_LCD_SSD2828
default ""
- ---help---
- This is one of the SPI communication pins, involved in setting up a
- working LCD configuration. The exact role of SPI may differ for
- different hardware setups. If wired up, this pin may provide additional
- useful functionality. Such as bi-directional communication with the
- hardware and LCD panel id retrieval (if the panel can report it). The
- option takes a string in the format understood by 'sunxi_name_to_gpio'
- function, e.g. PH1 for pin 1 of port H.
+ help
+ This is one of the SPI communication pins, involved in setting up a
+ working LCD configuration. The exact role of SPI may differ for
+ different hardware setups. If wired up, this pin may provide additional
+ useful functionality. Such as bi-directional communication with the
+ hardware and LCD panel id retrieval (if the panel can report it). The
+ option takes a string in the format understood by 'sunxi_name_to_gpio'
+ function, e.g. PH1 for pin 1 of port H.
source "drivers/video/meson/Kconfig"
@@ -768,9 +776,9 @@ config VIDEO_MVEBU
bool "Armada XP LCD controller"
depends on ARCH_MVEBU
imply VIDEO_DAMAGE
- ---help---
- Support for the LCD controller integrated in the Marvell
- Armada XP SoC.
+ help
+ Support for the LCD controller integrated in the Marvell
+ Armada XP SoC.
config VIDEO_OMAP3
bool "Enable OMAP3+ DSS Support"
@@ -781,23 +789,23 @@ config VIDEO_OMAP3
config I2C_EDID
bool "Enable EDID library"
help
- This enables library for accessing EDID data from an LCD panel.
+ This enables library for accessing EDID data from an LCD panel.
config I2C_EDID_STANDARD
bool "Enable standard timings EDID library expansion"
depends on I2C_EDID
help
- This enables standard timings expansion for EDID data from an LCD panel.
+ This enables standard timings expansion for EDID data from an LCD panel.
config DISPLAY
bool "Enable Display support"
depends on DM
select I2C_EDID
help
- This supports drivers that provide a display, such as eDP (Embedded
- DisplayPort) and HDMI (High Definition Multimedia Interface).
- The devices provide a simple interface to start up the display,
- read display information and enable it.
+ This supports drivers that provide a display, such as eDP (Embedded
+ DisplayPort) and HDMI (High Definition Multimedia Interface).
+ The devices provide a simple interface to start up the display,
+ read display information and enable it.
config NXP_TDA19988
bool "Enable NXP TDA19988 support"
@@ -811,7 +819,7 @@ config ATMEL_HLCD
depends on ARCH_AT91
imply VIDEO_DAMAGE
help
- HLCDC supports video output to an attached LCD panel.
+ HLCDC supports video output to an attached LCD panel.
config BACKLIGHT_AAT2870
bool "Backlight Driver for AAT2870"
@@ -865,7 +873,7 @@ source "drivers/video/exynos/Kconfig"
config LOGICORE_DP_TX
bool "Enable Logicore DP TX driver"
- depends on DISPLAY
+ depends on DISPLAY && AXI
help
Enable the driver for the transmitter part of the Xilinx LogiCORE
DisplayPort, a IP core for Xilinx FPGAs that implements a DisplayPort
@@ -930,9 +938,9 @@ config VIDEO_NX
bool "Enable video support on Nexell SoC"
depends on ARCH_S5P6818 || ARCH_S5P4418
help
- Nexell SoC supports many video output options including eDP and
- HDMI. This option enables this support which can be used on devices
- which have an eDP display connected.
+ Nexell SoC supports many video output options including eDP and
+ HDMI. This option enables this support which can be used on devices
+ which have an eDP display connected.
config VIDEO_SEPS525
bool "Enable video support for Seps525"
@@ -1018,9 +1026,9 @@ config OSD
bool "Enable OSD support"
depends on DM
help
- This supports drivers that provide a OSD (on-screen display), which
- is a (usually text-oriented) graphics buffer to show information on
- a display.
+ This supports drivers that provide a OSD (on-screen display), which
+ is a (usually text-oriented) graphics buffer to show information on
+ a display.
config SANDBOX_OSD
bool "Enable sandbox OSD"
@@ -1213,10 +1221,10 @@ config SPL_SPLASH_SCREEN
config SPL_SYS_WHITE_ON_BLACK
bool "Display console as white on a black background at SPL"
help
- Normally the display is black on a white background, Enable this
- option to invert this, i.e. white on a black background at spl stage.
- This can be better in low-light situations or to reduce eye strain in
- some cases.
+ Normally the display is black on a white background, Enable this
+ option to invert this, i.e. white on a black background at spl stage.
+ This can be better in low-light situations or to reduce eye strain in
+ some cases.
config SPL_VIDEO_PCI_DEFAULT_FB_SIZE
hex "Default framebuffer size to use if no drivers request it at SPL"
@@ -1279,10 +1287,10 @@ config SPL_SIMPLE_PANEL
config SPL_SYS_WHITE_ON_BLACK
bool "Display console as white on a black background at SPL"
help
- Normally the display is black on a white background, Enable this
- option to invert this, i.e. white on a black background at spl stage.
- This can be better in low-light situations or to reduce eye strain in
- some cases.
+ Normally the display is black on a white background, Enable this
+ option to invert this, i.e. white on a black background at spl stage.
+ This can be better in low-light situations or to reduce eye strain in
+ some cases.
config SPL_VIDEO_REMOVE
bool "Remove video driver after SPL stage"
@@ -1408,13 +1416,13 @@ config SPL_VIDEO_BPP32
will be empty.
config SPL_HIDE_LOGO_VERSION
- bool "Hide the version information on the splash screen at SPL"
- 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.
+ bool "Hide the version information on the splash screen at SPL"
+ 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.
+ Enable this option to hide this information.
endif
endmenu
diff --git a/drivers/video/bridge/Kconfig b/drivers/video/bridge/Kconfig
index 5322a002928..81261c61005 100644
--- a/drivers/video/bridge/Kconfig
+++ b/drivers/video/bridge/Kconfig
@@ -41,8 +41,8 @@ config VIDEO_BRIDGE_ANALOGIX_ANX6345
depends on VIDEO_BRIDGE
select DM_I2C
help
- The Analogix ANX6345 is RGB-to-DP converter. It enables an eDP LCD
- panel to be connected to an parallel LCD interface.
+ The Analogix ANX6345 is RGB-to-DP converter. It enables an eDP LCD
+ panel to be connected to an parallel LCD interface.
config VIDEO_BRIDGE_SOLOMON_SSD2825
bool "Solomon SSD2825 bridge driver"
diff --git a/drivers/video/bridge/anx6345.c b/drivers/video/bridge/anx6345.c
index 8cee4c958bd..a5d2781aa48 100644
--- a/drivers/video/bridge/anx6345.c
+++ b/drivers/video/bridge/anx6345.c
@@ -403,7 +403,7 @@ static int anx6345_probe(struct udevice *dev)
return anx6345_enable(dev);
}
-struct video_bridge_ops anx6345_ops = {
+static const struct video_bridge_ops anx6345_ops = {
.attach = anx6345_attach,
.set_backlight = anx6345_set_backlight,
.read_edid = anx6345_read_edid,
diff --git a/drivers/video/bridge/ps862x.c b/drivers/video/bridge/ps862x.c
index efd03752281..a08227f8355 100644
--- a/drivers/video/bridge/ps862x.c
+++ b/drivers/video/bridge/ps862x.c
@@ -116,7 +116,7 @@ static int ps8622_probe(struct udevice *dev)
return 0;
}
-struct video_bridge_ops ps8622_ops = {
+static const struct video_bridge_ops ps8622_ops = {
.attach = ps8622_attach,
.set_backlight = ps8622_set_backlight,
};
diff --git a/drivers/video/bridge/ptn3460.c b/drivers/video/bridge/ptn3460.c
index 5851e1ef15e..ce576c0b282 100644
--- a/drivers/video/bridge/ptn3460.c
+++ b/drivers/video/bridge/ptn3460.c
@@ -15,7 +15,7 @@ static int ptn3460_attach(struct udevice *dev)
return video_bridge_set_active(dev, true);
}
-struct video_bridge_ops ptn3460_ops = {
+static const struct video_bridge_ops ptn3460_ops = {
.attach = ptn3460_attach,
};
diff --git a/drivers/video/console_normal.c b/drivers/video/console_normal.c
index 07db613ac53..6dc0a6eaf9d 100644
--- a/drivers/video/console_normal.c
+++ b/drivers/video/console_normal.c
@@ -133,7 +133,7 @@ static int console_set_cursor_visible(struct udevice *dev, bool visible,
return 0;
}
-struct vidconsole_ops console_ops = {
+static const struct vidconsole_ops console_ops = {
.putc_xy = console_putc_xy,
.move_rows = console_move_rows,
.set_row = console_set_row,
diff --git a/drivers/video/console_rotate.c b/drivers/video/console_rotate.c
index 886b25dcfaf..e478e0ef3bc 100644
--- a/drivers/video/console_rotate.c
+++ b/drivers/video/console_rotate.c
@@ -284,7 +284,7 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, int cp)
return VID_TO_POS(fontdata->width);
}
-struct vidconsole_ops console_ops_1 = {
+static const struct vidconsole_ops console_ops_1 = {
.putc_xy = console_putc_xy_1,
.move_rows = console_move_rows_1,
.set_row = console_set_row_1,
@@ -293,7 +293,7 @@ struct vidconsole_ops console_ops_1 = {
.select_font = console_simple_select_font,
};
-struct vidconsole_ops console_ops_2 = {
+static const struct vidconsole_ops console_ops_2 = {
.putc_xy = console_putc_xy_2,
.move_rows = console_move_rows_2,
.set_row = console_set_row_2,
@@ -302,7 +302,7 @@ struct vidconsole_ops console_ops_2 = {
.select_font = console_simple_select_font,
};
-struct vidconsole_ops console_ops_3 = {
+static const struct vidconsole_ops console_ops_3 = {
.putc_xy = console_putc_xy_3,
.move_rows = console_move_rows_3,
.set_row = console_set_row_3,
diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c
index eaf169e8386..b9b6f394fbc 100644
--- a/drivers/video/console_truetype.c
+++ b/drivers/video/console_truetype.c
@@ -1069,7 +1069,7 @@ static int console_truetype_probe(struct udevice *dev)
return 0;
}
-struct vidconsole_ops console_truetype_ops = {
+static const struct vidconsole_ops console_truetype_ops = {
.putc_xy = console_truetype_putc_xy,
.move_rows = console_truetype_move_rows,
.set_row = console_truetype_set_row,
diff --git a/drivers/video/dw_mipi_dsi.c b/drivers/video/dw_mipi_dsi.c
index c74fe678d12..ec5d4c81812 100644
--- a/drivers/video/dw_mipi_dsi.c
+++ b/drivers/video/dw_mipi_dsi.c
@@ -837,7 +837,7 @@ static int dw_mipi_dsi_enable(struct udevice *dev)
return 0;
}
-struct dsi_host_ops dw_mipi_dsi_ops = {
+static const struct dsi_host_ops dw_mipi_dsi_ops = {
.init = dw_mipi_dsi_init,
.enable = dw_mipi_dsi_enable,
};
diff --git a/drivers/video/imx/Kconfig b/drivers/video/imx/Kconfig
index c25f209629e..0c386595559 100644
--- a/drivers/video/imx/Kconfig
+++ b/drivers/video/imx/Kconfig
@@ -20,7 +20,7 @@ config IPU_CLK_LEGACY
depends on VIDEO_IPUV3 && !CLK
default y
help
- Use legacy clock management instead of Common Clock Framework.
+ Use legacy clock management instead of Common Clock Framework.
config IMX_LDB
bool "Freescale i.MX8MP LDB bridge"
diff --git a/drivers/video/imx/ipu.h b/drivers/video/imx/ipu.h
index ae40e20bc28..aecb6adffce 100644
--- a/drivers/video/imx/ipu.h
+++ b/drivers/video/imx/ipu.h
@@ -136,7 +136,6 @@ struct ipu_ctx {
struct clk *ipu_clk;
struct clk *ldb_clk;
- unsigned char ipu_clk_enabled;
struct clk *di_clk[2];
struct clk *pixel_clk[2];
diff --git a/drivers/video/imx/ipu_common.c b/drivers/video/imx/ipu_common.c
index 8630374a055..d3b52605731 100644
--- a/drivers/video/imx/ipu_common.c
+++ b/drivers/video/imx/ipu_common.c
@@ -299,9 +299,9 @@ struct ipu_ctx *ipu_probe(struct udevice *dev)
#if CONFIG_IS_ENABLED(IPU_CLK_LEGACY)
clk_set_parent(ctx->pixel_clk[0], ctx->ipu_clk);
clk_set_parent(ctx->pixel_clk[1], ctx->ipu_clk);
+#endif
clk_enable(ctx->ipu_clk);
-#endif
for (int i = 0; i <= 1; i++) {
ret = ipu_di_clk_init(ctx, i);
@@ -384,10 +384,8 @@ int32_t ipu_init_channel(struct ipu_ctx *ctx, ipu_channel_t channel,
debug("init channel = %d\n", IPU_CHAN_ID(channel));
- if (ctx->ipu_clk_enabled == 0) {
- ctx->ipu_clk_enabled = 1;
+ if (!ipu_clk_enabled(ctx))
clk_enable(ipu_clk);
- }
if (*channel_init_mask & (1L << IPU_CHAN_ID(channel))) {
printf("Warning: channel already initialized %d\n",
@@ -543,7 +541,6 @@ void ipu_uninit_channel(struct ipu_ctx *ctx, ipu_channel_t channel)
if (ipu_conf == 0) {
clk_disable(ctx->ipu_clk);
- ctx->ipu_clk_enabled = 0;
}
}
@@ -1045,5 +1042,9 @@ ipu_color_space_t format_to_colorspace(u32 fmt)
bool ipu_clk_enabled(struct ipu_ctx *ctx)
{
- return ctx->ipu_clk_enabled;
+#if CONFIG_IS_ENABLED(IPU_CLK_LEGACY)
+ return clk_get_usecount(ctx->ipu_clk);
+#else
+ return ctx->ipu_clk->enable_count;
+#endif
}
diff --git a/drivers/video/imx/ldb.c b/drivers/video/imx/ldb.c
index e918341c0a3..32a327647f8 100644
--- a/drivers/video/imx/ldb.c
+++ b/drivers/video/imx/ldb.c
@@ -230,7 +230,7 @@ dis_clk:
return ret;
}
-struct video_bridge_ops imx_ldb_ops = {
+static const struct video_bridge_ops imx_ldb_ops = {
.attach = imx_ldb_attach,
.set_backlight = imx_ldb_set_backlight,
};
diff --git a/drivers/video/meson/meson_vpu.c b/drivers/video/meson/meson_vpu.c
index ca627728743..a686faf9f58 100644
--- a/drivers/video/meson/meson_vpu.c
+++ b/drivers/video/meson/meson_vpu.c
@@ -81,8 +81,8 @@ cvbs:
meson_fb.fb_size = ALIGN(meson_fb.xsize * meson_fb.ysize *
((1 << VPU_MAX_LOG2_BPP) / 8) +
MESON_VPU_OVERSCAN, EFI_PAGE_SIZE);
- meson_fb.base = gd->bd->bi_dram[0].start +
- gd->bd->bi_dram[0].size - meson_fb.fb_size;
+ meson_fb.base = gd->dram[0].start +
+ gd->dram[0].size - meson_fb.fb_size;
/* Override the framebuffer address */
uc_plat->base = meson_fb.base;
@@ -175,8 +175,8 @@ static void meson_vpu_setup_simplefb(void *fdt)
* at the end of the RAM and we strip this portion from the kernel
* allowed region
*/
- mem_start = gd->bd->bi_dram[0].start;
- mem_size = gd->bd->bi_dram[0].size - meson_fb.fb_size;
+ mem_start = gd->dram[0].start;
+ mem_size = gd->dram[0].size - meson_fb.fb_size;
ret = fdt_fixup_memory_banks(fdt, &mem_start, &mem_size, 1);
if (ret) {
eprintf("Cannot setup simplefb: Error reserving memory\n");
diff --git a/drivers/video/rockchip/Kconfig b/drivers/video/rockchip/Kconfig
index 96af6d28ef0..41d249cb90c 100644
--- a/drivers/video/rockchip/Kconfig
+++ b/drivers/video/rockchip/Kconfig
@@ -21,7 +21,7 @@ menuconfig VIDEO_ROCKCHIP
Rockchip RK3288 and RK3399.
config VIDEO_ROCKCHIP_MAX_XRES
- int "Maximum horizontal resolution (for memory allocation purposes)"
+ int "Maximum horizontal resolution (for memory allocation purposes)"
depends on VIDEO_ROCKCHIP
default 3840 if DISPLAY_ROCKCHIP_HDMI
default 1920
@@ -31,7 +31,7 @@ config VIDEO_ROCKCHIP_MAX_XRES
framebuffer during device-model binding/probing.
config VIDEO_ROCKCHIP_MAX_YRES
- int "Maximum vertical resolution (for memory allocation purposes)"
+ int "Maximum vertical resolution (for memory allocation purposes)"
depends on VIDEO_ROCKCHIP
default 2160 if DISPLAY_ROCKCHIP_HDMI
default 1080
diff --git a/drivers/video/simplefb.c b/drivers/video/simplefb.c
index 8d0772d4e51..631ae00b1e1 100644
--- a/drivers/video/simplefb.c
+++ b/drivers/video/simplefb.c
@@ -9,6 +9,8 @@
#include <log.h>
#include <video.h>
#include <asm/global_data.h>
+#include <asm/system.h>
+#include <linux/sizes.h>
static int simple_video_probe(struct udevice *dev)
{
@@ -20,8 +22,14 @@ static int simple_video_probe(struct udevice *dev)
fdt_addr_t base;
fdt_size_t size;
u32 width, height, stride, rot;
+ struct ofnode_phandle_args args;
+
+ ret = dev_read_phandle_with_args(dev, "memory-region", NULL, 0, 0, &args);
+ if (ret)
+ base = dev_read_addr_size(dev, &size);
+ else
+ base = ofnode_get_addr_size(args.node, "reg", &size);
- base = dev_read_addr_size(dev, &size);
if (base == FDT_ADDR_T_NONE) {
debug("%s: Failed to decode memory region\n", __func__);
return -EINVAL;
@@ -37,6 +45,13 @@ static int simple_video_probe(struct udevice *dev)
plat->base = base;
plat->size = size;
+#ifdef CONFIG_ARM64
+ /* The framebuffer buffer might not be mapped on some devices */
+ if (plat->base % SZ_4K)
+ log_warning("Framebuffer base %lx is not 4k aligned!\n", plat->base);
+ mmu_map_region((phys_addr_t)plat->base, (phys_addr_t)ALIGN(plat->size, SZ_4K), false);
+#endif
+
video_set_flush_dcache(dev, true);
debug("%s: Query resolution...\n", __func__);
diff --git a/drivers/video/stm32/stm32_dsi.c b/drivers/video/stm32/stm32_dsi.c
index 5c4d8d2aab5..29c57a4ff89 100644
--- a/drivers/video/stm32/stm32_dsi.c
+++ b/drivers/video/stm32/stm32_dsi.c
@@ -511,7 +511,7 @@ err_reg:
return ret;
}
-struct video_bridge_ops stm32_dsi_ops = {
+static const struct video_bridge_ops stm32_dsi_ops = {
.attach = stm32_dsi_attach,
.set_backlight = stm32_dsi_set_backlight,
};
diff --git a/drivers/video/sunxi/sunxi_de2.c b/drivers/video/sunxi/sunxi_de2.c
index 154641b9a69..ab36ee1595b 100644
--- a/drivers/video/sunxi/sunxi_de2.c
+++ b/drivers/video/sunxi/sunxi_de2.c
@@ -368,7 +368,7 @@ int sunxi_simplefb_setup(void *blob)
return 0; /* Keep older kernels working */
}
- start = gd->bd->bi_dram[0].start;
+ start = gd->dram[0].start;
size = de2_plat->base - start;
ret = fdt_fixup_memory_banks(blob, &start, &size, 1);
if (ret) {
diff --git a/drivers/video/sunxi/sunxi_display.c b/drivers/video/sunxi/sunxi_display.c
index 4a6a89ef9d2..fa492c661db 100644
--- a/drivers/video/sunxi/sunxi_display.c
+++ b/drivers/video/sunxi/sunxi_display.c
@@ -1336,7 +1336,7 @@ int sunxi_simplefb_setup(void *blob)
* and e.g. Linux refuses to iomap RAM on ARM, see:
* linux/arch/arm/mm/ioremap.c around line 301.
*/
- start = gd->bd->bi_dram[0].start;
+ start = gd->dram[0].start;
size = sunxi_display->fb_addr - start;
ret = fdt_fixup_memory_banks(blob, &start, &size, 1);
if (ret) {
diff --git a/drivers/video/tda19988.c b/drivers/video/tda19988.c
index ebc8521c6ed..a4cc3a49232 100644
--- a/drivers/video/tda19988.c
+++ b/drivers/video/tda19988.c
@@ -522,7 +522,7 @@ static int tda19988_enable(struct udevice *dev, int panel_bpp,
return 0;
}
-struct dm_display_ops tda19988_ops = {
+static const struct dm_display_ops tda19988_ops = {
.read_edid = tda19988_read_edid,
.enable = tda19988_enable,
};
diff --git a/drivers/video/tegra/Kconfig b/drivers/video/tegra/Kconfig
index 8bc29f2838b..125504024fc 100644
--- a/drivers/video/tegra/Kconfig
+++ b/drivers/video/tegra/Kconfig
@@ -9,13 +9,13 @@ config VIDEO_TEGRA
depends on OF_CONTROL && ARCH_TEGRA
select HOST1X_TEGRA
help
- Enable support for Display Controller found in Tegra SoC. The
- Display Controller Complex integrates two independent display
- controllers. Each display controller is capable of interfacing
- to an external display device, which can be a parallel interface
- or SPI LCD, DVI, an HDMI HDTV, RGB monitor or a MIPI DSI LCD.
- Direct interface is supported directly to most LCD displays with
- TFT or TFT-like interface.
+ Enable support for Display Controller found in Tegra SoC. The
+ Display Controller Complex integrates two independent display
+ controllers. Each display controller is capable of interfacing
+ to an external display device, which can be a parallel interface
+ or SPI LCD, DVI, an HDMI HDTV, RGB monitor or a MIPI DSI LCD.
+ Direct interface is supported directly to most LCD displays with
+ TFT or TFT-like interface.
config VIDEO_DSI_TEGRA
bool "Enable DSI controller support on Tegra devices"
@@ -23,9 +23,9 @@ config VIDEO_DSI_TEGRA
select VIDEO_TEGRA
select VIDEO_MIPI_DSI
help
- Enable support for the Display Serial Interface (DSI) found in
- Tegra SoC. It is a MIPI standard serial bitstream, intended to
- provide a low pin count interface to a display panel.
+ Enable support for the Display Serial Interface (DSI) found in
+ Tegra SoC. It is a MIPI standard serial bitstream, intended to
+ provide a low pin count interface to a display panel.
config VIDEO_HDMI_TEGRA
bool "Enable HDMI support on Tegra devices"
@@ -33,31 +33,31 @@ config VIDEO_HDMI_TEGRA
select I2C_EDID
select VIDEO_TEGRA
help
- Enable support for the High-Definition Multimedia Interface (HDMI)
- found in Tegra SoC.
+ Enable support for the High-Definition Multimedia Interface (HDMI)
+ found in Tegra SoC.
config TEGRA_BACKLIGHT_PWM
bool "Enable Tegra DC PWM backlight support"
depends on BACKLIGHT && VIDEO_TEGRA
help
- Enable support for the Display Controller dependent PWM backlight
- found in the Tegra SoC and usually used with DSI panels.
+ Enable support for the Display Controller dependent PWM backlight
+ found in the Tegra SoC and usually used with DSI panels.
config TEGRA_8BIT_CPU_BRIDGE
bool "Enable 8 bit panel communication protocol for Tegra 20/30"
depends on VIDEO_BRIDGE && DM_GPIO && VIDEO_TEGRA
select VIDEO_MIPI_DSI
help
- Tegra 20 and Tegra 30 feature 8 bit CPU driver panel control
- protocol. This option allows use it as a MIPI DSI bridge to
- set up and control compatible panel.
+ Tegra 20 and Tegra 30 feature 8 bit CPU driver panel control
+ protocol. This option allows use it as a MIPI DSI bridge to
+ set up and control compatible panel.
config VIDEO_TEGRA124
bool "Enable video support on Tegra124"
depends on ARCH_TEGRA
imply VIDEO_DAMAGE
help
- Tegra124 supports many video output options including eDP and
- HDMI. At present only eDP is supported by U-Boot. This option
- enables this support which can be used on devices which
- have an eDP display connected.
+ Tegra124 supports many video output options including eDP and
+ HDMI. At present only eDP is supported by U-Boot. This option
+ enables this support which can be used on devices which
+ have an eDP display connected.
diff --git a/drivers/video/tegra/dsi.c b/drivers/video/tegra/dsi.c
index bc308869f4e..f53fabf6fd6 100644
--- a/drivers/video/tegra/dsi.c
+++ b/drivers/video/tegra/dsi.c
@@ -337,7 +337,7 @@ static ssize_t tegra_dsi_host_transfer(struct mipi_dsi_host *host,
return count;
}
-struct mipi_dsi_host_ops tegra_dsi_bridge_host_ops = {
+static const struct mipi_dsi_host_ops tegra_dsi_bridge_host_ops = {
.transfer = tegra_dsi_host_transfer,
};
diff --git a/drivers/video/ti/Kconfig b/drivers/video/ti/Kconfig
index 0483f760ea1..a3cbefef0de 100644
--- a/drivers/video/ti/Kconfig
+++ b/drivers/video/ti/Kconfig
@@ -6,4 +6,4 @@ config AM335X_LCD
bool "Enable AM335x video support"
depends on ARCH_OMAP2PLUS
help
- Supports video output to an attached LCD panel.
+ Supports video output to an attached LCD panel.
diff --git a/drivers/video/tidss/Kconfig b/drivers/video/tidss/Kconfig
index 3291b3ceb8d..c9849110059 100644
--- a/drivers/video/tidss/Kconfig
+++ b/drivers/video/tidss/Kconfig
@@ -10,7 +10,7 @@
menuconfig VIDEO_TIDSS
bool "Enable TIDSS video support"
- depends on VIDEO
+ depends on VIDEO && PANEL
imply VIDEO_DAMAGE
help
TIDSS supports video output options LVDS and
@@ -19,7 +19,7 @@ menuconfig VIDEO_TIDSS
config SPL_VIDEO_TIDSS
bool "Enable TIDSS video support in SPL Stage"
- depends on SPL_VIDEO
+ depends on SPL_VIDEO && SPL_PANEL
help
This options enables tidss driver in SPL stage. If
you need to use tidss at SPL stage use this config.
diff --git a/drivers/video/zynqmp/Kconfig b/drivers/video/zynqmp/Kconfig
index b35cd1fb342..2c737710639 100644
--- a/drivers/video/zynqmp/Kconfig
+++ b/drivers/video/zynqmp/Kconfig
@@ -3,6 +3,6 @@ config VIDEO_ZYNQMP_DPSUB
bool "Enable video support for ZynqMP Display Port"
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
- compatible string and calling power domain driver.
+ Enable support for Xilinx ZynqMP Display Port. Currently this file
+ is used as placeholder for driver. The main reason is to record
+ compatible string and calling power domain driver.