Re: [PATCH v2 07/10] ARM: tegra: pcie: Add device tree support |
|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- Subject: Re: [PATCH v2 07/10] ARM: tegra: pcie: Add device tree support
- From: Stephen Warren <swarren@xxxxxxxxxxxxx>
- Date: Tue, 19 Jun 2012 10:40:39 -0600
- Cc: Mitch Bradley <wmb@xxxxxxxxxxxxx>, Russell King <linux@xxxxxxxxxxxxxxxx>, linux-pci@xxxxxxxxxxxxxxx, devicetree-discuss@xxxxxxxxxxxxxxxx, Rob Herring <rob.herring@xxxxxxxxxxx>, Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx>, Colin Cross <ccross@xxxxxxxxxxx>, linux-tegra@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, Arnd Bergmann <arnd@xxxxxxxx>
- In-reply-to: <20120619133001.GB24138@avionic-0098.mockup.avionic-design.de>
- User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1
On 06/19/2012 07:30 AM, Thierry Reding wrote:
> On Fri, Jun 15, 2012 at 08:12:36AM +0200, Thierry Reding wrote:
>> On Thu, Jun 14, 2012 at 01:50:56PM -0600, Stephen Warren wrote:
...
>>> To me, working back from address to ID then using the ID to calculate
>>> some other addresses seems far more icky than just calculating all the
>>> addresses based off of one ID. But, I suppose this doesn't make a huge
>>> practical difference.
>>
>> This really depends on the device vs. no device decision below. If we can
>> make it work without needing an extra device for it, then using the index
>> is certainly better. However, if we instantiate devices from the DT, then
>> we have the address anyway and adding the index as a property would be
>> redundant and error prone (what happens if somebody sets the index of the
>> port at address 0x80000000 to 2?).
>
> An additional problem with this is that we'd have to add the following
> to the pcie-controller node:
>
> #address-cells = <1>;
> #size-cells = <0>;
>
> This will conflict with the "ranges" property, because suddenly we can
> no longer map the regions properly. Maybe Mitch can comment on whether
> this is possible or not?
>
> To make it clearer what I'm talking about, here's the DT snippet again
> (with the compatible property removed from the pci@ nodes because they
> are no longer probed by a driver, the "simple-bus" removed from the
> pcie-controller node's compatible property removed and its #address-
> and #size-cells properties adjusted as described above).
>
> pcie-controller {
> compatible = "nvidia,tegra20-pcie";
> reg = <0x80003000 0x00000800 /* PADS registers */
> 0x80003800 0x00000200 /* AFI registers */
> 0x80004000 0x00100000 /* configuration space */
> 0x80104000 0x00100000>; /* extended configuration space */
> interrupts = <0 98 0x04 /* controller interrupt */
> 0 99 0x04>; /* MSI interrupt */
> status = "disabled";
>
> ranges = <0x80000000 0x80000000 0x00002000 /* 2 root ports */
> 0x80400000 0x80400000 0x00010000 /* downstream I/O */
> 0x90000000 0x90000000 0x10000000 /* non-prefetchable memory */
> 0xa0000000 0xa0000000 0x10000000>; /* prefetchable memory */
>
> #address-cells = <1>;
> #size-cells = <0>;
>
> pci@0 {
> reg = <2>;
> status = "disabled";
>
> #address-cells = <3>;
> #size-cells = <2>;
>
> ranges = <0x81000000 0 0 0x80400000 0 0x00008000 /* I/O */
> 0x82000000 0 0 0x90000000 0 0x08000000 /* non-prefetchable memory */
> 0xc2000000 0 0 0xa0000000 0 0x08000000>; /* prefetchable memory */
>
> nvidia,ctrl-offset = <0x110>;
> nvidia,num-lanes = <2>;
> };
>
> pci@1 {
> reg = <1>;
> status = "disabled";
>
> #address-cells = <3>;
> #size-cells = <2>;
>
> ranges = <0x81000000 0 0 0x80408000 0 0x00008000 /* I/O */
> 0x82000000 0 0 0x98000000 0 0x08000000 /* non-prefetchable memory */
> 0xc2000000 0 0 0xa8000000 0 0x08000000>; /* prefetchable memory */
>
> nvidia,ctrl-offset = <0x118>;
> nvidia,num-lanes = <2>;
> };
> };
>
> AIUI none of the ranges properties are valid anymore, because the bus
> represented by pcie-controller no longer reflects the truth, namely that
> it translates the CPU address space to the PCI address space.
Yes, I imagine that's a show-stopper for this approach.
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[ARM Kernel]
[Linux USB Devel]
[Video for Linux]
[Linux Audio Users]
[Photo]
[Yosemite News]
[Yosemite Photos]
[Free Online Dating]
[Linux Kernel]
[Linux SCSI]
[XFree86]