blob: 797e0d570e88cb0a6f6942a191a749977ab74c54 [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Bin Menga5c680f2017-07-30 19:23:59 -07002/*
3 * Copyright (C) 2017, Bin Meng <bmeng.cn@gmail.com>
Bin Menga5c680f2017-07-30 19:23:59 -07004 */
5
6#include <common.h>
7#include <ahci.h>
Masami Hiramatsuada68942021-06-04 18:43:23 +09008#include <scsi.h>
Bin Menga5c680f2017-07-30 19:23:59 -07009#include <dm.h>
10#include <pci.h>
11
12static int ahci_pci_bind(struct udevice *dev)
13{
14 struct udevice *scsi_dev;
15
16 return ahci_bind_scsi(dev, &scsi_dev);
17}
18
19static int ahci_pci_probe(struct udevice *dev)
20{
Bin Meng7b9c88b2017-08-02 19:07:17 -070021 return ahci_probe_scsi_pci(dev);
Bin Menga5c680f2017-07-30 19:23:59 -070022}
23
24static const struct udevice_id ahci_pci_ids[] = {
25 { .compatible = "ahci-pci" },
26 { }
27};
28
29U_BOOT_DRIVER(ahci_pci) = {
30 .name = "ahci_pci",
31 .id = UCLASS_AHCI,
Masami Hiramatsuada68942021-06-04 18:43:23 +090032 .ops = &scsi_ops,
Bin Menga5c680f2017-07-30 19:23:59 -070033 .of_match = ahci_pci_ids,
34 .bind = ahci_pci_bind,
35 .probe = ahci_pci_probe,
36};
37
38static struct pci_device_id ahci_pci_supported[] = {
39 { PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_SATA_AHCI, ~0) },
Oleksandr Rybalko25643a52019-08-22 12:26:55 +020040 { PCI_DEVICE(0x1b21, 0x0611) },
Hajo Noerenbergc3322a52022-03-28 15:49:08 +020041 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x6121) },
42 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x6145) },
Bin Menga5c680f2017-07-30 19:23:59 -070043 {},
44};
45
46U_BOOT_PCI_DEVICE(ahci_pci, ahci_pci_supported);