|
@@ -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) {
|