diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2013-04-25 21:44:26 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2013-04-26 01:38:17 -0400 |
commit | 893e90c554c1ef85684b335655a5030d38a4a1b0 (patch) | |
tree | d24f0f3afa6100fd638245b091a936f84865cf48 | |
parent | 10eeaf123dd55cd2c1d2d23366d211dafbe71bde (diff) |
drm/nouveau/fifo: implement channel creation event generation
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/fifo/base.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/include/engine/fifo.h | 3 |
2 files changed, 9 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/core/engine/fifo/base.c b/drivers/gpu/drm/nouveau/core/engine/fifo/base.c index 7341ebe131fa..d3ec436d9cb5 100644 --- a/drivers/gpu/drm/nouveau/core/engine/fifo/base.c +++ b/drivers/gpu/drm/nouveau/core/engine/fifo/base.c | |||
@@ -91,6 +91,8 @@ nouveau_fifo_channel_create_(struct nouveau_object *parent, | |||
91 | if (!chan->user) | 91 | if (!chan->user) |
92 | return -EFAULT; | 92 | return -EFAULT; |
93 | 93 | ||
94 | nouveau_event_trigger(priv->cevent, 0); | ||
95 | |||
94 | chan->size = size; | 96 | chan->size = size; |
95 | return 0; | 97 | return 0; |
96 | } | 98 | } |
@@ -167,6 +169,7 @@ nouveau_fifo_destroy(struct nouveau_fifo *priv) | |||
167 | { | 169 | { |
168 | kfree(priv->channel); | 170 | kfree(priv->channel); |
169 | nouveau_event_destroy(&priv->uevent); | 171 | nouveau_event_destroy(&priv->uevent); |
172 | nouveau_event_destroy(&priv->cevent); | ||
170 | nouveau_engine_destroy(&priv->base); | 173 | nouveau_engine_destroy(&priv->base); |
171 | } | 174 | } |
172 | 175 | ||
@@ -191,6 +194,10 @@ nouveau_fifo_create_(struct nouveau_object *parent, | |||
191 | if (!priv->channel) | 194 | if (!priv->channel) |
192 | return -ENOMEM; | 195 | return -ENOMEM; |
193 | 196 | ||
197 | ret = nouveau_event_create(1, &priv->cevent); | ||
198 | if (ret) | ||
199 | return ret; | ||
200 | |||
194 | ret = nouveau_event_create(1, &priv->uevent); | 201 | ret = nouveau_event_create(1, &priv->uevent); |
195 | if (ret) | 202 | if (ret) |
196 | return ret; | 203 | return ret; |
diff --git a/drivers/gpu/drm/nouveau/core/include/engine/fifo.h b/drivers/gpu/drm/nouveau/core/include/engine/fifo.h index b46c197709f3..633c2f806482 100644 --- a/drivers/gpu/drm/nouveau/core/include/engine/fifo.h +++ b/drivers/gpu/drm/nouveau/core/include/engine/fifo.h | |||
@@ -65,7 +65,8 @@ struct nouveau_fifo_base { | |||
65 | struct nouveau_fifo { | 65 | struct nouveau_fifo { |
66 | struct nouveau_engine base; | 66 | struct nouveau_engine base; |
67 | 67 | ||
68 | struct nouveau_event *uevent; | 68 | struct nouveau_event *cevent; /* channel creation event */ |
69 | struct nouveau_event *uevent; /* async user trigger */ | ||
69 | 70 | ||
70 | struct nouveau_object **channel; | 71 | struct nouveau_object **channel; |
71 | spinlock_t lock; | 72 | spinlock_t lock; |