diff mbox

ARM: tegra: add PCIe-related pins to the Jetson TK1 pinmux tables

Message ID 1408742308-18004-1-git-send-email-swarren@wwwdotorg.org (mailing list archive)
State New, archived
Headers show

Commit Message

Stephen Warren Aug. 22, 2014, 9:18 p.m. UTC
From: Stephen Warren <swarren@nvidia.com>

This pinmux tables currently omit any configuration for PCIe clk_req,
wake, and rst pins, which in turn causes intermittent failures in
U-Boot's PCIe support. Import an updated version of the pinmux tables
which rectifies this.

(While I'm still hoping to remove the pinmux tables from DTs for
Tegra124+ devices, while they're still here, they may as well be
complete and correct).

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
 arch/arm/boot/dts/tegra124-jetson-tk1.dts | 35 +++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

Comments

Andreas Färber Aug. 25, 2014, 10:32 a.m. UTC | #1
Hi Stephen,

Am 22.08.2014 23:18, schrieb Stephen Warren:
> From: Stephen Warren <swarren@nvidia.com>
> 
> This pinmux tables currently omit any configuration for PCIe clk_req,
> wake, and rst pins, which in turn causes intermittent failures in
> U-Boot's PCIe support. Import an updated version of the pinmux tables
> which rectifies this.
> 
> (While I'm still hoping to remove the pinmux tables from DTs for
> Tegra124+ devices, while they're still here, they may as well be
> complete and correct).
> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
>  arch/arm/boot/dts/tegra124-jetson-tk1.dts | 35 +++++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)

I've tested this patch on both -rc1 and yesterday's torvalds/linux.git
with tegra_defconfig: Both with or without this patch I get empty lspci
output.

There doesn't seem to be a tegra/linux.git for-next branch based on -rc1
yet - are patches from other subsystem trees needed to get the on-board
Ethernet detected or maybe some config option?

Or did you test PCIe via the on-board slot?

I used U-Boot v2014.07, in case it matters.

Thanks,
Andreas
Mikko Perttunen Aug. 25, 2014, 10:55 a.m. UTC | #2
On 25/08/14 13:32, Andreas Färber wrote:
> Hi Stephen,
>
> Am 22.08.2014 23:18, schrieb Stephen Warren:
>> From: Stephen Warren <swarren@nvidia.com>
>>
>> This pinmux tables currently omit any configuration for PCIe clk_req,
>> wake, and rst pins, which in turn causes intermittent failures in
>> U-Boot's PCIe support. Import an updated version of the pinmux tables
>> which rectifies this.
>>
>> (While I'm still hoping to remove the pinmux tables from DTs for
>> Tegra124+ devices, while they're still here, they may as well be
>> complete and correct).
>>
>> Signed-off-by: Stephen Warren <swarren@nvidia.com>
>> ---
>>   arch/arm/boot/dts/tegra124-jetson-tk1.dts | 35 +++++++++++++++++++++++++++++++
>>   1 file changed, 35 insertions(+)
>
> I've tested this patch on both -rc1 and yesterday's torvalds/linux.git
> with tegra_defconfig: Both with or without this patch I get empty lspci
> output.
>
> There doesn't seem to be a tegra/linux.git for-next branch based on -rc1
> yet - are patches from other subsystem trees needed to get the on-board
> Ethernet detected or maybe some config option?

git://gitorious.org/thierryreding/linux.git staging/pci

>
> Or did you test PCIe via the on-board slot?
>
> I used U-Boot v2014.07, in case it matters.
>
> Thanks,
> Andreas
>

Cheers,
Mikko
Mikko Perttunen Aug. 25, 2014, 12:10 p.m. UTC | #3
.. and apparently the device tree patches are in staging/tegra.

On 25/08/14 13:55, Mikko Perttunen wrote:
> On 25/08/14 13:32, Andreas Färber wrote:
>> Hi Stephen,
>>
>> Am 22.08.2014 23:18, schrieb Stephen Warren:
>>> From: Stephen Warren <swarren@nvidia.com>
>>>
>>> This pinmux tables currently omit any configuration for PCIe clk_req,
>>> wake, and rst pins, which in turn causes intermittent failures in
>>> U-Boot's PCIe support. Import an updated version of the pinmux tables
>>> which rectifies this.
>>>
>>> (While I'm still hoping to remove the pinmux tables from DTs for
>>> Tegra124+ devices, while they're still here, they may as well be
>>> complete and correct).
>>>
>>> Signed-off-by: Stephen Warren <swarren@nvidia.com>
>>> ---
>>>   arch/arm/boot/dts/tegra124-jetson-tk1.dts | 35
>>> +++++++++++++++++++++++++++++++
>>>   1 file changed, 35 insertions(+)
>>
>> I've tested this patch on both -rc1 and yesterday's torvalds/linux.git
>> with tegra_defconfig: Both with or without this patch I get empty lspci
>> output.
>>
>> There doesn't seem to be a tegra/linux.git for-next branch based on -rc1
>> yet - are patches from other subsystem trees needed to get the on-board
>> Ethernet detected or maybe some config option?
>
> git://gitorious.org/thierryreding/linux.git staging/pci
>
>>
>> Or did you test PCIe via the on-board slot?
>>
>> I used U-Boot v2014.07, in case it matters.
>>
>> Thanks,
>> Andreas
>>
>
> Cheers,
> Mikko
> --
> To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Stephen Warren Aug. 25, 2014, 5:24 p.m. UTC | #4
On 08/22/2014 03:18 PM, Stephen Warren wrote:
> From: Stephen Warren <swarren@nvidia.com>
>
> This pinmux tables currently omit any configuration for PCIe clk_req,
> wake, and rst pins, which in turn causes intermittent failures in
> U-Boot's PCIe support. Import an updated version of the pinmux tables
> which rectifies this.
>
> (While I'm still hoping to remove the pinmux tables from DTs for
> Tegra124+ devices, while they're still here, they may as well be
> complete and correct).

I've applied this to Tegra's for-3.18/dt branch.
Andreas Färber Aug. 26, 2014, 10:26 p.m. UTC | #5
Am 25.08.2014 14:10, schrieb Mikko Perttunen:
> On 25/08/14 13:55, Mikko Perttunen wrote:
>> On 25/08/14 13:32, Andreas Färber wrote:
>>> Am 22.08.2014 23:18, schrieb Stephen Warren:
>>>> From: Stephen Warren <swarren@nvidia.com>
>>>>
>>>> This pinmux tables currently omit any configuration for PCIe clk_req,
>>>> wake, and rst pins, which in turn causes intermittent failures in
>>>> U-Boot's PCIe support. Import an updated version of the pinmux tables
>>>> which rectifies this.
>>>>
>>>> (While I'm still hoping to remove the pinmux tables from DTs for
>>>> Tegra124+ devices, while they're still here, they may as well be
>>>> complete and correct).
>>>>
>>>> Signed-off-by: Stephen Warren <swarren@nvidia.com>
>>>> ---
>>>>   arch/arm/boot/dts/tegra124-jetson-tk1.dts | 35
>>>> +++++++++++++++++++++++++++++++
>>>>   1 file changed, 35 insertions(+)
>>>
>>> I've tested this patch on both -rc1 and yesterday's torvalds/linux.git
>>> with tegra_defconfig: Both with or without this patch I get empty lspci
>>> output.
>>>
>>> There doesn't seem to be a tegra/linux.git for-next branch based on -rc1
>>> yet - are patches from other subsystem trees needed to get the on-board
>>> Ethernet detected or maybe some config option?
>>
>> git://gitorious.org/thierryreding/linux.git staging/pci
>
> .. and apparently the device tree patches are in staging/tegra.

Thanks for the URLs. I tested yesterday's staging/master, but booting
from SD seemed broked, sdhci-tegra probe kept deferring. Is that a known
issue?

PCI bus was getting detected okay before that point though.

Regards,
Andreas
Thierry Reding Aug. 27, 2014, 5:52 a.m. UTC | #6
On Wed, Aug 27, 2014 at 12:26:08AM +0200, Andreas Färber wrote:
> Am 25.08.2014 14:10, schrieb Mikko Perttunen:
> > On 25/08/14 13:55, Mikko Perttunen wrote:
> >> On 25/08/14 13:32, Andreas Färber wrote:
> >>> Am 22.08.2014 23:18, schrieb Stephen Warren:
> >>>> From: Stephen Warren <swarren@nvidia.com>
> >>>>
> >>>> This pinmux tables currently omit any configuration for PCIe clk_req,
> >>>> wake, and rst pins, which in turn causes intermittent failures in
> >>>> U-Boot's PCIe support. Import an updated version of the pinmux tables
> >>>> which rectifies this.
> >>>>
> >>>> (While I'm still hoping to remove the pinmux tables from DTs for
> >>>> Tegra124+ devices, while they're still here, they may as well be
> >>>> complete and correct).
> >>>>
> >>>> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> >>>> ---
> >>>>   arch/arm/boot/dts/tegra124-jetson-tk1.dts | 35
> >>>> +++++++++++++++++++++++++++++++
> >>>>   1 file changed, 35 insertions(+)
> >>>
> >>> I've tested this patch on both -rc1 and yesterday's torvalds/linux.git
> >>> with tegra_defconfig: Both with or without this patch I get empty lspci
> >>> output.
> >>>
> >>> There doesn't seem to be a tegra/linux.git for-next branch based on -rc1
> >>> yet - are patches from other subsystem trees needed to get the on-board
> >>> Ethernet detected or maybe some config option?
> >>
> >> git://gitorious.org/thierryreding/linux.git staging/pci
> >
> > .. and apparently the device tree patches are in staging/tegra.
> 
> Thanks for the URLs. I tested yesterday's staging/master, but booting
> from SD seemed broked, sdhci-tegra probe kept deferring. Is that a known
> issue?

Yes, this is a known issue. The root is that currently there's no way to
allow deferred probing if an IOMMU hasn't been probed, so a driver needs
to continue without IOMMU support even if the IOMMU would come up later
in the boot process. The staging/iommu branch contains a patch to fix it
but it looks as if that won't be merged.

I've since removed the code that registers the Tegra SMMU with the code
that I introduced but haven't removed the registry patch yet, which will
cause the SMMU never to show up and therefore indefinitely deferring
probe. You can easily solve this by removing the iommus property from
the sdhci nodes in DTS or by removing the calls to iommu_attach() and
iommu_detach() from the SDHCI driver (reverting "mmc: sdhci-tegra: Add
IOMMU support").

I'll see if I can find the time today to fix up the branches.

Thierry
Andreas Färber Aug. 27, 2014, 1:29 p.m. UTC | #7
Am 27.08.2014 07:52, schrieb Thierry Reding:
> On Wed, Aug 27, 2014 at 12:26:08AM +0200, Andreas Färber wrote:
>> Am 25.08.2014 14:10, schrieb Mikko Perttunen:
>>> On 25/08/14 13:55, Mikko Perttunen wrote:
>>>> On 25/08/14 13:32, Andreas Färber wrote:
>>>>> Am 22.08.2014 23:18, schrieb Stephen Warren:
>>>>>> From: Stephen Warren <swarren@nvidia.com>
>>>>>>
>>>>>> This pinmux tables currently omit any configuration for PCIe clk_req,
>>>>>> wake, and rst pins, which in turn causes intermittent failures in
>>>>>> U-Boot's PCIe support. Import an updated version of the pinmux tables
>>>>>> which rectifies this.
>>>>>>
>>>>>> (While I'm still hoping to remove the pinmux tables from DTs for
>>>>>> Tegra124+ devices, while they're still here, they may as well be
>>>>>> complete and correct).
>>>>>>
>>>>>> Signed-off-by: Stephen Warren <swarren@nvidia.com>
>>>>>> ---
>>>>>>   arch/arm/boot/dts/tegra124-jetson-tk1.dts | 35
>>>>>> +++++++++++++++++++++++++++++++
>>>>>>   1 file changed, 35 insertions(+)
>>>>>
>>>>> I've tested this patch on both -rc1 and yesterday's torvalds/linux.git
>>>>> with tegra_defconfig: Both with or without this patch I get empty lspci
>>>>> output.
>>>>>
>>>>> There doesn't seem to be a tegra/linux.git for-next branch based on -rc1
>>>>> yet - are patches from other subsystem trees needed to get the on-board
>>>>> Ethernet detected or maybe some config option?
>>>>
>>>> git://gitorious.org/thierryreding/linux.git staging/pci
>>>
>>> .. and apparently the device tree patches are in staging/tegra.
>>
>> Thanks for the URLs. I tested yesterday's staging/master, but booting
>> from SD seemed broked, sdhci-tegra probe kept deferring. Is that a known
>> issue?
> 
> Yes, this is a known issue. The root is that currently there's no way to
> allow deferred probing if an IOMMU hasn't been probed, so a driver needs
> to continue without IOMMU support even if the IOMMU would come up later
> in the boot process. The staging/iommu branch contains a patch to fix it
> but it looks as if that won't be merged.
> 
> I've since removed the code that registers the Tegra SMMU with the code
> that I introduced but haven't removed the registry patch yet, which will
> cause the SMMU never to show up and therefore indefinitely deferring
> probe. You can easily solve this by removing the iommus property from
> the sdhci nodes in DTS or by removing the calls to iommu_attach() and
> iommu_detach() from the SDHCI driver (reverting "mmc: sdhci-tegra: Add
> IOMMU support").
> 
> I'll see if I can find the time today to fix up the branches.

No hurry! I switched to testing the newly updated for-next branch, which
works fine so far (been using a USB Ethernet adapter).

Thanks,
Andreas
diff mbox

Patch

diff --git a/arch/arm/boot/dts/tegra124-jetson-tk1.dts b/arch/arm/boot/dts/tegra124-jetson-tk1.dts
index 6c0253198e09..cdefaaa15ac6 100644
--- a/arch/arm/boot/dts/tegra124-jetson-tk1.dts
+++ b/arch/arm/boot/dts/tegra124-jetson-tk1.dts
@@ -1251,6 +1251,41 @@ 
 				nvidia,tristate = <TEGRA_PIN_DISABLE>;
 				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
 			};
+			pex_l0_rst_n_pdd1 {
+				nvidia,pins = "pex_l0_rst_n_pdd1";
+				nvidia,function = "pe0";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			pex_l0_clkreq_n_pdd2 {
+				nvidia,pins = "pex_l0_clkreq_n_pdd2";
+				nvidia,function = "pe0";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			pex_wake_n_pdd3 {
+				nvidia,pins = "pex_wake_n_pdd3";
+				nvidia,function = "pe";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
+			pex_l1_rst_n_pdd5 {
+				nvidia,pins = "pex_l1_rst_n_pdd5";
+				nvidia,function = "pe1";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			};
+			pex_l1_clkreq_n_pdd6 {
+				nvidia,pins = "pex_l1_clkreq_n_pdd6";
+				nvidia,function = "pe1";
+				nvidia,pull = <TEGRA_PIN_PULL_UP>;
+				nvidia,tristate = <TEGRA_PIN_DISABLE>;
+				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+			};
 			clk3_out_pee0 {
 				nvidia,pins = "clk3_out_pee0";
 				nvidia,function = "extperiph3";