Lines Matching refs:event

26 nvkm_event_put(struct nvkm_event *event, u32 types, int index)  in nvkm_event_put()  argument
28 assert_spin_locked(&event->refs_lock); in nvkm_event_put()
30 nvkm_trace(event->subdev, "event: decr %08x on %d\n", types, index); in nvkm_event_put()
34 if (--event->refs[index * event->types_nr + type] == 0) { in nvkm_event_put()
35 nvkm_trace(event->subdev, "event: blocking %d on %d\n", type, index); in nvkm_event_put()
36 if (event->func->fini) in nvkm_event_put()
37 event->func->fini(event, 1 << type, index); in nvkm_event_put()
43 nvkm_event_get(struct nvkm_event *event, u32 types, int index) in nvkm_event_get() argument
45 assert_spin_locked(&event->refs_lock); in nvkm_event_get()
47 nvkm_trace(event->subdev, "event: incr %08x on %d\n", types, index); in nvkm_event_get()
51 if (++event->refs[index * event->types_nr + type] == 1) { in nvkm_event_get()
52 nvkm_trace(event->subdev, "event: allowing %d on %d\n", type, index); in nvkm_event_get()
53 if (event->func->init) in nvkm_event_get()
54 event->func->init(event, 1 << type, index); in nvkm_event_get()
62 struct nvkm_event *event = ntfy->event; in nvkm_event_ntfy_state() local
65 nvkm_trace(event->subdev, "event: ntfy state changed\n"); in nvkm_event_ntfy_state()
66 spin_lock_irqsave(&event->refs_lock, flags); in nvkm_event_ntfy_state()
70 nvkm_event_put(ntfy->event, ntfy->bits, ntfy->id); in nvkm_event_ntfy_state()
73 nvkm_event_get(ntfy->event, ntfy->bits, ntfy->id); in nvkm_event_ntfy_state()
78 spin_unlock_irqrestore(&event->refs_lock, flags); in nvkm_event_ntfy_state()
84 write_lock_irq(&ntfy->event->list_lock); in nvkm_event_ntfy_remove()
86 write_unlock_irq(&ntfy->event->list_lock); in nvkm_event_ntfy_remove()
92 write_lock_irq(&ntfy->event->list_lock); in nvkm_event_ntfy_insert()
93 list_add_tail(&ntfy->head, &ntfy->event->ntfy); in nvkm_event_ntfy_insert()
94 write_unlock_irq(&ntfy->event->list_lock); in nvkm_event_ntfy_insert()
100 struct nvkm_subdev *subdev = ntfy->event->subdev; in nvkm_event_ntfy_block_()
114 if (ntfy->event) in nvkm_event_ntfy_block()
121 nvkm_trace(ntfy->event->subdev, "event: ntfy allow %08x on %d\n", ntfy->bits, ntfy->id); in nvkm_event_ntfy_allow()
133 struct nvkm_event *event = ntfy->event; in nvkm_event_ntfy_del() local
135 if (!event) in nvkm_event_ntfy_del()
138 nvkm_trace(event->subdev, "event: ntfy del %08x on %d\n", ntfy->bits, ntfy->id); in nvkm_event_ntfy_del()
142 ntfy->event = NULL; in nvkm_event_ntfy_del()
146 nvkm_event_ntfy_add(struct nvkm_event *event, int id, u32 bits, bool wait, nvkm_event_func func, in nvkm_event_ntfy_add() argument
149 nvkm_trace(event->subdev, "event: ntfy add %08x on %d wait:%d\n", id, bits, wait); in nvkm_event_ntfy_add()
151 ntfy->event = event; in nvkm_event_ntfy_add()
164 nvkm_event_ntfy_valid(struct nvkm_event *event, int id, u32 bits) in nvkm_event_ntfy_valid() argument
170 nvkm_event_ntfy(struct nvkm_event *event, int id, u32 bits) in nvkm_event_ntfy() argument
175 if (!event->refs || WARN_ON(id >= event->index_nr)) in nvkm_event_ntfy()
178 nvkm_trace(event->subdev, "event: ntfy %08x on %d\n", bits, id); in nvkm_event_ntfy()
179 read_lock_irqsave(&event->list_lock, flags); in nvkm_event_ntfy()
181 list_for_each_entry_safe(ntfy, ntmp, &event->ntfy, head) { in nvkm_event_ntfy()
188 read_unlock_irqrestore(&event->list_lock, flags); in nvkm_event_ntfy()
192 nvkm_event_fini(struct nvkm_event *event) in nvkm_event_fini() argument
194 if (event->refs) { in nvkm_event_fini()
195 kfree(event->refs); in nvkm_event_fini()
196 event->refs = NULL; in nvkm_event_fini()
202 int types_nr, int index_nr, struct nvkm_event *event) in __nvkm_event_init() argument
204 event->refs = kzalloc(array3_size(index_nr, types_nr, sizeof(*event->refs)), GFP_KERNEL); in __nvkm_event_init()
205 if (!event->refs) in __nvkm_event_init()
208 event->func = func; in __nvkm_event_init()
209 event->subdev = subdev; in __nvkm_event_init()
210 event->types_nr = types_nr; in __nvkm_event_init()
211 event->index_nr = index_nr; in __nvkm_event_init()
212 INIT_LIST_HEAD(&event->ntfy); in __nvkm_event_init()