Lines Matching refs:vm_dev

118 	struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);  in vm_get_features()  local
121 writel(1, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL); in vm_get_features()
122 features = readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES); in vm_get_features()
125 writel(0, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL); in vm_get_features()
126 features |= readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES); in vm_get_features()
133 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_finalize_features() local
139 if (vm_dev->version == 2 && in vm_finalize_features()
145 writel(1, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); in vm_finalize_features()
147 vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES); in vm_finalize_features()
149 writel(0, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); in vm_finalize_features()
151 vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES); in vm_finalize_features()
159 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_get() local
160 void __iomem *base = vm_dev->base + VIRTIO_MMIO_CONFIG; in vm_get()
165 if (vm_dev->version == 1) { in vm_get()
201 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_set() local
202 void __iomem *base = vm_dev->base + VIRTIO_MMIO_CONFIG; in vm_set()
207 if (vm_dev->version == 1) { in vm_set()
243 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_generation() local
245 if (vm_dev->version == 1) in vm_generation()
248 return readl(vm_dev->base + VIRTIO_MMIO_CONFIG_GENERATION); in vm_generation()
253 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_get_status() local
255 return readl(vm_dev->base + VIRTIO_MMIO_STATUS) & 0xff; in vm_get_status()
260 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_set_status() local
265 writel(status, vm_dev->base + VIRTIO_MMIO_STATUS); in vm_set_status()
270 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_reset() local
273 writel(0, vm_dev->base + VIRTIO_MMIO_STATUS); in vm_reset()
283 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); in vm_notify() local
287 writel(vq->index, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY); in vm_notify()
294 struct virtio_mmio_device *vm_dev = opaque; in vm_interrupt() local
301 status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); in vm_interrupt()
302 writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); in vm_interrupt()
305 virtio_config_changed(&vm_dev->vdev); in vm_interrupt()
310 spin_lock_irqsave(&vm_dev->lock, flags); in vm_interrupt()
311 list_for_each_entry(info, &vm_dev->virtqueues, node) in vm_interrupt()
313 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_interrupt()
323 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); in vm_del_vq() local
328 spin_lock_irqsave(&vm_dev->lock, flags); in vm_del_vq()
330 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_del_vq()
335 writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); in vm_del_vq()
336 if (vm_dev->version == 1) { in vm_del_vq()
337 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_del_vq()
339 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_del_vq()
340 WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); in vm_del_vq()
350 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_del_vqs() local
356 free_irq(platform_get_irq(vm_dev->pdev, 0), vm_dev); in vm_del_vqs()
365 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_setup_vq() local
375 writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); in vm_setup_vq()
378 if (readl(vm_dev->base + (vm_dev->version == 1 ? in vm_setup_vq()
396 info->num = readl(vm_dev->base + VIRTIO_MMIO_QUEUE_NUM_MAX); in vm_setup_vq()
432 writel(info->num, vm_dev->base + VIRTIO_MMIO_QUEUE_NUM); in vm_setup_vq()
433 if (vm_dev->version == 1) { in vm_setup_vq()
434 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_QUEUE_ALIGN); in vm_setup_vq()
436 vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_setup_vq()
441 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_LOW); in vm_setup_vq()
443 vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_HIGH); in vm_setup_vq()
446 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_LOW); in vm_setup_vq()
448 vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_HIGH); in vm_setup_vq()
451 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_USED_LOW); in vm_setup_vq()
453 vm_dev->base + VIRTIO_MMIO_QUEUE_USED_HIGH); in vm_setup_vq()
455 writel(1, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_setup_vq()
461 spin_lock_irqsave(&vm_dev->lock, flags); in vm_setup_vq()
462 list_add(&info->node, &vm_dev->virtqueues); in vm_setup_vq()
463 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_setup_vq()
468 if (vm_dev->version == 1) { in vm_setup_vq()
469 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_setup_vq()
471 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_setup_vq()
472 WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); in vm_setup_vq()
487 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_find_vqs() local
488 unsigned int irq = platform_get_irq(vm_dev->pdev, 0); in vm_find_vqs()
492 dev_name(&vdev->dev), vm_dev); in vm_find_vqs()
509 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_bus_name() local
511 return vm_dev->pdev->name; in vm_bus_name()
534 struct virtio_mmio_device *vm_dev; in virtio_mmio_probe() local
546 vm_dev = devm_kzalloc(&pdev->dev, sizeof(*vm_dev), GFP_KERNEL); in virtio_mmio_probe()
547 if (!vm_dev) in virtio_mmio_probe()
550 vm_dev->vdev.dev.parent = &pdev->dev; in virtio_mmio_probe()
551 vm_dev->vdev.config = &virtio_mmio_config_ops; in virtio_mmio_probe()
552 vm_dev->pdev = pdev; in virtio_mmio_probe()
553 INIT_LIST_HEAD(&vm_dev->virtqueues); in virtio_mmio_probe()
554 spin_lock_init(&vm_dev->lock); in virtio_mmio_probe()
556 vm_dev->base = devm_ioremap(&pdev->dev, mem->start, resource_size(mem)); in virtio_mmio_probe()
557 if (vm_dev->base == NULL) in virtio_mmio_probe()
561 magic = readl(vm_dev->base + VIRTIO_MMIO_MAGIC_VALUE); in virtio_mmio_probe()
568 vm_dev->version = readl(vm_dev->base + VIRTIO_MMIO_VERSION); in virtio_mmio_probe()
569 if (vm_dev->version < 1 || vm_dev->version > 2) { in virtio_mmio_probe()
571 vm_dev->version); in virtio_mmio_probe()
575 vm_dev->vdev.id.device = readl(vm_dev->base + VIRTIO_MMIO_DEVICE_ID); in virtio_mmio_probe()
576 if (vm_dev->vdev.id.device == 0) { in virtio_mmio_probe()
583 vm_dev->vdev.id.vendor = readl(vm_dev->base + VIRTIO_MMIO_VENDOR_ID); in virtio_mmio_probe()
585 if (vm_dev->version == 1) in virtio_mmio_probe()
586 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_GUEST_PAGE_SIZE); in virtio_mmio_probe()
588 platform_set_drvdata(pdev, vm_dev); in virtio_mmio_probe()
590 return register_virtio_device(&vm_dev->vdev); in virtio_mmio_probe()
595 struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev); in virtio_mmio_remove() local
597 unregister_virtio_device(&vm_dev->vdev); in virtio_mmio_remove()