On 08/06/2021 19:34, Vidya Sagar wrote: ... >>> What is the purpose of PCIE_TEGRA194_EP (added by c57247f940e8 ("PCI: >>> tegra: Add support for PCIe endpoint mode in Tegra194") [1])? I don't >>> see any reference to it in a makefile or a source file. >>> >>> It looks like one can build a single driver that works in either host >>> or endpoint mode, depending on whether a DT node matches >>> "nvidia,tegra194-pcie" or "nvidia,tegra194-pcie-ep". >>> >>> So I think PCIE_TEGRA194_EP is superfluous and should be removed and >>> you should have a single tristate Kconfig option. >> >> This is a good point. >> >> Sagar, any reason for this? > Although it is the same driver that works for both HOST mode and EP > mode, PCIE_TEGRA194_EP depends on PCI_ENDPOINT whereas the > PCIE_TEGRA194_HOST mode doesn't. Similarly the PCIE_TEGRA194_HOST mode > depends on PCI_MSI_IRQ_DOMAIN which PCIE_TEGRA194_EP doesn't depend on. > It is possible to have end point mode support disabled (at sub-system > level) in the system yet pcie-tegra194 can be compiled for the host mode > vice-a-versa for the endpoint mode. > Hence, appropriate config HOST/EP needs to be selected to make sure that > the rest of the dependencies are enabled in the system. > Hope I'm able to give the rationale correctly here. Yes but should we combine them like this ... diff --git a/drivers/pci/controller/dwc/Kconfig b/drivers/pci/controller/dwc/Kconfig index 423d35872ce4..206455a9b70d 100644 --- a/drivers/pci/controller/dwc/Kconfig +++ b/drivers/pci/controller/dwc/Kconfig @@ -254,15 +254,12 @@ config PCI_MESON implement the driver. config PCIE_TEGRA194 - tristate - -config PCIE_TEGRA194_HOST - tristate "NVIDIA Tegra194 (and later) PCIe controller - Host Mode" + tristate "NVIDIA Tegra194 (and later) PCIe controller" depends on ARCH_TEGRA_194_SOC || COMPILE_TEST - depends on PCI_MSI_IRQ_DOMAIN - select PCIE_DW_HOST + depends on PCI_MSI_IRQ_DOMAIN || PCI_ENDPOINT + select PCIE_DW_HOST if PCI_MSI_IRQ_DOMAIN + select PCIE_DW_EP if PCI_ENDPOINT select PHY_TEGRA194_P2U - select PCIE_TEGRA194 help Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to work in host mode. There are two instances of PCIe controllers in @@ -271,21 +268,6 @@ config PCIE_TEGRA194_HOST in order to enable device-specific features PCIE_TEGRA194_EP must be selected. This uses the DesignWare core. -config PCIE_TEGRA194_EP - tristate "NVIDIA Tegra194 (and later) PCIe controller - Endpoint Mode" - depends on ARCH_TEGRA_194_SOC || COMPILE_TEST - depends on PCI_ENDPOINT - select PCIE_DW_EP - select PHY_TEGRA194_P2U - select PCIE_TEGRA194 - help - Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to - work in endpoint mode. There are two instances of PCIe controllers in - Tegra194. This controller can work either as EP or RC. In order to - enable host-specific features PCIE_TEGRA194_HOST must be selected and - in order to enable device-specific features PCIE_TEGRA194_EP must be - selected. This uses the DesignWare core. - Furthermore, I wonder if we should just move the code that is required for ACPI into it's own file like drivers/pci/controller/dwc/pcie-tegra194-acpi.c? Jon -- nvpublic