|
@@ -389,9 +389,13 @@ static void sata_pmp_quirks(struct ata_port *ap)
|
|
|
/* link reports offline after LPM */
|
|
|
link->flags |= ATA_LFLAG_NO_LPM;
|
|
|
|
|
|
- /* Class code report is unreliable. */
|
|
|
+ /*
|
|
|
+ * Class code report is unreliable and SRST times
|
|
|
+ * out under certain configurations.
|
|
|
+ */
|
|
|
if (link->pmp < 5)
|
|
|
- link->flags |= ATA_LFLAG_ASSUME_ATA;
|
|
|
+ link->flags |= ATA_LFLAG_NO_SRST |
|
|
|
+ ATA_LFLAG_ASSUME_ATA;
|
|
|
|
|
|
/* port 5 is for SEMB device and it doesn't like SRST */
|
|
|
if (link->pmp == 5)
|
|
@@ -399,20 +403,17 @@ static void sata_pmp_quirks(struct ata_port *ap)
|
|
|
ATA_LFLAG_ASSUME_SEMB;
|
|
|
}
|
|
|
} else if (vendor == 0x1095 && devid == 0x4723) {
|
|
|
- /* sil4723 quirks */
|
|
|
- ata_for_each_link(link, ap, EDGE) {
|
|
|
- /* link reports offline after LPM */
|
|
|
- link->flags |= ATA_LFLAG_NO_LPM;
|
|
|
-
|
|
|
- /* class code report is unreliable */
|
|
|
- if (link->pmp < 2)
|
|
|
- link->flags |= ATA_LFLAG_ASSUME_ATA;
|
|
|
-
|
|
|
- /* the config device at port 2 locks up on SRST */
|
|
|
- if (link->pmp == 2)
|
|
|
- link->flags |= ATA_LFLAG_NO_SRST |
|
|
|
- ATA_LFLAG_ASSUME_ATA;
|
|
|
- }
|
|
|
+ /*
|
|
|
+ * sil4723 quirks
|
|
|
+ *
|
|
|
+ * Link reports offline after LPM. Class code report is
|
|
|
+ * unreliable. SIMG PMPs never got SRST reliable and the
|
|
|
+ * config device at port 2 locks up on SRST.
|
|
|
+ */
|
|
|
+ ata_for_each_link(link, ap, EDGE)
|
|
|
+ link->flags |= ATA_LFLAG_NO_LPM |
|
|
|
+ ATA_LFLAG_NO_SRST |
|
|
|
+ ATA_LFLAG_ASSUME_ATA;
|
|
|
} else if (vendor == 0x1095 && devid == 0x4726) {
|
|
|
/* sil4726 quirks */
|
|
|
ata_for_each_link(link, ap, EDGE) {
|