* Mitch Bradley wrote:
> On 6/12/2012 9:46 AM, Stephen Warren wrote:
> >On 06/12/2012 01:10 PM, Mitch Bradley wrote:
> >>On 6/12/2012 7:20 AM, Thierry Reding wrote:
> >...
> >>>I came up with the following alternative:
> >>>
> >>>   pci {
> >>>           compatible = "nvidia,tegra20-pcie";
> >>>           reg =<0x80003000 0x00000800   /* PADS registers */
> >>>                  0x80003800 0x00000200   /* AFI registers */
> >>>                  0x80004000 0x00100000   /* configuration space */
> >>>                  0x80104000 0x00100000   /* extended configuration space 
> >>> */
> >>>                  0x80400000 0x00010000   /* downstream I/O */
> >>>                  0x90000000 0x10000000   /* non-prefetchable memory */
> >>>                  0xa0000000 0x10000000>; /* prefetchable memory */
> >>>           interrupts =<0 98 0x04   /* controller interrupt */
> >>>                         0 99 0x04>; /* MSI interrupt */
> >>>           status = "disabled";
> >>>
> >>>           ranges =<0x80000000 0x80000000 0x00002000   /* 2 root ports */
> >>>                     0x80004000 0x80004000 0x00100000   /* configuration 
> >>> space */
> >>>                     0x80104000 0x80104000 0x00100000   /* extended 
> >>> configuration space */
> >>>                     0x80400000 0x80400000 0x00010000   /* downstream I/O 
> >>> */
> >>>                     0x90000000 0x90000000 0x10000000   /* 
> >>> non-prefetchable memory */
> >>>                     0xa0000000 0xa0000000 0x10000000>; /* prefetchable 
> >>> memory */
> >>>
> >>>           #address-cells =<1>;
> >>>           #size-cells =<1>;
> >>>
> >>>           port@80000000 {
> >>>                   reg =<0x80000000 0x00001000>;
> >>>                   status = "disabled";
> >>>           };
> >>>
> >>>           port@80001000 {
> >>>                   reg =<0x80001000 0x00001000>;
> >>>                   status = "disabled";
> >>>           };
> >>>   };
> >>>
> >>>The "ranges" property can probably be cleaned up a bit, but the most
> >>>interesting part is the port@ children, which can simply be enabled in 
> >>>board
> >>>DTS files by setting the status property to "okay". I find that somewhat 
> >>>more
> >>>intuitive to the variant with an "enable-ports" property.
> >>>
> >>>What do you think of this?
> >>
> >>The problem is that children of a PCI-ish bus have specific expectations
> >>about the parent address format - the standard 3-address-cell PCI
> >>addressing.  So making a PCI bus node - even if it is PCIe - with 1
> >>address cell is a problem.
> >
> >Couldn't you put the #address-cells=<3>  underneath each port node, and
> >put any PCIe devices there rather than under the main PCIe controller
> >node? I'm not sure how the interrupt mapping table etc. would work in
> >that case, but that seems to solve the addressing issue.
> 
> Yes, that would work just fine, and in fact would be preferable, if
> a "root port" is essentially an independent PCI bus.  The parent of
> those root ports should not be named "pci", though, as it is not in
> itself a PCI bus.  It could be called "pcis".

Yes, on Tegra each of the ports provides a separate PCI bus. How about naming
the parent "pcie-controller"? IMO that reflects the nature of the device
better, whereas "pcis" would seem more like a "virtual" node for collecting
similar children.

Thierry

Attachment: pgp9AqGGCbKXp.pgp
Description: PGP signature

_______________________________________________
devicetree-discuss mailing list
[email protected]
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to