7d008eecb0
drm/stm: ltdc: update hardware error management
...
The latest hardware version (0x40100) supports a hardware threshold
register (aka FUTR) to trigger a fifo underrun interrupt.
A software threshold has been implemented for other hardware versions.
The threshold is set to 128 by default.
Signed-off-by: Yannick Fertre <yannick.fertre@foss.st.com >
Signed-off-by: Philippe Cornu <philippe.cornu@foss.st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20220603134654.594373-1-yannick.fertre@foss.st.com
2022-06-27 16:01:50 +02:00
c6193dc57f
drm/stm: ltdc: add support of horizontal & vertical mirroring
...
Support of vertical & horizontal mirroring features thanks to
the plane rotation property.
Signed-off-by: Yannick Fertre <yannick.fertre@foss.st.com >
Signed-off-by: Philippe Cornu <philippe.cornu@foss.st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20220603134547.593790-1-yannick.fertre@foss.st.com
2022-06-27 16:01:40 +02:00
62467fccb7
drm/stm: ltdc: add support of the dynamic z-order
...
Zpos property is immutable for all hardware versions except the last
version (0x40100) which support the blending order feature
(dynamic z-order).
Signed-off-by: Yannick Fertre <yannick.fertre@foss.st.com >
Signed-off-by: Philippe Cornu <philippe.cornu@foss.st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20220603134459.593379-1-yannick.fertre@foss.st.com
2022-06-27 16:01:17 +02:00
79b44684a1
drm/stm: ltdc: add support for CRC hashing feature
...
This patch adds the CRC hashing feature supported by some recent hardware
versions of the LTDC. This is useful for test suite such as IGT-GPU-tools
[1] where a CRTC output frame can be compared to a test reference frame
thanks to their respective CRC hash.
[1] https://cgit.freedesktop.org/drm/igt-gpu-tools
Signed-off-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com >
Acked-by: Yannick Fertre <yannick.fertre@foss.st.com >
Signed-off-by: Philippe Cornu <philippe.cornu@foss.st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20220211104620.421177-1-raphael.gallais-pou@foss.st.com
2022-02-25 14:14:28 +01:00
484e72d314
drm/stm: ltdc: add support of ycbcr pixel formats
...
This patch adds the following YCbCr input pixel formats on the latest
LTDC hardware version:
1 plane (co-planar) : YUYV, YVYU, UYVY, VYUY
2 planes (semi-planar): NV12, NV21
3 planes (full-planar): YU12=I420=DRM YUV420, YV12=DRM YVU420
Signed-off-by: Yannick Fertre <yannick.fertre@foss.st.com >
Acked-by: Philippe Cornu <philippe.cornu@foss.st.com >
Reviewed-by: Philippe Cornu <philippe.cornu@foss.st.com >
Signed-off-by: Philippe Cornu <philippe.cornu@foss.st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20211215214843.20703-1-yannick.fertre@foss.st.com
2022-01-13 14:06:22 +01:00
8f2b5f6dcb
drm/stm: ltdc: add support of flexible pixel formats
...
This feature allows the generation of any RGB pixel format.
The list of supported formats is no longer linked to the
register LXPFCR_PF, that the reason why a list of drm formats is
defined for each display controller version.
Signed-off-by: Yannick Fertre <yannick.fertre@foss.st.com >
Acked-by: Philippe Cornu <philippe.cornu@foss.st.com >
Reviewed-by: Philippe Cornu <philippe.cornu@foss.st.com >
Reviewed-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com >
Tested-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com >
Signed-off-by: Philippe Cornu <philippe.cornu@foss.st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20211215214835.20593-1-yannick.fertre@foss.st.com
2022-01-13 14:06:22 +01:00
a55d08e0d4
drm/stm: ltdc: add per plane update support
...
Recent ltdc hardware versions offer the ability
to update a plane independently of others planes.
This is could be useful especially if a plane is
assigned to another OS.
Signed-off-by: Yannick Fertre <yannick.fertre@foss.st.com >
Acked-by: Philippe Cornu <philippe.cornu@foss.st.com >
Reviewed-by: Philippe Cornu <philippe.cornu@foss.st.com >
Reviewed-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com >
Signed-off-by: Philippe Cornu <philippe.cornu@foss.st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20211215214817.20310-1-yannick.fertre@foss.st.com
2022-01-13 14:06:21 +01:00
fb998edf9e
drm/stm: ltdc: add YCbCr 422 output support
...
LTDC 40100 hw version supports the YCbCr 422 output,
reducing the output pins from 24 to 16. This feature
is useful for some external devices like HDMI bridges.
Both ITU-R BT.601 & ITU-R BT.709 are supported.
It is also possible to choose the chrominance order between
* Cb is output first (Y0Cb, then Y1Cr, Y2Cb and so on).
* Cr is output first (Y0Cr, then Y1Cb, Y2Cr and so on).
Signed-off-by: Yannick Fertre <yannick.fertre@foss.st.com >
Acked-by: Philippe Cornu <philippe.cornu@foss.st.com >
Reviewed-by: Philippe Cornu <philippe.cornu@foss.st.com >
Reviewed-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com >
Signed-off-by: Philippe Cornu <philippe.cornu@foss.st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20211215214750.20105-1-yannick.fertre@foss.st.com
2022-01-13 14:06:20 +01:00
734c26450a
drm/stm: ltdc: switch to regmap
...
Replace the legacy register access by regmap API.
Signed-off-by: Yannick Fertre <yannick.fertre@foss.st.com >
Acked-by: Philippe Cornu <philippe.cornu@foss.st.com >
Reviewed-by: Philippe Cornu <philippe.cornu@foss.st.com >
Reviewed-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com >
Tested-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com >
Signed-off-by: Philippe Cornu <philippe.cornu@foss.st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20211215214738.19946-1-yannick.fertre@foss.st.com
2022-01-13 14:06:20 +01:00
1726cee3d0
drm/stm: ltdc: support of new hardware version
...
Add support of new hardware version 0x40100.
Signed-off-by: Yannick Fertre <yannick.fertre@foss.st.com >
Reviewed-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com >
Tested-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com >
Acked-by: Philippe Cornu <philippe.cornu@foss.st.com >
Signed-off-by: Philippe Cornu <philippe.cornu@foss.st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20211203085618.11314-1-yannick.fertre@foss.st.com
2022-01-04 14:36:48 +01:00
b70fbfc7d5
drm/stm: Convert to struct drm_crtc_helper_funcs.get_scanout_position()
...
The callback struct drm_driver.get_scanout_position() is deprecated in
favor of struct drm_crtc_helper_funcs.get_scanout_position(). Convert stm
over.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Acked-by: Philippe Cornu <philippe.cornu@st.com >
Tested-by: Yannick Fertré <yannick.fertre@st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20200123135943.24140-15-tzimmermann@suse.de
2020-02-13 13:09:22 +01:00
544aa6cefb
drm/stm: ltdc: add number of interrupts
...
The number of interrupts depends on the ltdc version.
Don't try to get interrupt which not exist, avoiding
kernel warning messages.
Signed-off-by: Yannick Fertre <yannick.fertre@st.com >
Acked-by: Philippe Cornu <philippe.cornu@st.com >
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/1579601632-7001-1-git-send-email-yannick.fertre@st.com
2020-02-04 11:38:59 +01:00
df61c77665
drm/stm: add sleep power management
...
Implements system sleep power management ops.
Signed-off-by: Yannick Fertré <yannick.fertre@st.com >
Acked-by: Philippe Cornu <philippe.cornu@st.com >
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org >
Link: https://patchwork.freedesktop.org/patch/msgid/1553156120-13851-1-git-send-email-yannick.fertre@st.com
2019-04-01 11:00:18 +02:00
53273b5222
drm: stm: implement get_scanout_position function
...
Hardware allow to read the position in scanout buffer so
we can use this information to make wait of vblank more accurate.
Active area bounds (start, end, total height) have already been
computed and written in ltdc registers, read them and get the
current line position to compute vpos value.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com >
Reviewed-by: Yannick Fertré <yannick.fertre@st.com >
Tested-by: Yannick Fertré <yannick.fertre@st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20180629130140.16004-1-benjamin.gaignard@linaro.org
2018-09-27 15:04:26 +02:00
7868e50792
drm/stm: ltdc: filter mode pixel clock vs pad constraint
...
Filter the requested mode pixel clock frequency according
to the pad maximum supported frequency.
Signed-off-by: Yannick Fertre <yannick.fertre@st.com >
Reviewed-by: Philippe Cornu <philippe.cornu@st.com >
Tested-by: Philippe Cornu <philippe.cornu@st.com >
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org >
Link: https://patchwork.freedesktop.org/patch/msgid/1530271342-5532-1-git-send-email-yannick.fertre@st.com
2018-07-06 10:15:36 +02:00
25bb1a9de3
drm/stm: ltdc: add user update info in plane print state
...
This patch adds the user update information in
frames-per-second into the drm debugfs plane state.
Signed-off-by: Philippe Cornu <philippe.cornu@st.com >
Reviewed-by: Vincent Abriou <vincent.abriou@st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20180407213503.30932-1-philippe.cornu@st.com
2018-04-19 12:15:38 +02:00
c8da819478
drm/stm: move enable/disable_vblank to crtc
...
enable/disable_vblank() functions at drm_driver level
are deprecated. Move them to the ltdc drm_crtc_funcs
structure.
Signed-off-by: Philippe Cornu <philippe.cornu@st.com >
Reviewed-by: Vincent Abriou <vincent.abriou@st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20180407212937.30407-1-philippe.cornu@st.com
2018-04-19 12:03:11 +02:00
9569002a39
drm/stm: ltdc: remove non-alpha color formats on layer 2 for older hw
...
Hw older versions support non-alpha color formats derived
from native alpha color formats only on the primary layer.
For instance, RG16 native format without alpha works fine
on 2nd layer but XR24 (derived color format from AR24)
does not work on 2nd layer.
Signed-off-by: Philippe Cornu <philippe.cornu@st.com >
Reviewed-by: Yannick Fertré <yannick.fertre@st.com >
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20180201104243.20726-3-philippe.cornu@st.com
2018-02-08 10:23:32 +01:00
068b393c1a
drm/stm: Use drm_fb_cma_fbdev_init/fini()
...
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Remove duplicate ldev assignment.
Cc: Yannick Fertre <yannick.fertre@st.com >
Cc: Philippe Cornu <philippe.cornu@st.com >
Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org >
Cc: Vincent Abriou <vincent.abriou@st.com >
Signed-off-by: Noralf Trønnes <noralf@tronnes.org >
Acked-by: Philippe Cornu <philippe.cornu@st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20171115142001.45358-14-noralf@tronnes.org
2017-12-08 14:47:41 +01:00
ec17f0341d
gpu: drm: stm: Adopt SPDX identifiers
...
Add SPDX identifiers to files under stm directory
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com >
Acked-by: Vincent Abriou <vincent.abriou@st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20171206112947.9569-1-benjamin.gaignard@st.com
2017-12-06 15:51:37 +01:00
08de7afa3a
drm/stm: ltdc: remove bridge from driver internal structure
...
With a call to drm_of_panel_bridge_remove() we could remove the bridge
without store it in ldtc internal driver structure.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org >
Reviewed-by: Philippe Cornu <philippe.cornu@st.com >
Tested-by: Philippe Cornu <philippe.cornu@st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/1506936888-23844-4-git-send-email-benjamin.gaignard@linaro.org
2017-10-10 11:32:48 +02:00
65c6680d38
drm: stm: remove dead code and pointless local lut storage
...
The redundant fb helper .load_lut is no longer used, and can not
work right without also providing the fb helpers .gamma_set and
.gamma_get thus rendering the code in this driver suspect.
Just remove the dead code.
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Signed-off-by: Peter Rosin <peda@axentia.se >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: https://patchwork.freedesktop.org/patch/msgid/20170713162538.22788-14-peda@axentia.se
2017-08-04 11:37:00 +02:00
bdf31bcf3d
drm/stm: ltdc: Add panel-bridge support
...
Add the panel-bridge support for both panels & bridges (used by DSI host &
HDMI/LVDS bridges).
Signed-off-by: Philippe CORNU <philippe.cornu@st.com >
Reviewed-by: Archit Taneja <architt@codeaurora.org >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: https://patchwork.freedesktop.org/patch/msgid/1500277223-29553-3-git-send-email-philippe.cornu@st.com
2017-07-18 12:06:42 +05:30
b759012c5f
drm/stm: Add STM32 LTDC driver
...
This controller provides output signals to interface directly a variety
of LCD and TFT panels. These output signals are: RGB signals
(up to 24bpp), vertical & horizontal synchronisations, data enable and
the pixel clock.
Reviewed-by: Eric Anholt <eric@anholt.net >
Signed-off-by: Yannick Fertre <yannick.fertre@st.com >
Signed-off-by: Eric Anholt <eric@anholt.net >
Link: http://patchwork.freedesktop.org/patch/msgid/1492164819-10513-5-git-send-email-yannick.fertre@st.com
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com >
Reviewed-by: Eric Anholt <eric@anholt.net >
2017-04-14 11:30:29 -07:00