Message ID | 1497706560-23385-1-git-send-email-bmeng.cn@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | Simon Glass |
Headers | show |
Hi Bin, On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@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@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@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 >
Hi Simon, On Wed, Jun 21, 2017 at 11:29 AM, Simon Glass <sjg@chromium.org> wrote: > Hi Bin, > > On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@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@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? > That's my understanding as well but I have no target to test. Can you test that on Chromebook Link? Regards, Bin
Hi Simon, On Wed, Jun 21, 2017 at 1:00 PM, Bin Meng <bmeng.cn@gmail.com> wrote: > Hi Simon, > > On Wed, Jun 21, 2017 at 11:29 AM, Simon Glass <sjg@chromium.org> wrote: >> Hi Bin, >> >> On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@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@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? >> > > That's my understanding as well but I have no target to test. Can you > test that on Chromebook Link? Will this series be applied to u-boot-dm? Regards, Bin
Hi Bin, On 6 July 2017 at 23:08, Bin Meng <bmeng.cn@gmail.com> wrote: > Hi Simon, > > On Wed, Jun 21, 2017 at 1:00 PM, Bin Meng <bmeng.cn@gmail.com> wrote: >> Hi Simon, >> >> On Wed, Jun 21, 2017 at 11:29 AM, Simon Glass <sjg@chromium.org> wrote: >>> Hi Bin, >>> >>> On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@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@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? >>> >> >> That's my understanding as well but I have no target to test. Can you >> test that on Chromebook Link? > > Will this series be applied to u-boot-dm? Yes, just got to testing this. Had some problems booting the device. Reviewed-by: Simon Glass <sjg@chromium.org> Tested-on: chromebook_link Tested-by: Simon Glass <sjg@chromium.org> > > Regards, > Bin
Hi Bin, On 13 July 2017 at 03:22, Simon Glass <sjg@chromium.org> wrote: > Hi Bin, > > On 6 July 2017 at 23:08, Bin Meng <bmeng.cn@gmail.com> wrote: >> Hi Simon, >> >> On Wed, Jun 21, 2017 at 1:00 PM, Bin Meng <bmeng.cn@gmail.com> wrote: >>> Hi Simon, >>> >>> On Wed, Jun 21, 2017 at 11:29 AM, Simon Glass <sjg@chromium.org> wrote: >>>> Hi Bin, >>>> >>>> On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@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@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? >>>> >>> >>> That's my understanding as well but I have no target to test. Can you >>> test that on Chromebook Link? >> >> Will this series be applied to u-boot-dm? > > Yes, just got to testing this. Had some problems booting the device. > > Reviewed-by: Simon Glass <sjg@chromium.org> > Tested-on: chromebook_link > Tested-by: Simon Glass <sjg@chromium.org> Unfortunately this produces a build warning when applied to u-boot-dm/master: +warning: (AHCI_PCI) selects DM_SCSI which has unmet direct dependencies (BLK || BLK) Can you please take a look? I'm sorry I did not get to it earlier. Regards, Simon
Hi Simon, On Sat, Jul 29, 2017 at 2:44 AM, Simon Glass <sjg@chromium.org> wrote: > Hi Bin, > > On 13 July 2017 at 03:22, Simon Glass <sjg@chromium.org> wrote: >> Hi Bin, >> >> On 6 July 2017 at 23:08, Bin Meng <bmeng.cn@gmail.com> wrote: >>> Hi Simon, >>> >>> On Wed, Jun 21, 2017 at 1:00 PM, Bin Meng <bmeng.cn@gmail.com> wrote: >>>> Hi Simon, >>>> >>>> On Wed, Jun 21, 2017 at 11:29 AM, Simon Glass <sjg@chromium.org> wrote: >>>>> Hi Bin, >>>>> >>>>> On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@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@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? >>>>> >>>> >>>> That's my understanding as well but I have no target to test. Can you >>>> test that on Chromebook Link? >>> >>> Will this series be applied to u-boot-dm? >> >> Yes, just got to testing this. Had some problems booting the device. >> >> Reviewed-by: Simon Glass <sjg@chromium.org> >> Tested-on: chromebook_link >> Tested-by: Simon Glass <sjg@chromium.org> > > Unfortunately this produces a build warning when applied to u-boot-dm/master: > > +warning: (AHCI_PCI) selects DM_SCSI which has unmet direct > dependencies (BLK || BLK) > > Can you please take a look? I'm sorry I did not get to it earlier. Sure I will take a look. Regards, Bin
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@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);
This adds support for PCI-based AHCI controller and enables it on x86 by default. Signed-off-by: Bin Meng <bmeng.cn@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