Lines Matching refs:vdev
48 static struct rproc_vdev *vdev_to_rvdev(struct virtio_device *vdev)
52 pdev = container_of(vdev->dev.parent, struct platform_device, dev);
57 static struct rproc *vdev_to_rproc(struct virtio_device *vdev)
59 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
103 static struct virtqueue *rp_find_vq(struct virtio_device *vdev,
108 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
109 struct rproc *rproc = vdev_to_rproc(vdev);
126 mem = rproc_find_carveout_by_name(rproc, "vdev%dvring%d", rvdev->index,
146 vq = vring_new_virtqueue(id, num, rvring->align, vdev, false, ctx,
166 static void __rproc_virtio_del_vqs(struct virtio_device *vdev)
171 list_for_each_entry_safe(vq, n, &vdev->vqs, list) {
178 static void rproc_virtio_del_vqs(struct virtio_device *vdev)
180 __rproc_virtio_del_vqs(vdev);
183 static int rproc_virtio_find_vqs(struct virtio_device *vdev, unsigned int nvqs,
198 vqs[i] = rp_find_vq(vdev, queue_idx++, callbacks[i], names[i],
209 __rproc_virtio_del_vqs(vdev);
213 static u8 rproc_virtio_get_status(struct virtio_device *vdev)
215 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
223 static void rproc_virtio_set_status(struct virtio_device *vdev, u8 status)
225 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
231 dev_dbg(&vdev->dev, "status: %d\n", status);
234 static void rproc_virtio_reset(struct virtio_device *vdev)
236 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
242 dev_dbg(&vdev->dev, "reset !\n");
245 /* provide the vdev features as retrieved from the firmware */
246 static u64 rproc_virtio_get_features(struct virtio_device *vdev)
248 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
256 static void rproc_transport_features(struct virtio_device *vdev)
263 __virtio_clear_bit(vdev, VIRTIO_F_RING_PACKED);
266 static int rproc_virtio_finalize_features(struct virtio_device *vdev)
268 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
274 vring_transport_features(vdev);
277 rproc_transport_features(vdev);
280 BUG_ON((u32)vdev->features != vdev->features);
283 * Remember the finalized features of our vdev, and provide it
286 rsc->gfeatures = vdev->features;
291 static void rproc_virtio_get(struct virtio_device *vdev, unsigned int offset,
294 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
302 dev_err(&vdev->dev, "rproc_virtio_get: access out of bounds\n");
309 static void rproc_virtio_set(struct virtio_device *vdev, unsigned int offset,
312 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
320 dev_err(&vdev->dev, "rproc_virtio_set: access out of bounds\n");
340 * This function is called whenever vdev is released, and is responsible
341 * to decrement the remote processor's refcount which was taken when vdev was
349 struct virtio_device *vdev = dev_to_virtio(dev);
350 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
352 kfree(vdev);
362 * @rvdev: the remote vdev
365 * This function registers a virtio device. This vdev's partent is
374 struct virtio_device *vdev;
384 /* Try to find dedicated vdev buffer carveout */
385 mem = rproc_find_carveout_by_name(rproc, "vdev%dbuffer", rvdev->index);
392 /* Associate reserved memory to vdev device */
401 dev_warn(dev, "vdev %d buffer already mapped\n",
409 /* Associate vdev buffer memory pool to vdev subdev */
433 vdev = kzalloc(sizeof(*vdev), GFP_KERNEL);
434 if (!vdev) {
438 vdev->id.device = id,
439 vdev->config = &rproc_virtio_config_ops,
440 vdev->dev.parent = dev;
441 vdev->dev.release = rproc_virtio_dev_release;
443 /* Reference the vdev and vring allocations */
446 ret = register_virtio_device(vdev);
448 put_device(&vdev->dev);
449 dev_err(dev, "failed to register vdev: %d\n", ret);
453 dev_info(dev, "registered %s (type %d)\n", dev_name(&vdev->dev), id);
470 struct virtio_device *vdev = dev_to_virtio(dev);
472 unregister_virtio_device(vdev);
491 dev_warn(dev, "can't remove vdev child device: %d\n", ret);
558 * here, because the platform device or the vdev device will indirectly