Lines Matching refs:eptdev

83 	struct rpmsg_eptdev *eptdev = dev_to_eptdev(dev);  in rpmsg_eptdev_destroy()  local
85 mutex_lock(&eptdev->ept_lock); in rpmsg_eptdev_destroy()
86 if (eptdev->ept) { in rpmsg_eptdev_destroy()
87 rpmsg_destroy_ept(eptdev->ept); in rpmsg_eptdev_destroy()
88 eptdev->ept = NULL; in rpmsg_eptdev_destroy()
90 mutex_unlock(&eptdev->ept_lock); in rpmsg_eptdev_destroy()
93 wake_up_interruptible(&eptdev->readq); in rpmsg_eptdev_destroy()
95 cdev_device_del(&eptdev->cdev, &eptdev->dev); in rpmsg_eptdev_destroy()
96 put_device(&eptdev->dev); in rpmsg_eptdev_destroy()
104 struct rpmsg_eptdev *eptdev = priv; in rpmsg_ept_cb() local
113 spin_lock(&eptdev->queue_lock); in rpmsg_ept_cb()
114 skb_queue_tail(&eptdev->queue, skb); in rpmsg_ept_cb()
115 spin_unlock(&eptdev->queue_lock); in rpmsg_ept_cb()
118 wake_up_interruptible(&eptdev->readq); in rpmsg_ept_cb()
125 struct rpmsg_eptdev *eptdev = cdev_to_eptdev(inode->i_cdev); in rpmsg_eptdev_open() local
127 struct rpmsg_device *rpdev = eptdev->rpdev; in rpmsg_eptdev_open()
128 struct device *dev = &eptdev->dev; in rpmsg_eptdev_open()
132 ept = rpmsg_create_ept(rpdev, rpmsg_ept_cb, eptdev, eptdev->chinfo); in rpmsg_eptdev_open()
134 dev_err(dev, "failed to open %s\n", eptdev->chinfo.name); in rpmsg_eptdev_open()
139 eptdev->ept = ept; in rpmsg_eptdev_open()
140 filp->private_data = eptdev; in rpmsg_eptdev_open()
147 struct rpmsg_eptdev *eptdev = cdev_to_eptdev(inode->i_cdev); in rpmsg_eptdev_release() local
148 struct device *dev = &eptdev->dev; in rpmsg_eptdev_release()
151 mutex_lock(&eptdev->ept_lock); in rpmsg_eptdev_release()
152 if (eptdev->ept) { in rpmsg_eptdev_release()
153 rpmsg_destroy_ept(eptdev->ept); in rpmsg_eptdev_release()
154 eptdev->ept = NULL; in rpmsg_eptdev_release()
156 mutex_unlock(&eptdev->ept_lock); in rpmsg_eptdev_release()
159 skb_queue_purge(&eptdev->queue); in rpmsg_eptdev_release()
169 struct rpmsg_eptdev *eptdev = filp->private_data; in rpmsg_eptdev_read_iter() local
174 if (!eptdev->ept) in rpmsg_eptdev_read_iter()
177 spin_lock_irqsave(&eptdev->queue_lock, flags); in rpmsg_eptdev_read_iter()
180 if (skb_queue_empty(&eptdev->queue)) { in rpmsg_eptdev_read_iter()
181 spin_unlock_irqrestore(&eptdev->queue_lock, flags); in rpmsg_eptdev_read_iter()
187 if (wait_event_interruptible(eptdev->readq, in rpmsg_eptdev_read_iter()
188 !skb_queue_empty(&eptdev->queue) || in rpmsg_eptdev_read_iter()
189 !eptdev->ept)) in rpmsg_eptdev_read_iter()
193 if (!eptdev->ept) in rpmsg_eptdev_read_iter()
196 spin_lock_irqsave(&eptdev->queue_lock, flags); in rpmsg_eptdev_read_iter()
199 skb = skb_dequeue(&eptdev->queue); in rpmsg_eptdev_read_iter()
200 spin_unlock_irqrestore(&eptdev->queue_lock, flags); in rpmsg_eptdev_read_iter()
217 struct rpmsg_eptdev *eptdev = filp->private_data; in rpmsg_eptdev_write_iter() local
231 if (mutex_lock_interruptible(&eptdev->ept_lock)) { in rpmsg_eptdev_write_iter()
236 if (!eptdev->ept) { in rpmsg_eptdev_write_iter()
242 ret = rpmsg_trysend(eptdev->ept, kbuf, len); in rpmsg_eptdev_write_iter()
244 ret = rpmsg_send(eptdev->ept, kbuf, len); in rpmsg_eptdev_write_iter()
247 mutex_unlock(&eptdev->ept_lock); in rpmsg_eptdev_write_iter()
256 struct rpmsg_eptdev *eptdev = filp->private_data; in rpmsg_eptdev_poll() local
259 if (!eptdev->ept) in rpmsg_eptdev_poll()
262 poll_wait(filp, &eptdev->readq, wait); in rpmsg_eptdev_poll()
264 if (!skb_queue_empty(&eptdev->queue)) in rpmsg_eptdev_poll()
267 mask |= rpmsg_poll(eptdev->ept, filp, wait); in rpmsg_eptdev_poll()
275 struct rpmsg_eptdev *eptdev = fp->private_data; in rpmsg_eptdev_ioctl() local
280 return rpmsg_eptdev_destroy(&eptdev->dev, NULL); in rpmsg_eptdev_ioctl()
297 struct rpmsg_eptdev *eptdev = dev_get_drvdata(dev); in name_show() local
299 return sprintf(buf, "%s\n", eptdev->chinfo.name); in name_show()
306 struct rpmsg_eptdev *eptdev = dev_get_drvdata(dev); in src_show() local
308 return sprintf(buf, "%d\n", eptdev->chinfo.src); in src_show()
315 struct rpmsg_eptdev *eptdev = dev_get_drvdata(dev); in dst_show() local
317 return sprintf(buf, "%d\n", eptdev->chinfo.dst); in dst_show()
331 struct rpmsg_eptdev *eptdev = dev_to_eptdev(dev); in rpmsg_eptdev_release_device() local
334 ida_simple_remove(&rpmsg_minor_ida, MINOR(eptdev->dev.devt)); in rpmsg_eptdev_release_device()
335 kfree(eptdev); in rpmsg_eptdev_release_device()
342 struct rpmsg_eptdev *eptdev; in rpmsg_eptdev_create() local
346 eptdev = kzalloc(sizeof(*eptdev), GFP_KERNEL); in rpmsg_eptdev_create()
347 if (!eptdev) in rpmsg_eptdev_create()
350 dev = &eptdev->dev; in rpmsg_eptdev_create()
351 eptdev->rpdev = rpdev; in rpmsg_eptdev_create()
352 eptdev->chinfo = chinfo; in rpmsg_eptdev_create()
354 mutex_init(&eptdev->ept_lock); in rpmsg_eptdev_create()
355 spin_lock_init(&eptdev->queue_lock); in rpmsg_eptdev_create()
356 skb_queue_head_init(&eptdev->queue); in rpmsg_eptdev_create()
357 init_waitqueue_head(&eptdev->readq); in rpmsg_eptdev_create()
363 dev_set_drvdata(dev, eptdev); in rpmsg_eptdev_create()
365 cdev_init(&eptdev->cdev, &rpmsg_eptdev_fops); in rpmsg_eptdev_create()
366 eptdev->cdev.owner = THIS_MODULE; in rpmsg_eptdev_create()
379 ret = cdev_device_add(&eptdev->cdev, &eptdev->dev); in rpmsg_eptdev_create()
394 kfree(eptdev); in rpmsg_eptdev_create()