Lines Matching refs:vm_dev

113 	struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);  in vm_get_features()  local
116 writel(1, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL); in vm_get_features()
117 features = readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES); in vm_get_features()
120 writel(0, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL); in vm_get_features()
121 features |= readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES); in vm_get_features()
128 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_finalize_features() local
134 if (vm_dev->version == 2 && in vm_finalize_features()
140 writel(1, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); in vm_finalize_features()
142 vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES); in vm_finalize_features()
144 writel(0, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); in vm_finalize_features()
146 vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES); in vm_finalize_features()
154 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_get() local
155 void __iomem *base = vm_dev->base + VIRTIO_MMIO_CONFIG; in vm_get()
160 if (vm_dev->version == 1) { in vm_get()
196 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_set() local
197 void __iomem *base = vm_dev->base + VIRTIO_MMIO_CONFIG; in vm_set()
202 if (vm_dev->version == 1) { in vm_set()
238 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_generation() local
240 if (vm_dev->version == 1) in vm_generation()
243 return readl(vm_dev->base + VIRTIO_MMIO_CONFIG_GENERATION); in vm_generation()
248 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_get_status() local
250 return readl(vm_dev->base + VIRTIO_MMIO_STATUS) & 0xff; in vm_get_status()
255 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_set_status() local
260 writel(status, vm_dev->base + VIRTIO_MMIO_STATUS); in vm_set_status()
265 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_reset() local
268 writel(0, vm_dev->base + VIRTIO_MMIO_STATUS); in vm_reset()
278 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); in vm_notify() local
282 writel(vq->index, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY); in vm_notify()
289 struct virtio_mmio_device *vm_dev = opaque; in vm_interrupt() local
296 status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); in vm_interrupt()
297 writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); in vm_interrupt()
300 virtio_config_changed(&vm_dev->vdev); in vm_interrupt()
305 spin_lock_irqsave(&vm_dev->lock, flags); in vm_interrupt()
306 list_for_each_entry(info, &vm_dev->virtqueues, node) in vm_interrupt()
308 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_interrupt()
318 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); in vm_del_vq() local
323 spin_lock_irqsave(&vm_dev->lock, flags); in vm_del_vq()
325 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_del_vq()
328 writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); in vm_del_vq()
329 if (vm_dev->version == 1) { in vm_del_vq()
330 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_del_vq()
332 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_del_vq()
333 WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); in vm_del_vq()
343 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_del_vqs() local
349 free_irq(platform_get_irq(vm_dev->pdev, 0), vm_dev); in vm_del_vqs()
356 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_setup_vq() local
367 writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); in vm_setup_vq()
370 if (readl(vm_dev->base + (vm_dev->version == 1 ? in vm_setup_vq()
383 num = readl(vm_dev->base + VIRTIO_MMIO_QUEUE_NUM_MAX); in vm_setup_vq()
398 writel(virtqueue_get_vring_size(vq), vm_dev->base + VIRTIO_MMIO_QUEUE_NUM); in vm_setup_vq()
399 if (vm_dev->version == 1) { in vm_setup_vq()
415 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_QUEUE_ALIGN); in vm_setup_vq()
416 writel(q_pfn, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_setup_vq()
421 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_LOW); in vm_setup_vq()
423 vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_HIGH); in vm_setup_vq()
426 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_LOW); in vm_setup_vq()
428 vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_HIGH); in vm_setup_vq()
431 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_USED_LOW); in vm_setup_vq()
433 vm_dev->base + VIRTIO_MMIO_QUEUE_USED_HIGH); in vm_setup_vq()
435 writel(1, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_setup_vq()
441 spin_lock_irqsave(&vm_dev->lock, flags); in vm_setup_vq()
442 list_add(&info->node, &vm_dev->virtqueues); in vm_setup_vq()
443 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_setup_vq()
450 if (vm_dev->version == 1) { in vm_setup_vq()
451 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_setup_vq()
453 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_setup_vq()
454 WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); in vm_setup_vq()
469 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_find_vqs() local
470 unsigned int irq = platform_get_irq(vm_dev->pdev, 0); in vm_find_vqs()
474 dev_name(&vdev->dev), vm_dev); in vm_find_vqs()
492 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_bus_name() local
494 return vm_dev->pdev->name; in vm_bus_name()
516 struct virtio_mmio_device *vm_dev = in virtio_mmio_release_dev() local
518 struct platform_device *pdev = vm_dev->pdev; in virtio_mmio_release_dev()
520 devm_kfree(&pdev->dev, vm_dev); in virtio_mmio_release_dev()
527 struct virtio_mmio_device *vm_dev; in virtio_mmio_probe() local
540 vm_dev = devm_kzalloc(&pdev->dev, sizeof(*vm_dev), GFP_KERNEL); in virtio_mmio_probe()
541 if (!vm_dev) in virtio_mmio_probe()
544 vm_dev->vdev.dev.parent = &pdev->dev; in virtio_mmio_probe()
545 vm_dev->vdev.dev.release = virtio_mmio_release_dev; in virtio_mmio_probe()
546 vm_dev->vdev.config = &virtio_mmio_config_ops; in virtio_mmio_probe()
547 vm_dev->pdev = pdev; in virtio_mmio_probe()
548 INIT_LIST_HEAD(&vm_dev->virtqueues); in virtio_mmio_probe()
549 spin_lock_init(&vm_dev->lock); in virtio_mmio_probe()
551 vm_dev->base = devm_ioremap(&pdev->dev, mem->start, resource_size(mem)); in virtio_mmio_probe()
552 if (vm_dev->base == NULL) in virtio_mmio_probe()
556 magic = readl(vm_dev->base + VIRTIO_MMIO_MAGIC_VALUE); in virtio_mmio_probe()
563 vm_dev->version = readl(vm_dev->base + VIRTIO_MMIO_VERSION); in virtio_mmio_probe()
564 if (vm_dev->version < 1 || vm_dev->version > 2) { in virtio_mmio_probe()
566 vm_dev->version); in virtio_mmio_probe()
570 vm_dev->vdev.id.device = readl(vm_dev->base + VIRTIO_MMIO_DEVICE_ID); in virtio_mmio_probe()
571 if (vm_dev->vdev.id.device == 0) { in virtio_mmio_probe()
578 vm_dev->vdev.id.vendor = readl(vm_dev->base + VIRTIO_MMIO_VENDOR_ID); in virtio_mmio_probe()
580 if (vm_dev->version == 1) { in virtio_mmio_probe()
581 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_GUEST_PAGE_SIZE); in virtio_mmio_probe()
599 platform_set_drvdata(pdev, vm_dev); in virtio_mmio_probe()
601 rc = register_virtio_device(&vm_dev->vdev); in virtio_mmio_probe()
603 put_device(&vm_dev->vdev.dev); in virtio_mmio_probe()
610 struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev); in virtio_mmio_remove() local
611 unregister_virtio_device(&vm_dev->vdev); in virtio_mmio_remove()