]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/virtio/virtio_mmio.c
Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux.git] / drivers / virtio / virtio_mmio.c
index f363fbeb5ab0cf0c3e006de5c4d9e724c0cb5691..97d5725fd9a2640c82b68dda89183ea5c8581388 100644 (file)
@@ -463,9 +463,14 @@ static int vm_find_vqs(struct virtio_device *vdev, unsigned nvqs,
                       struct irq_affinity *desc)
 {
        struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
-       unsigned int irq = platform_get_irq(vm_dev->pdev, 0);
+       int irq = platform_get_irq(vm_dev->pdev, 0);
        int i, err, queue_idx = 0;
 
+       if (irq < 0) {
+               dev_err(&vdev->dev, "Cannot get IRQ resource\n");
+               return irq;
+       }
+
        err = request_irq(irq, vm_interrupt, IRQF_SHARED,
                        dev_name(&vdev->dev), vm_dev);
        if (err)
@@ -526,18 +531,9 @@ static void virtio_mmio_release_dev(struct device *_d)
 static int virtio_mmio_probe(struct platform_device *pdev)
 {
        struct virtio_mmio_device *vm_dev;
-       struct resource *mem;
        unsigned long magic;
        int rc;
 
-       mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!mem)
-               return -EINVAL;
-
-       if (!devm_request_mem_region(&pdev->dev, mem->start,
-                       resource_size(mem), pdev->name))
-               return -EBUSY;
-
        vm_dev = devm_kzalloc(&pdev->dev, sizeof(*vm_dev), GFP_KERNEL);
        if (!vm_dev)
                return -ENOMEM;
@@ -549,9 +545,9 @@ static int virtio_mmio_probe(struct platform_device *pdev)
        INIT_LIST_HEAD(&vm_dev->virtqueues);
        spin_lock_init(&vm_dev->lock);
 
-       vm_dev->base = devm_ioremap(&pdev->dev, mem->start, resource_size(mem));
-       if (vm_dev->base == NULL)
-               return -EFAULT;
+       vm_dev->base = devm_platform_ioremap_resource(pdev, 0);
+       if (IS_ERR(vm_dev->base))
+               return PTR_ERR(vm_dev->base);
 
        /* Check magic value */
        magic = readl(vm_dev->base + VIRTIO_MMIO_MAGIC_VALUE);