Lines Matching refs:vm_dev
109 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_get_features() local
112 writel(1, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL); in vm_get_features()
113 features = readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES); in vm_get_features()
116 writel(0, 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()
124 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_finalize_features() local
130 if (vm_dev->version == 2 && in vm_finalize_features()
136 writel(1, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); in vm_finalize_features()
138 vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES); in vm_finalize_features()
140 writel(0, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); in vm_finalize_features()
142 vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES); in vm_finalize_features()
150 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_get() local
151 void __iomem *base = vm_dev->base + VIRTIO_MMIO_CONFIG; in vm_get()
156 if (vm_dev->version == 1) { in vm_get()
192 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_set() local
193 void __iomem *base = vm_dev->base + VIRTIO_MMIO_CONFIG; in vm_set()
198 if (vm_dev->version == 1) { in vm_set()
234 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_generation() local
236 if (vm_dev->version == 1) in vm_generation()
239 return readl(vm_dev->base + VIRTIO_MMIO_CONFIG_GENERATION); in vm_generation()
244 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_get_status() local
246 return readl(vm_dev->base + VIRTIO_MMIO_STATUS) & 0xff; in vm_get_status()
251 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_set_status() local
256 writel(status, vm_dev->base + VIRTIO_MMIO_STATUS); in vm_set_status()
261 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_reset() local
264 writel(0, vm_dev->base + VIRTIO_MMIO_STATUS); in vm_reset()
274 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); in vm_notify() local
278 writel(vq->index, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY); in vm_notify()
285 struct virtio_mmio_device *vm_dev = opaque; in vm_interrupt() local
292 status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); in vm_interrupt()
293 writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); in vm_interrupt()
296 virtio_config_changed(&vm_dev->vdev); in vm_interrupt()
301 spin_lock_irqsave(&vm_dev->lock, flags); in vm_interrupt()
302 list_for_each_entry(info, &vm_dev->virtqueues, node) in vm_interrupt()
304 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_interrupt()
314 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); in vm_del_vq() local
319 spin_lock_irqsave(&vm_dev->lock, flags); in vm_del_vq()
321 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_del_vq()
324 writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); in vm_del_vq()
325 if (vm_dev->version == 1) { in vm_del_vq()
326 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_del_vq()
328 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_del_vq()
329 WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); in vm_del_vq()
339 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_del_vqs() local
345 free_irq(platform_get_irq(vm_dev->pdev, 0), vm_dev); in vm_del_vqs()
352 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_setup_vq() local
363 writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); in vm_setup_vq()
366 if (readl(vm_dev->base + (vm_dev->version == 1 ? in vm_setup_vq()
379 num = readl(vm_dev->base + VIRTIO_MMIO_QUEUE_NUM_MAX); in vm_setup_vq()
394 writel(virtqueue_get_vring_size(vq), vm_dev->base + VIRTIO_MMIO_QUEUE_NUM); in vm_setup_vq()
395 if (vm_dev->version == 1) { in vm_setup_vq()
411 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_QUEUE_ALIGN); in vm_setup_vq()
412 writel(q_pfn, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_setup_vq()
417 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_LOW); in vm_setup_vq()
419 vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_HIGH); in vm_setup_vq()
422 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_LOW); in vm_setup_vq()
424 vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_HIGH); in vm_setup_vq()
427 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_USED_LOW); in vm_setup_vq()
429 vm_dev->base + VIRTIO_MMIO_QUEUE_USED_HIGH); in vm_setup_vq()
431 writel(1, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_setup_vq()
437 spin_lock_irqsave(&vm_dev->lock, flags); in vm_setup_vq()
438 list_add(&info->node, &vm_dev->virtqueues); in vm_setup_vq()
439 spin_unlock_irqrestore(&vm_dev->lock, flags); in vm_setup_vq()
446 if (vm_dev->version == 1) { in vm_setup_vq()
447 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); in vm_setup_vq()
449 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); in vm_setup_vq()
450 WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); in vm_setup_vq()
465 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_find_vqs() local
466 int irq = platform_get_irq(vm_dev->pdev, 0); in vm_find_vqs()
475 dev_name(&vdev->dev), vm_dev); in vm_find_vqs()
498 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); in vm_bus_name() local
500 return vm_dev->pdev->name; in vm_bus_name()
522 struct virtio_mmio_device *vm_dev = in virtio_mmio_release_dev() local
524 struct platform_device *pdev = vm_dev->pdev; in virtio_mmio_release_dev()
526 devm_kfree(&pdev->dev, vm_dev); in virtio_mmio_release_dev()
533 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.dev.release = virtio_mmio_release_dev; in virtio_mmio_probe()
552 vm_dev->vdev.config = &virtio_mmio_config_ops; in virtio_mmio_probe()
553 vm_dev->pdev = pdev; in virtio_mmio_probe()
554 INIT_LIST_HEAD(&vm_dev->virtqueues); in virtio_mmio_probe()
555 spin_lock_init(&vm_dev->lock); in virtio_mmio_probe()
557 vm_dev->base = devm_ioremap(&pdev->dev, mem->start, resource_size(mem)); in virtio_mmio_probe()
558 if (vm_dev->base == NULL) in virtio_mmio_probe()
562 magic = readl(vm_dev->base + VIRTIO_MMIO_MAGIC_VALUE); in virtio_mmio_probe()
569 vm_dev->version = readl(vm_dev->base + VIRTIO_MMIO_VERSION); in virtio_mmio_probe()
570 if (vm_dev->version < 1 || vm_dev->version > 2) { in virtio_mmio_probe()
572 vm_dev->version); in virtio_mmio_probe()
576 vm_dev->vdev.id.device = readl(vm_dev->base + VIRTIO_MMIO_DEVICE_ID); in virtio_mmio_probe()
577 if (vm_dev->vdev.id.device == 0) { in virtio_mmio_probe()
584 vm_dev->vdev.id.vendor = readl(vm_dev->base + VIRTIO_MMIO_VENDOR_ID); in virtio_mmio_probe()
586 if (vm_dev->version == 1) { in virtio_mmio_probe()
587 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_GUEST_PAGE_SIZE); in virtio_mmio_probe()
605 platform_set_drvdata(pdev, vm_dev); in virtio_mmio_probe()
607 rc = register_virtio_device(&vm_dev->vdev); in virtio_mmio_probe()
609 put_device(&vm_dev->vdev.dev); in virtio_mmio_probe()
616 struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev); in virtio_mmio_remove() local
617 unregister_virtio_device(&vm_dev->vdev); in virtio_mmio_remove()