if (bus->irq >= 0)
                free_irq(bus->irq, (void*)chip);
-       if (chip->msi)
-               pci_disable_msi(chip->pci);
-       iounmap(bus->remap_addr);
 
        azx_free_stream_pages(chip);
        azx_free_streams(chip);
        snd_hdac_bus_exit(bus);
 
-       if (chip->region_requested)
-               pci_release_regions(chip->pci);
-
-       pci_disable_device(chip->pci);
 #ifdef CONFIG_SND_HDA_PATCH_LOADER
        release_firmware(chip->fw);
 #endif
 
        *rchip = NULL;
 
-       err = pci_enable_device(pci);
+       err = pcim_enable_device(pci);
        if (err < 0)
                return err;
 
        hda = devm_kzalloc(&pci->dev, sizeof(*hda), GFP_KERNEL);
-       if (!hda) {
-               pci_disable_device(pci);
+       if (!hda)
                return -ENOMEM;
-       }
 
        chip = &hda->chip;
        mutex_init(&chip->open_mutex);
                chip->bdl_pos_adj = bdl_pos_adj[dev];
 
        err = azx_bus_init(chip, model[dev]);
-       if (err < 0) {
-               pci_disable_device(pci);
+       if (err < 0)
                return err;
-       }
 
        /* use the non-cached pages in non-snoop mode */
        if (!azx_snoop(chip))
        }
 #endif
 
-       err = pci_request_regions(pci, "ICH HD audio");
+       err = pcim_iomap_regions(pci, 1 << 0, "ICH HD audio");
        if (err < 0)
                return err;
-       chip->region_requested = 1;
 
        bus->addr = pci_resource_start(pci, 0);
-       bus->remap_addr = pci_ioremap_bar(pci, 0);
-       if (bus->remap_addr == NULL) {
-               dev_err(card->dev, "ioremap error\n");
-               return -ENXIO;
-       }
+       bus->remap_addr = pcim_iomap_table(pci)[0];
 
        if (chip->driver_type == AZX_DRIVER_SKL)
                snd_hdac_bus_parse_capabilities(bus);