Lines Matching refs:vm_dev

111 	struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);  in vm_get_features()  local
114 writel(1, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL); in vm_get_features()
115 features = readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES); in vm_get_features()
118 writel(0, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL); in vm_get_features()
119 features |= readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES); in vm_get_features()
126 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_finalize_features() local
132 if (vm_dev->version == 2 && in vm_finalize_features()
138 writel(1, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); in vm_finalize_features()
140 vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES); in vm_finalize_features()
142 writel(0, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); in vm_finalize_features()
144 vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES); in vm_finalize_features()
152 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_get() local
153 void __iomem *base = vm_dev->base + VIRTIO_MMIO_CONFIG; in vm_get()
158 if (vm_dev->version == 1) { in vm_get()
194 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_set() local
195 void __iomem *base = vm_dev->base + VIRTIO_MMIO_CONFIG; in vm_set()
200 if (vm_dev->version == 1) { in vm_set()
236 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_generation() local
238 if (vm_dev->version == 1) in vm_generation()
241 return readl(vm_dev->base + VIRTIO_MMIO_CONFIG_GENERATION); in vm_generation()
246 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_get_status() local
248 return readl(vm_dev->base + VIRTIO_MMIO_STATUS) & 0xff; in vm_get_status()
253 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_set_status() local
263 writel(status, vm_dev->base + VIRTIO_MMIO_STATUS); in vm_set_status()
268 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_reset() local
271 writel(0, vm_dev->base + VIRTIO_MMIO_STATUS); in vm_reset()
281 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); in vm_notify() local
285 writel(vq->index, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY); in vm_notify()
291 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); in vm_notify_with_data() local
294 writel(data, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY); in vm_notify_with_data()
302 struct virtio_mmio_device *vm_dev = opaque; in vm_interrupt() local
309 status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); in vm_interrupt()
310 writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); in vm_interrupt()
313 virtio_config_changed(&vm_dev->vdev); in vm_interrupt()
318 spin_lock_irqsave(&vm_dev->lock, flags); in vm_interrupt()
319 list_for_each_entry(info, &vm_dev->virtqueues, node) in vm_interrupt()
321 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_interrupt()
331 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); in vm_del_vq() local
336 spin_lock_irqsave(&vm_dev->lock, flags); in vm_del_vq()
338 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_del_vq()
341 writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); in vm_del_vq()
342 if (vm_dev->version == 1) { in vm_del_vq()
343 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_del_vq()
345 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_del_vq()
346 WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); in vm_del_vq()
356 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_del_vqs() local
362 free_irq(platform_get_irq(vm_dev->pdev, 0), vm_dev); in vm_del_vqs()
367 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_synchronize_cbs() local
369 synchronize_irq(platform_get_irq(vm_dev->pdev, 0)); in vm_synchronize_cbs()
376 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_setup_vq() local
393 writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); in vm_setup_vq()
396 if (readl(vm_dev->base + (vm_dev->version == 1 ? in vm_setup_vq()
409 num = readl(vm_dev->base + VIRTIO_MMIO_QUEUE_NUM_MAX); in vm_setup_vq()
426 writel(virtqueue_get_vring_size(vq), vm_dev->base + VIRTIO_MMIO_QUEUE_NUM); in vm_setup_vq()
427 if (vm_dev->version == 1) { in vm_setup_vq()
443 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_QUEUE_ALIGN); in vm_setup_vq()
444 writel(q_pfn, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_setup_vq()
449 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_LOW); in vm_setup_vq()
451 vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_HIGH); in vm_setup_vq()
454 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_LOW); in vm_setup_vq()
456 vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_HIGH); in vm_setup_vq()
459 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_USED_LOW); in vm_setup_vq()
461 vm_dev->base + VIRTIO_MMIO_QUEUE_USED_HIGH); in vm_setup_vq()
463 writel(1, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_setup_vq()
469 spin_lock_irqsave(&vm_dev->lock, flags); in vm_setup_vq()
470 list_add(&info->node, &vm_dev->virtqueues); in vm_setup_vq()
471 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_setup_vq()
478 if (vm_dev->version == 1) { in vm_setup_vq()
479 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_setup_vq()
481 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_setup_vq()
482 WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); in vm_setup_vq()
497 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_find_vqs() local
498 int irq = platform_get_irq(vm_dev->pdev, 0); in vm_find_vqs()
505 dev_name(&vdev->dev), vm_dev); in vm_find_vqs()
509 if (of_property_read_bool(vm_dev->pdev->dev.of_node, "wakeup-source")) in vm_find_vqs()
531 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_bus_name() local
533 return vm_dev->pdev->name; in vm_bus_name()
539 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_get_shm_region() local
543 writel(id, vm_dev->base + VIRTIO_MMIO_SHM_SEL); in vm_get_shm_region()
546 len = (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_LEN_LOW); in vm_get_shm_region()
547 len |= (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_LEN_HIGH) << 32; in vm_get_shm_region()
558 addr = (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_BASE_LOW); in vm_get_shm_region()
559 addr |= (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_BASE_HIGH) << 32; in vm_get_shm_region()
585 struct virtio_mmio_device *vm_dev = dev_get_drvdata(dev); in virtio_mmio_freeze() local
587 return virtio_device_freeze(&vm_dev->vdev); in virtio_mmio_freeze()
592 struct virtio_mmio_device *vm_dev = dev_get_drvdata(dev); in virtio_mmio_restore() local
594 if (vm_dev->version == 1) in virtio_mmio_restore()
595 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_GUEST_PAGE_SIZE); in virtio_mmio_restore()
597 return virtio_device_restore(&vm_dev->vdev); in virtio_mmio_restore()
609 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in virtio_mmio_release_dev() local
611 kfree(vm_dev); in virtio_mmio_release_dev()
618 struct virtio_mmio_device *vm_dev; in virtio_mmio_probe() local
622 vm_dev = kzalloc(sizeof(*vm_dev), GFP_KERNEL); in virtio_mmio_probe()
623 if (!vm_dev) in virtio_mmio_probe()
626 vm_dev->vdev.dev.parent = &pdev->dev; in virtio_mmio_probe()
627 vm_dev->vdev.dev.release = virtio_mmio_release_dev; in virtio_mmio_probe()
628 vm_dev->vdev.config = &virtio_mmio_config_ops; in virtio_mmio_probe()
629 vm_dev->pdev = pdev; in virtio_mmio_probe()
630 INIT_LIST_HEAD(&vm_dev->virtqueues); in virtio_mmio_probe()
631 spin_lock_init(&vm_dev->lock); in virtio_mmio_probe()
633 vm_dev->base = devm_platform_ioremap_resource(pdev, 0); in virtio_mmio_probe()
634 if (IS_ERR(vm_dev->base)) { in virtio_mmio_probe()
635 rc = PTR_ERR(vm_dev->base); in virtio_mmio_probe()
640 magic = readl(vm_dev->base + VIRTIO_MMIO_MAGIC_VALUE); in virtio_mmio_probe()
648 vm_dev->version = readl(vm_dev->base + VIRTIO_MMIO_VERSION); in virtio_mmio_probe()
649 if (vm_dev->version < 1 || vm_dev->version > 2) { in virtio_mmio_probe()
651 vm_dev->version); in virtio_mmio_probe()
656 vm_dev->vdev.id.device = readl(vm_dev->base + VIRTIO_MMIO_DEVICE_ID); in virtio_mmio_probe()
657 if (vm_dev->vdev.id.device == 0) { in virtio_mmio_probe()
665 vm_dev->vdev.id.vendor = readl(vm_dev->base + VIRTIO_MMIO_VENDOR_ID); in virtio_mmio_probe()
667 if (vm_dev->version == 1) { in virtio_mmio_probe()
668 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_GUEST_PAGE_SIZE); in virtio_mmio_probe()
686 platform_set_drvdata(pdev, vm_dev); in virtio_mmio_probe()
688 rc = register_virtio_device(&vm_dev->vdev); in virtio_mmio_probe()
690 put_device(&vm_dev->vdev.dev); in virtio_mmio_probe()
695 kfree(vm_dev); in virtio_mmio_probe()
701 struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev); in virtio_mmio_remove() local
702 unregister_virtio_device(&vm_dev->vdev); in virtio_mmio_remove()