|
@@ -1036,6 +1036,7 @@ static int ahci_deinit_port(struct ata_port *ap, const char **emsg)
|
|
|
static int ahci_reset_controller(struct ata_host *host)
|
|
|
{
|
|
|
struct pci_dev *pdev = to_pci_dev(host->dev);
|
|
|
+ struct ahci_host_priv *hpriv = host->private_data;
|
|
|
void __iomem *mmio = host->iomap[AHCI_PCI_BAR];
|
|
|
u32 tmp;
|
|
|
|
|
@@ -1078,8 +1079,10 @@ static int ahci_reset_controller(struct ata_host *host)
|
|
|
|
|
|
/* configure PCS */
|
|
|
pci_read_config_word(pdev, 0x92, &tmp16);
|
|
|
- tmp16 |= 0xf;
|
|
|
- pci_write_config_word(pdev, 0x92, tmp16);
|
|
|
+ if ((tmp16 & hpriv->port_map) != hpriv->port_map) {
|
|
|
+ tmp16 |= hpriv->port_map;
|
|
|
+ pci_write_config_word(pdev, 0x92, tmp16);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return 0;
|