All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yannick Fertre <yannick.fertre@st.com>
To: Alexandre TORGUE <alexandre.torgue@st.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	David Airlie <airlied@linux.ie>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	Mark Rutland <mark.rutland@arm.com>,
	Rob Herring <robh+dt@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
	Benjamin Gaignard <benjamin.gaignard@st.com>,
	Yannick Fertre <yannick.fertre@st.com>
Cc: devicetree@vger.kernel.org, kernel@stlinux.com,
	Philippe Cornu <philippe.cornu@st.com>,
	Fabien Dessenne <fabien.dessenne@st.com>,
	dri-devel@lists.freedesktop.org,
	Mickael Reulier <mickael.reulier@st.com>,
	Vincent Abriou <vincent.abriou@st.com>,
	Gabriel FERNANDEZ <gabriel.fernandez@st.com>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 02/10] drm/fb-cma-helper: Add drm_fb_cma_get_gem_addr()
Date: Tue, 28 Mar 2017 11:44:45 +0200	[thread overview]
Message-ID: <1490694293-18358-3-git-send-email-yannick.fertre@st.com> (raw)
In-Reply-To: <1490694293-18358-1-git-send-email-yannick.fertre@st.com>

Add function drm_fb_cma_get_gem_addr() which return the physical address
of framebuffer (1st pixel). This function will usually be called by plane
callback (atomic_update).

Signed-off-by: Yannick Fertre <yannick.fertre@st.com>
---
 drivers/gpu/drm/drm_fb_cma_helper.c | 27 +++++++++++++++++++++++++++
 include/drm/drm_fb_cma_helper.h     |  4 ++++
 2 files changed, 31 insertions(+)

diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
index 74cd393..126f52a 100644
--- a/drivers/gpu/drm/drm_fb_cma_helper.c
+++ b/drivers/gpu/drm/drm_fb_cma_helper.c
@@ -260,6 +260,33 @@ struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
 EXPORT_SYMBOL_GPL(drm_fb_cma_get_gem_obj);
 
 /**
+ * drm_fb_cma_get_gem_addr() - Get physical address for framebuffer
+ * @fb: The framebuffer
+ * @state: Which state of drm plane
+ * @plane: Which plane
+ * Return the CMA GEM address for given framebuffer.
+ *
+ * This function will usually be called from the PLANE callback functions.
+ */
+dma_addr_t drm_fb_cma_get_gem_addr(struct drm_framebuffer *fb,
+				   struct drm_plane_state *state,
+				   unsigned int plane)
+{
+	struct drm_fb_cma *fb_cma = to_fb_cma(fb);
+	dma_addr_t paddr;
+
+	if (plane >= 4)
+		return 0;
+
+	paddr = fb_cma->obj[plane]->paddr + fb->offsets[plane];
+	paddr += fb->format->cpp[plane] * (state->src_x >> 16);
+	paddr += fb->pitches[plane] * (state->src_y >> 16);
+
+	return paddr;
+}
+EXPORT_SYMBOL_GPL(drm_fb_cma_get_gem_addr);
+
+/**
  * drm_fb_cma_prepare_fb() - Prepare CMA framebuffer
  * @plane: Which plane
  * @state: Plane state attach fence to
diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
index a5ecc0a..199a63f 100644
--- a/include/drm/drm_fb_cma_helper.h
+++ b/include/drm/drm_fb_cma_helper.h
@@ -41,6 +41,10 @@ struct drm_framebuffer *drm_fb_cma_create(struct drm_device *dev,
 struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
 	unsigned int plane);
 
+dma_addr_t drm_fb_cma_get_gem_addr(struct drm_framebuffer *fb,
+				   struct drm_plane_state *state,
+				   unsigned int plane);
+
 int drm_fb_cma_prepare_fb(struct drm_plane *plane,
 			  struct drm_plane_state *state);
 
-- 
1.9.1

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

WARNING: multiple messages have this Message-ID (diff)
From: yannick.fertre@st.com (Yannick Fertre)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 02/10] drm/fb-cma-helper: Add drm_fb_cma_get_gem_addr()
Date: Tue, 28 Mar 2017 11:44:45 +0200	[thread overview]
Message-ID: <1490694293-18358-3-git-send-email-yannick.fertre@st.com> (raw)
In-Reply-To: <1490694293-18358-1-git-send-email-yannick.fertre@st.com>

Add function drm_fb_cma_get_gem_addr() which return the physical address
of framebuffer (1st pixel). This function will usually be called by plane
callback (atomic_update).

Signed-off-by: Yannick Fertre <yannick.fertre@st.com>
---
 drivers/gpu/drm/drm_fb_cma_helper.c | 27 +++++++++++++++++++++++++++
 include/drm/drm_fb_cma_helper.h     |  4 ++++
 2 files changed, 31 insertions(+)

diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
index 74cd393..126f52a 100644
--- a/drivers/gpu/drm/drm_fb_cma_helper.c
+++ b/drivers/gpu/drm/drm_fb_cma_helper.c
@@ -260,6 +260,33 @@ struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
 EXPORT_SYMBOL_GPL(drm_fb_cma_get_gem_obj);
 
 /**
+ * drm_fb_cma_get_gem_addr() - Get physical address for framebuffer
+ * @fb: The framebuffer
+ * @state: Which state of drm plane
+ * @plane: Which plane
+ * Return the CMA GEM address for given framebuffer.
+ *
+ * This function will usually be called from the PLANE callback functions.
+ */
+dma_addr_t drm_fb_cma_get_gem_addr(struct drm_framebuffer *fb,
+				   struct drm_plane_state *state,
+				   unsigned int plane)
+{
+	struct drm_fb_cma *fb_cma = to_fb_cma(fb);
+	dma_addr_t paddr;
+
+	if (plane >= 4)
+		return 0;
+
+	paddr = fb_cma->obj[plane]->paddr + fb->offsets[plane];
+	paddr += fb->format->cpp[plane] * (state->src_x >> 16);
+	paddr += fb->pitches[plane] * (state->src_y >> 16);
+
+	return paddr;
+}
+EXPORT_SYMBOL_GPL(drm_fb_cma_get_gem_addr);
+
+/**
  * drm_fb_cma_prepare_fb() - Prepare CMA framebuffer
  * @plane: Which plane
  * @state: Plane state attach fence to
diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
index a5ecc0a..199a63f 100644
--- a/include/drm/drm_fb_cma_helper.h
+++ b/include/drm/drm_fb_cma_helper.h
@@ -41,6 +41,10 @@ struct drm_framebuffer *drm_fb_cma_create(struct drm_device *dev,
 struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
 	unsigned int plane);
 
+dma_addr_t drm_fb_cma_get_gem_addr(struct drm_framebuffer *fb,
+				   struct drm_plane_state *state,
+				   unsigned int plane);
+
 int drm_fb_cma_prepare_fb(struct drm_plane *plane,
 			  struct drm_plane_state *state);
 
-- 
1.9.1

  parent reply	other threads:[~2017-03-28  9:44 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-28  9:44 [PATCH v5 00/10] STM32 LCD-TFT display controller Yannick Fertre
2017-03-28  9:44 ` Yannick Fertre
2017-03-28  9:44 ` [PATCH v5 01/10] drm/cma: Update DEFINE_DRM_GEM_CMA_FOPS to add get_unmapped_area Yannick Fertre
2017-03-28  9:44   ` Yannick Fertre
2017-03-28  9:44 ` Yannick Fertre [this message]
2017-03-28  9:44   ` [PATCH v5 02/10] drm/fb-cma-helper: Add drm_fb_cma_get_gem_addr() Yannick Fertre
2017-03-28  9:44 ` [PATCH v5 03/10] dt-bindings: display: Add STM32 LTDC driver Yannick Fertre
2017-03-28  9:44   ` Yannick Fertre
2017-03-28  9:44 ` [PATCH v5 04/10] drm/stm: " Yannick Fertre
2017-03-28  9:44   ` Yannick Fertre
2017-04-11 20:45   ` Eric Anholt
2017-04-11 20:45     ` Eric Anholt
     [not found]     ` <87wpaqeks2.fsf-omZaPlIz5HhaEpDpdNBo/KxOck334EZe@public.gmane.org>
2017-04-11 20:51       ` Daniel Vetter
2017-04-11 20:51         ` Daniel Vetter
2017-04-12 18:58     ` Benjamin Gaignard
2017-04-12 18:58       ` Benjamin Gaignard
2017-03-28  9:44 ` [PATCH v5 05/10] dt-bindings: Add Ampire AM-480272H3TMQW-T01H panel Yannick Fertre
2017-03-28  9:44   ` Yannick Fertre
     [not found]   ` <1490694293-18358-6-git-send-email-yannick.fertre-qxv4g6HH51o@public.gmane.org>
2017-04-06 21:27     ` Thierry Reding
2017-04-06 21:27       ` Thierry Reding
2017-03-28  9:44 ` [PATCH v5 06/10] drm/panel: simple: Add support for Ampire AM-480272H3TMQW-T01H Yannick Fertre
2017-03-28  9:44   ` Yannick Fertre
     [not found]   ` <1490694293-18358-7-git-send-email-yannick.fertre-qxv4g6HH51o@public.gmane.org>
2017-04-06 21:27     ` Thierry Reding
2017-04-06 21:27       ` Thierry Reding
2017-03-28  9:44 ` [PATCH v5 07/10] ARM: dts: stm32: Add ltdc support on stm32f429 MCU Yannick Fertre
2017-03-28  9:44   ` Yannick Fertre
2017-03-28  9:44 ` [PATCH v5 08/10] ARM: dts: stm32: Enable ltdc & simple panel on stm32f429-Eval board Yannick Fertre
2017-03-28  9:44   ` Yannick Fertre
2017-03-28  9:44 ` [PATCH v5 09/10] ARM: configs: stm32: Add DRM support in STM32 defconfig Yannick Fertre
2017-03-28  9:44   ` Yannick Fertre
2017-03-28  9:44 ` [PATCH v5 10/10] ARM: configs: stm32: Add simple panel " Yannick Fertre
2017-03-28  9:44   ` Yannick Fertre

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=1490694293-18358-3-git-send-email-yannick.fertre@st.com \
    --to=yannick.fertre@st.com \
    --cc=airlied@linux.ie \
    --cc=alexandre.torgue@st.com \
    --cc=arnd@arndb.de \
    --cc=benjamin.gaignard@st.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=fabien.dessenne@st.com \
    --cc=gabriel.fernandez@st.com \
    --cc=kernel@stlinux.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux@armlinux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=mickael.reulier@st.com \
    --cc=philippe.cornu@st.com \
    --cc=robh+dt@kernel.org \
    --cc=thierry.reding@gmail.com \
    --cc=vincent.abriou@st.com \
    /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.