ata: ahci: Add support for AMD A85 FCH (Hudson D4)
authorPaul Menzel <pmenzel@molgen.mpg.de>
Wed, 5 Jan 2022 15:36:18 +0000 (16:36 +0100)
committerDamien Le Moal <damien.lemoal@opensource.wdc.com>
Fri, 14 Jan 2022 06:17:17 +0000 (15:17 +0900)
Add support for the AMD A85 FCH (Hudson D4) AHCI adapter.

Since this adapter does not require the default 200 ms debounce delay
in sata_link_resume(), create a new board board_ahci_no_debounce_delay
with the link flag ATA_LFLAG_NO_DEBOUNCE_DELAY, and, for now, configure
the AMD A85 FCH (Hudson D4) to use it. On the ASUS F2A85-M PRO it
reduces the Linux kernel boot time by the expected 200 ms from 787 ms
to 585 ms.

Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
drivers/ata/ahci.c

index 63bafb610fbd0dc91107a71cdb0aac79854f24d3..ab5811ef5a530c479d658a7413b88092ee29efa1 100644 (file)
@@ -51,6 +51,7 @@ enum board_ids {
        board_ahci,
        board_ahci_ign_iferr,
        board_ahci_mobile,
+       board_ahci_no_debounce_delay,
        board_ahci_nomsi,
        board_ahci_noncq,
        board_ahci_nosntf,
@@ -141,6 +142,13 @@ static const struct ata_port_info ahci_port_info[] = {
                .udma_mask      = ATA_UDMA6,
                .port_ops       = &ahci_ops,
        },
+       [board_ahci_no_debounce_delay] = {
+               .flags          = AHCI_FLAG_COMMON,
+               .link_flags     = ATA_LFLAG_NO_DEBOUNCE_DELAY,
+               .pio_mask       = ATA_PIO4,
+               .udma_mask      = ATA_UDMA6,
+               .port_ops       = &ahci_ops,
+       },
        [board_ahci_nomsi] = {
                AHCI_HFLAGS     (AHCI_HFLAG_NO_MSI),
                .flags          = AHCI_FLAG_COMMON,
@@ -437,6 +445,7 @@ static const struct pci_device_id ahci_pci_tbl[] = {
                board_ahci_al },
        /* AMD */
        { PCI_VDEVICE(AMD, 0x7800), board_ahci }, /* AMD Hudson-2 */
+       { PCI_VDEVICE(AMD, 0x7801), board_ahci_no_debounce_delay }, /* AMD Hudson-2 (AHCI mode) */
        { PCI_VDEVICE(AMD, 0x7900), board_ahci }, /* AMD CZ */
        { PCI_VDEVICE(AMD, 0x7901), board_ahci_mobile }, /* AMD Green Sardine */
        /* AMD is using RAID class only for ahci controllers */