Lines Matching refs:dev_data

214 	struct event_device_data *dev_data = adev->driver_data;  in enqueue_events()  local
244 spin_lock(&dev_data->queue_lock); in enqueue_events()
245 old_event = event_queue_push(dev_data->events, queue_event); in enqueue_events()
246 spin_unlock(&dev_data->queue_lock); in enqueue_events()
248 wake_up_interruptible(&dev_data->wq); in enqueue_events()
306 struct event_device_data *dev_data; in event_open() local
308 dev_data = container_of(inode->i_cdev, struct event_device_data, cdev); in event_open()
309 if (!dev_data->exist) in event_open()
312 if (atomic_cmpxchg(&dev_data->available, 1, 0) == 0) in event_open()
316 get_device(&dev_data->dev); in event_open()
318 filp->private_data = dev_data; in event_open()
325 struct event_device_data *dev_data = filp->private_data; in event_poll() local
328 poll_wait(filp, &dev_data->wq, wait); in event_poll()
329 if (!dev_data->exist) in event_poll()
331 if (!event_queue_empty(dev_data->events)) in event_poll()
355 struct event_device_data *dev_data = filp->private_data; in event_read() local
364 spin_lock(&dev_data->queue_lock); in event_read()
365 while (event_queue_empty(dev_data->events)) { in event_read()
366 spin_unlock(&dev_data->queue_lock); in event_read()
370 err = wait_event_interruptible(dev_data->wq, in event_read()
371 !event_queue_empty(dev_data->events) || in event_read()
372 !dev_data->exist); in event_read()
377 if (!dev_data->exist) in event_read()
379 spin_lock(&dev_data->queue_lock); in event_read()
381 event = event_queue_pop(dev_data->events); in event_read()
382 spin_unlock(&dev_data->queue_lock); in event_read()
393 struct event_device_data *dev_data = filp->private_data; in event_release() local
395 atomic_set(&dev_data->available, 1); in event_release()
396 put_device(&dev_data->dev); in event_release()
419 struct event_device_data *dev_data; in free_device_data() local
421 dev_data = container_of(d, struct event_device_data, dev); in free_device_data()
422 event_queue_free(dev_data->events); in free_device_data()
423 kfree(dev_data); in free_device_data()
426 static void hangup_device(struct event_device_data *dev_data) in hangup_device() argument
428 dev_data->exist = false; in hangup_device()
430 wake_up_interruptible(&dev_data->wq); in hangup_device()
431 put_device(&dev_data->dev); in hangup_device()
450 struct event_device_data *dev_data; in event_device_add() local
460 dev_data = kzalloc(sizeof(*dev_data), GFP_KERNEL); in event_device_add()
461 if (!dev_data) { in event_device_add()
467 adev->driver_data = dev_data; in event_device_add()
468 dev_data->events = event_queue_new(queue_size); in event_device_add()
469 if (!dev_data->events) { in event_device_add()
470 kfree(dev_data); in event_device_add()
474 spin_lock_init(&dev_data->queue_lock); in event_device_add()
475 init_waitqueue_head(&dev_data->wq); in event_device_add()
476 dev_data->exist = true; in event_device_add()
477 atomic_set(&dev_data->available, 1); in event_device_add()
480 dev_data->dev.devt = MKDEV(event_major, minor); in event_device_add()
481 dev_data->dev.class = &event_class; in event_device_add()
482 dev_data->dev.release = free_device_data; in event_device_add()
483 dev_set_name(&dev_data->dev, EVENT_DEV_NAME_FMT, minor); in event_device_add()
484 device_initialize(&dev_data->dev); in event_device_add()
487 cdev_init(&dev_data->cdev, &event_fops); in event_device_add()
488 error = cdev_device_add(&dev_data->cdev, &dev_data->dev); in event_device_add()
495 hangup_device(dev_data); in event_device_add()
503 struct event_device_data *dev_data = adev->driver_data; in event_device_remove() local
505 cdev_device_del(&dev_data->cdev, &dev_data->dev); in event_device_remove()
506 ida_free(&event_ida, MINOR(dev_data->dev.devt)); in event_device_remove()
507 hangup_device(dev_data); in event_device_remove()