On Thu, Mar 11, 2021 at 9:50 PM Green Wan <green....@sifive.com> wrote: > > Add pcie driver for SiFive fu740, the driver depends on > fu740 gpio, clk and reset driver to do init. Force running at Gen1 > for better capatible enumeration. > > Several devices are tested: > a) M.2 NVMe SSD > b) USB-to-PCI adapter > c) Ethernet adapter (E1000 compatible) > > Signed-off-by: Green Wan <green....@sifive.com> > --- > drivers/pci/Kconfig | 9 + > drivers/pci/Makefile | 1 + > drivers/pci/pcie_sifive.c | 797 > ++++++++++++++++++++++++++++++++++++++++++++++ > drivers/pci/pcie_sifive.h | 374 ++++++++++++++++++++++ > 4 files changed, 1181 insertions(+) > create mode 100644 drivers/pci/pcie_sifive.c > create mode 100644 drivers/pci/pcie_sifive.h > > diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig > index ba41787..b078e76 100644 > --- a/drivers/pci/Kconfig > +++ b/drivers/pci/Kconfig > @@ -97,6 +97,15 @@ config PCIE_DW_MVEBU > Armada-8K SoCs. The PCIe controller on Armada-8K is based on > DesignWare hardware. > > +config PCIE_SIFIVE_FU740 > + bool "Enable SiFive FU740 PCIe" > + depends on CLK_SIFIVE_PRCI > + depends on RESET_SIFIVE > + depends on SIFIVE_GPIO > + help > + Say Y here if you want to enable PCIe controller support on > + FU740. > + > config PCIE_FSL > bool "FSL PowerPC PCIe support" > depends on DM_PCI > diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile > index 5ed94bc..5400d59 100644 > --- a/drivers/pci/Makefile > +++ b/drivers/pci/Makefile > @@ -51,3 +51,4 @@ obj-$(CONFIG_PCIE_ROCKCHIP) += pcie_rockchip.o > obj-$(CONFIG_PCIE_DW_ROCKCHIP) += pcie_dw_rockchip.o > obj-$(CONFIG_PCI_BRCMSTB) += pcie_brcmstb.o > obj-$(CONFIG_PCI_OCTEONTX) += pci_octeontx.o > +obj-$(CONFIG_PCIE_SIFIVE_FU740) += pcie_sifive.o > diff --git a/drivers/pci/pcie_sifive.c b/drivers/pci/pcie_sifive.c > new file mode 100644 > index 0000000..ada6087 > --- /dev/null > +++ b/drivers/pci/pcie_sifive.c > @@ -0,0 +1,797 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * SiFive FU740 DesignWare PCIe Controller
Should we call this driver a DesgnWare PCIe controller (e.g.: pcie_designware.c), instead of pcie_sifive.c? > + * > + * Copyright (C) 2020-2021 SiFive, Inc. > + * > + * Based in early part on the i.MX6 PCIe host controller shim which is: > + * > + * Copyright (C) 2013 Kosagi > + * http://www.kosagi.com > + * > + * Based on driver from author: Alan Mikhak <amik...@wirelessfabric.com> > + */ > +#include "pcie_sifive.h" > +#include <common.h> > +#include <dm.h> > + > +/* Host Bridge Identification */ > +#define DEVICE_NAME "SiFive FU740 PCIe Host Controller" > +#define VENDOR_ID 0x51fe > +#define DEVICE_ID 0x51fe > + [snip] Regards, Bin