Commit Graph

484 Commits

Author SHA1 Message Date
Fabian Blatz
8009614c16 drivers: display: sdl: Ensure task thread is run once on init
Adds taking of the task semaphore after creating the display thread
to ensure that the thread is run once, executing the SDL init.
Adjust the threads priority to match the main thread.

Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>
2025-04-25 19:00:28 +02:00
Kate Wang
058a162baf drivers: display: Update nxp,dcnano-lcdif to support IP change on RT700
Update nxp,dcnano-lcdif to support IP change on RT700. There are extra
registers need to be configured for the lcdif on RT700. Add new binding
item "version" to tell which version of the IP the SoC has.

Signed-off-by: Kate Wang <yumeng.wang@nxp.com>
2025-04-23 10:03:42 +02:00
Kate Wang
ed63240804 drivers: display: Fix typo in kconfig comment of nxp,dcnano-lcdif.
Should be DISPLAY_MCUX_DCNANO_LCDIF instead of DISPLAY_MCUX_ELCDIF.

Signed-off-by: Kate Wang <yumeng.wang@nxp.com>
2025-04-23 10:03:42 +02:00
Hugues Fruchet
83b33d1e87 drivers: display: stm32_ltdc: configure RIF for LTDC layer 1
Configure RIF for LTDC layer 1.

Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
2025-04-22 09:59:34 +02:00
Hugues Fruchet
873bba0a1b drivers: display: stm32_ltdc: add support of clock_configure
Add support of clock_configure() for clock source selection
through devicetree.

Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
2025-04-22 09:59:34 +02:00
Hugues Fruchet
0da7671977 drivers: display: stm32_ltdc: add support of framebuffer in psram
Add support of framebuffer in PSRAM memory.

Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
2025-04-22 09:59:34 +02:00
Isaev Denis
d34ed32846 drivers: display: elcdif: remove backlight enable pin dependency
The driver no longer requires a backlight enable GPIO pin to be defined,
which allows compatibility with displays that do not provide such a pin.

Signed-off-by: Isaev Denis <anelderlyfox@yahoo.com>
2025-04-21 20:03:50 +02:00
Isaac Yuki
94655d2a13 drivers: display_mcux_elcdif: enable RGB_888 pixel format
Add missing define in order to enable RGB_888 pixel format support
on the mcux_elcdif driver. Tested with TM070JVHG33 display

Signed-off-by: Isaac Yuki <isaaclucas.delimayuki@tq-group.com>
2025-04-10 15:51:27 +02:00
Yishai Jaffe
b65f0b0fbc drivers: display: sdl: support non-vtiled mono mode
Added support for writing in non-vtiled mono mode to SDL display
emulator driver.

Signed-off-by: Yishai Jaffe <yishai1999@gmail.com>
2025-04-08 17:37:14 +02:00
Fabian Blatz
11b9eba340 drivers: display: sdl: Ensure draw is performed from init thread
Add a thread to the SDL display driver to ensure that init and renderer
calls are performed from the same thread.

Fixes #71410.

Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>
2025-04-08 11:45:01 +02:00
Ibrahim Abdalkader
41a10e41b0 drivers: display: Add Sitronix ST7701 driver.
Display driver for Sitronix ST7701.

Signed-off-by: Ibrahim Abdalkader <i.abdalkader@gmail.com>
2025-03-28 21:50:58 +01:00
Fabian Blatz
fdf9a6172b drivers: display: sdl: Store dev inside of window user_data
Adds storing of the zephyr display device struct inside of the windows
user_data, so it can be used inside of the SDL touch driver context for
checking the origin window of a received event.

Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>
2025-03-25 22:14:40 +01:00
Abderrahmane JARMOUNI
4aaf463158 drivers: display: sdl: clear display only for supported pixel formats
Clear display only when display pixel format is actually supported
since buffer size depends on it.

Signed-off-by: Abderrahmane JARMOUNI <git@jarmouni.me>
2025-03-21 14:17:36 +01:00
Danh Doan
0eef4fe150 drivers: display: extend support for renesas,ra-glcdc driver
Change pinctrl-0 dts prop as optional in case DSI display is used
Add these APIs support: set_brightness, set_contrast, get_framebuffer
Add a new config to select frame buffer section

Signed-off-by: Danh Doan <danh.doan.ue@bp.renesas.com>
2025-03-21 14:17:21 +01:00
Fabian Blatz
1ba9e4d707 drivers: display: sdl: Add support for L8 pixel format
Adds support for the 8bit grayscale pixel format to the SDL
display driver.

Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>
2025-03-19 10:58:06 +01:00
James Roy
ab4023c4ea drivers: display: Add SDL implementation example
Implement the '.clear' interface in the SDL driver
to allow the upper layers to use the display_clear
function.

Signed-off-by: James Roy <rruuaanng@outlook.com>
2025-03-14 14:39:40 +01:00
The Nguyen
539d0f6f61 driver: display: use LP mode for ilitek,ili9806e-dsi
Update driver code to use LPM

Signed-off-by: The Nguyen <the.nguyen.yf@renesas.com>
2025-03-13 10:49:13 +01:00
Camille BAUD
3334a8e9cd drivers: display: Introduce Sitronix ST7567
Introduces a driver for the Sitronix ST7567 132x65 LCD driver.

Signed-off-by: Camille BAUD <mail@massdriver.space>
2025-03-10 11:10:48 +01:00
Ibrahim Abdalkader
33717f9e93 drivers: display: display_stm32_ltdc: Add support for shared multi-heap.
Add support for using shared multi-heap (when available) to allocate
the display's framebuffer. This change allows the driver to co-exist
with other drivers that use shared multi-heap (such as video_common.c).

Signed-off-by: Ibrahim Abdalkader <i.abdalkader@gmail.com>
2025-03-07 19:56:14 +01:00
Khoa Nguyen
c768144002 drivers: Correct value of event macro for all Renesas SoC
Since the RA2L1 uses the macro "ICU_EVENT" instead of
"ELC_EVENT" (which is currently used) to input into
the IELSR register, the ek_ra2l1 board cannot assign
any interrupts for any driver.

This commit aim to correct the Event macro to input correct
value for IELSR register on all the Renesas SoC by using
"BSP_PRV_IELS_ENUM" macro.

Signed-off-by: Khoa Nguyen <khoa.nguyen.xh@renesas.com>
2025-02-28 18:29:17 +01:00
Alberto Escolar Piedras
22cd514048 drivers display_nrf_led_matrix: Init variable to avoid compile warning
Initialize row_index to avoid a compile warning.
The warning seems incorrect, as row_index is initialized in the first
interation of the loop, but the overhead of initializing it is trivial,
so we may as well just do it.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2025-02-15 07:23:47 +01:00
Peter Johanson
16b1d3c29e drivers: display: st7789v: Add ready time to startup
Add additional property to allow a configurable delay to the display
initialization to allow the st7789v to be ready to receive commands.

Signed-off-by: Peter Johanson <peter@peterjohanson.com>
2025-02-05 10:20:52 +01:00
Ilia Kharin
a0fddf6050 drivers: display: st7789v: Improve error handling
Add return error handling and logging in the driver in order to ease
debugging.

Signed-off-by: Ilia Kharin <akscram@gmail.com>
2025-02-05 01:13:12 +01:00
Jamie McCrae
560db8509a drivers: kconfig: Fix bleeding options
Fixes a multitude of Kconfigs that wrongly appear on devices
where support is literally impossible

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
2025-01-31 11:50:12 +01:00
Eve Redero
f683b188b3 drivers: display: ssd1306: add power pin support
Add a power pin toggling feature in ssd1306 driver

Signed-off-by: Eve Redero <eve.redero@gmail.com>
2025-01-22 15:50:02 +01:00
Marcio Ribeiro
4551f3410d drivers: display: ssd1306: add support to ssd1309
SSD1309 support added to SSD1306 display driver

Signed-off-by: Marcio Ribeiro <wmrsouza@hotmail.com>
2025-01-22 05:39:10 +01:00
Irfan Ahmad
cf2ce9d322 drivers: display: Fix typos in multiple display drivers
Found multiple similar typos in various display drivers - fixed them.

Signed-off-by: Irfan Ahmad <irfan.ahmad@siemens.com>
2024-12-27 07:18:28 +01:00
The Nguyen
1d6a453a6a drivers: display: add support for ili9806e_dsi driver
First commit to add support for ili9806e_dsi driver

Signed-off-by: The Nguyen <the.nguyen.yf@renesas.com>
2024-12-20 23:53:37 +02:00
The Nguyen
b5f03367d8 drivers: display: add support for GLCDC on Renesas RA family
First commit to add support for Graphics LCD Controller on Renesas RA

Signed-off-by: The Nguyen <the.nguyen.yf@renesas.com>
2024-12-20 23:53:37 +02:00
Daniel DeGrasse
6ed3554d20 drivers: display: st7796s: use mipi_dbi_configure_te API
Use the mipi_dbi_configure_te API within the st7796s display driver.
If the MIPI DBI controller supports the tearing enable signal, then
configure the ST7796S to output the TE line signal.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-12-11 08:00:42 +01:00
Daniel DeGrasse
a8182aa942 drivers: display: display_rm67162: check ret value of gpio_add_callback
Check the return value of gpio_add_callback() in the display init
function, to resolve an issue flagged by static analysis.

Fixes #81921

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-12-09 15:11:11 +01:00
Daniel DeGrasse
4d24120dcf drivers: display: display_rm67162: fix unsigned compare against 0
"wlen" variable set to return value of mipi_dsi_transfer should be a
ssize_t type, so that if a negative value is returned the error will be
caught and returned.

Fixes #81929

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-12-09 15:11:11 +01:00
Daniel DeGrasse
d7c9c4505c drivers: display: display_rm67162: fix dead code for pixel format
Fix dead code within the set_pixel_format() function for the RM67162.
This function should set the relevant data fields for the driver, then
send the MIPI DCS command to change pixel format.

Fixes #81945

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-12-09 15:11:11 +01:00
Pieter De Gendt
b2826aebbd drivers: display: display_ili9xxx: Allow multiple instances
The ili9xxx driver is used for multiple variants, but did not support
different ones at the same time.
Use unique variable names for each variant.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-05 22:08:37 +01:00
Pieter De Gendt
39a49431c7 drivers: display: Place API into iterable section
Add wrapper DEVICE_API macro to all display_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-02 22:05:41 +00:00
Haiyue Wang
6f26952828 drivers: display: stm32_ltdc: Use local device variable
Similar to `stm32_ltdc_display_blanking_off()`, use local device variable
instead of accessing the config's structure member again.

Signed-off-by: Haiyue Wang <haiyuewa@163.com>
2024-12-02 06:09:38 +01:00
Manuel Martin
93541e21a4 drivers: display: gc9x01x: fix correct mipi buffer size
mipi api allows only buffers where pitch is equal to width.
buffers with smaller width get split into multiple transmissions
but mipi buffer size was set incorrectly.

Signed-off-by: Manuel Martin <martiman89+github@gmail.com>
2024-11-23 15:29:15 +01:00
Daniel DeGrasse
c565c2c6f6 drivers: mipi-dbi: use string for mipi-mode property
Use a string for the mipi-mode property over an integer value, as this
significantly improves the readability of the MIPI DBI device binding.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-11-23 02:01:47 +01:00
Emil Lindqvist
067a35f2fb display: stm32: implement display_get_framebuffer API
This commit implements the display_get_framebuffer API function in
the STM32 LTDC display driver

Signed-off-by: Emil Lindqvist <emil@lindq.gr>
2024-11-22 11:31:24 +01:00
Martin Stumpf
b816a2926d drivers: display_sdl: fix incorrect color conversion
Non-alpha colors were converted to colors with `0x00` alpha, which makes
them fully transparent.

The correct way would be to add a `0xff` alpha, which this change does.

Signed-off-by: Martin Stumpf <finomnis@gmail.com>
2024-11-18 13:17:43 -05:00
Martin Stumpf
02d562e9b8 drivers: display_sdl: add alpha support
While the driver was already capable of processing `ARGB8888` data,
it did not actually show the alpha value in any way.

This change adds a checkerboard background that shows transparent
regions.

Signed-off-by: Martin Stumpf <finomnis@gmail.com>
2024-11-18 13:17:43 -05:00
Chris Friedt
9504034733 sys: util: use BITS_PER_BYTE macro instead of the magic number 8
Obviously, everyone knows that there are 8 bits per byte, so
there isn't a lot of magic happening, per se, but it's also
helpful to clearly denote where the magic number 8 is referring
to the number of bits in a byte.

Occasionally, 8 will refer to a field size or offset in a
structure, MMR, or word. Occasionally, the number 8 will refer
to the number of bytes in a 64-bit value (which should probably
be replaced with `sizeof(uint64_t)`).

For converting bits to bytes, or vice-versa, let's use
`BITS_PER_BYTE` for clarity (or other appropriate `BITS_PER_*`
macros).

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-11-16 15:22:35 -05:00
Martin Stumpf
abc296ff65 drivers: display: display_sdl: implement display_show
Adds frame synchronization to every frame.
This prevents frame tearing.

Signed-off-by: Martin Stumpf <finomnis@gmail.com>
2024-11-16 13:35:17 -05:00
Martin Stumpf
2e0687cfd2 generic: add frame_incomplete where missing
The newly introduced `frame_incomplete` flag of
`display_buffer_descriptor` needed to be added at several places to
avoid uninitialized memory.

Signed-off-by: Martin Stumpf <finomnis@gmail.com>
2024-11-16 13:35:17 -05:00
Johan Lafon
2b5ee0ca91 drivers: display: ssd1322: fix only part of the image being diplayed
Only the first chunk of the desired image is displayed repeatedly over
the screen height (at least on an NHD-2.7-12864WDW3 display). Fix it
by computing the internal mono01 to 4bit grayscale conversion buffer
size correctly so it can fit the entire image.

Signed-off-by: Johan Lafon <johan.lafon@syslinbit.com>
2024-11-07 08:35:02 -06:00
Johan Lafon
a140dd3de9 drivers: display: ssd1322: fix low and uneven pixel brightness
In case more than one segment per pixel is required, only part of the
segments were written resulting in low and uneven pixel brightness (at
least on NHD-2.7-12864WDW3). Fix it by writing all required segments.

Signed-off-by: Johan Lafon <johan.lafon@syslinbit.com>
2024-11-07 08:35:02 -06:00
Johan Lafon
b92bd6d345 drivers: display: ssd1322: fix never returning call to display_write
A call to the write API function was never returning as we were trapped
into an infinite loop. This was caused by the pixel_count pointer not
being incremented properly.

Signed-off-by: Johan Lafon <johan.lafon@syslinbit.com>
2024-11-07 08:35:02 -06:00
Daniel DeGrasse
cbe07bcb92 Revert "drivers: display: elcdif: Modify interrupt enablement"
This reverts commit 206897658a.

We must keep the frame completion interrupt disabled until we send a new
frame to the eLCDIF, as the frame completion interrupt fires at each
vertical blank interval. If we keep it enabled, then the semaphore we
use to indicate the frame has been loaded by the eLCDIF will be posted
to when we do not have a frame queued, and calls to `display_write` will
return before the eLCDIF has actually loaded the new framebuffer.

Fixes #80590

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-11-06 10:06:47 -08:00
TOKITA Hiroshi
868e99aefb drivers: display: dummy: Enable config if dummy-dc device available
Enabling the configuration if there is a valid `dummy-dc`
node on the device tree.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@fujitsu.com>
2024-10-24 14:07:11 +02:00
Tobias Pisani
3253d333e1 drivers: display: Add ssd1322 driver
Initial support for SSD1322 OLED display driver. Only 1 bit color mode is
supported.

Most options map directly to values documented in the datasheet,
except segments-per-pixel, which I had to add to support the Newhaven
NHD-2.7-12864WDW3. This is a slightly odd feature, but in practice
it is a lot nicer to support it in the driver, and since we're currently
remapping pixels anyway, it makes sense to implement here.

This driver also has a configurable buffer size for the pixel conversion.
By using a larger buffer, we can potentially use DMA for the SPI transfer.
The default is set to 8, which is the smallest value that supports
segments-per-pixel = 2

Initial driver implementation by Lukasz Hawrylko <lukasz@hawrylko.pl>.
Additional options and configurability by Tobias Pisani <mail@topisani.dev>

Signed-off-by: Lukasz Hawrylko <lukasz@hawrylko.pl>
Signed-off-by: Tobias Pisani <mail@topisani.dev>

Co-authored-by: Lukasz Hawrylko <lukasz@hawrylko.pl>
Co-authored-by: Tobias Pisani <mail@topisani.dev>
2024-10-18 09:18:21 +02:00