Re: Re: [PATCH v11 2/2] PCI: eic7700: Add Eswin PCIe host controller driver
From: zhangsenchuan
Date: Wed Mar 11 2026 - 06:36:27 EST
> > > Subject: Re: [PATCH v11 2/2] PCI: eic7700: Add Eswin PCIe host controller driver
> > >
> > > On Fri, Feb 27, 2026 at 07:18:08PM +0800, zhangsenchuan@xxxxxxxxxxxxxxxxxx wrote:
> > > > From: Senchuan Zhang <zhangsenchuan@xxxxxxxxxxxxxxxxxx>
> > > >
> > > > Add driver for the Eswin EIC7700 PCIe host controller, which is based on
> > > > the DesignWare PCIe core, IP revision 5.96a. The PCIe Gen.3 controller
> > > > supports a data rate of 8 GT/s and 4 channels, support INTx and MSI
> > > > interrupts.
> > > >
> > >
> > > Is the driver going to work only for the PCIe RC IP in EIC7700 SoC or for the
> > > upcoming Eswin SoCs as well? Just curious because, we don't name drivers based
> > > on one SoC name, but by the vendor so that the driver (if compatible) can be
> > > used across other SoCs from the vendor.
> > >
> > > If it can work across other SoCs, then I can change 'eic7700' to 'eswin', where
> > > applicable while applying.
> > >
> >
> > This PCIe RC IP in EIC7700 will only be used for EIC7700 SoC. One thing for sure
> > is our next SoC will use a higher IP revision of the DesignWare PCIe core.
> > In the future, there is no doubt that the use of IP from other manufacturers may
> > be considered.
> >
> > Based on this, may I ask which name do you think is better, eic7700' or 'eswin'?
> >
>
> I'd suggest going with just 'eswin'. If the future revisions come up with
> non-dwc based IPs, we can name them appropriately.
>
> > I found there is a commit on drivers/pci/controller/dwc/pcie-tegra194.c
> > It added Tegra234 PCIe support in pcie-tegra194.c
> > Is this naming approach no longer recommended?
> >
>
> Yes, that predates my time with host controller drivers. I strongly suggest
> naming the drivers based on vendors or family to avoid creating an impression
> that the driver only supports one SoC version.
>
> Since you agreed for renaming, I took the liberty to do the change myself and
> applied the patches. I also added the maintainers entry. Please take a look at
> the commits and confirm if everything is OK:
> https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git/log/?h=controller/dwc-eswin
Hi Mani,
Thank you very much for helping me change 'eic7700' to 'eswin'.
I have verified that the code functions are intact. However, there are a few areas
that require your assistance to incorporate and make necessary modifications.
After the modifications, I believe you can incorporate it.
Please see the following:
/* Vendor and device ID value */
#define PCI_VENDOR_ID_ESWIN 0x1fe1
-#define PCI_DEVICE_ID_ESWIN_ESWIN 0x2030
+#define PCI_DEVICE_ID_ESWIN_EIC7700 0x2030
-#define ESWIN_NUM_RSTS ARRAY_SIZE(eswin_pcie_rsts)
+#define ESWIN_NUM_RSTS ARRAY_SIZE(eswin_pcie_rsts)
static const char * const eswin_pcie_rsts[] = {
"pwr",
@@ -91,7 +91,7 @@ static bool eswin_pcie_link_up(struct dw_pcie *pci)
}
static int eswin_pcie_perst_reset(struct eswin_pcie_port *port,
- struct eswin_pcie *pcie)
+ struct eswin_pcie *pcie)
{
int ret;
@@ -123,7 +123,7 @@ static void eswin_pcie_assert(struct eswin_pcie *pcie)
}
static int eswin_pcie_parse_port(struct eswin_pcie *pcie,
- struct device_node *node)
+ struct device_node *node)
{
struct device *dev = pcie->pci.dev;
struct eswin_pcie_port *port;
@@ -241,7 +241,7 @@ static int eswin_pcie_host_init(struct dw_pcie_rp *pp)
*/
dw_pcie_dbi_ro_wr_en(pci);
dw_pcie_writew_dbi(pci, PCI_VENDOR_ID, PCI_VENDOR_ID_ESWIN);
- dw_pcie_writew_dbi(pci, PCI_DEVICE_ID, PCI_DEVICE_ID_ESWIN_ESWIN);
+ dw_pcie_writew_dbi(pci, PCI_DEVICE_ID, PCI_DEVICE_ID_ESWIN_EIC7700);
dw_pcie_dbi_ro_wr_dis(pci);
return 0;
Kind regards,
Senchuan