@@ -83,6 +83,7 @@ enum board_ids {
8383static int ahci_init_one (struct pci_dev * pdev , const struct pci_device_id * ent );
8484static void ahci_remove_one (struct pci_dev * dev );
8585static void ahci_shutdown_one (struct pci_dev * dev );
86+ static void ahci_intel_pcs_quirk (struct pci_dev * pdev , struct ahci_host_priv * hpriv );
8687static int ahci_vt8251_hardreset (struct ata_link * link , unsigned int * class ,
8788 unsigned long deadline );
8889static int ahci_avn_hardreset (struct ata_link * link , unsigned int * class ,
@@ -676,6 +677,25 @@ static void ahci_pci_save_initial_config(struct pci_dev *pdev,
676677 ahci_save_initial_config (& pdev -> dev , hpriv );
677678}
678679
680+ static int ahci_pci_reset_controller (struct ata_host * host )
681+ {
682+ struct pci_dev * pdev = to_pci_dev (host -> dev );
683+ struct ahci_host_priv * hpriv = host -> private_data ;
684+ int rc ;
685+
686+ rc = ahci_reset_controller (host );
687+ if (rc )
688+ return rc ;
689+
690+ /*
691+ * If platform firmware failed to enable ports, try to enable
692+ * them here.
693+ */
694+ ahci_intel_pcs_quirk (pdev , hpriv );
695+
696+ return 0 ;
697+ }
698+
679699static void ahci_pci_init_controller (struct ata_host * host )
680700{
681701 struct ahci_host_priv * hpriv = host -> private_data ;
@@ -870,7 +890,7 @@ static int ahci_pci_device_runtime_resume(struct device *dev)
870890 struct ata_host * host = pci_get_drvdata (pdev );
871891 int rc ;
872892
873- rc = ahci_reset_controller (host );
893+ rc = ahci_pci_reset_controller (host );
874894 if (rc )
875895 return rc ;
876896 ahci_pci_init_controller (host );
@@ -906,7 +926,7 @@ static int ahci_pci_device_resume(struct device *dev)
906926 ahci_mcp89_apple_enable (pdev );
907927
908928 if (pdev -> dev .power .power_state .event == PM_EVENT_SUSPEND ) {
909- rc = ahci_reset_controller (host );
929+ rc = ahci_pci_reset_controller (host );
910930 if (rc )
911931 return rc ;
912932
@@ -1784,12 +1804,6 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
17841804 /* save initial config */
17851805 ahci_pci_save_initial_config (pdev , hpriv );
17861806
1787- /*
1788- * If platform firmware failed to enable ports, try to enable
1789- * them here.
1790- */
1791- ahci_intel_pcs_quirk (pdev , hpriv );
1792-
17931807 /* prepare host */
17941808 if (hpriv -> cap & HOST_CAP_NCQ ) {
17951809 pi .flags |= ATA_FLAG_NCQ ;
@@ -1899,7 +1913,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
18991913 if (rc )
19001914 return rc ;
19011915
1902- rc = ahci_reset_controller (host );
1916+ rc = ahci_pci_reset_controller (host );
19031917 if (rc )
19041918 return rc ;
19051919
0 commit comments