HID: usbhid: Fix flood of "control queue full" messages
[linux-2.6-microblaze.git] / drivers / spi / spi-dw-pci.c
index 2ea7380..8a91cd5 100644 (file)
@@ -48,9 +48,6 @@ static int spi_mid_init(struct dw_spi *dws)
 
        iounmap(clk_reg);
 
-       /* Register hook to configure CTRLR0 */
-       dws->update_cr0 = dw_spi_update_cr0;
-
        dw_spi_dma_setup_mfld(dws);
 
        return 0;
@@ -58,9 +55,6 @@ static int spi_mid_init(struct dw_spi *dws)
 
 static int spi_generic_init(struct dw_spi *dws)
 {
-       /* Register hook to configure CTRLR0 */
-       dws->update_cr0 = dw_spi_update_cr0;
-
        dw_spi_dma_setup_generic(dws);
 
        return 0;
@@ -127,18 +121,16 @@ static int spi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
                if (desc->setup) {
                        ret = desc->setup(dws);
                        if (ret)
-                               return ret;
+                               goto err_free_irq_vectors;
                }
        } else {
-               pci_free_irq_vectors(pdev);
-               return -ENODEV;
+               ret = -ENODEV;
+               goto err_free_irq_vectors;
        }
 
        ret = dw_spi_add_host(&pdev->dev, dws);
-       if (ret) {
-               pci_free_irq_vectors(pdev);
-               return ret;
-       }
+       if (ret)
+               goto err_free_irq_vectors;
 
        /* PCI hook and SPI hook use the same drv data */
        pci_set_drvdata(pdev, dws);
@@ -152,6 +144,10 @@ static int spi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        pm_runtime_allow(&pdev->dev);
 
        return 0;
+
+err_free_irq_vectors:
+       pci_free_irq_vectors(pdev);
+       return ret;
 }
 
 static void spi_pci_remove(struct pci_dev *pdev)