[U-Boot] [PATCH 1/3] dm: ahci: Add a generic PCI-based AHCI driver
Simon Glass
sjg at chromium.org
Wed Jun 21 03:29:44 UTC 2017
Hi Bin,
On 17 June 2017 at 07:35, Bin Meng <bmeng.cn at gmail.com> wrote:
> This adds support for PCI-based AHCI controller and enables it on
> x86 by default.
>
> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
> ---
>
> drivers/ata/Kconfig | 7 +++++++
> drivers/ata/Makefile | 1 +
> drivers/ata/ahci-pci.c | 42 ++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 50 insertions(+)
> create mode 100644 drivers/ata/ahci-pci.c
I believe that if the device tree specifies this driver then it will
override the generic PCI probing done here. Is that right?
- Simon
>
> diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
> index 6427f1b..cc1c52c 100644
> --- a/drivers/ata/Kconfig
> +++ b/drivers/ata/Kconfig
> @@ -40,6 +40,13 @@ config DM_SCSI
>
> menu "SATA/SCSI device support"
>
> +config AHCI_PCI
> + bool "Support for PCI-based AHCI controller"
> + default y if X86
> + select DM_SCSI
> + help
> + Enables support for the PCI-based AHCI controller.
> +
> config SATA_CEVA
> bool "Ceva Sata controller"
> depends on AHCI
> diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile
> index c48184c..4e2de93 100644
> --- a/drivers/ata/Makefile
> +++ b/drivers/ata/Makefile
> @@ -7,6 +7,7 @@
>
> obj-$(CONFIG_DWC_AHCI) += dwc_ahci.o
> obj-$(CONFIG_AHCI) += ahci-uclass.o
> +obj-$(CONFIG_AHCI_PCI) += ahci-pci.o
> obj-$(CONFIG_SCSI_AHCI) += ahci.o
> obj-$(CONFIG_DWC_AHSATA) += dwc_ahsata.o
> obj-$(CONFIG_FSL_SATA) += fsl_sata.o
> diff --git a/drivers/ata/ahci-pci.c b/drivers/ata/ahci-pci.c
> new file mode 100644
> index 0000000..f46fad8
> --- /dev/null
> +++ b/drivers/ata/ahci-pci.c
> @@ -0,0 +1,42 @@
> +/*
> + * Copyright (C) 2017, Bin Meng <bmeng.cn at gmail.com>
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <ahci.h>
> +#include <dm.h>
> +#include <pci.h>
> +
> +static int ahci_pci_bind(struct udevice *dev)
> +{
> + struct udevice *scsi_dev;
> +
> + return ahci_bind_scsi(dev, &scsi_dev);
> +}
> +
> +static int ahci_pci_probe(struct udevice *dev)
> +{
> + return ahci_probe_scsi(dev);
> +}
> +
> +static const struct udevice_id ahci_pci_ids[] = {
> + { .compatible = "ahci-pci" },
> + { }
> +};
> +
> +U_BOOT_DRIVER(ahci_pci) = {
> + .name = "ahci_pci",
> + .id = UCLASS_AHCI,
> + .of_match = ahci_pci_ids,
> + .bind = ahci_pci_bind,
> + .probe = ahci_pci_probe,
> +};
> +
> +static struct pci_device_id ahci_pci_supported[] = {
> + { PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_SATA_AHCI, ~0) },
> + {},
> +};
> +
> +U_BOOT_PCI_DEVICE(ahci_pci, ahci_pci_supported);
> --
> 2.9.2
>
More information about the U-Boot
mailing list