Lines Matching refs:vm_dev

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