1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
2a5c680feSBin Meng /*
3a5c680feSBin Meng * Copyright (C) 2017, Bin Meng <bmeng.cn@gmail.com>
4a5c680feSBin Meng */
5a5c680feSBin Meng
6a5c680feSBin Meng #include <common.h>
7a5c680feSBin Meng #include <ahci.h>
8a5c680feSBin Meng #include <dm.h>
9a5c680feSBin Meng #include <pci.h>
10a5c680feSBin Meng
ahci_pci_bind(struct udevice * dev)11a5c680feSBin Meng static int ahci_pci_bind(struct udevice *dev)
12a5c680feSBin Meng {
13a5c680feSBin Meng struct udevice *scsi_dev;
14a5c680feSBin Meng
15a5c680feSBin Meng return ahci_bind_scsi(dev, &scsi_dev);
16a5c680feSBin Meng }
17a5c680feSBin Meng
ahci_pci_probe(struct udevice * dev)18a5c680feSBin Meng static int ahci_pci_probe(struct udevice *dev)
19a5c680feSBin Meng {
207b9c88bfSBin Meng return ahci_probe_scsi_pci(dev);
21a5c680feSBin Meng }
22a5c680feSBin Meng
23a5c680feSBin Meng static const struct udevice_id ahci_pci_ids[] = {
24a5c680feSBin Meng { .compatible = "ahci-pci" },
25a5c680feSBin Meng { }
26a5c680feSBin Meng };
27a5c680feSBin Meng
28a5c680feSBin Meng U_BOOT_DRIVER(ahci_pci) = {
29a5c680feSBin Meng .name = "ahci_pci",
30a5c680feSBin Meng .id = UCLASS_AHCI,
31a5c680feSBin Meng .of_match = ahci_pci_ids,
32a5c680feSBin Meng .bind = ahci_pci_bind,
33a5c680feSBin Meng .probe = ahci_pci_probe,
34a5c680feSBin Meng };
35a5c680feSBin Meng
36a5c680feSBin Meng static struct pci_device_id ahci_pci_supported[] = {
37a5c680feSBin Meng { PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_SATA_AHCI, ~0) },
38a5c680feSBin Meng {},
39a5c680feSBin Meng };
40a5c680feSBin Meng
41a5c680feSBin Meng U_BOOT_PCI_DEVICE(ahci_pci, ahci_pci_supported);
42