All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk+kernel@arm.linux.org.uk>
To: dri-devel@lists.freedesktop.org
Subject: [PATCH 11/20] drm/armada: add primary plane creation
Date: Tue, 29 Sep 2015 19:10:25 +0100	[thread overview]
Message-ID: <E1ZgzM9-0003lZ-7c@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20150929180843.GP21513@n2100.arm.linux.org.uk>

Use drm_primary_helper_create_plane() to create our primary plane, and
register the CRTC with drm_crtc_init_with_planes().  This enables the
primary plane to be initialised with the supported format information.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
 drivers/gpu/drm/armada/armada_crtc.c | 34 +++++++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c
index 5d627646601e..b96b77b61337 100644
--- a/drivers/gpu/drm/armada/armada_crtc.c
+++ b/drivers/gpu/drm/armada/armada_crtc.c
@@ -33,6 +33,23 @@ enum csc_mode {
 	CSC_RGB_STUDIO = 2,
 };
 
+static const uint32_t armada_primary_formats[] = {
+	DRM_FORMAT_UYVY,
+	DRM_FORMAT_YUYV,
+	DRM_FORMAT_VYUY,
+	DRM_FORMAT_YVYU,
+	DRM_FORMAT_ARGB8888,
+	DRM_FORMAT_ABGR8888,
+	DRM_FORMAT_XRGB8888,
+	DRM_FORMAT_XBGR8888,
+	DRM_FORMAT_RGB888,
+	DRM_FORMAT_BGR888,
+	DRM_FORMAT_ARGB1555,
+	DRM_FORMAT_ABGR1555,
+	DRM_FORMAT_RGB565,
+	DRM_FORMAT_BGR565,
+};
+
 /*
  * A note about interlacing.  Let's consider HDMI 1920x1080i.
  * The timing parameters we have from X are:
@@ -1080,6 +1097,7 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
 {
 	struct armada_private *priv = drm->dev_private;
 	struct armada_crtc *dcrtc;
+	struct drm_plane *primary;
 	void __iomem *base;
 	int ret;
 
@@ -1148,7 +1166,17 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
 	priv->dcrtc[dcrtc->num] = dcrtc;
 
 	dcrtc->crtc.port = port;
-	drm_crtc_init(drm, &dcrtc->crtc, &armada_crtc_funcs);
+
+	primary = drm_primary_helper_create_plane(drm, armada_primary_formats,
+					ARRAY_SIZE(armada_primary_formats));
+	if (!primary)
+		return -ENOMEM;
+
+	ret = drm_crtc_init_with_planes(drm, &dcrtc->crtc, primary, NULL,
+					&armada_crtc_funcs);
+	if (ret)
+		goto err_crtc_init;
+
 	drm_crtc_helper_add(&dcrtc->crtc, &armada_crtc_helper_funcs);
 
 	drm_object_attach_property(&dcrtc->crtc.base, priv->csc_yuv_prop,
@@ -1157,6 +1185,10 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
 				   dcrtc->csc_rgb_mode);
 
 	return armada_overlay_plane_create(drm, 1 << dcrtc->num);
+
+err_crtc_init:
+	primary->funcs->destroy(primary);
+	return ret;
 }
 
 static int
-- 
2.1.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2015-09-29 18:17 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-29 18:08 [PATCH 00/20] Armada DRM updates for 4.4 Russell King - ARM Linux
2015-09-29 18:09 ` [PATCH 01/20] drm/armada: remove non-component support Russell King
2015-09-29 18:09 ` [PATCH 02/20] drm/armada: move vbl code into armada_crtc Russell King
2015-09-29 18:09 ` [PATCH 03/20] drm/armada: use drm_plane_force_disable() to disable the overlay plane Russell King
2015-09-29 18:09 ` [PATCH 04/20] drm/armada: disable CRTC clock during DPMS Russell King
2015-09-29 18:09 ` [PATCH 05/20] drm/armada: redo locking and atomics for armada_drm_crtc_complete_frame_work() Russell King
2015-09-29 18:09 ` [PATCH 06/20] drm/armada: rename overlay identifiers Russell King
2015-09-29 18:10 ` [PATCH 07/20] drm/armada: factor out retirement of old fb Russell King
2015-09-29 18:10 ` [PATCH 08/20] drm/armada: use xchg() to atomically update dplane->old_fb Russell King
2015-09-30 10:49   ` Emil Velikov
2015-10-01 13:34     ` Russell King - ARM Linux
2015-09-29 18:10 ` [PATCH 09/20] drm/armada: update armada overlay to use drm_universal_plane_init() Russell King
2015-09-29 18:10 ` [PATCH 10/20] drm/armada: introduce generic armada_plane struct Russell King
2015-09-29 18:10 ` Russell King [this message]
2015-09-29 18:10 ` [PATCH 12/20] drm/armada: allocate primary plane ourselves Russell King
2015-09-29 18:10 ` [PATCH 13/20] drm/armada: provide a common helper to disable a plane Russell King
2015-09-29 18:10 ` [PATCH 14/20] drm/armada: move write to dma_ctrl0 to armada_drm_crtc_plane_disable() Russell King
2015-09-29 18:10 ` [PATCH 15/20] drm/armada: move the update of dplane->ctrl0 out of spinlock Russell King
2015-09-29 18:10 ` [PATCH 16/20] drm/armada: move the locking for armada_drm_vbl_event_remove() Russell King
2015-09-29 18:10 ` [PATCH 17/20] drm/armada: move frame wait into armada_frame Russell King
2015-09-29 18:11 ` [PATCH 18/20] drm/armada: move CRTC flip work to primary plane work Russell King
2015-09-29 18:11 ` [PATCH 19/20] drm/armada: convert overlay plane vbl worker to a armada plane worker Russell King
2015-09-29 18:11 ` [PATCH 20/20] drm/armada: move frame wait wakeup into plane work Russell King
2015-10-09 13:24 ` [PATCH 00/20] Armada DRM updates for 4.4 Russell King - ARM Linux

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E1ZgzM9-0003lZ-7c@rmk-PC.arm.linux.org.uk \
    --to=rmk+kernel@arm.linux.org.uk \
    --cc=dri-devel@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.