[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