AHCI: Add support for Loongson 7A1000 SATA controller
authorTiezhu Yang <yangtiezhu@loongson.cn>
Tue, 10 Mar 2020 12:50:08 +0000 (20:50 +0800)
committerJens Axboe <axboe@kernel.dk>
Thu, 12 Mar 2020 13:44:19 +0000 (07:44 -0600)
Loongson 7A1000 SATA controller uses BAR0 as the base address register.

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/ata/ahci.c

index 11ea1af..33d051a 100644 (file)
@@ -40,6 +40,7 @@
 enum {
        AHCI_PCI_BAR_STA2X11    = 0,
        AHCI_PCI_BAR_CAVIUM     = 0,
+       AHCI_PCI_BAR_LOONGSON   = 0,
        AHCI_PCI_BAR_ENMOTUS    = 2,
        AHCI_PCI_BAR_CAVIUM_GEN5        = 4,
        AHCI_PCI_BAR_STANDARD   = 5,
@@ -589,6 +590,9 @@ static const struct pci_device_id ahci_pci_tbl[] = {
        /* Enmotus */
        { PCI_DEVICE(0x1c44, 0x8000), board_ahci },
 
+       /* Loongson */
+       { PCI_VDEVICE(LOONGSON, 0x7a08), board_ahci },
+
        /* Generic, PCI class code for AHCI */
        { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
          PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci },
@@ -1680,6 +1684,9 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
                        ahci_pci_bar = AHCI_PCI_BAR_CAVIUM;
                if (pdev->device == 0xa084)
                        ahci_pci_bar = AHCI_PCI_BAR_CAVIUM_GEN5;
+       } else if (pdev->vendor == PCI_VENDOR_ID_LOONGSON) {
+               if (pdev->device == 0x7a08)
+                       ahci_pci_bar = AHCI_PCI_BAR_LOONGSON;
        }
 
        /* acquire resources */