libata: cable detection fixes
[linux-2.6-block.git] / drivers / ata / sata_inic162x.c
index c5335f422801f85200003812ba82aa0f9a9b23a4..11c3079ab6cc20ed8ff0c4b85493147bdc764923 100644 (file)
@@ -135,8 +135,10 @@ static struct scsi_host_template inic_sht = {
        .slave_configure        = inic_slave_config,
        .slave_destroy          = ata_scsi_slave_destroy,
        .bios_param             = ata_std_bios_param,
+#ifdef CONFIG_PM
        .suspend                = ata_scsi_device_suspend,
        .resume                 = ata_scsi_device_resume,
+#endif
 };
 
 static const int scr_map[] = {
@@ -490,7 +492,7 @@ static void inic_post_internal_cmd(struct ata_queued_cmd *qc)
                inic_reset_port(inic_port_base(qc->ap));
 }
 
-static void inic_dev_config(struct ata_port *ap, struct ata_device *dev)
+static void inic_dev_config(struct ata_device *dev)
 {
        /* inic can only handle upto LBA28 max sectors */
        if (dev->max_sectors > ATA_MAX_SECTORS)
@@ -632,6 +634,7 @@ static int init_controller(void __iomem *mmio_base, u16 hctl)
        return 0;
 }
 
+#ifdef CONFIG_PM
 static int inic_pci_device_resume(struct pci_dev *pdev)
 {
        struct ata_host *host = dev_get_drvdata(&pdev->dev);
@@ -639,10 +642,11 @@ static int inic_pci_device_resume(struct pci_dev *pdev)
        void __iomem *mmio_base = host->iomap[MMIO_BAR];
        int rc;
 
-       ata_pci_device_do_resume(pdev);
+       rc = ata_pci_device_do_resume(pdev);
+       if (rc)
+               return rc;
 
        if (pdev->dev.power.power_state.event == PM_EVENT_SUSPEND) {
-               printk("XXX\n");
                rc = init_controller(mmio_base, hpriv->cached_hctl);
                if (rc)
                        return rc;
@@ -652,6 +656,7 @@ static int inic_pci_device_resume(struct pci_dev *pdev)
 
        return 0;
 }
+#endif
 
 static int inic_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
@@ -669,10 +674,6 @@ static int inic_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (rc)
                return rc;
 
-       rc = pci_request_regions(pdev, DRV_NAME);
-       if (rc)
-               return rc;
-
        rc = pcim_iomap_regions(pdev, 0x3f, DRV_NAME);
        if (rc)
                return rc;
@@ -710,7 +711,7 @@ static int inic_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
        probe_ent->n_ports              = NR_PORTS;
 
        probe_ent->irq = pdev->irq;
-       probe_ent->irq_flags = SA_SHIRQ;
+       probe_ent->irq_flags = IRQF_SHARED;
 
        probe_ent->iomap = iomap;
 
@@ -755,8 +756,10 @@ static const struct pci_device_id inic_pci_tbl[] = {
 static struct pci_driver inic_pci_driver = {
        .name           = DRV_NAME,
        .id_table       = inic_pci_tbl,
+#ifdef CONFIG_PM
        .suspend        = ata_pci_device_suspend,
        .resume         = inic_pci_device_resume,
+#endif
        .probe          = inic_init_one,
        .remove         = ata_pci_remove_one,
 };