Lines Matching refs:mvdev
65 static inline struct device *mic_dev(struct mic_vdev *mvdev) in mic_dev() argument
67 return mvdev->vdev.dev.parent; in mic_dev()
149 struct mic_vdev *mvdev = to_micvdev(vdev); in mic_set_status() local
152 iowrite8(status, &mvdev->desc->status); in mic_set_status()
153 mic_send_intr(mvdev->mdev, mvdev->c2h_vdev_db); in mic_set_status()
159 struct mic_vdev *mvdev = to_micvdev(vdev); in mic_reset_inform_host() local
160 struct mic_device_ctrl __iomem *dc = mvdev->dc; in mic_reset_inform_host()
165 mic_send_intr(mvdev->mdev, mvdev->c2h_vdev_db); in mic_reset_inform_host()
174 dev_dbg(mic_dev(mvdev), "%s: retry: %d\n", __func__, retry); in mic_reset_inform_host()
177 iowrite8(0, &mvdev->desc->status); in mic_reset_inform_host()
182 struct mic_vdev *mvdev = to_micvdev(vdev); in mic_reset() local
184 dev_dbg(mic_dev(mvdev), "%s: virtio id %d\n", in mic_reset()
188 complete_all(&mvdev->reset_done); in mic_reset()
196 struct mic_vdev *mvdev = vq->priv; in mic_notify() local
198 mic_send_intr(mvdev->mdev, mvdev->c2h_vdev_db); in mic_notify()
204 struct mic_vdev *mvdev = to_micvdev(vq->vdev); in mic_del_vq() local
207 free_pages((unsigned long) vr->used, get_order(mvdev->used_size[n])); in mic_del_vq()
209 mic_card_unmap(mvdev->mdev, mvdev->vr[n]); in mic_del_vq()
210 mvdev->vr[n] = NULL; in mic_del_vq()
215 struct mic_vdev *mvdev = to_micvdev(vdev); in mic_del_vqs() local
219 dev_dbg(mic_dev(mvdev), "%s\n", __func__); in mic_del_vqs()
235 struct mic_vdev *mvdev = to_micvdev(vdev); in mic_find_vq() local
244 u8 type = ioread8(&mvdev->desc->type); in mic_find_vq()
246 if (index >= ioread8(&mvdev->desc->num_vq)) in mic_find_vq()
253 vqconfig = mic_vq_config(mvdev->desc) + index; in mic_find_vq()
257 va = mic_card_map(mvdev->mdev, le64_to_cpu(config.address), vr_size); in mic_find_vq()
260 mvdev->vr[index] = va; in mic_find_vq()
279 mvdev->used_size[index] = PAGE_ALIGN(sizeof(__u16) * 3 + in mic_find_vq()
283 get_order(mvdev->used_size[index])); in mic_find_vq()
286 dev_err(mic_dev(mvdev), "%s %d err %d\n", in mic_find_vq()
302 vq->priv = mvdev; in mic_find_vq()
307 mic_card_unmap(mvdev->mdev, mvdev->vr[index]); in mic_find_vq()
316 struct mic_vdev *mvdev = to_micvdev(vdev); in mic_find_vqs() local
317 struct mic_device_ctrl __iomem *dc = mvdev->dc; in mic_find_vqs()
321 if (nvqs > ioread8(&mvdev->desc->num_vq)) in mic_find_vqs()
325 dev_dbg(mic_dev(mvdev), "%s: %d: %s\n", in mic_find_vqs()
339 mic_send_intr(mvdev->mdev, mvdev->c2h_vdev_db); in mic_find_vqs()
346 dev_dbg(mic_dev(mvdev), "%s: retry: %d\n", __func__, retry); in mic_find_vqs()
376 struct mic_vdev *mvdev = data; in mic_virtio_intr_handler() local
379 mic_ack_interrupt(mvdev->mdev); in mic_virtio_intr_handler()
380 list_for_each_entry(vq, &mvdev->vdev.vqs, list) in mic_virtio_intr_handler()
401 struct mic_vdev *mvdev; in mic_add_device() local
406 mvdev = kzalloc(sizeof(*mvdev), GFP_KERNEL); in mic_add_device()
407 if (!mvdev) { in mic_add_device()
413 mvdev->mdev = &mdrv->mdev; in mic_add_device()
414 mvdev->vdev.dev.parent = mdrv->dev; in mic_add_device()
415 mvdev->vdev.dev.release = mic_virtio_release_dev; in mic_add_device()
416 mvdev->vdev.id.device = type; in mic_add_device()
417 mvdev->vdev.config = &mic_vq_config_ops; in mic_add_device()
418 mvdev->desc = d; in mic_add_device()
419 mvdev->dc = (void __iomem *)d + mic_aligned_desc_size(d); in mic_add_device()
420 init_completion(&mvdev->reset_done); in mic_add_device()
423 mvdev->virtio_cookie = mic_request_card_irq(mic_virtio_intr_handler, in mic_add_device()
424 NULL, "virtio intr", mvdev, virtio_db); in mic_add_device()
425 if (IS_ERR(mvdev->virtio_cookie)) { in mic_add_device()
426 ret = PTR_ERR(mvdev->virtio_cookie); in mic_add_device()
429 iowrite8((u8)virtio_db, &mvdev->dc->h2c_vdev_db); in mic_add_device()
430 mvdev->c2h_vdev_db = ioread8(&mvdev->dc->c2h_vdev_db); in mic_add_device()
432 ret = register_virtio_device(&mvdev->vdev); in mic_add_device()
434 dev_err(mic_dev(mvdev), in mic_add_device()
439 iowrite64((u64)mvdev, &mvdev->dc->vdev); in mic_add_device()
440 dev_dbg(mic_dev(mvdev), "%s: registered mic device %u type %u mvdev %p\n", in mic_add_device()
441 __func__, offset, type, mvdev); in mic_add_device()
446 mic_free_card_irq(mvdev->virtio_cookie, mvdev); in mic_add_device()
448 kfree(mvdev); in mic_add_device()
458 struct mic_vdev *mvdev = to_micvdev(vdev); in mic_match_desc() local
460 return mvdev->desc == (void __iomem *)data; in mic_match_desc()
468 struct mic_vdev *mvdev = (struct mic_vdev *)ioread64(&dc->vdev); in mic_handle_config_change() local
474 virtio_config_changed(&mvdev->vdev); in mic_handle_config_change()
487 struct mic_vdev *mvdev = (struct mic_vdev *)ioread64(&dc->vdev); in mic_remove_device() local
495 ioread8(&dc->config_change), ioread8(&d->type), mvdev); in mic_remove_device()
498 reinit_completion(&mvdev->reset_done); in mic_remove_device()
499 unregister_virtio_device(&mvdev->vdev); in mic_remove_device()
500 mic_free_card_irq(mvdev->virtio_cookie, mvdev); in mic_remove_device()
502 wait_for_completion(&mvdev->reset_done); in mic_remove_device()
503 kfree(mvdev); in mic_remove_device()