linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@avionic-design.de>
To: Stephen Warren <swarren@wwwdotorg.org>
Cc: linux-tegra@vger.kernel.org,
	Grant Likely <grant.likely@secretlab.ca>,
	Rob Herring <rob.herring@calxeda.com>,
	Russell King <linux@arm.linux.org.uk>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Andrew Murray <andrew.murray@arm.com>,
	Jason Gunthorpe <jgunthorpe@obsidianresearch.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	devicetree-discuss@lists.ozlabs.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org
Subject: Re: [PATCH 12/14] ARM: tegra: tec: Add PCIe support
Date: Fri, 11 Jan 2013 05:34:37 +0100	[thread overview]
Message-ID: <20130111043437.GF28094@avionic-0098.adnet.avionic-design.de> (raw)
In-Reply-To: <50EF5B46.8010806@wwwdotorg.org>

[-- Attachment #1: Type: text/plain, Size: 4186 bytes --]

On Thu, Jan 10, 2013 at 05:22:30PM -0700, Stephen Warren wrote:
> On 01/09/2013 01:43 PM, Thierry Reding wrote:
> > Enable the first PCIe root port which is connected to an FPGA on the
> > Tamonten Evaluation Carrier and add device nodes for each of the PCI
> > endpoints available in the standard configuration.
> 
> > diff --git a/arch/arm/boot/dts/tegra20-tec.dts b/arch/arm/boot/dts/tegra20-tec.dts
> 
> > +	pcie-controller {
> > +		vdd-supply = <&pci_vdd_reg>;
> > +		pex-clk-supply = <&pci_clk_reg>;
> > +		status = "okay";
> 
> Sorry this is also really picky. I'd prefer properties that exist in
> /include/d files and are overidden here to appear first, followed by new
> properties. In other words, move the status property to be first. I
> believe/hope all the other (Tegra) .dts files follow this convention.

Okay, I'll fix that.

> > +		pci@1,0 {
> > +			bus-range = <0x01 0x0a>;
> > +			status = "okay";
> > +
> > +			pci@0,0 {
> > +				reg = <0x010000 0 0 0 0>;
> 
> Hmm. The unit address in that node name doesn't match the address in the
> reg property, although I suppose there's nothing we can do about it
> since those formats are both defined by the standard PCI binding?

That's the standard encoding for unit addresses for PCI devices. The
first cell in the reg property encodes bus/device/function (amongst
other things) and the node name is supposed to be pci@<dev>,<fn>.

> What do the numbers "0,0" represent here; device/function? Is the same
> true for the "0,0" in the child nodes?

Yes, exactly.

> > +				bus-range = <0x02 0x0a>;
> > +
> > +				compatible = "plda,pcie";
> 
> Are there DT binding documents for all these devices; plda,pcie,
> ad,pcie, ad,pcie-test, etc.?

No. To be honest I don't quite know how to handle this. For the PLDA
things aren't so bad since it has a proper PCI ID, but the other cores
don't since they are custom IP or taken from opencores.org and made
available via PCIe. We're still in the process of obtaining our own PCI
vendor ID so that these can be properly assigned.

Also, as you have guessed, most of these are not required. I just wanted
to include them here for completeness (and maybe reference in case
somebody else, myself included, needs a working example to base other
work on).

> > +				pci@4,0 {
> > +					reg = <0x022000 0 0 0 0>;
> > +					bus-range = <0x07 0x07>;
> > +
> > +					compatible = "ad,pcie";
> > +					device_type = "pci";
> > +
> > +					#address-cells = <3>;
> > +					#size-cells = <2>;
> > +
> > +					pci@0,0 {
> > +						compatible = "opencores,uart";
> > +						reg = <0x070000 0 0 0 0>;
> > +					};
> > +				};
> 
> Do you need to include a node for the UART; I can see you need to for
> the SPI/I2C controllers so you can instantiate the appropriate devices
> on non-probe-able buses, but I think you can just let regular PCI device
> probing find the UART, Ethernet MAC, etc., can't you?

Yes, that's correct. Only SPI and I2C actually require these nodes. I'm
not sure if the PCI binding requires all nodes to be present or not.
Other examples I've seen (e.g. arch/x86/platform/ce4100/falconfalls.dts)
contain nodes for everything, most of which don't seem to be necessary
for things to work.

One other thing that I've seen is the usage of the more standard pci*
values for the compatible property. None of them are very descriptive
which is why I used a vendor,device type of value instead.

Going over the PCI binding again, however, it looks like there's no
requirement to make the node name pci@dev,fn and pci can be anything.
Making it uart@0,0 and then adjusting the compatible value to be as the
binding requires could be an option. In that case I suppose even the
bindings documentation shouldn't be necessary.

That doesn't cover the nodes where non-standard properties are needed
(I2C and SPI), which do need binding documents. I wouldn't know how to
name them, though. I'm not sure going with the current convention would
be any good since it'll be hard to find the right document if you have
to look it up by matching vendor and device IDs or PCI class.

Thierry

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2013-01-11  4:35 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-09 20:43 [PATCH 00/14] Rewrite Tegra PCIe driver Thierry Reding
2013-01-09 20:43 ` [PATCH 01/14] of/pci: Provide support for parsing PCI DT ranges property Thierry Reding
2013-01-11  0:06   ` Stephen Warren
2013-01-11  4:02     ` Thierry Reding
2013-01-09 20:43 ` [PATCH 02/14] of/pci: Add of_pci_get_devfn() function Thierry Reding
2013-01-11  0:09   ` Stephen Warren
2013-01-11  4:06     ` Thierry Reding
2013-01-09 20:43 ` [PATCH 03/14] of/pci: Add of_pci_get_bus() function Thierry Reding
2013-01-09 20:43 ` [PATCH 04/14] of/pci: Add of_pci_parse_bus_range() function Thierry Reding
2013-01-09 20:43 ` [PATCH 05/14] lib: Add I/O map cache implementation Thierry Reding
2013-01-09 21:19   ` Arnd Bergmann
2013-01-09 21:54     ` Thierry Reding
2013-01-09 22:10       ` Arnd Bergmann
2013-01-09 23:12         ` Stephen Warren
2013-01-09 23:17           ` Jason Gunthorpe
2013-01-10  7:19             ` Thierry Reding
2013-01-10  9:17               ` Arnd Bergmann
2013-01-10 10:25                 ` Thierry Reding
2013-01-10 18:20                   ` Jason Gunthorpe
2013-01-10 18:55                     ` Thierry Reding
2013-01-10 19:03                       ` Thierry Reding
2013-01-10 19:24                         ` Jason Gunthorpe
2013-01-10 20:20                           ` Thierry Reding
2013-01-10 21:06                             ` Jason Gunthorpe
2013-01-16 10:18                           ` Thierry Reding
2013-01-16 11:25                             ` Russell King - ARM Linux
2013-01-16 11:52                               ` Thierry Reding
2013-01-10 18:26                   ` Arnd Bergmann
2013-01-10 18:57                     ` Thierry Reding
2013-01-10  7:10         ` Thierry Reding
2013-01-09 21:28   ` Russell King - ARM Linux
2013-01-09 21:57     ` Thierry Reding
2013-01-09 20:43 ` [PATCH 06/14] ARM: pci: Keep pci_common_init() around after init Thierry Reding
2013-02-05 20:41   ` Thierry Reding
2013-02-06 16:30     ` Russell King - ARM Linux
2013-02-06 19:35       ` Thierry Reding
2013-02-06  8:36   ` Thomas Petazzoni
2013-02-06 16:38   ` Linus Walleij
2013-02-07  0:54     ` Arnd Bergmann
2013-02-06 17:07       ` Linus Walleij
2013-02-07  1:20         ` Arnd Bergmann
2013-01-09 20:43 ` [PATCH 07/14] ARM: pci: Allow passing per-controller private data Thierry Reding
2013-01-09 20:43 ` [PATCH 08/14] ARM: tegra: Move tegra_pcie_xclk_clamp() to PMC Thierry Reding
2013-01-09 20:43 ` [PATCH 09/14] ARM: tegra: Move pmc.h to include/mach Thierry Reding
2013-01-11  0:15   ` Stephen Warren
2013-01-11  4:08     ` Thierry Reding
2013-01-09 20:43 ` [PATCH 10/14] PCI: tegra: Move PCIe driver to drivers/pci/host Thierry Reding
2013-01-09 21:22   ` Arnd Bergmann
2013-01-09 21:58     ` Thierry Reding
2013-01-09 22:03       ` Arnd Bergmann
2013-01-10 23:54   ` Stephen Warren
2013-01-11  3:40     ` Thierry Reding
2013-01-11 15:36       ` Arnd Bergmann
2013-01-11 15:45         ` Thierry Reding
2013-01-12 12:36           ` Thierry Reding
2013-01-12 21:12             ` Arnd Bergmann
2013-01-13  9:58               ` Thierry Reding
2013-01-14  9:57                 ` Andrew Murray
2013-01-15 12:08                   ` Thierry Reding
2013-01-15 12:44                     ` Arnd Bergmann
2013-01-15 15:40                       ` Andrew Murray
2013-01-15 21:14                         ` Thierry Reding
2013-01-16 14:00                           ` Arnd Bergmann
2013-01-16 16:17                             ` Andrew Murray
2013-01-16 18:31                               ` Thierry Reding
2013-01-17 15:42                                 ` Andrew Murray
2013-01-17 16:05                                   ` Thierry Reding
2013-01-17 16:22                                     ` Andrew Murray
2013-01-17 20:30                                       ` Thierry Reding
2013-01-18  9:18                                         ` Andrew Murray
2013-01-22 19:29                                       ` Jason Gunthorpe
2013-01-29 13:31                                         ` Andrew Murray
2013-01-11  0:48   ` Stephen Warren
2013-01-11  3:52     ` Thierry Reding
2013-01-11 20:34       ` Stephen Warren
2013-01-18  9:56   ` Andrew Murray
2013-01-18 10:09     ` Thierry Reding
2013-02-13 23:11   ` Thomas Petazzoni
2013-01-09 20:43 ` [PATCH 11/14] ARM: tegra: tamonten: Add PCIe support Thierry Reding
2013-01-09 21:23   ` Arnd Bergmann
2013-01-10 20:21     ` Thierry Reding
2013-01-09 20:43 ` [PATCH 12/14] ARM: tegra: tec: " Thierry Reding
2013-01-11  0:22   ` Stephen Warren
2013-01-11  4:34     ` Thierry Reding [this message]
2013-01-09 20:43 ` [PATCH 13/14] ARM: tegra: harmony: Initialize PCIe from DT Thierry Reding
2013-01-10 23:58   ` Stephen Warren
2013-01-09 20:43 ` [PATCH 14/14] ARM: tegra: trimslice: " Thierry Reding
2013-01-10 23:56   ` Stephen Warren
2013-01-11 18:48     ` Thierry Reding
2013-01-09 21:25 ` [PATCH 00/14] Rewrite Tegra PCIe driver Thomas Petazzoni
2013-01-10  6:55   ` Thierry Reding
2013-01-10  8:34     ` Thomas Petazzoni
2013-01-28 18:15 ` Bjorn Helgaas

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=20130111043437.GF28094@avionic-0098.adnet.avionic-design.de \
    --to=thierry.reding@avionic-design.de \
    --cc=andrew.murray@arm.com \
    --cc=arnd@arndb.de \
    --cc=bhelgaas@google.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=grant.likely@secretlab.ca \
    --cc=jgunthorpe@obsidianresearch.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=rob.herring@calxeda.com \
    --cc=swarren@wwwdotorg.org \
    --cc=thomas.petazzoni@free-electrons.com \
    /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;
as well as URLs for NNTP newsgroup(s).