Re: [PATCH V2] PCI: tegra: Fix building Tegra194 PCIe driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux