summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm2708/patches-4.4/0276-drm-vc4-Move-the-plane-clipping-scaling-setup-to-a-s.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm2708/patches-4.4/0276-drm-vc4-Move-the-plane-clipping-scaling-setup-to-a-s.patch')
-rw-r--r--target/linux/brcm2708/patches-4.4/0276-drm-vc4-Move-the-plane-clipping-scaling-setup-to-a-s.patch143
1 files changed, 0 insertions, 143 deletions
diff --git a/target/linux/brcm2708/patches-4.4/0276-drm-vc4-Move-the-plane-clipping-scaling-setup-to-a-s.patch b/target/linux/brcm2708/patches-4.4/0276-drm-vc4-Move-the-plane-clipping-scaling-setup-to-a-s.patch
deleted file mode 100644
index 0a12da510a..0000000000
--- a/target/linux/brcm2708/patches-4.4/0276-drm-vc4-Move-the-plane-clipping-scaling-setup-to-a-s.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 178cf206ba61689f83872ba1ace6964c59718106 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Mon, 28 Dec 2015 14:34:44 -0800
-Subject: [PATCH] drm/vc4: Move the plane clipping/scaling setup to a separate
- function.
-
-As we add actual scaling, this is going to get way more complicated.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-(cherry picked from commit 5c6799942003df91801b1d2277bba34d71f99603)
----
- drivers/gpu/drm/vc4/vc4_plane.c | 78 +++++++++++++++++++++++++++--------------
- 1 file changed, 52 insertions(+), 26 deletions(-)
-
---- a/drivers/gpu/drm/vc4/vc4_plane.c
-+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -40,6 +40,14 @@ struct vc4_plane_state {
- * hardware at vc4_crtc_atomic_flush() time.
- */
- u32 __iomem *hw_dlist;
-+
-+ /* Clipped coordinates of the plane on the display. */
-+ int crtc_x, crtc_y, crtc_w, crtc_h;
-+
-+ /* Offset to start scanning out from the start of the plane's
-+ * BO.
-+ */
-+ u32 offset;
- };
-
- static inline struct vc4_plane_state *
-@@ -167,22 +175,17 @@ static void vc4_dlist_write(struct vc4_p
- vc4_state->dlist[vc4_state->dlist_count++] = val;
- }
-
--/* Writes out a full display list for an active plane to the plane's
-- * private dlist state.
-- */
--static int vc4_plane_mode_set(struct drm_plane *plane,
-- struct drm_plane_state *state)
-+static int vc4_plane_setup_clipping_and_scaling(struct drm_plane_state *state)
- {
- struct vc4_plane_state *vc4_state = to_vc4_plane_state(state);
- struct drm_framebuffer *fb = state->fb;
-- struct drm_gem_cma_object *bo = drm_fb_cma_get_gem_obj(fb, 0);
-- u32 ctl0_offset = vc4_state->dlist_count;
-- const struct hvs_format *format = vc4_get_hvs_format(fb->pixel_format);
-- uint32_t offset = fb->offsets[0];
-- int crtc_x = state->crtc_x;
-- int crtc_y = state->crtc_y;
-- int crtc_w = state->crtc_w;
-- int crtc_h = state->crtc_h;
-+
-+ vc4_state->offset = fb->offsets[0];
-+
-+ vc4_state->crtc_x = state->crtc_x;
-+ vc4_state->crtc_y = state->crtc_y;
-+ vc4_state->crtc_w = state->crtc_w;
-+ vc4_state->crtc_h = state->crtc_h;
-
- if (state->crtc_w << 16 != state->src_w ||
- state->crtc_h << 16 != state->src_h) {
-@@ -194,18 +197,41 @@ static int vc4_plane_mode_set(struct drm
- return -EINVAL;
- }
-
-- if (crtc_x < 0) {
-- offset += drm_format_plane_cpp(fb->pixel_format, 0) * -crtc_x;
-- crtc_w += crtc_x;
-- crtc_x = 0;
-+ if (vc4_state->crtc_x < 0) {
-+ vc4_state->offset += (drm_format_plane_cpp(fb->pixel_format,
-+ 0) *
-+ -vc4_state->crtc_x);
-+ vc4_state->crtc_w += vc4_state->crtc_x;
-+ vc4_state->crtc_x = 0;
- }
-
-- if (crtc_y < 0) {
-- offset += fb->pitches[0] * -crtc_y;
-- crtc_h += crtc_y;
-- crtc_y = 0;
-+ if (vc4_state->crtc_y < 0) {
-+ vc4_state->offset += fb->pitches[0] * -vc4_state->crtc_y;
-+ vc4_state->crtc_h += vc4_state->crtc_y;
-+ vc4_state->crtc_y = 0;
- }
-
-+ return 0;
-+}
-+
-+
-+/* Writes out a full display list for an active plane to the plane's
-+ * private dlist state.
-+ */
-+static int vc4_plane_mode_set(struct drm_plane *plane,
-+ struct drm_plane_state *state)
-+{
-+ struct vc4_plane_state *vc4_state = to_vc4_plane_state(state);
-+ struct drm_framebuffer *fb = state->fb;
-+ struct drm_gem_cma_object *bo = drm_fb_cma_get_gem_obj(fb, 0);
-+ u32 ctl0_offset = vc4_state->dlist_count;
-+ const struct hvs_format *format = vc4_get_hvs_format(fb->pixel_format);
-+ int ret;
-+
-+ ret = vc4_plane_setup_clipping_and_scaling(state);
-+ if (ret)
-+ return ret;
-+
- vc4_dlist_write(vc4_state,
- SCALER_CTL0_VALID |
- (format->pixel_order << SCALER_CTL0_ORDER_SHIFT) |
-@@ -215,8 +241,8 @@ static int vc4_plane_mode_set(struct drm
- /* Position Word 0: Image Positions and Alpha Value */
- vc4_dlist_write(vc4_state,
- VC4_SET_FIELD(0xff, SCALER_POS0_FIXED_ALPHA) |
-- VC4_SET_FIELD(crtc_x, SCALER_POS0_START_X) |
-- VC4_SET_FIELD(crtc_y, SCALER_POS0_START_Y));
-+ VC4_SET_FIELD(vc4_state->crtc_x, SCALER_POS0_START_X) |
-+ VC4_SET_FIELD(vc4_state->crtc_y, SCALER_POS0_START_Y));
-
- /* Position Word 1: Scaled Image Dimensions.
- * Skipped due to SCALER_CTL0_UNITY scaling.
-@@ -228,8 +254,8 @@ static int vc4_plane_mode_set(struct drm
- SCALER_POS2_ALPHA_MODE_PIPELINE :
- SCALER_POS2_ALPHA_MODE_FIXED,
- SCALER_POS2_ALPHA_MODE) |
-- VC4_SET_FIELD(crtc_w, SCALER_POS2_WIDTH) |
-- VC4_SET_FIELD(crtc_h, SCALER_POS2_HEIGHT));
-+ VC4_SET_FIELD(vc4_state->crtc_w, SCALER_POS2_WIDTH) |
-+ VC4_SET_FIELD(vc4_state->crtc_h, SCALER_POS2_HEIGHT));
-
- /* Position Word 3: Context. Written by the HVS. */
- vc4_dlist_write(vc4_state, 0xc0c0c0c0);
-@@ -237,7 +263,7 @@ static int vc4_plane_mode_set(struct drm
- vc4_state->pw0_offset = vc4_state->dlist_count;
-
- /* Pointer Word 0: RGB / Y Pointer */
-- vc4_dlist_write(vc4_state, bo->paddr + offset);
-+ vc4_dlist_write(vc4_state, bo->paddr + vc4_state->offset);
-
- /* Pointer Context Word 0: Written by the HVS */
- vc4_dlist_write(vc4_state, 0xc0c0c0c0);