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
next prev parent 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