summaryrefslogtreecommitdiff
path: root/drivers/video
AgeCommit message (Collapse)Author
2026-03-09video: stm32: dsi: add .of_to_plat callbackRaphael Gallais-Pou
Drivers should extract device-tree data before probing via the .of_to_plat hook. Implement it for stm32_dsi driver. By doing so, it also solve a variable shadowing in stm32_dsi_probe() where &clk was used as peripheral clock and ref clock. For readability some struct have been renamed such as: * struct stm32_dsi_priv *dsi -> struct stm32_dsi_priv *priv * struct clk clk -> struct clk pclk Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com> Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2026-02-25Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-samsungTom Rini
- Assorted platform and video driver updates
2026-02-04video: menu "TrueType Fonts" depends on TrueType enabledHeinrich Schuchardt
The Kconfig menu "TrueType Fonts" should only be shown if TrueType is enabled. Put all TrueType dependent customization within one if statement. Remove `depends TRUETYPE` clauses. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <simon.glass@canonical.com>
2026-02-03video: nexell: unsigned parameter cannot be negativeAndrew Goodbody
The parameter 'alpha' is declared as an unsigned type so cannot be negative. The code to test it as being less than zero will always fail and so is redundant and should be removed. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org> Reviewed-by: Stefan Bosch <stefan_b@posteo.net> Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
2026-02-02video: exynos: node variable should not be unsignedAndrew Goodbody
THe variable 'node' is assigned a value of an int, tested for being less than or equal to zero then passed as an argument to a function that takes an int so 'node' should not be unsigned. Fix it. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org>
2026-01-29video: correct label for cyclic video_idleHeinrich Schuchardt
When the cyclic function video_idle() takes too long, a message like the following is displayed: cyclic function video_init took too long: 87707us vs 5000us max The text "video_init" is misleading. Replace it by "video_idle". Reviewed-by: Tom Rini <trini@konsulko.com> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
2026-01-29video: simple_panel: add support for "rocktech,rk043fn48h" displayRaphael Gallais-Pou
Add the compatible "rocktech,rk043fn48h" for simple-panel driver. Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
2026-01-29video: stm32: ltdc: add .of_to_plat callbackRaphael Gallais-Pou
Drivers should extract device-tree data before probing via the .of_to_plat hook. Implement it for stm32_ltdc driver. No functional change. Signed-off-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
2026-01-24video: add DejaVu Mono fontHeinrich Schuchardt
A TrueType font for U-Boot should fulfill the following requirements: * mono spaced * support full code page 437 * easily readable Unfortunately none of the fonts provided with U-Boot fulfills all of these requirements. Let's add the DejaVu Mono font. To reduce the code size the characters are limited to code page 437. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2026-01-16Merge patch series "video: simple_panel support for am335x evm panel"Tom Rini
Markus Schneider-Pargmann (TI.com) <msp@baylibre.com> says: This series adds the capability to define hardcoded panel settings to the simple_panel driver similar to the Linux Kernel and adds the panel used on am335x evm. panel-uclass.c is extended to support get_modes() for panels and drm_display_mode conversion. In a second step the tilcdc is extended to support OF graph to be able to connect to the simple panel devicetree node. Link: https://lore.kernel.org/r/20260105-topic-am33-evm-lcd-v2026-01-v4-0-7617591b8159@baylibre.com
2026-01-16video: ti: am335x: Support OF graphMarkus Schneider-Pargmann (TI.com)
Add support for OF graph parsing. When using OF graph the default tilcdc_panel_info is used which is the same as defined in Linux. Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@baylibre.com>
2026-01-16video: simple_panel: Add tfc_s9700rtwv43tr_01bMarkus Schneider-Pargmann (TI.com)
Add timing data for tfc_s9700rtwv43tr_01b from Linux to the simple-panel driver. To support hardcoded timing data as Linux does, add a new struct simple_panel_drv_data which holds a struct display_timing pointer as well. The hardcoded timing data is preferred over DT parsing. Reviewed-by: Fabio Estevam <festevam@gmail.com> Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@baylibre.com>
2026-01-16panel: Lightweight support of get_modes()Markus Schneider-Pargmann (TI.com)
Linux uses get_modes() to fetch all available panel modes from the driver. This is also used to fetch the modes from Linux's simple panel implementation where a list of drm_display_mode structs is used to define the different possible panels. To make our work easier, create a compatible way of fetching and defining these modes in u-boot. get_modes() fetches the available modes from the panel driver. The get_display_timing() call maps the drm_display_mode properties to the display_timing struct. This call now uses whatever panel operation is available, get_display_timing() or get_modes(). Reviewed-by: Fabio Estevam <festevam@gmail.com> Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@baylibre.com>
2026-01-09Merge patch series "Enable / require DEVRES for devm_.alloc usage outside xPL"Tom Rini
Tom Rini <trini@konsulko.com> says: As seen by a number of patches fixing memory leaks, U-Boot has a problem with developer expectations around devm_kmalloc and friends. Namely, whereas in Linux these memory allocations will be freed automatically in most cases, in U-Boot this is only true if DEVRES is enabled. Now, intentionally, in xPL phases, we do not (and do not offer as an option) enabling DEVRES. However in full U-Boot this is left either to the user, or some drivers have select'd DEVRES on their own. This inconsistency is a problem. This series goes and deals with two small issues that were shown by having all drivers that use devm_.alloc to allocate memory also select DEVRES and then we make DEVRES no longer be a prompted option and instead select'd as needed. We do not make this unconditional as it would result in growing the resulting binary on the many platforms which have no users of the devm_.alloc family of functions. Link: https://lore.kernel.org/r/20251227223833.3019311-1-trini@konsulko.com
2026-01-09dm: core: Default to using DEVRES outside of xPLTom Rini
The devm alloc functions that we have may follow the Linux kernel model where allocations are (almost always) automatically free()'d. However, quite often we don't enable, in full U-Boot, the tracking and free()'ing functionality. This in turn leads to memory leaks because the driver author expects that since the functions have the same name as in the Linux Kernel they have the same behavior. In turn we then get functionally correct commits such as commit 00e1fed93c8c ("firmware: ti_sci: Fix memory leaks in devm_ti_sci_get_of_resource") that manually add these calls. Rather than manually tracking allocations and implementing free()s, rework things so that we follow expectations by enabling the DEVRES functionality (outside of xPL phases). This turns DEVRES from a prompted symbol to a symbol that must be select'd, and we now remove our non-managed alloc/free functions from outside of xPL builds. Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com> Signed-off-by: Tom Rini <trini@konsulko.com>
2025-12-30Merge patch series "video: Remove unused drivers, clean up dependencies"Tom Rini
Tom Rini <trini@konsulko.com> says: This is v2 of the series I originally posted back in August[1]. The changes here are that I've dropped the first patch as TI has recently posted their rework of the driver in question, and I added Svyatoslav's Reviewed-by tag. The end goal here is that "allyesconfig" will be able to build (on sandbox). [1]: https://patchwork.ozlabs.org/project/uboot/list/?series=468123&state=* Link: https://lore.kernel.org/r/20251112200315.1111980-1-trini@konsulko.com
2025-12-30drivers: video: tidss: Refactor tidss_drvSwamil Jain
- Refactor tidss_drv to improve modularity, enabling support for more display interfaces beyond OLDI in the future - Add detection and initialization of active OLDI panels using the DT - Port tidss_oldi.c from the upstream Linux kernel oldi series[0] and derive several APIs from it to determine the dual link pixel order - Add tidss_oldi_init() and helper routines to handle OLDI-specific setup and move related helper routines to tidss_oldi.c [0]: https://lore.kernel.org/all/20250528122544.817829-1-aradhya.bhatia@linux.dev/ Signed-off-by: Swamil Jain <s-jain1@ti.com> Tested-by: Anshul Dalal <anshuld@ti.com>
2025-12-30video: simplefb: Add stride handlingIgor Belwon
Some framebuffers (i.e MediaTek) do not have regular stride - its line length is more than the display width by 8 pixels (on MT6878). As such, introduce the optional stride property, which fixes these framebuffers. Signed-off-by: Igor Belwon <igor.belwon@mentallysanemainliners.org>
2025-12-30Merge patch series "video: display: refactor display_read_timing to avoid ↵Tom Rini
code duplication" Julien Stephan <jstephan@baylibre.com> says: Commit 2dcf143398ad ("dm: video: Repurpose the 'displayport' uclass to 'display'") left the display_read_edid() function unused by mistake. This series addresses that oversight and introduces a new useful cmd. Patch 1: - Refactors display_read_timing() to use the existing display_read_edid() function, eliminating redundant code. - Marks display_read_edid() as static since it is not used outside of the file. Patch 2: - Adds a new read_edid command, which can be very useful for debugging or developing new display drivers. - As this command uses display_read_edid(), the function is made non-static again. Link: https://lore.kernel.org/r/20250630-read_edid_cleanup-v1-0-ec7d425472c7@baylibre.com
2025-12-30cmd: add new command to read edidJulien Stephan
Add a new command to read EDID info from connected display. When applicable EDID can also be retrieved by commands such as: i2c dev x i2c edid 0x50 but the new read_edid function relies on the implementation of the read_edid callback from DISPLAY driver. Signed-off-by: Julien Stephan <jstephan@baylibre.com>
2025-12-30video: stm32: stm32_ltdc: Add missing <linux/sizes.h> to stm32_ltdc.cTom Rini
This driver references the SZ_ macros while relying on an indirection inclusion of <linux/sizes.h>. Add the missing include directly. Signed-off-by: Tom Rini <trini@konsulko.com>
2025-12-30video: sharp-lq101r1sx01: Do not make use of 'z' for printing non-size_tTom Rini
The debug macros in this driver make use of the z prefix when printing regular, non-size_t variables and this results in a warning. Drop 'z'. Signed-off-by: Tom Rini <trini@konsulko.com>
2025-12-30video: ihs_video_out: Add missing <asm/io.h> to ihs_video_out.cTom Rini
This driver references IO macros while relying on an indirection inclusion of <asm/io.h>. Add the missing include directly. Signed-off-by: Tom Rini <trini@konsulko.com>
2025-12-30video: anx9804: Only build when neededTom Rini
The logic for how to handle this video driver is slightly odd. Only in the case of when CONFIG_VIDEO_LCD_PANEL_EDP_4_LANE_1620M_VIA_ANX9804 is enabled do we need to have this file built, and otherwise we have a dummy function in use. Correct the logic by only building this file when needed. Signed-off-by: Tom Rini <trini@konsulko.com>
2025-12-30video: Tighten some video driver dependenciesTom Rini
A few video drivers cannot build without access to some platform specific header files. Express those requirements in Kconfig as well. Signed-off-by: Tom Rini <trini@konsulko.com>
2025-12-30video: tegra: Rework some of the driver dependenciesTom Rini
Looking these drivers over, all of them cannot build without access to some platform specific header files. Express those requirements in Kconfig as well. Furthermore, update the logic a bit more to reflect which parts are optional when other drivers are enabled and which parts cannot be enabled (meaningfully) by themselves. Reviewed-by: Svyatoslav Ryhel <clamor95@gmail.com> Signed-off-by: Tom Rini <trini@konsulko.com>
2025-12-30video: mali_dp: Remove unused driverTom Rini
This driver is unused. Remove it. Signed-off-by: Tom Rini <trini@konsulko.com>
2025-12-30video: display: refactor display_read_timing to avoid code duplicationJulien Stephan
Commit 2dcf143398ad ("dm: video: Repurpose the 'displayport' uclass to 'display'") left the display_read_edid() function unused by mistake. Mark the function as static and reuse it within display_read_timing() to avoid code duplication. Signed-off-by: Julien Stephan <jstephan@baylibre.com>
2025-12-29video: imx: ipuv3: refactor to use dm-managed stateBrian Ruley
Get rid of most globals that are spread around between TU's and place them in their own structs managed by dm. Device state is now owned by each driver instance. This design mirrors the Linux IPUv3 driver architecture. This work is done in preparation to migrate the driver to the clock framework. While not the primary intent, this change also enables multiple IPU instances to exist contemporarily. Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
2025-12-29video: imx: ipuv3: use CONFIG_IS_ENABLEDBrian Ruley
Bring driver up-to-date with U-Boot conventions, but also takes into account SPL and TPL, let compiler optimize while keeping code more readable. Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
2025-12-29video: imx: ipuv3: add names to clk function identifiersBrian Ruley
The API should provide clear distinction in the order of parameters. Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
2025-12-29video: imx: ipuv3: fix camel casesBrian Ruley
U-Boot style specifies to use snake case and checkpatch nudge to check them every time. Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
2025-12-29video: imx: ipuv3: prefer kernel typesBrian Ruley
Conform with U-Boot guidelines and pass checkpatch checks for upcoming changes. Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
2025-12-29video: imx: ipuv3: apply clang-formatBrian Ruley
Bring the code into compliance with U-Boot's coding style guidelines for upcoming changes. Sort includes to tidy things up and apply { RemoveBracesLLVM: true } to remove unnecessary blocks. Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
2025-12-29video: imx: ipuv3: remove undefined function declarationsBrian Ruley
These functions don't seem to be defined nor called anywhere so remove them. Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
2025-12-29video: mxsfb: fix pixel clock polaritySam Meredith
DISPLAY_FLAGS_PIXDATA_NEGEDGE means the controller drives the data on pixel clocks falling edge. That is DOTCLK_POL=0 (default) not 1. The mxsfb-drm driver in the Linux kernel has made the same change and it remains to this day: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v6.19-rc2&id=53990e416bb7adaa59d045f325a47f31a11b75ee I found this was required on an IMX8X SoM. Without the patch a splash screen displays with aliasing-like jagged edges. Signed-off-by: Sam Meredith <sam@aandtinstruments.com> [fabio: Put more information into the commit log] Signed-off-by: Fabio Estevam <festevam@gmail.com>
2025-11-17video: stm32: ltdc: properly search the first available panelRaphael Gallais-Pou
Initially there was only one DSI bridge with one panel attached to this device. This explained the call to uclass_first_device_err(UCLASS_PANEL, ...) which worked fine at the time. Now that multiple bridges and panels, with different technologies, can be plugged onto the board this way to get the panel device is outdated. The lookup is done is two steps. First we circle through the UCLASS_VIDEO_BRIDGE, and once we get one, we search through its endpoints until we get a UCLASS_PANEL device available. Acked-by: Yannick Fertre <yannick.fertre@foss.st.com> Signed-off-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
2025-11-17video: stm32: ltdc: support new hardware version for STM32MP25 SoCRaphael Gallais-Pou
STM32MP2 SoCs feature a new version of the LTDC IP. This new version features a bus clock, as well as a 150MHz pad frequency. Add its compatible to the list of device to probe and handle quirks. The new hardware version features a bus clock. Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> Acked-by: Yannick Fertre <yannick.fertre@foss.st.com> Signed-off-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
2025-11-17video: stm32: STM32 driver support for LVDSRaphael Gallais-Pou
The LVDS Display Interface Transmitter handles the LVDS protocol: it maps the pixels received from the upstream Pixel-DMA (LTDC) onto the LVDS PHY. The LVDS controller driver supports the following high-level features: • FDP-Link-I and OpenLDI (v0.95) protocols • Single-Link or Dual-Link operation • Single-Display or Double-Display (with the same content duplicated on both) • Flexible Bit-Mapping, including JEIDA and VESA • RGB888 or RGB666 output • Synchronous design, with one input pixel per clock cycle • No resolution limitation. Acked-by: Yannick Fertre <yannick.fertre@foss.st.com> Signed-off-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
2025-11-17video: simple_panel: add support for "panel-lvds" displayRaphael Gallais-Pou
Add the compatible "panel-lvds" for simple-panel driver in U-Boot. In Linux this compatible is managed by the driver drivers/gpu/drm/panel/panel-lvds.c but in U-Boot the specific LVDS features (bus_format/bus_flags) are not supported. Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> Reviewed-by: Yannick Fertre <yannick.fertre@foss.st.com> Signed-off-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
2025-11-06efi: video: fix mode info in payload modeBen Wolsieffer
Currently, the EFI framebuffer is non-functional in payload mode. It always reports: "No video mode configured in EFI!" This is caused by a copy-paste error that replaced "struct efi_entry_gopmode" with "struct efi_gop_mode". Fixes: 88753816cf54 ("efi: video: Move payload code into a function") Signed-off-by: Ben Wolsieffer <ben.wolsieffer@hefring.com> Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-10-28video: tegra: Incorrect operator usedAndrew Goodbody
Combining two bits into a mask requires the use of the binary 'or' operator not the logical one. Correct it. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org> Reviewed-by: Thierry Reding <treding@nvidia.com> Acked-by: Svyatoslav Ryhel <clamor95@gmail.com>
2025-10-28video: tegra: Remove unreachable codeAndrew Goodbody
The goto immediately after a return is unreachable. Remove it and its target label as redundant. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org> Reviewed-by: Thierry Reding <treding@nvidia.com> Acked-by: Svyatoslav Ryhel <clamor95@gmail.com>
2025-10-09video: zynqmp: Prevent use of uninitialised variablesAndrew Goodbody
The variables 'offset_matrix' and 'csc_matrix' will be used uninitialised if video->is_rgb is false. Correct the logic so the attempt to use uninitialised variables is not made. Also remove the use of these variables as they seem to serve no useful purpose just being aliases for arrays. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org> Link: https://lore.kernel.org/r/20251001-video_zynqmp-v1-1-34f1e59b9c34@linaro.org Signed-off-by: Michal Simek <michal.simek@amd.com>
2025-08-01video: backlight: add Samsung CMC623 backlight PWM driverIon Agorria
Add support for PWM backlight found in Samsung CMC623 image converter. Signed-off-by: Ion Agorria <ion@agorria.com> Reviewed-by: Svyatoslav Ryhel <clamor95@gmail.com> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
2025-08-01video: bridge: add Samsung CMC623 image converter driverIon Agorria
Add support for a Samsung CMC623 image converter chip found in several Samsung devices such as Samsung Galaxy R (I9103) and Samsung Galaxy Tab 10.1 (GT-P75xx). Signed-off-by: Ion Agorria <ion@agorria.com> Reviewed-by: Svyatoslav Ryhel <clamor95@gmail.com> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
2025-08-01video: panel: add Samsung S6E63M0 panel driverIon Agorria
Samsung S6E63M0 controller is found in some OLED panels like one used in the Samsung Captivate Glide. Currently only DBI C panel is implemented. Signed-off-by: Ion Agorria <ion@agorria.com> Reviewed-by: Svyatoslav Ryhel <clamor95@gmail.com> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
2025-08-01video: panel: add Sony L4F00430T01 panel driverIon Agorria
Sony L4F00430T01 LCD module is found in Samsung Galaxy R. The panel has a WVGA resolution (480x800) and is setup over SPI, video data comes from RGB. Signed-off-by: Ion Agorria <ion@agorria.com> Reviewed-by: Svyatoslav Ryhel <clamor95@gmail.com> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
2025-08-01video: tegra: parametrize PCLK and DE polaritySvyatoslav Ryhel
Configure pixel clock and data enable polarity according to panel flags. Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
2025-06-14Merge patch series "Hex value prefix case cleanup"Tom Rini
E Shattow <e@freeshell.de> says: Make consistent use of lowercase hexadecimal prefix '0x' throughout U-Boot. There are a few remaining uses of uppercase 'X' to denote hexadecimal prefix or placeholder in documentation and error messages. External devicetree-rebasing dts/upstream and the generated code of xilinx/zynq are ignored for the series. Link: https://lore.kernel.org/r/20250606224558.1117422-1-e@freeshell.de