ata: ahci: append new hflag AHCI_HFLAG_NO_FBS
authorKefeng Wang <kefeng.wang@linaro.org>
Wed, 14 May 2014 06:13:40 +0000 (14:13 +0800)
committerTejun Heo <tj@kernel.org>
Wed, 14 May 2014 17:07:09 +0000 (13:07 -0400)
Append AHCI_HFLAG_NO_FBS to force turning off FBS flag.

Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
Signed-off-by: Kefeng Wang <kefeng.wang@linaro.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
drivers/ata/ahci.h
drivers/ata/libahci.c

index 51af275..60db49b 100644 (file)
@@ -235,6 +235,7 @@ enum {
                                                        port start (wait until
                                                        error-handling stage) */
        AHCI_HFLAG_MULTI_MSI            = (1 << 16), /* multiple PCI MSIs */
+       AHCI_HFLAG_NO_FBS               = (1 << 17), /* no FBS */
 
        /* ap->flags bits */
 
index 6bd4f66..e1cf859 100644 (file)
@@ -457,6 +457,11 @@ void ahci_save_initial_config(struct device *dev,
                cap |= HOST_CAP_FBS;
        }
 
+       if ((cap & HOST_CAP_FBS) && (hpriv->flags & AHCI_HFLAG_NO_FBS)) {
+               dev_info(dev, "controller can't do FBS, turning off CAP_FBS\n");
+               cap &= ~HOST_CAP_FBS;
+       }
+
        if (force_port_map && port_map != force_port_map) {
                dev_info(dev, "forcing port_map 0x%x -> 0x%x\n",
                         port_map, force_port_map);