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