Lines Matching refs:aux_dev
59 struct drm_dp_aux_dev *aux_dev = NULL; in drm_dp_aux_dev_get_by_minor() local
62 aux_dev = idr_find(&aux_idr, index); in drm_dp_aux_dev_get_by_minor()
63 if (!kref_get_unless_zero(&aux_dev->refcount)) in drm_dp_aux_dev_get_by_minor()
64 aux_dev = NULL; in drm_dp_aux_dev_get_by_minor()
67 return aux_dev; in drm_dp_aux_dev_get_by_minor()
72 struct drm_dp_aux_dev *aux_dev; in alloc_drm_dp_aux_dev() local
75 aux_dev = kzalloc(sizeof(*aux_dev), GFP_KERNEL); in alloc_drm_dp_aux_dev()
76 if (!aux_dev) in alloc_drm_dp_aux_dev()
78 aux_dev->aux = aux; in alloc_drm_dp_aux_dev()
79 atomic_set(&aux_dev->usecount, 1); in alloc_drm_dp_aux_dev()
80 kref_init(&aux_dev->refcount); in alloc_drm_dp_aux_dev()
83 index = idr_alloc_cyclic(&aux_idr, aux_dev, 0, DRM_AUX_MINORS, in alloc_drm_dp_aux_dev()
87 kfree(aux_dev); in alloc_drm_dp_aux_dev()
90 aux_dev->index = index; in alloc_drm_dp_aux_dev()
92 return aux_dev; in alloc_drm_dp_aux_dev()
97 struct drm_dp_aux_dev *aux_dev = in release_drm_dp_aux_dev() local
100 kfree(aux_dev); in release_drm_dp_aux_dev()
107 struct drm_dp_aux_dev *aux_dev = in name_show() local
110 if (!aux_dev) in name_show()
113 res = sprintf(buf, "%s\n", aux_dev->aux->name); in name_show()
114 kref_put(&aux_dev->refcount, release_drm_dp_aux_dev); in name_show()
129 struct drm_dp_aux_dev *aux_dev; in auxdev_open() local
131 aux_dev = drm_dp_aux_dev_get_by_minor(minor); in auxdev_open()
132 if (!aux_dev) in auxdev_open()
135 file->private_data = aux_dev; in auxdev_open()
146 struct drm_dp_aux_dev *aux_dev = iocb->ki_filp->private_data; in auxdev_read_iter() local
150 if (!atomic_inc_not_zero(&aux_dev->usecount)) in auxdev_read_iter()
164 res = drm_dp_dpcd_read(aux_dev->aux, pos, buf, todo); in auxdev_read_iter()
180 if (atomic_dec_and_test(&aux_dev->usecount)) in auxdev_read_iter()
181 wake_up_var(&aux_dev->usecount); in auxdev_read_iter()
188 struct drm_dp_aux_dev *aux_dev = iocb->ki_filp->private_data; in auxdev_write_iter() local
192 if (!atomic_inc_not_zero(&aux_dev->usecount)) in auxdev_write_iter()
211 res = drm_dp_dpcd_write(aux_dev->aux, pos, buf, todo); in auxdev_write_iter()
222 if (atomic_dec_and_test(&aux_dev->usecount)) in auxdev_write_iter()
223 wake_up_var(&aux_dev->usecount); in auxdev_write_iter()
230 struct drm_dp_aux_dev *aux_dev = file->private_data; in auxdev_release() local
232 kref_put(&aux_dev->refcount, release_drm_dp_aux_dev); in auxdev_release()
249 struct drm_dp_aux_dev *iter, *aux_dev = NULL; in drm_dp_aux_dev_get_by_aux() local
260 aux_dev = iter; in drm_dp_aux_dev_get_by_aux()
265 return aux_dev; in drm_dp_aux_dev_get_by_aux()
270 struct drm_dp_aux_dev *aux_dev; in drm_dp_aux_unregister_devnode() local
273 aux_dev = drm_dp_aux_dev_get_by_aux(aux); in drm_dp_aux_unregister_devnode()
274 if (!aux_dev) /* attach must have failed */ in drm_dp_aux_unregister_devnode()
278 idr_remove(&aux_idr, aux_dev->index); in drm_dp_aux_unregister_devnode()
281 atomic_dec(&aux_dev->usecount); in drm_dp_aux_unregister_devnode()
282 wait_var_event(&aux_dev->usecount, !atomic_read(&aux_dev->usecount)); in drm_dp_aux_unregister_devnode()
284 minor = aux_dev->index; in drm_dp_aux_unregister_devnode()
285 if (aux_dev->dev) in drm_dp_aux_unregister_devnode()
290 kref_put(&aux_dev->refcount, release_drm_dp_aux_dev); in drm_dp_aux_unregister_devnode()
295 struct drm_dp_aux_dev *aux_dev; in drm_dp_aux_register_devnode() local
298 aux_dev = alloc_drm_dp_aux_dev(aux); in drm_dp_aux_register_devnode()
299 if (IS_ERR(aux_dev)) in drm_dp_aux_register_devnode()
300 return PTR_ERR(aux_dev); in drm_dp_aux_register_devnode()
302 aux_dev->dev = device_create(drm_dp_aux_dev_class, aux->dev, in drm_dp_aux_register_devnode()
303 MKDEV(drm_dev_major, aux_dev->index), NULL, in drm_dp_aux_register_devnode()
304 "drm_dp_aux%d", aux_dev->index); in drm_dp_aux_register_devnode()
305 if (IS_ERR(aux_dev->dev)) { in drm_dp_aux_register_devnode()
306 res = PTR_ERR(aux_dev->dev); in drm_dp_aux_register_devnode()
307 aux_dev->dev = NULL; in drm_dp_aux_register_devnode()
312 aux->name, aux_dev->index); in drm_dp_aux_register_devnode()