Ville Syrjälä
81af63a4af
drm: Don't pass clip to drm_atomic_helper_check_plane_state()
...
Move the plane clip rectangle handling into
drm_atomic_helper_check_plane_state(). Drivers no longer
have to worry about such mundane details.
v2: Convert armada, rcar, and sun4i as well
v3: Resolve simple_kms_helper conflict
Cc: Liviu Dudau <liviu.dudau@arm.com >
Cc: Brian Starkey <brian.starkey@arm.com >
Cc: Mali DP Maintainers <malidp@foss.arm.com >
Cc: Daniel Vetter <daniel.vetter@intel.com >
Cc: Gustavo Padovan <gustavo@padovan.org >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: CK Hu <ck.hu@mediatek.com >
Cc: Neil Armstrong <narmstrong@baylibre.com >
Cc: Rob Clark <robdclark@gmail.com >
Cc: Ben Skeggs <bskeggs@redhat.com >
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Cc: Sandy Huang <hjc@rock-chips.com >
Cc: "Heiko Stübner" <heiko@sntech.de >
Cc: Maxime Ripard <maxime.ripard@free-electrons.com >
Cc: Thierry Reding <thierry.reding@gmail.com >
Cc: VMware Graphics <linux-graphics-maintainer@vmware.com >
Cc: Sinclair Yeh <syeh@vmware.com >
Cc: Thomas Hellstrom <thellstrom@vmware.com >
Cc: Shawn Guo <shawnguo@kernel.org >
Cc: Archit Taneja <architt@codeaurora.org >
Cc: linux-amlogic@lists.infradead.org
Cc: linux-arm-msm@vger.kernel.org
Cc: freedreno@lists.freedesktop.org
Cc: nouveau@lists.freedesktop.org
Cc: linux-renesas-soc@vger.kernel.org
Cc: linux-tegra@vger.kernel.org
Cc: Russell King <rmk+kernel@armlinux.org.uk >
Suggested-by: Daniel Vetter <daniel@ffwll.ch >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Reviewed-by: Thierry Reding <treding@nvidia.com >
Reviewed-by: Archit Taneja <architt@codeaurora.org > #msm
Link: https://patchwork.freedesktop.org/patch/msgid/20180123170857.13818-5-ville.syrjala@linux.intel.com
Acked-by: Liviu Dudau <liviu.dudau@arm.com > #hdlcd,malidp
Acked-by: Philipp Zabel <p.zabel@pengutronix.de > #imx,mtk
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Reviewed-by: Sinclair Yeh <syeh@vmware.com > #vmwgfx
Acked-by: Neil Armstrong <narmstrong@baylibre.com > #meson
Acked-by: Shawn Guo <shawnguo@kernel.org > #zte
2018-03-05 20:48:25 +02:00
Ville Syrjälä
bd6120dbcb
drm/mediatek: Use drm_mode_get_hv_timing() to populate plane clip rectangle
...
Use drm_mode_get_hv_timing() to fill out the plane clip rectangle.
No functional changes as the code already uses crtc_state->mode
to populate the clip, which is also what drm_mode_get_hv_timing()
uses.
Once everyone agrees on this we can move the clip handling into
drm_atomic_helper_check_plane_state().
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Cc: CK Hu <ck.hu@mediatek.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20171123190502.28449-8-ville.syrjala@linux.intel.com
Acked-by: Philipp Zabel <p.zabel@pengutronix.de >
Reviewed-by: Thierry Reding <treding@nvidia.com >
2018-01-23 17:41:45 +02:00
Ville Syrjälä
a01cb8ba3f
drm: Move drm_plane_helper_check_state() into drm_atomic_helper.c
...
drm_plane_helper_check_update() isn't a transitional helper, so let's
rename it to drm_atomic_helper_check_plane_state() and move it into
drm_atomic_helper.c.
v2: Fix the WARNs about plane_state->crtc matching crtc_state->crtc
Cc: Daniel Vetter <daniel@ffwll.ch >
Suggested-by: Daniel Vetter <daniel@ffwll.ch >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20171101201619.6175-1-ville.syrjala@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-11-20 21:14:22 +02:00
Ville Syrjälä
10b47ee02d
drm: Check crtc_state->enable rather than crtc->enabled in drm_plane_helper_check_state()
...
drm_plane_helper_check_state() is supposed to do things the atomic way,
so it should not be inspecting crtc->enabled. Rather we should be
looking at crtc_state->enable.
We have a slight complication due to drm_plane_helper_check_update()
reusing drm_plane_helper_check_state() for non-atomic drivers. Thus
we'll have to pass the crtc_state in manally and construct a fake
crtc_state in drm_plane_helper_check_update().
v2: Fix the WARNs about plane_state->crtc matching crtc_state->crtc
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20171101201558.6059-1-ville.syrjala@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-11-20 20:33:21 +02:00
Ben Widawsky
e6fc3b6855
drm: Plumb modifiers through plane init
...
This is the plumbing for supporting fb modifiers on planes. Modifiers
have already been introduced to some extent, but this series will extend
this to allow querying modifiers per plane. Based on this, the client to
enable optimal modifications for framebuffers.
This patch simply allows the DRM drivers to initialize their list of
supported modifiers upon initializing the plane.
v2: A minor addition from Daniel
v3:
* Updated commit message
* s/INVALID/DRM_FORMAT_MOD_INVALID (Liviu)
* Remove some excess newlines (Liviu)
* Update comment for > 64 modifiers (Liviu)
v4: Minor comment adjustments (Liviu)
v5: Some new platforms added due to rebase
v6: Add some missed plane inits (or maybe they're new - who knows at
this point) (Daniel)
Signed-off-by: Ben Widawsky <ben@bwidawsk.net >
Reviewed-by: Daniel Stone <daniels@collabora.com > (v2)
Reviewed-by: Liviu Dudau <Liviu.Dudau@arm.com >
Signed-off-by: Daniel Stone <daniels@collabora.com >
2017-08-01 17:50:06 +01:00
Bibby Hsieh
170748db2d
drm/mediatek: Support UYVY and YUYV format for overlay
...
MT8173 overlay can support UYVY and YUYV format,
we add the format in DRM driver.
Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com >
Reviewed-by: Daniel Kurtz <djkurtz@chromium.org >
Signed-off-by: CK Hu <ck.hu@mediatek.com >
2017-06-27 17:34:52 +08:00
Ville Syrjälä
438b74a549
drm: Nuke fb->pixel_format
...
Replace uses of fb->pixel_format with fb->format->format.
Less duplicated information is a good thing.
Note that coccinelle failed to eliminate the
"/* fourcc format */" comment from drm_framebuffer.h, so I had
to do that part manually.
@@
struct drm_framebuffer *FB;
expression E;
@@
drm_helper_mode_fill_fb_struct(...) {
...
- FB->pixel_format = E;
...
}
@@
struct drm_framebuffer *FB;
expression E;
@@
i9xx_get_initial_plane_config(...) {
...
- FB->pixel_format = E;
...
}
@@
struct drm_framebuffer *FB;
expression E;
@@
ironlake_get_initial_plane_config(...) {
...
- FB->pixel_format = E;
...
}
@@
struct drm_framebuffer *FB;
expression E;
@@
skylake_get_initial_plane_config(...) {
...
- FB->pixel_format = E;
...
}
@@
struct drm_framebuffer *a;
struct drm_framebuffer b;
@@
(
- a->pixel_format
+ a->format->format
|
- b.pixel_format
+ b.format->format
)
@@
struct drm_plane_state *a;
struct drm_plane_state b;
@@
(
- a->fb->pixel_format
+ a->fb->format->format
|
- b.fb->pixel_format
+ b.fb->format->format
)
@@
struct drm_crtc *CRTC;
@@
(
- CRTC->primary->fb->pixel_format
+ CRTC->primary->fb->format->format
|
- CRTC->primary->state->fb->pixel_format
+ CRTC->primary->state->fb->format->format
)
@@
struct drm_mode_set *set;
@@
(
- set->fb->pixel_format
+ set->fb->format->format
|
- set->crtc->primary->fb->pixel_format
+ set->crtc->primary->fb->format->format
)
@@
@@
struct drm_framebuffer {
...
- uint32_t pixel_format;
...
};
v2: Fix commit message (Laurent)
Rebase due to earlier removal of many fb->pixel_format uses,
including the 'fb->format = drm_format_info(fb->format->format);'
snafu
v3: Adjusted the semantic patch a bit and regenerated due to code
changes
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com > (v1)
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1481751175-18463-1-git-send-email-ville.syrjala@linux.intel.com
2016-12-15 14:55:34 +02:00
Ville Syrjälä
353c859899
drm: Replace drm_format_plane_cpp() with fb->format->cpp[]
...
Replace drm_format_plane_cpp(fb->pixel_format) with just
fb->format->cpp[]. Avoids the expensive format info lookup.
@@
struct drm_framebuffer *a;
struct drm_framebuffer b;
expression E;
@@
(
- drm_format_plane_cpp(a->pixel_format, E)
+ a->format->cpp[E]
|
- drm_format_plane_cpp(b.pixel_format, E)
+ b.format->cpp[E]
)
@@
struct drm_plane_state *a;
struct drm_plane_state b;
expression E;
@@
(
- drm_format_plane_cpp(a->fb->pixel_format, E)
+ a->fb->format->cpp[E]
|
- drm_format_plane_cpp(b.fb->pixel_format, E)
+ b.fb->format->cpp[E]
)
@@
struct drm_framebuffer *a;
identifier T;
expression E;
@@
T = a->pixel_format
<+...
- drm_format_plane_cpp(T, E)
+ a->format->cpp[E]
...+>
@@
struct drm_framebuffer b;
identifier T;
expression E;
@@
T = b.pixel_format
<+...
- drm_format_plane_cpp(T, E)
+ b.format->cpp[E]
...+>
v2: Rerun spatch due to code changes
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1481751057-18123-1-git-send-email-ville.syrjala@linux.intel.com
2016-12-15 14:55:31 +02:00
Daniel Kurtz
9c350d834f
drm/mediatek: plane: Use FB's format's cpp to compute x offset
...
Use the framebuffer's format to compute its cpp, and use it when
calculating the address shift value.
Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com >
Signed-off-by: Sean Paul <seanpaul@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1470279597-60453-7-git-send-email-bibby.hsieh@mediatek.com
2016-08-08 14:20:02 -04:00
Daniel Kurtz
f176cbf6f9
drm/mediatek: plane: Merge mtk_plane_enable into mtk_plane_atomic_update
...
The mtk_plane_enable is just called once by mtk_plane_atomic_update.
So, merge mtk_plane_enable into mtk_plane_atomic_update.
While we are here, also clean up the function a bit by using an fb local
variables.
Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com >
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org >
Signed-off-by: Sean Paul <seanpaul@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1470279597-60453-6-git-send-email-bibby.hsieh@mediatek.com
2016-08-08 14:20:01 -04:00
Bibby Hsieh
903daff60f
drm/mediatek: Use drm_atomic destroy_state helpers
...
Use the core destroy_state helpers to destroy core state to ensure we don't
leak if/when more fields get added later.
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org >
Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com >
Signed-off-by: Sean Paul <seanpaul@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1470279597-60453-5-git-send-email-bibby.hsieh@mediatek.com
2016-08-08 14:20:01 -04:00
Daniel Kurtz
5bfafad805
drm/mediatek: Remove mtk_drm_plane
...
Now that mtk_drm_plane just contains its base struct drm_plane, we can
just remove it and use struct drm_plane everywhere.
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org >
Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com >
Signed-off-by: Sean Paul <seanpaul@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1470279597-60453-4-git-send-email-bibby.hsieh@mediatek.com
2016-08-08 14:20:00 -04:00
Daniel Kurtz
0d5a32b725
drm/mediatek: plane: Remove plane zpos/index
...
It is not actually useful to a mtk plane to know its zpos/index, so just
remove this field.
This let's completely remove struct mtk_drm_plane in a follow up patch.
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org >
Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com >
Signed-off-by: Sean Paul <seanpaul@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1470279597-60453-3-git-send-email-bibby.hsieh@mediatek.com
2016-08-08 14:20:00 -04:00
Ville Syrjälä
0e4faf679e
drm/mediatek: Use drm_plane_helper_check_state()
...
Replace the use of drm_plane_helper_check_update() with
drm_plane_helper_check_state() since we have a plane state.
This also eliminates the double clipping the driver was doing
in both check and commit phases). And it should fix src coordinate
addr adjustement. Previously the driver was expecting negative dst
coordinates after clipping, which is not going happen, so any clipping
induced addr adjustment simply didn't happen. Neither did the driver
respect any user configured src coordinates, so panning and such would
have been totally broken. It should be all good now.
Cc: CK Hu <ck.hu@mediatek.com >
Cc: linux-mediatek@lists.infradead.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Bibby Hsieh <bibby.hsieh@mediatek.com >
Tested-by: Bibby Hsieh <bibby.hsieh@mediatek.com >
Acked-by: CK Hu <ck.hu@mediatek.com >
Signed-off-by: Sean Paul <seanpaul@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1469549224-1860-9-git-send-email-ville.syrjala@linux.intel.com
2016-08-08 14:19:58 -04:00
Ville Syrjälä
9b8b013dde
drm: Deal with rotation in drm_plane_helper_check_update()
...
drm_plane_helper_check_update() needs to account for the plane rotation
for correct clipping/scaling calculations. Do so.
There was an earlier attempt [1] to add this into
intel_check_primary_plane() but I requested that it'd be put into the
helper instead. An updated patch never materialized AFAICS, so I went
ahead and cooked one up myself.
v2: Deal with new drm_plane_helper_check_update() callers
[1] https://patchwork.freedesktop.org/patch/65177/
Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com >
Cc: Noralf Trønnes <noralf@tronnes.org >
Cc: CK Hu <ck.hu@mediatek.com >
Cc: Mark Yao <mark.yao@rock-chips.com >
Cc: Russell King <rmk+kernel@armlinux.org.uk >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1466172790-10025-1-git-send-email-ville.syrjala@linux.intel.com
2016-06-17 16:41:25 +02:00
Daniel Vetter
2f701695fd
drm: Drop plane argument from __drm_atomic_helper_plane_destroy_state
...
It's unused, and really this helper should only look at the state
structure and nothing else.
v2: Fix commit message (Laurent).
v3: Rebase onto mtk driver merge.
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Thierry Reding <thierry.reding@gmail.com >
Cc: Eric Anholt <eric@anholt.net >
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Cc: Inki Dae <inki.dae@samsung.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Mark Yao <mark.yao@rock-chips.com >
Acked-by: Thierry Reding <thierry.reding@gmail.com >
Acked-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Acked-by: Eric Anholt <eric@anholt.net >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1462804451-15318-2-git-send-email-daniel.vetter@ffwll.ch
2016-05-17 08:56:55 +02:00
CK Hu
119f517362
drm/mediatek: Add DRM Driver for Mediatek SoC MT8173.
...
This patch adds an initial DRM driver for the Mediatek MT8173 DISP
subsystem. It currently supports two fixed output streams from the
OVL0/OVL1 sources to the DSI0/DPI0 sinks, respectively.
Signed-off-by: CK Hu <ck.hu@mediatek.com >
Signed-off-by: YT Shen <yt.shen@mediatek.com >
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org >
Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com >
Signed-off-by: Mao Huang <littlecvr@chromium.org >
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de >
2016-05-06 17:47:35 +02:00