char temp;
        struct pci_dev *pci_dev = NULL;
 
-       pci_dev = pci_find_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, 
-                                 pci_dev);
+       pci_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533,
+                                pci_dev);
        if (pci_dev == NULL)
                return;
        pci_read_config_byte(pci_dev, 0x61, &temp);
        temp |= 0x10;
        pci_write_config_byte(pci_dev, 0x7e, temp);
 
+       pci_dev_put(pci_dev);
+
        ch = inb(TRID_REG(card, ALI_SCTRL));
        outb(ch | ALI_SPDIF_OUT_ENABLE, TRID_REG(card, ALI_SCTRL));
        ch = inb(TRID_REG(card, ALI_SPDIF_CTRL));
        char temp = 0;
        struct pci_dev *pci_dev = NULL;
 
-       pci_dev = pci_find_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, 
-                                 pci_dev);
+       pci_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533,
+                                pci_dev);
        if (pci_dev == NULL)
                return -1;
+
        pci_read_config_byte(pci_dev, 0x59, &temp);
        temp &= ~0x80;
        pci_write_config_byte(pci_dev, 0x59, temp);
 
-       pci_dev = pci_find_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, 
-                                 pci_dev);
+       pci_dev_put(pci_dev);
+
+       pci_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101,
+                                NULL);
        if (pci_dev == NULL)
                return -1;
 
        temp &= ~0x20;
        pci_write_config_byte(pci_dev, 0xB8, temp);
 
+       pci_dev_put(pci_dev);
+
        return 0;
 }
 
        char temp = 0;
        struct pci_dev *pci_dev = NULL;
 
-       pci_dev = pci_find_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, 
-                                 pci_dev);
+       pci_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533,
+                                pci_dev);
        if (pci_dev == NULL)
                return -1;
        pci_read_config_byte(pci_dev, 0x59, &temp);
        temp |= 0x80;
        pci_write_config_byte(pci_dev, 0x59, temp);
 
-       pci_dev = pci_find_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, 
-                                 pci_dev);
+       pci_dev_put(pci_dev);
+
+       pci_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101,
+                                NULL);
        if (pci_dev == NULL)
                return -1;
        pci_read_config_byte(pci_dev, (int) 0xB8, &temp);
        temp |= 0x20;
        pci_write_config_byte(pci_dev, (int) 0xB8, (u8) temp);
+
+       pci_dev_put(pci_dev);
+
        if (chan_nums == 6) {
                dwValue = inl(TRID_REG(card, ALI_SCTRL)) | 0x000f0000;
                outl(dwValue, TRID_REG(card, ALI_SCTRL));
        unsigned int dwVal;
        unsigned short wCount, wReg;
 
-       pci_dev = pci_find_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, 
-                                 pci_dev);
+       pci_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533,
+                                pci_dev);
        if (pci_dev == NULL)
                return -1;
 
        pci_read_config_dword(pci_dev, 0x7c, &dwVal);
        pci_write_config_dword(pci_dev, 0x7c, dwVal & 0xf7ffffff);
        udelay(5000);
+       pci_dev_put(pci_dev);
 
        pci_dev = card->pci_dev;
        if (pci_dev == NULL)
 
        init_timer(&card->timer);
        card->iobase = iobase;
-       card->pci_dev = pci_dev;
+       card->pci_dev = pci_dev_get(pci_dev);
        card->pci_id = pci_id->device;
        card->revision = revision;
        card->irq = pci_dev->irq;
 out_free_irq:
        free_irq(card->irq, card);
 out_proc_fs:
+       pci_dev_put(card->pci_dev);
        if (res) {
                remove_proc_entry("ALi5451", NULL);
                res = NULL;
                }
        unregister_sound_dsp(card->dev_audio);
 
-       kfree(card);
-
        pci_set_drvdata(pci_dev, NULL);
+       pci_dev_put(card->pci_dev);
+       kfree(card);
 }
 
 MODULE_AUTHOR("Alan Cox, Aaron Holtzman, Ollie Lho, Ching Ling Lee, Muli Ben-Yehuda");