From: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
To: linux-samsung-soc@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org, emil.l.velikov@gmail.com,
jy0922.shim@samsung.com, inki.dae@samsung.com,
human.hwang@samsung.com,
Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Subject: [PATCH v2 02/13] exynos: Introduce exynos_handle_event()
Date: Sun, 22 Nov 2015 19:48:32 +0100 [thread overview]
Message-ID: <1448218123-21292-3-git-send-email-tjakobi@math.uni-bielefeld.de> (raw)
In-Reply-To: <1448218123-21292-1-git-send-email-tjakobi@math.uni-bielefeld.de>
Used to handle kernel events specific to the Exynos platform.
Currently only G2D events are handled.
v2: Adapt to container approach.
v3: Add exynos_handle_event() to Exynos symbol test.
Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
---
exynos/exynos-symbol-check | 1 +
exynos/exynos_drm.c | 28 ++++++++++++++++++++++++++++
exynos/exynos_drm.h | 12 ++++++++++++
exynos/exynos_drmif.h | 26 ++++++++++++++++++++++++++
4 files changed, 67 insertions(+)
diff --git a/exynos/exynos-symbol-check b/exynos/exynos-symbol-check
index 1a1be89..c3ddbe4 100755
--- a/exynos/exynos-symbol-check
+++ b/exynos/exynos-symbol-check
@@ -22,6 +22,7 @@ exynos_device_destroy
exynos_prime_fd_to_handle
exynos_prime_handle_to_fd
exynos_vidi_connection
+exynos_handle_event
g2d_blend
g2d_copy
g2d_copy_with_scale
diff --git a/exynos/exynos_drm.c b/exynos/exynos_drm.c
index df9b8ed..7a400ad 100644
--- a/exynos/exynos_drm.c
+++ b/exynos/exynos_drm.c
@@ -42,6 +42,8 @@
#include "exynos_drm.h"
#include "exynos_drmif.h"
+#define U642VOID(x) ((void *)(unsigned long)(x))
+
/*
* Create exynos drm device object.
*
@@ -374,3 +376,29 @@ exynos_vidi_connection(struct exynos_device *dev, uint32_t connect,
return 0;
}
+
+static void
+exynos_handle_vendor(int fd, struct drm_event *e, void *ctx)
+{
+ struct drm_exynos_g2d_event *g2d;
+ struct exynos_event_context *ectx = ctx;
+
+ switch (e->type) {
+ case DRM_EXYNOS_G2D_EVENT:
+ if (ectx->version < 1 || ectx->g2d_event_handler == NULL)
+ break;
+ g2d = (struct drm_exynos_g2d_event *)e;
+ ectx->g2d_event_handler(fd, g2d->cmdlist_no, g2d->tv_sec,
+ g2d->tv_usec, U642VOID(g2d->user_data));
+ break;
+
+ default:
+ break;
+ }
+}
+
+int
+exynos_handle_event(struct exynos_device *dev, struct exynos_event_context *ctx)
+{
+ return drmHandleEvent2(dev->fd, &ctx->base, exynos_handle_vendor);
+}
diff --git a/exynos/exynos_drm.h b/exynos/exynos_drm.h
index 256c02f..c3af0ac 100644
--- a/exynos/exynos_drm.h
+++ b/exynos/exynos_drm.h
@@ -157,4 +157,16 @@ struct drm_exynos_g2d_exec {
#define DRM_IOCTL_EXYNOS_G2D_EXEC DRM_IOWR(DRM_COMMAND_BASE + \
DRM_EXYNOS_G2D_EXEC, struct drm_exynos_g2d_exec)
+/* EXYNOS specific events */
+#define DRM_EXYNOS_G2D_EVENT 0x80000000
+
+struct drm_exynos_g2d_event {
+ struct drm_event base;
+ __u64 user_data;
+ __u32 tv_sec;
+ __u32 tv_usec;
+ __u32 cmdlist_no;
+ __u32 reserved;
+};
+
#endif
diff --git a/exynos/exynos_drmif.h b/exynos/exynos_drmif.h
index c7c1d44..626e399 100644
--- a/exynos/exynos_drmif.h
+++ b/exynos/exynos_drmif.h
@@ -54,6 +54,25 @@ struct exynos_bo {
uint32_t name;
};
+#define EXYNOS_EVENT_CONTEXT_VERSION 1
+
+/*
+ * Exynos Event Context structure.
+ *
+ * @base: base context (for core events).
+ * @version: version info similar to the one in 'drmEventContext'.
+ * @g2d_event_handler: handler for G2D events.
+ */
+struct exynos_event_context {
+ drmEventContext base;
+
+ int version;
+
+ void (*g2d_event_handler)(int fd, unsigned int cmdlist_no,
+ unsigned int tv_sec, unsigned int tv_usec,
+ void *user_data);
+};
+
/*
* device related functions:
*/
@@ -83,4 +102,11 @@ int exynos_prime_fd_to_handle(struct exynos_device *dev, int fd,
int exynos_vidi_connection(struct exynos_device *dev, uint32_t connect,
uint32_t ext, void *edid);
+/*
+ * event handling related functions:
+ */
+int exynos_handle_event(struct exynos_device *dev,
+ struct exynos_event_context *ctx);
+
+
#endif /* EXYNOS_DRMIF_H_ */
--
2.4.9
next prev parent reply other threads:[~2015-11-22 18:49 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-22 18:48 [PATCH v2 00/13] drm/exynos: async G2D and g2d_move() Tobias Jakobi
2015-11-22 18:48 ` [PATCH v2 01/13] drm: Implement drmHandleEvent2() Tobias Jakobi
2015-11-22 18:48 ` Tobias Jakobi [this message]
2015-11-22 18:48 ` [PATCH v2 03/13] tests/exynos: add fimg2d performance analysis Tobias Jakobi
2015-11-22 18:48 ` [PATCH v2 04/13] exynos/fimg2d: add g2d_config_event Tobias Jakobi
2015-11-22 18:48 ` [PATCH v2 05/13] exynos: fimg2d: add g2d_exec2 Tobias Jakobi
2015-11-22 18:48 ` [PATCH v2 06/13] tests/exynos: add fimg2d event test Tobias Jakobi
2015-11-22 18:48 ` [PATCH v2 07/13] tests/exynos: use XRGB8888 for framebuffer Tobias Jakobi
2015-11-22 18:48 ` [PATCH v2 08/13] exynos: fimg2d: add g2d_set_direction Tobias Jakobi
2015-11-26 16:22 ` Emil Velikov
2015-11-26 16:41 ` Tobias Jakobi
2015-11-26 16:48 ` Emil Velikov
2015-11-27 2:03 ` Hyungwon Hwang
2015-11-22 18:48 ` [PATCH v2 09/13] exynos/fimg2d: add g2d_move Tobias Jakobi
2015-11-22 18:48 ` [PATCH v2 10/13] tests/exynos: add test for g2d_move Tobias Jakobi
2015-11-22 18:48 ` [PATCH v2 11/13] exynos/fimg2d: add exynos_bo_unmap() Tobias Jakobi
2015-11-22 18:48 ` [PATCH v2 12/13] exynos/fimg2d: add g2d_reset() to public API Tobias Jakobi
2015-11-22 18:48 ` [PATCH v2 13/13] exynos: bump version number Tobias Jakobi
2015-11-23 2:35 ` [PATCH v2 00/13] drm/exynos: async G2D and g2d_move() Hyungwon Hwang
2015-11-23 4:33 ` Inki Dae
2015-11-26 16:35 ` Emil Velikov
2015-11-27 2:11 ` Hyungwon Hwang
2015-11-27 13:47 ` Emil Velikov
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=1448218123-21292-3-git-send-email-tjakobi@math.uni-bielefeld.de \
--to=tjakobi@math.uni-bielefeld.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=emil.l.velikov@gmail.com \
--cc=human.hwang@samsung.com \
--cc=inki.dae@samsung.com \
--cc=jy0922.shim@samsung.com \
--cc=linux-samsung-soc@vger.kernel.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.