public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
To: Stephen Warren <swarren@wwwdotorg.org>
Cc: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>,
	Tuomas Tynkkynen <ttynkkynen@nvidia.com>,
	linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-usb@vger.kernel.org,
	Mikko Perttunen <mperttunen@nvidia.com>
Subject: Re: [PATCH 2/2] ARM: dts: USB for Tegra114 Dalmore
Date: Thu, 01 Aug 2013 02:20:02 +0400	[thread overview]
Message-ID: <51F98D92.3010607@cogentembedded.com> (raw)
In-Reply-To: <51F98A78.9060309@wwwdotorg.org>

On 08/01/2013 02:06 AM, Stephen Warren wrote:

>>>>> Device tree entries for the three EHCI controllers on Tegra114.
>>>>> Enables the the third controller (USB host) on Dalmore.

>>>>> diff --git a/arch/arm/boot/dts/tegra114.dtsi
>>>>> b/arch/arm/boot/dts/tegra114.dtsi
>>>>> index abf6c40..2905145 100644
>>>>> --- a/arch/arm/boot/dts/tegra114.dtsi
>>>>> +++ b/arch/arm/boot/dts/tegra114.dtsi
>>>>> @@ -430,6 +430,68 @@
>>>>>            status = "disable";
>>>>>        };
>>>>>
>>>>> +    usb@7d000000 {
>>>>> +        compatible = "nvidia,tegra30-ehci", "usb-ehci";
>>>>> +        reg = <0x7d000000 0x4000>;
>>>>> +        interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
>>>>> +        phy_type = "utmi";
>>>>> +        clocks = <&tegra_car TEGRA114_CLK_USBD>;
>>>>> +        nvidia,phy = <&phy1>;
>>>>> +        status = "disabled";
>>>>> +    };
>>>>> +
>>>>> +    phy1: usb-phy@7d000000 {

>>>>      At the same address as the previous node?

>>> Yes. The first node is for the EHCI driver and the second for the PHY
>>> driver.
>>> There is some overlap in the exact registers used, so both drives map the
>>> whole USB controller block.

>>     That's really horrible design.

> Yup. Both USB PHY and EHCI controller registers really are interleaved
> in one range.

    But the standard EHCI register space has no holes IIRC, so they can't be 
really that much interleaved as you're describing (unless you have some 
non-standard registers of course)...
    We just had a case of misinterpreting the EHCI/PHY register spaces as 
interleaved (while in fact they weren't) on Renesas R-Car which I had to 
resolve for 3.11.

>>>>> +        compatible = "nvidia,tegra30-usb-phy";
>>>>> +        reg = <0x7d000000 0x4000 0x7d000000 0x4000>;

>>>>      Hm, there must be some mistake: two similar register ranges.

>>> The second range is used to configure the UTMI pad registers. All the
>>> UTMI pad
>>> registers are located in the first USB controller's range.

>>     Which second range? This is one and the same range.

> Some registers in the USB1 register range actually are "global" and
> relevant to all USB controllers. So:

> There are two 2-cell entries in that reg property. The first entry
> defines the registers for this USB PHY, and hence is unique for each USB
> PHY node. The second defines the registers for whichever USB PHY
> contains various shared registers across multiple PHYs, so is expected
> to be identical across all USB PHY DT nodes.

    Hm, couldn't you have those shared registers as a separate device?

> Yes, the HW design really is this screwy.

    Ugh...

>>     Don't they cause numerous resource conflicts while device nodes being
>> instantiated as the platform devices?

> No; the driver knows that the HW is screwy and there's lots of
> register-range sharing going on, so it simply maps the registers, rather
> than reserving the physical address range and mapping it.

    Yes, it's clear that the driver should take special measures, I was asking 
about the platform device creation phase. What do you see in /proc/iomem?

WBR, Sergei


  reply	other threads:[~2013-07-31 22:20 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-31 17:42 [PATCH 0/2] Device tree changes for Tegra30 and Tegra114 USB Host support Tuomas Tynkkynen
2013-07-31 17:42 ` [PATCH 1/2] ARM: DTS: tegra: Add USB entries for Tegra30 Tuomas Tynkkynen
2013-07-31 22:13   ` Stephen Warren
2013-08-01 15:15     ` Tuomas Tynkkynen
2013-07-31 17:42 ` [PATCH 2/2] ARM: dts: USB for Tegra114 Dalmore Tuomas Tynkkynen
2013-07-31 18:18   ` Sergei Shtylyov
2013-07-31 19:31     ` Tuomas Tynkkynen
2013-07-31 19:53       ` Sergei Shtylyov
2013-07-31 22:06         ` Stephen Warren
2013-07-31 22:20           ` Sergei Shtylyov [this message]
2013-07-31 23:29             ` Stephen Warren
2013-08-01 12:37               ` Sergei Shtylyov
2013-08-15 10:54               ` Thierry Reding

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51F98D92.3010607@cogentembedded.com \
    --to=sergei.shtylyov@cogentembedded.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mperttunen@nvidia.com \
    --cc=swarren@wwwdotorg.org \
    --cc=ttynkkynen@nvidia.com \
    --cc=tuomas.tynkkynen@iki.fi \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox