Lines Matching refs:vm_dev
110 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
113 writel(1, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL);
114 features = readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES);
117 writel(0, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL);
118 features |= readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES);
125 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
131 if (vm_dev->version == 2 &&
137 writel(1, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL);
139 vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES);
141 writel(0, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL);
143 vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES);
151 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
152 void __iomem *base = vm_dev->base + VIRTIO_MMIO_CONFIG;
157 if (vm_dev->version == 1) {
193 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
194 void __iomem *base = vm_dev->base + VIRTIO_MMIO_CONFIG;
199 if (vm_dev->version == 1) {
235 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
237 if (vm_dev->version == 1)
240 return readl(vm_dev->base + VIRTIO_MMIO_CONFIG_GENERATION);
245 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
247 return readl(vm_dev->base + VIRTIO_MMIO_STATUS) & 0xff;
252 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
257 writel(status, vm_dev->base + VIRTIO_MMIO_STATUS);
262 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
265 writel(0, vm_dev->base + VIRTIO_MMIO_STATUS);
275 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev);
279 writel(vq->index, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY);
286 struct virtio_mmio_device *vm_dev = opaque;
293 status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS);
294 writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK);
297 virtio_config_changed(&vm_dev->vdev);
302 spin_lock_irqsave(&vm_dev->lock, flags);
303 list_for_each_entry(info, &vm_dev->virtqueues, node)
305 spin_unlock_irqrestore(&vm_dev->lock, flags);
315 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev);
320 spin_lock_irqsave(&vm_dev->lock, flags);
322 spin_unlock_irqrestore(&vm_dev->lock, flags);
325 writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL);
326 if (vm_dev->version == 1) {
327 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
329 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY);
330 WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY));
340 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
346 free_irq(platform_get_irq(vm_dev->pdev, 0), vm_dev);
353 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
364 writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL);
367 if (readl(vm_dev->base + (vm_dev->version == 1 ?
380 num = readl(vm_dev->base + VIRTIO_MMIO_QUEUE_NUM_MAX);
395 writel(virtqueue_get_vring_size(vq), vm_dev->base + VIRTIO_MMIO_QUEUE_NUM);
396 if (vm_dev->version == 1) {
412 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_QUEUE_ALIGN);
413 writel(q_pfn, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
418 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_LOW);
420 vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_HIGH);
423 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_LOW);
425 vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_HIGH);
428 writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_USED_LOW);
430 vm_dev->base + VIRTIO_MMIO_QUEUE_USED_HIGH);
432 writel(1, vm_dev->base + VIRTIO_MMIO_QUEUE_READY);
438 spin_lock_irqsave(&vm_dev->lock, flags);
439 list_add(&info->node, &vm_dev->virtqueues);
440 spin_unlock_irqrestore(&vm_dev->lock, flags);
447 if (vm_dev->version == 1) {
448 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
450 writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY);
451 WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY));
466 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
467 int irq = platform_get_irq(vm_dev->pdev, 0);
474 dev_name(&vdev->dev), vm_dev);
497 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
499 return vm_dev->pdev->name;
505 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
509 writel(id, vm_dev->base + VIRTIO_MMIO_SHM_SEL);
512 len = (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_LEN_LOW);
513 len |= (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_LEN_HIGH) << 32;
524 addr = (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_BASE_LOW);
525 addr |= (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_BASE_HIGH) << 32;
550 struct virtio_mmio_device *vm_dev = dev_get_drvdata(dev);
552 return virtio_device_freeze(&vm_dev->vdev);
557 struct virtio_mmio_device *vm_dev = dev_get_drvdata(dev);
559 if (vm_dev->version == 1)
560 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_GUEST_PAGE_SIZE);
562 return virtio_device_restore(&vm_dev->vdev);
574 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
576 kfree(vm_dev);
583 struct virtio_mmio_device *vm_dev;
587 vm_dev = kzalloc(sizeof(*vm_dev), GFP_KERNEL);
588 if (!vm_dev)
591 vm_dev->vdev.dev.parent = &pdev->dev;
592 vm_dev->vdev.dev.release = virtio_mmio_release_dev;
593 vm_dev->vdev.config = &virtio_mmio_config_ops;
594 vm_dev->pdev = pdev;
595 INIT_LIST_HEAD(&vm_dev->virtqueues);
596 spin_lock_init(&vm_dev->lock);
598 vm_dev->base = devm_platform_ioremap_resource(pdev, 0);
599 if (IS_ERR(vm_dev->base)) {
600 rc = PTR_ERR(vm_dev->base);
605 magic = readl(vm_dev->base + VIRTIO_MMIO_MAGIC_VALUE);
613 vm_dev->version = readl(vm_dev->base + VIRTIO_MMIO_VERSION);
614 if (vm_dev->version < 1 || vm_dev->version > 2) {
616 vm_dev->version);
621 vm_dev->vdev.id.device = readl(vm_dev->base + VIRTIO_MMIO_DEVICE_ID);
622 if (vm_dev->vdev.id.device == 0) {
630 vm_dev->vdev.id.vendor = readl(vm_dev->base + VIRTIO_MMIO_VENDOR_ID);
632 if (vm_dev->version == 1) {
633 writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_GUEST_PAGE_SIZE);
651 platform_set_drvdata(pdev, vm_dev);
653 rc = register_virtio_device(&vm_dev->vdev);
655 put_device(&vm_dev->vdev.dev);
660 kfree(vm_dev);
666 struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
667 unregister_virtio_device(&vm_dev->vdev);