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