[RFC PATCH v1 2/3] nvme: pci: Enable for SPL

Simon Glass sjg at chromium.org
Sat Oct 1 01:49:03 CEST 2022


Hi Mayuresh,

On Fri, 30 Sept 2022 at 10:58, Mayuresh Chitale
<mchitale at ventanamicro.com> wrote:
>
> Hi Simon,
>
> On Fri, Sep 30, 2022 at 5:26 AM Simon Glass <sjg at chromium.org> wrote:
>>
>> Hi Mayuresh,
>>
>> On Thu, 29 Sept 2022 at 03:57, Mayuresh Chitale
>> <mchitale at ventanamicro.com> wrote:
>> >
>> > Build PCI NVMe driver when enabled for SPI and enable dm-pre-reloc for
>> > the driver. Also enable PCI_PNP for SPL which is required to auto
>> > configure the PCIe devices.
>> >
>> > Signed-off-by: Mayuresh Chitale <mchitale at ventanamicro.com>
>> > ---
>> >  drivers/Makefile         | 2 +-
>> >  drivers/nvme/Makefile    | 2 +-
>> >  drivers/nvme/nvme_pci.c  | 1 +
>> >  drivers/pci/Kconfig      | 7 +++++++
>> >  drivers/pci/pci-uclass.c | 3 ++-
>> >  5 files changed, 12 insertions(+), 3 deletions(-)
>> >
>> > diff --git a/drivers/Makefile b/drivers/Makefile
>> > index eba9940231..581ae9f819 100644
>> > --- a/drivers/Makefile
>> > +++ b/drivers/Makefile
>> > @@ -34,6 +34,7 @@ obj-$(CONFIG_$(SPL_)DM_MAILBOX) += mailbox/
>> >  obj-$(CONFIG_$(SPL_)REMOTEPROC) += remoteproc/
>> >  obj-$(CONFIG_$(SPL_)SYSINFO) += sysinfo/
>> >  obj-$(CONFIG_$(SPL_TPL_)TPM) += tpm/
>> > +obj-$(CONFIG_$(SPL_)NVME) += nvme/
>> >  obj-$(CONFIG_XEN) += xen/
>> >  obj-$(CONFIG_$(SPL_)FPGA) += fpga/
>> >
>> > @@ -86,7 +87,6 @@ obj-y += crypto/
>> >  obj-$(CONFIG_FASTBOOT) += fastboot/
>> >  obj-y += misc/
>> >  obj-$(CONFIG_MMC) += mmc/
>> > -obj-$(CONFIG_NVME) += nvme/
>> >  obj-$(CONFIG_PCI_ENDPOINT) += pci_endpoint/
>> >  obj-y += dfu/
>> >  obj-$(CONFIG_PCH) += pch/
>> > diff --git a/drivers/nvme/Makefile b/drivers/nvme/Makefile
>> > index fa7b619446..fd3e68a91d 100644
>> > --- a/drivers/nvme/Makefile
>> > +++ b/drivers/nvme/Makefile
>> > @@ -4,4 +4,4 @@
>> >
>> >  obj-y += nvme-uclass.o nvme.o nvme_show.o
>> >  obj-$(CONFIG_NVME_APPLE) += nvme_apple.o
>> > -obj-$(CONFIG_NVME_PCI) += nvme_pci.o
>> > +obj-$(CONFIG_$(SPL_)NVME_PCI) += nvme_pci.o
>> > diff --git a/drivers/nvme/nvme_pci.c b/drivers/nvme/nvme_pci.c
>> > index 36bf9c5ffb..16d8b9fff7 100644
>> > --- a/drivers/nvme/nvme_pci.c
>> > +++ b/drivers/nvme/nvme_pci.c
>> > @@ -39,6 +39,7 @@ U_BOOT_DRIVER(nvme) = {
>> >         .bind   = nvme_bind,
>> >         .probe  = nvme_probe,
>> >         .priv_auto      = sizeof(struct nvme_dev),
>> > +       .flags  = DM_FLAG_PRE_RELOC,
>>
>> Why is this here? It is only applicable on some boards.
>>
>> Instead, add the appropriate tag (e.g. u-boot,dm-spl) to the device node.
>
>
> I am not sure how that can be done for PCI devices as those would be probed at run time. Could you please point to any examples? Also, the pci_find_and_bind_driver function only checks for this flag in the drivers when binding the devices

See host-bridge at 0,0 in chromebook_coral.dts for an example of using
the u-boot,dm-pre-reloc flag. Note that pci_find_and_bind_driver() is
only called if the device tree lacks anything.

Which board is this for?

Regards,
Simon


More information about the U-Boot mailing list