Re: [PATCH V8 14/15] PCI: tegra: Add Tegra194 PCIe support

From: Dmitry Osipenko
Date: Fri Jun 07 2019 - 10:30:51 EST


07.06.2019 17:10, Vidya Sagar ÐÐÑÐÑ:
> On 6/7/2019 12:22 AM, Dmitry Osipenko wrote:
>> 06.06.2019 19:35, Dmitry Osipenko ÐÐÑÐÑ:
>>> 26.05.2019 7:37, Vidya Sagar ÐÐÑÐÑ:
>>>> Add support for Synopsys DesignWare core IP based PCIe host controller
>>>> present in Tegra194 SoC.
>>>>
>>>> Signed-off-by: Vidya Sagar <vidyas@xxxxxxxxxx>
>>>> ---
>>>> Changes since [v7]:
>>>> * Addressed review comments from Thierry
>>>>
>>>> Changes since [v6]:
>>>> * Removed code around "nvidia,disable-aspm-states" DT property
>>>> * Refactored code to remove code duplication
>>>>
>>>> Changes since [v5]:
>>>> * Addressed review comments from Thierry
>>>>
>>>> Changes since [v4]:
>>>> * None
>>>>
>>>> Changes since [v3]:
>>>> * None
>>>>
>>>> Changes since [v2]:
>>>> * Changed 'nvidia,init-speed' to 'nvidia,init-link-speed'
>>>> * Changed 'nvidia,pex-wake' to 'nvidia,wake-gpios'
>>>> * Removed .runtime_suspend() & .runtime_resume() implementations
>>>>
>>>> Changes since [v1]:
>>>> * Made CONFIG_PCIE_TEGRA194 as 'm' by default from its previous 'y'
>>>> state
>>>> * Modified code as per changes made to DT documentation
>>>> * Refactored code to address Bjorn & Thierry's review comments
>>>> * Added goto to avoid recursion in tegra_pcie_dw_host_init() API
>>>> * Merged .scan_bus() of dw_pcie_host_ops implementation to
>>>> tegra_pcie_dw_host_init() API
>>>>
>>>> Â drivers/pci/controller/dwc/KconfigÂÂÂÂÂÂÂÂ |ÂÂ 10 +
>>>> Â drivers/pci/controller/dwc/MakefileÂÂÂÂÂÂÂ |ÂÂÂ 1 +
>>>> Â drivers/pci/controller/dwc/pcie-tegra194.c | 1621
>>>> ++++++++++++++++++++
>>>> Â 3 files changed, 1632 insertions(+)
>>>> Â create mode 100644 drivers/pci/controller/dwc/pcie-tegra194.c
>>>>
>>>> diff --git a/drivers/pci/controller/dwc/Kconfig
>>>> b/drivers/pci/controller/dwc/Kconfig
>>>> index a6ce1ee51b4c..884112afc11b 100644
>>>> --- a/drivers/pci/controller/dwc/Kconfig
>>>> +++ b/drivers/pci/controller/dwc/Kconfig
>>>> @@ -220,6 +220,16 @@ config PCI_MESON
>>>> ÂÂÂÂÂÂÂ and therefore the driver re-uses the DesignWare core
>>>> functions to
>>>> ÂÂÂÂÂÂÂ implement the driver.
>>>> Â +config PCIE_TEGRA194
>>>> +ÂÂÂ tristate "NVIDIA Tegra194 (and later) PCIe controller"
>>>> +ÂÂÂ depends on (TEGRA_BPMP && ARCH_TEGRA) || COMPILE_TEST
>>>
>>> TEGRA_BPMP will be enough here as it depends on other relevant options.
>>>
>>> Hence I mean:
>>>
>>> ÂÂÂÂdepends on TEGRA_BPMP || COMPILE_TEST
>>
>> Maybe it's worth to even change TEGRA_BPMP to ARCH_TEGRA_194_SOC.
>> Although then you'll have to extend it with other platforms later on,
>> but probably that's fine.
> I received an explicit comment previously to make this dependent on
> TEGRA_BPMP
> as the driver is using APIs to get certain jobs done by BPMP-FW. But, since
> we can't boot kernel in the first place without having BPMP-FW in place,
> I think
> it should be fine to make it dependent on ARCH_TEGRA_194_SOC directly.

ARCH_TEGRA_194_SOC selects BPMP by itself (see
drivers/soc/tegra/Kconfig), so it's indeed absolutely fine.