aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiklas Cassel <[email protected]>2024-02-06 22:13:43 +0100
committerNiklas Cassel <[email protected]>2024-02-09 10:30:50 +0100
commit45b96d65ec68f625ad26ee16d2f556e29f715005 (patch)
tree6b93adc1dbe6e3cdf909d00d43113d9812fd1650
parentf7131935238d00745638b826f8c31efc8d361435 (diff)
ata: ahci: a hotplug capable port is an external port
A hotplug capable port is an external port, so mark it as such. We even say this ourselves in libata-scsi.c: /* set scsi removable (RMB) bit per ata bit, or if the * AHCI port says it's external (Hotplug-capable, eSATA). */ This also matches the terminology used in AHCI 1.3.1 (the keyword to search for is "externally accessible"). Tested-by: Damien Le Moal <[email protected]> Tested-by: Jian-Hong Pan <[email protected]> Reviewed-by: Damien Le Moal <[email protected]> Reviewed-by: Mario Limonciello <[email protected]> Reviewed-by: Mika Westerberg <[email protected]> Signed-off-by: Niklas Cassel <[email protected]>
-rw-r--r--drivers/ata/ahci.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index aa58ce615e79..4d3ec6d15ad1 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1648,9 +1648,10 @@ static void ahci_mark_external_port(struct ata_port *ap)
void __iomem *port_mmio = ahci_port_base(ap);
u32 tmp;
- /* mark esata ports */
+ /* mark external ports (hotplug-capable, eSATA) */
tmp = readl(port_mmio + PORT_CMD);
- if ((tmp & PORT_CMD_ESP) && (hpriv->cap & HOST_CAP_SXS))
+ if (((tmp & PORT_CMD_ESP) && (hpriv->cap & HOST_CAP_SXS)) ||
+ (tmp & PORT_CMD_HPCP))
ap->pflags |= ATA_PFLAG_EXTERNAL;
}