diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/io/sata/adapters/ahci/ahci.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/usr/src/uts/common/io/sata/adapters/ahci/ahci.c b/usr/src/uts/common/io/sata/adapters/ahci/ahci.c index b1ef022783..a652fd6739 100644 --- a/usr/src/uts/common/io/sata/adapters/ahci/ahci.c +++ b/usr/src/uts/common/io/sata/adapters/ahci/ahci.c @@ -3711,6 +3711,11 @@ ahci_config_space_init(ahci_ctl_t *ahci_ctlp) * list for non-queued commands because the previous register content * of PxCI can be re-written in the register write, so a flag will be * set to record this defect - AHCI_CAP_NO_MCMDLIST_NONQUEUE. + * + * For VT8251, software reset also has the same defect as the below + * AMD/ATI chipset. That is, software reset will get failed if 0xf + * is filled in pmport field. Therefore, another software reset need + * to be done with 0 filled in pmport field. */ if (ahci_ctlp->ahcictl_venid == VIA_VENID) { revision = pci_config_get8(ahci_ctlp->ahcictl_pci_conf_handle, @@ -3723,10 +3728,12 @@ ahci_config_space_init(ahci_ctl_t *ahci_ctlp) "change ddi_attr_align to 0x4", NULL); } - ahci_ctlp->ahcictl_cap = AHCI_CAP_NO_MCMDLIST_NONQUEUE; + ahci_ctlp->ahcictl_cap |= AHCI_CAP_NO_MCMDLIST_NONQUEUE; AHCIDBG(AHCIDBG_INIT, ahci_ctlp, "VT8251 cannot use multiple command lists for " "non-queued commands", NULL); + + ahci_ctlp->ahcictl_cap |= AHCI_CAP_SRST_NO_HOSTPORT; } /* |