[PATCH RFC 025/111] staging: etnaviv: package up events into etnaviv_event struct
Lucas Stach
l.stach at pengutronix.de
Thu Apr 2 08:29:27 PDT 2015
From: Russell King <rmk+kernel at arm.linux.org.uk>
Combine the event data into an array of etnaviv_event structures,
rather than individual arrays.
Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
---
drivers/staging/etnaviv/etnaviv_gpu.c | 18 +++++++++---------
drivers/staging/etnaviv/etnaviv_gpu.h | 8 ++++++--
2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/drivers/staging/etnaviv/etnaviv_gpu.c b/drivers/staging/etnaviv/etnaviv_gpu.c
index d06665aa319b..55a58cb27a3d 100644
--- a/drivers/staging/etnaviv/etnaviv_gpu.c
+++ b/drivers/staging/etnaviv/etnaviv_gpu.c
@@ -380,8 +380,8 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
/* Setup event management */
spin_lock_init(&gpu->event_spinlock);
init_completion(&gpu->event_free);
- for (i = 0; i < ARRAY_SIZE(gpu->event_used); i++) {
- gpu->event_used[i] = false;
+ for (i = 0; i < ARRAY_SIZE(gpu->event); i++) {
+ gpu->event[i].used = false;
complete(&gpu->event_free);
}
@@ -681,9 +681,9 @@ static unsigned int event_alloc(struct etnaviv_gpu *gpu)
spin_lock_irqsave(&gpu->event_spinlock, flags);
/* find first free event */
- for (i = 0; i < ARRAY_SIZE(gpu->event_used); i++) {
- if (gpu->event_used[i] == false) {
- gpu->event_used[i] = true;
+ for (i = 0; i < ARRAY_SIZE(gpu->event); i++) {
+ if (gpu->event[i].used == false) {
+ gpu->event[i].used = true;
event = i;
break;
}
@@ -700,11 +700,11 @@ static void event_free(struct etnaviv_gpu *gpu, unsigned int event)
spin_lock_irqsave(&gpu->event_spinlock, flags);
- if (gpu->event_used[event] == false) {
+ if (gpu->event[event].used == false) {
dev_warn(gpu->dev->dev, "event %u is already marked as free", event);
spin_unlock_irqrestore(&gpu->event_spinlock, flags);
} else {
- gpu->event_used[event] = false;
+ gpu->event[event].used = false;
spin_unlock_irqrestore(&gpu->event_spinlock, flags);
complete(&gpu->event_free);
@@ -781,7 +781,7 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu, struct etnaviv_gem_submit *submi
goto fail;
}
- gpu->event_to_fence[event] = submit->fence;
+ gpu->event[event].fence = submit->fence;
etnaviv_buffer_queue(gpu, event, submit);
@@ -833,7 +833,7 @@ static irqreturn_t irq_handler(int irq, void *data)
else {
uint8_t event = __fls(intr);
dev_dbg(gpu->dev->dev, "event %u\n", event);
- gpu->retired_fence = gpu->event_to_fence[event];
+ gpu->retired_fence = gpu->event[event].fence;
event_free(gpu, event);
etnaviv_gpu_retire(gpu);
}
diff --git a/drivers/staging/etnaviv/etnaviv_gpu.h b/drivers/staging/etnaviv/etnaviv_gpu.h
index 707096b5fe98..519b9344ed0c 100644
--- a/drivers/staging/etnaviv/etnaviv_gpu.h
+++ b/drivers/staging/etnaviv/etnaviv_gpu.h
@@ -78,6 +78,11 @@ struct etnaviv_chip_identity {
uint32_t buffer_size;
};
+struct etnaviv_event {
+ bool used;
+ uint32_t fence;
+};
+
struct etnaviv_gpu {
const char *name;
struct drm_device *dev;
@@ -88,8 +93,7 @@ struct etnaviv_gpu {
struct drm_gem_object *buffer;
/* event management: */
- bool event_used[30];
- uint32_t event_to_fence[30];
+ struct etnaviv_event event[30];
struct completion event_free;
struct spinlock event_spinlock;
--
2.1.4
More information about the dri-devel
mailing list