/* Now cleanup the PCI device */
                solo_irq_off(solo_dev, ~0);
                free_irq(pdev->irq, solo_dev);
-               pci_iounmap(pdev, solo_dev->reg_base);
        }
 
-       pci_release_regions(pdev);
        pci_disable_device(pdev);
        v4l2_device_unregister(&solo_dev->v4l2_dev);
        pci_set_drvdata(pdev, NULL);
        pci_write_config_byte(pdev, 0x40, 0x00);
        pci_write_config_byte(pdev, 0x41, 0x00);
 
-       ret = pci_request_regions(pdev, SOLO6X10_NAME);
+       ret = pcim_iomap_regions(pdev, BIT(0), SOLO6X10_NAME);
        if (ret)
                goto fail_probe;
-
-       solo_dev->reg_base = pci_ioremap_bar(pdev, 0);
-       if (solo_dev->reg_base == NULL) {
-               ret = -ENOMEM;
-               goto fail_probe;
-       }
+       solo_dev->reg_base = pcim_iomap_table(pdev)[0];
 
        chip_id = solo_reg_read(solo_dev, SOLO_CHIP_OPTION) &
                                SOLO_CHIP_ID_MASK;