Lines Matching refs:eptdev

79 	struct rpmsg_eptdev *eptdev = dev_to_eptdev(dev);
81 mutex_lock(&eptdev->ept_lock);
82 eptdev->rpdev = NULL;
83 if (eptdev->ept) {
85 if (!eptdev->default_ept)
86 rpmsg_destroy_ept(eptdev->ept);
87 eptdev->ept = NULL;
89 mutex_unlock(&eptdev->ept_lock);
92 wake_up_interruptible(&eptdev->readq);
94 cdev_device_del(&eptdev->cdev, &eptdev->dev);
95 put_device(&eptdev->dev);
104 struct rpmsg_eptdev *eptdev = priv;
113 spin_lock(&eptdev->queue_lock);
114 skb_queue_tail(&eptdev->queue, skb);
115 spin_unlock(&eptdev->queue_lock);
118 wake_up_interruptible(&eptdev->readq);
125 struct rpmsg_eptdev *eptdev = priv;
127 eptdev->remote_flow_restricted = enable;
128 eptdev->remote_flow_updated = true;
130 wake_up_interruptible(&eptdev->readq);
137 struct rpmsg_eptdev *eptdev = cdev_to_eptdev(inode->i_cdev);
139 struct rpmsg_device *rpdev = eptdev->rpdev;
140 struct device *dev = &eptdev->dev;
142 mutex_lock(&eptdev->ept_lock);
143 if (eptdev->ept) {
144 mutex_unlock(&eptdev->ept_lock);
148 if (!eptdev->rpdev) {
149 mutex_unlock(&eptdev->ept_lock);
159 if (eptdev->default_ept)
160 ept = eptdev->default_ept;
162 ept = rpmsg_create_ept(rpdev, rpmsg_ept_cb, eptdev, eptdev->chinfo);
165 dev_err(dev, "failed to open %s\n", eptdev->chinfo.name);
167 mutex_unlock(&eptdev->ept_lock);
172 eptdev->ept = ept;
173 filp->private_data = eptdev;
174 mutex_unlock(&eptdev->ept_lock);
181 struct rpmsg_eptdev *eptdev = cdev_to_eptdev(inode->i_cdev);
182 struct device *dev = &eptdev->dev;
185 mutex_lock(&eptdev->ept_lock);
186 if (eptdev->ept) {
187 if (!eptdev->default_ept)
188 rpmsg_destroy_ept(eptdev->ept);
189 eptdev->ept = NULL;
191 mutex_unlock(&eptdev->ept_lock);
192 eptdev->remote_flow_updated = false;
195 skb_queue_purge(&eptdev->queue);
205 struct rpmsg_eptdev *eptdev = filp->private_data;
210 if (!eptdev->ept)
213 spin_lock_irqsave(&eptdev->queue_lock, flags);
216 if (skb_queue_empty(&eptdev->queue)) {
217 spin_unlock_irqrestore(&eptdev->queue_lock, flags);
223 if (wait_event_interruptible(eptdev->readq,
224 !skb_queue_empty(&eptdev->queue) ||
225 !eptdev->ept))
229 if (!eptdev->ept)
232 spin_lock_irqsave(&eptdev->queue_lock, flags);
235 skb = skb_dequeue(&eptdev->queue);
236 spin_unlock_irqrestore(&eptdev->queue_lock, flags);
253 struct rpmsg_eptdev *eptdev = filp->private_data;
267 if (mutex_lock_interruptible(&eptdev->ept_lock)) {
272 if (!eptdev->ept) {
278 ret = rpmsg_trysendto(eptdev->ept, kbuf, len, eptdev->chinfo.dst);
282 ret = rpmsg_sendto(eptdev->ept, kbuf, len, eptdev->chinfo.dst);
286 mutex_unlock(&eptdev->ept_lock);
295 struct rpmsg_eptdev *eptdev = filp->private_data;
298 if (!eptdev->ept)
301 poll_wait(filp, &eptdev->readq, wait);
303 if (!skb_queue_empty(&eptdev->queue))
306 if (eptdev->remote_flow_updated)
309 mutex_lock(&eptdev->ept_lock);
310 mask |= rpmsg_poll(eptdev->ept, filp, wait);
311 mutex_unlock(&eptdev->ept_lock);
319 struct rpmsg_eptdev *eptdev = fp->private_data;
326 eptdev->remote_flow_updated = false;
327 ret = put_user(eptdev->remote_flow_restricted, (int __user *)arg);
335 ret = rpmsg_set_flow_control(eptdev->ept, set, eptdev->chinfo.dst);
339 if (eptdev->default_ept) {
343 ret = rpmsg_chrdev_eptdev_destroy(&eptdev->dev, NULL);
366 struct rpmsg_eptdev *eptdev = dev_get_drvdata(dev);
368 return sprintf(buf, "%s\n", eptdev->chinfo.name);
375 struct rpmsg_eptdev *eptdev = dev_get_drvdata(dev);
377 return sprintf(buf, "%d\n", eptdev->chinfo.src);
384 struct rpmsg_eptdev *eptdev = dev_get_drvdata(dev);
386 return sprintf(buf, "%d\n", eptdev->chinfo.dst);
400 struct rpmsg_eptdev *eptdev = dev_to_eptdev(dev);
403 ida_free(&rpmsg_minor_ida, MINOR(eptdev->dev.devt));
404 kfree(eptdev);
410 struct rpmsg_eptdev *eptdev;
413 eptdev = kzalloc(sizeof(*eptdev), GFP_KERNEL);
414 if (!eptdev)
417 dev = &eptdev->dev;
418 eptdev->rpdev = rpdev;
420 mutex_init(&eptdev->ept_lock);
421 spin_lock_init(&eptdev->queue_lock);
422 skb_queue_head_init(&eptdev->queue);
423 init_waitqueue_head(&eptdev->readq);
429 dev_set_drvdata(dev, eptdev);
431 cdev_init(&eptdev->cdev, &rpmsg_eptdev_fops);
432 eptdev->cdev.owner = THIS_MODULE;
434 return eptdev;
437 static int rpmsg_chrdev_eptdev_add(struct rpmsg_eptdev *eptdev, struct rpmsg_channel_info chinfo)
439 struct device *dev = &eptdev->dev;
442 eptdev->chinfo = chinfo;
455 ret = cdev_device_add(&eptdev->cdev, &eptdev->dev);
470 kfree(eptdev);
478 struct rpmsg_eptdev *eptdev;
480 eptdev = rpmsg_chrdev_eptdev_alloc(rpdev, parent);
481 if (IS_ERR(eptdev))
482 return PTR_ERR(eptdev);
484 return rpmsg_chrdev_eptdev_add(eptdev, chinfo);
491 struct rpmsg_eptdev *eptdev;
498 eptdev = rpmsg_chrdev_eptdev_alloc(rpdev, dev);
499 if (IS_ERR(eptdev))
500 return PTR_ERR(eptdev);
503 eptdev->default_ept = rpdev->ept;
509 eptdev->default_ept->priv = eptdev;
511 return rpmsg_chrdev_eptdev_add(eptdev, chinfo);