You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
ahci: add HFLAG_YES_FBS and apply it to 88SE9128
88SE9128 can do FBS and sets it in HOST_CAP but forgets to set FBSCP in PORT_CMD. Implement AHCI_HFLAG_YES_FBS and apply it to 88SE9128. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
+14
-2
@@ -430,6 +430,12 @@ void ahci_save_initial_config(struct device *dev,
|
||||
cap &= ~HOST_CAP_SNTF;
|
||||
}
|
||||
|
||||
if (!(cap & HOST_CAP_FBS) && (hpriv->flags & AHCI_HFLAG_YES_FBS)) {
|
||||
dev_printk(KERN_INFO, dev,
|
||||
"controller can do FBS, turning on CAP_FBS\n");
|
||||
cap |= HOST_CAP_FBS;
|
||||
}
|
||||
|
||||
if (force_port_map && port_map != force_port_map) {
|
||||
dev_printk(KERN_INFO, dev, "forcing port_map 0x%x -> 0x%x\n",
|
||||
port_map, force_port_map);
|
||||
@@ -2036,9 +2042,15 @@ static int ahci_port_start(struct ata_port *ap)
|
||||
u32 cmd = readl(port_mmio + PORT_CMD);
|
||||
if (cmd & PORT_CMD_FBSCP)
|
||||
pp->fbs_supported = true;
|
||||
else
|
||||
else if (hpriv->flags & AHCI_HFLAG_YES_FBS) {
|
||||
dev_printk(KERN_INFO, dev,
|
||||
"port %d can do FBS, forcing FBSCP\n",
|
||||
ap->port_no);
|
||||
pp->fbs_supported = true;
|
||||
} else
|
||||
dev_printk(KERN_WARNING, dev,
|
||||
"The port is not capable of FBS\n");
|
||||
"port %d is not capable of FBS\n",
|
||||
ap->port_no);
|
||||
}
|
||||
|
||||
if (pp->fbs_supported) {
|
||||
|
||||
Reference in New Issue
Block a user