Lines Matching refs:dev_data

215 	struct event_device_data *dev_data = adev->driver_data;  in enqueue_events()  local
245 spin_lock(&dev_data->queue_lock); in enqueue_events()
246 old_event = event_queue_push(dev_data->events, queue_event); in enqueue_events()
247 spin_unlock(&dev_data->queue_lock); in enqueue_events()
249 wake_up_interruptible(&dev_data->wq); in enqueue_events()
307 struct event_device_data *dev_data; in event_open() local
309 dev_data = container_of(inode->i_cdev, struct event_device_data, cdev); in event_open()
310 if (!dev_data->exist) in event_open()
313 if (atomic_cmpxchg(&dev_data->available, 1, 0) == 0) in event_open()
317 get_device(&dev_data->dev); in event_open()
319 filp->private_data = dev_data; in event_open()
326 struct event_device_data *dev_data = filp->private_data; in event_poll() local
329 poll_wait(filp, &dev_data->wq, wait); in event_poll()
330 if (!dev_data->exist) in event_poll()
332 if (!event_queue_empty(dev_data->events)) in event_poll()
356 struct event_device_data *dev_data = filp->private_data; in event_read() local
365 spin_lock(&dev_data->queue_lock); in event_read()
366 while (event_queue_empty(dev_data->events)) { in event_read()
367 spin_unlock(&dev_data->queue_lock); in event_read()
371 err = wait_event_interruptible(dev_data->wq, in event_read()
372 !event_queue_empty(dev_data->events) || in event_read()
373 !dev_data->exist); in event_read()
378 if (!dev_data->exist) in event_read()
380 spin_lock(&dev_data->queue_lock); in event_read()
382 event = event_queue_pop(dev_data->events); in event_read()
383 spin_unlock(&dev_data->queue_lock); in event_read()
394 struct event_device_data *dev_data = filp->private_data; in event_release() local
396 atomic_set(&dev_data->available, 1); in event_release()
397 put_device(&dev_data->dev); in event_release()
421 struct event_device_data *dev_data; in free_device_data() local
423 dev_data = container_of(d, struct event_device_data, dev); in free_device_data()
424 event_queue_free(dev_data->events); in free_device_data()
425 kfree(dev_data); in free_device_data()
428 static void hangup_device(struct event_device_data *dev_data) in hangup_device() argument
430 dev_data->exist = false; in hangup_device()
432 wake_up_interruptible(&dev_data->wq); in hangup_device()
433 put_device(&dev_data->dev); in hangup_device()
452 struct event_device_data *dev_data; in event_device_add() local
462 dev_data = kzalloc(sizeof(*dev_data), GFP_KERNEL); in event_device_add()
463 if (!dev_data) { in event_device_add()
469 adev->driver_data = dev_data; in event_device_add()
470 dev_data->events = event_queue_new(queue_size); in event_device_add()
471 if (!dev_data->events) { in event_device_add()
472 kfree(dev_data); in event_device_add()
476 spin_lock_init(&dev_data->queue_lock); in event_device_add()
477 init_waitqueue_head(&dev_data->wq); in event_device_add()
478 dev_data->exist = true; in event_device_add()
479 atomic_set(&dev_data->available, 1); in event_device_add()
482 dev_data->dev.devt = MKDEV(event_major, minor); in event_device_add()
483 dev_data->dev.class = &event_class; in event_device_add()
484 dev_data->dev.release = free_device_data; in event_device_add()
485 dev_set_name(&dev_data->dev, EVENT_DEV_NAME_FMT, minor); in event_device_add()
486 device_initialize(&dev_data->dev); in event_device_add()
489 cdev_init(&dev_data->cdev, &event_fops); in event_device_add()
490 error = cdev_device_add(&dev_data->cdev, &dev_data->dev); in event_device_add()
497 hangup_device(dev_data); in event_device_add()
505 struct event_device_data *dev_data = adev->driver_data; in event_device_remove() local
507 cdev_device_del(&dev_data->cdev, &dev_data->dev); in event_device_remove()
508 ida_simple_remove(&event_ida, MINOR(dev_data->dev.devt)); in event_device_remove()
509 hangup_device(dev_data); in event_device_remove()