diff options
author | Dave Airlie <airlied@redhat.com> | 2018-11-28 19:21:23 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2018-11-28 19:28:49 -0500 |
commit | 61647c77cb15354a329cbb36fe7a2253b36b51b1 (patch) | |
tree | 59d887f99bc4a2bdddc7cfc1d81794c2a4cdc759 /drivers/gpu/drm/sun4i/sun4i_layer.c | |
parent | 1a31c26ed7b495f152e3103dc7c68e3307a39541 (diff) | |
parent | 08f73d668048ffa3ba6b1426b6ba0a89b16aefd7 (diff) |
Merge tag 'drm-misc-next-2018-11-28' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
drm-misc-next for v4.21:
Core Changes:
- Merge drm_info.c into drm_debugfs.c
- Complete the fake drm_crtc_commit's hw_done/flip_done sooner.
- Remove deprecated drm_obj_ref/unref functions. All drivers use get/put now.
- Decrease stack use of drm_gem_prime_mmap.
- Improve documentation for dumb callbacks.
Driver Changes:
- Add edid support to virtio.
- Wait on implicit fence in meson and sun4i.
- Add support for BGRX8888 to sun4i.
- Preparation patches for sun4i driver to start supporting linear and tiled YUV formats.
- Add support for HDMI 1.4 4k modes to meson, and support for VIC alternate timings.
- Drop custom dumb_map in vkms.
- Small fixes and cleanups to v3d.
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/151a3270-b1be-ed75-bd58-6b29d741f592@linux.intel.com
Diffstat (limited to 'drivers/gpu/drm/sun4i/sun4i_layer.c')
-rw-r--r-- | drivers/gpu/drm/sun4i/sun4i_layer.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/gpu/drm/sun4i/sun4i_layer.c b/drivers/gpu/drm/sun4i/sun4i_layer.c index 78f77af8805a..29631e0efde3 100644 --- a/drivers/gpu/drm/sun4i/sun4i_layer.c +++ b/drivers/gpu/drm/sun4i/sun4i_layer.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <drm/drm_atomic_helper.h> | 13 | #include <drm/drm_atomic_helper.h> |
14 | #include <drm/drm_plane_helper.h> | 14 | #include <drm/drm_plane_helper.h> |
15 | #include <drm/drm_gem_framebuffer_helper.h> | ||
15 | #include <drm/drmP.h> | 16 | #include <drm/drmP.h> |
16 | 17 | ||
17 | #include "sun4i_backend.h" | 18 | #include "sun4i_backend.h" |
@@ -92,14 +93,16 @@ static void sun4i_backend_layer_atomic_update(struct drm_plane *plane, | |||
92 | struct sun4i_backend *backend = layer->backend; | 93 | struct sun4i_backend *backend = layer->backend; |
93 | struct sun4i_frontend *frontend = backend->frontend; | 94 | struct sun4i_frontend *frontend = backend->frontend; |
94 | 95 | ||
96 | sun4i_backend_cleanup_layer(backend, layer->id); | ||
97 | |||
95 | if (layer_state->uses_frontend) { | 98 | if (layer_state->uses_frontend) { |
96 | sun4i_frontend_init(frontend); | 99 | sun4i_frontend_init(frontend); |
97 | sun4i_frontend_update_coord(frontend, plane); | 100 | sun4i_frontend_update_coord(frontend, plane); |
98 | sun4i_frontend_update_buffer(frontend, plane); | 101 | sun4i_frontend_update_buffer(frontend, plane); |
99 | sun4i_frontend_update_formats(frontend, plane, | 102 | sun4i_frontend_update_formats(frontend, plane, |
100 | DRM_FORMAT_ARGB8888); | 103 | DRM_FORMAT_XRGB8888); |
101 | sun4i_backend_update_layer_frontend(backend, layer->id, | 104 | sun4i_backend_update_layer_frontend(backend, layer->id, |
102 | DRM_FORMAT_ARGB8888); | 105 | DRM_FORMAT_XRGB8888); |
103 | sun4i_frontend_enable(frontend); | 106 | sun4i_frontend_enable(frontend); |
104 | } else { | 107 | } else { |
105 | sun4i_backend_update_layer_formats(backend, layer->id, plane); | 108 | sun4i_backend_update_layer_formats(backend, layer->id, plane); |
@@ -112,6 +115,7 @@ static void sun4i_backend_layer_atomic_update(struct drm_plane *plane, | |||
112 | } | 115 | } |
113 | 116 | ||
114 | static const struct drm_plane_helper_funcs sun4i_backend_layer_helper_funcs = { | 117 | static const struct drm_plane_helper_funcs sun4i_backend_layer_helper_funcs = { |
118 | .prepare_fb = drm_gem_fb_prepare_fb, | ||
115 | .atomic_disable = sun4i_backend_layer_atomic_disable, | 119 | .atomic_disable = sun4i_backend_layer_atomic_disable, |
116 | .atomic_update = sun4i_backend_layer_atomic_update, | 120 | .atomic_update = sun4i_backend_layer_atomic_update, |
117 | }; | 121 | }; |
@@ -125,10 +129,11 @@ static const struct drm_plane_funcs sun4i_backend_layer_funcs = { | |||
125 | .update_plane = drm_atomic_helper_update_plane, | 129 | .update_plane = drm_atomic_helper_update_plane, |
126 | }; | 130 | }; |
127 | 131 | ||
128 | static const uint32_t sun4i_backend_layer_formats[] = { | 132 | static const uint32_t sun4i_layer_formats[] = { |
129 | DRM_FORMAT_ARGB8888, | 133 | DRM_FORMAT_ARGB8888, |
130 | DRM_FORMAT_ARGB4444, | 134 | DRM_FORMAT_ARGB4444, |
131 | DRM_FORMAT_ARGB1555, | 135 | DRM_FORMAT_ARGB1555, |
136 | DRM_FORMAT_BGRX8888, | ||
132 | DRM_FORMAT_RGBA5551, | 137 | DRM_FORMAT_RGBA5551, |
133 | DRM_FORMAT_RGBA4444, | 138 | DRM_FORMAT_RGBA4444, |
134 | DRM_FORMAT_RGB888, | 139 | DRM_FORMAT_RGB888, |
@@ -154,8 +159,8 @@ static struct sun4i_layer *sun4i_layer_init_one(struct drm_device *drm, | |||
154 | /* possible crtcs are set later */ | 159 | /* possible crtcs are set later */ |
155 | ret = drm_universal_plane_init(drm, &layer->plane, 0, | 160 | ret = drm_universal_plane_init(drm, &layer->plane, 0, |
156 | &sun4i_backend_layer_funcs, | 161 | &sun4i_backend_layer_funcs, |
157 | sun4i_backend_layer_formats, | 162 | sun4i_layer_formats, |
158 | ARRAY_SIZE(sun4i_backend_layer_formats), | 163 | ARRAY_SIZE(sun4i_layer_formats), |
159 | NULL, type, NULL); | 164 | NULL, type, NULL); |
160 | if (ret) { | 165 | if (ret) { |
161 | dev_err(drm->dev, "Couldn't initialize layer\n"); | 166 | dev_err(drm->dev, "Couldn't initialize layer\n"); |