devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
To: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Jesse Barnes <jbarnes-Y1mF5jBUw70BENJcbMCuUQ@public.gmane.org>,
	linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Grant Likely
	<grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>,
	Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	Colin Cross <ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org>,
	Olof Johansson <olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>
Subject: Re: [PATCH v2 05/10] ARM: tegra: Rewrite PCIe support as a driver
Date: Tue, 12 Jun 2012 08:41:24 +0200	[thread overview]
Message-ID: <20120612064124.GF4040@avionic-0098.adnet.avionic-design.de> (raw)
In-Reply-To: <4FD65E98.4070200-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>

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

* Stephen Warren wrote:
> On 06/11/2012 09:05 AM, Thierry Reding wrote:
> > This commit adds a platform device driver for the PCIe controller on
> > Tegra SOCs. Current users of the old code (TrimSlice and Harmony) are
> > converted and now initialize and register a corresponding platform
> > device.
> 
> > diff --git a/arch/arm/mach-tegra/devices.c b/arch/arm/mach-tegra/devices.c
> 
> > +static struct resource tegra_pcie_resources[] = {
> > +	[0] = {
> > +		.start = TEGRA_PCIE_BASE,
> > +		.end = TEGRA_PCIE_BASE + TEGRA_PCIE_SIZE - 1,
> > +		.flags = IORESOURCE_MEM,
> > +	},
> > +	[1] = {
> > +		.start = TEGRA_PCIE_MMIO_BASE,
> > +		.end = TEGRA_PCIE_MMIO_BASE + TEGRA_PCIE_MMIO_SIZE - 1,
> > +		.flags = IORESOURCE_MEM,
> > +	},
> > +	[2] = {
> > +		.start = INT_PCIE_INTR,
> > +		.end = INT_PCIE_INTR,
> > +		.flags = IORESOURCE_IRQ,
> > +	},
> > +};
> 
> I'm not sure those resources either cover all the necessary regions, nor
> are as fine-grained as they should be ...
> 
> In particular, in pcie.c, I see separate afi_writel() and pads_writel()
> implying those are separate regions.
> 
> Also, I see the following hard-code specific addresses, and are still
> used by the driver after conversion:
> 
> > #define MEM_BASE_0              (TEGRA_PCIE_BASE + SZ_256M)
> > #define MEM_SIZE_0              SZ_128M
> > #define MEM_BASE_1              (MEM_BASE_0 + MEM_SIZE_0)
> > #define MEM_SIZE_1              SZ_128M
> > #define PREFETCH_MEM_BASE_0     (MEM_BASE_1 + MEM_SIZE_1)
> > #define PREFETCH_MEM_SIZE_0     SZ_128M
> > #define PREFETCH_MEM_BASE_1     (PREFETCH_MEM_BASE_0 + PREFETCH_MEM_SIZE_0)
> > #define PREFETCH_MEM_SIZE_1     SZ_128M
> 
> Also, there's a comment describing the register layout in terms of a
> number of separate regions:
> 
> > /*
> >  * Tegra2 defines 1GB in the AXI address map for PCIe.
> >  *
> >  * That address space is split into different regions, with sizes and
> >  * offsets as follows:
> >  *
> >  * 0x80000000 - 0x80003fff - PCI controller registers
> >  * 0x80004000 - 0x80103fff - PCI configuration space
> >  * 0x80104000 - 0x80203fff - PCI extended configuration space
> >  * 0x80203fff - 0x803fffff - unused
> >  * 0x80400000 - 0x8040ffff - downstream IO
> >  * 0x80410000 - 0x8fffffff - unused
> >  * 0x90000000 - 0x9fffffff - non-prefetchable memory
> >  * 0xa0000000 - 0xbfffffff - prefetchable memory
> >  */
> 
> (the latter 2 regions at least being also split in half for each of the
> 2 host ports)

I was thinking that maybe each port should be represented as a child node,
but I'm not sure that's going to work too well because the children of the
pci node are supposed to be PCI busses/devices. I'll have to check whether
they could just as well be children of the PCIe port nodes.

That way each port could get an own set of register ranges to better describe
the actual layout. AFAICT the even partitioning of the non-prefetchable and
prefetchable memory regions is arbitrary and it could potentially be useful
to make it configurable via the DT.

> Shouldn't each of these regions be a separate entry in the platform
> device resources.
> 
> This perhaps isn't that relevant for Tegra20 alone, but Tegra30 supports
> 3 host ports instead of 2 (hence I presume alters the internal layout of
> the 1G chunk of physical memory space allocated to PCIe), and moves the
> PCIe area from 2G..3G to 0G..1G (so invalidates the hard-coded
> *_MEM_BASE_* above).

> That said, I'm not sure whether Tegra20's and Tegra30's PCIe controllers
> are similar enough to make a shared driver worthwhile/possible.
> (Although our downstream Android driver appears to handle both with a
> very small number of ifdefs).

> If they are similar, then I think my comments above should be addressed.
> If they are not similar, then I think you can just have a single 1G
> memory region in the resources, and split it up internally, rather than
> needing separate resources for different parts of the address space.

Unfortunately the PCIe controller is very badly documented in the TRM, so
this information is hard to locate (I guess the best source is one of the
downstream drivers).

Last time I looked they seemed to be simple enough to handle the differences
using OF compatible matches. I believe apart from the PCIe area changes there
were some differences in how the MSI were setup.

> While we can easily fix this kind of driver internals so this doesn't
> seem like a big deal, this kind of change would impact the device tree
> binding, so it seems that we need to sort it out before DT conversion.

Yes, we should at least try to get it right from the start.

Thierry

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

  parent reply	other threads:[~2012-06-12  6:41 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-11 15:05 [PATCH v2 00/10] ARM: tegra: Add PCIe device tree support Thierry Reding
     [not found] ` <1339427118-32263-1-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-06-11 15:05   ` [PATCH v2 01/10] PCI: Keep pci_fixup_irqs() around after init Thierry Reding
2012-06-11 15:05   ` [PATCH v2 02/10] ARM: pci: Keep pci_common_init() " Thierry Reding
2012-06-11 15:05   ` [PATCH v2 03/10] ARM: pci: Allow passing per-controller private data Thierry Reding
2012-06-11 15:05   ` [PATCH v2 04/10] ARM: tegra: Move tegra_pcie_xclk_clamp() to PMC Thierry Reding
2012-06-11 15:05   ` [PATCH v2 07/10] ARM: tegra: pcie: Add device tree support Thierry Reding
2012-06-11 21:33     ` Stephen Warren
2012-06-12  6:21       ` Thierry Reding
2012-06-12 15:44         ` Stephen Warren
     [not found]           ` <4FD763C5.3090500-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-12 17:20             ` Thierry Reding
     [not found]               ` <20120612172041.GA28010-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-06-12 19:10                 ` Mitch Bradley
     [not found]                   ` <4FD7943E.60302-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org>
2012-06-12 19:46                     ` Stephen Warren
2012-06-12 19:52                       ` Mitch Bradley
     [not found]                         ` <4FD79DE8.90603-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org>
2012-06-13  5:54                           ` Thierry Reding
2012-06-13  7:04                             ` Mitch Bradley
2012-06-12 20:15               ` Stephen Warren
2012-06-12 21:11                 ` Mitch Bradley
2012-06-13  6:45                   ` Thierry Reding
     [not found]                     ` <20120613064519.GD31001-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-13  7:28                       ` Mitch Bradley
     [not found]                         ` <4FD84133.4060401-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org>
2012-06-13  7:52                           ` Thierry Reding
     [not found]                             ` <20120613075232.GA6139-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-13  8:05                               ` Mitch Bradley
     [not found]                                 ` <4FD849CF.4030009-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org>
2012-06-13  8:19                                   ` Thierry Reding
     [not found]                                     ` <20120613081910.GB6528-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-13  8:36                                       ` Mitch Bradley
2012-06-13  8:42                                         ` Thierry Reding
     [not found]                                         ` <4FD85127.8050301-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org>
2012-06-14  9:19                                           ` Thierry Reding
     [not found]                                             ` <20120614091905.GA9081-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-14 18:30                                               ` Stephen Warren
     [not found]                                                 ` <4FDA2DDA.1030704-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-14 19:29                                                   ` Thierry Reding
     [not found]                                                     ` <20120614192903.GA2212-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-14 19:50                                                       ` Stephen Warren
     [not found]                                                         ` <4FDA40A0.4030206-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-15  6:12                                                           ` Thierry Reding
2012-06-19 13:30                                                             ` Thierry Reding
     [not found]                                                               ` <20120619133001.GB24138-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-19 16:40                                                                 ` Stephen Warren
2012-06-19 21:31                                                               ` Mitch Bradley
2012-06-20 16:32                                                                 ` Stephen Warren
2012-06-20 17:41                                                                   ` Mitch Bradley
     [not found]                                                                     ` <4FE20B34.2090305-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org>
2012-06-20 17:47                                                                       ` Stephen Warren
2012-06-20 19:57                                                                 ` Arnd Bergmann
2012-06-20 20:19                                                                   ` Mitch Bradley
2012-06-21  6:47                                                                 ` Thierry Reding
     [not found]                                                                   ` <20120621064722.GA1122-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-22 10:18                                                                     ` Bjorn Helgaas
     [not found]                                                                       ` <CAErSpo6Bpfqm-0yGiBOXEhF4kD3PTDYvWVr0babLZ4GkBLXJiA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-06-22 11:00                                                                         ` Thierry Reding
2012-06-22 11:46                                                                           ` Bjorn Helgaas
2012-06-22 12:43                                                                             ` Thierry Reding
2012-06-22 13:03                                                                               ` Arnd Bergmann
     [not found]                                                                                 ` <201206221303.21985.arnd-r2nGTMty4D4@public.gmane.org>
2012-06-22 16:49                                                                                   ` Bjorn Helgaas
     [not found]                                                                                     ` <CAErSpo56=S2oQ0usYfH28T0178SQUBD=5jqmcKWCT6M5WUQF6g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-06-22 16:53                                                                                       ` Arnd Bergmann
     [not found]                                                                                         ` <201206221653.31817.arnd-r2nGTMty4D4@public.gmane.org>
2012-06-22 17:13                                                                                           ` Bjorn Helgaas
     [not found]                                                                                             ` <CAErSpo5dj99iHW0WNEABPR1OO2yS=BwNezOivu6_7Go8sKyjsQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-06-22 21:08                                                                                               ` Arnd Bergmann
2012-06-22 17:14                                                                                           ` Arnd Bergmann
2012-06-22 17:00                                                                           ` Stephen Warren
2012-06-22 17:28                                                                             ` Stephen Warren
2012-06-23 21:35                                                                               ` Bjorn Helgaas
     [not found]                                                                               ` <4FE4AB2F.8090402-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-25  6:34                                                                                 ` Thierry Reding
2012-06-26 17:22                                                                                   ` Stephen Warren
     [not found]                                                                                     ` <4FE9EFD8.6010608-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-27  6:19                                                                                       ` Thierry Reding
2012-06-22 16:20                                                                     ` Stephen Warren
2012-06-22 17:09                                                                     ` Mitch Bradley
2012-06-22 11:04                                                                 ` Thierry Reding
     [not found]                                                                   ` <20120622110403.GA15710-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-22 13:22                                                                     ` Thierry Reding
     [not found]                                                                       ` <20120622132253.GA30704-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-22 13:48                                                                         ` Arnd Bergmann
     [not found]                                                                           ` <201206221348.39346.arnd-r2nGTMty4D4@public.gmane.org>
2012-06-22 14:02                                                                             ` Thierry Reding
     [not found]                                                                               ` <20120622140210.GA32097-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-22 16:40                                                                                 ` Arnd Bergmann
2012-06-13 20:21                               ` Arnd Bergmann
     [not found]                                 ` <201206132021.09774.arnd-r2nGTMty4D4@public.gmane.org>
2012-06-14  8:37                                   ` Thierry Reding
2012-06-14 10:25                                     ` Arnd Bergmann
2012-06-14 10:31                                       ` Thierry Reding
2012-06-14 11:06                                         ` Arnd Bergmann
     [not found]                                           ` <201206141106.49142.arnd-r2nGTMty4D4@public.gmane.org>
2012-06-14 11:58                                             ` Thierry Reding
     [not found]                 ` <4FD7A36B.9090409-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-13  6:34                   ` Thierry Reding
     [not found]                     ` <20120613063422.GC31001-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-13 16:20                       ` Stephen Warren
2012-06-13 17:03                     ` Stephen Warren
2012-06-11 15:05   ` [PATCH v2 09/10] ARM: tegra: harmony: Initialize PCIe from DT Thierry Reding
     [not found]     ` <1339427118-32263-10-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-06-11 21:41       ` Stephen Warren
     [not found]         ` <4FD6661A.1060407-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-12  5:48           ` Thierry Reding
     [not found]             ` <20120612054811.GB4040-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-06-12 15:38               ` Stephen Warren
2012-06-11 15:05 ` [PATCH v2 05/10] ARM: tegra: Rewrite PCIe support as a driver Thierry Reding
2012-06-11 21:09   ` Stephen Warren
     [not found]     ` <4FD65E98.4070200-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-12  6:41       ` Thierry Reding [this message]
2012-06-12  7:24         ` Thierry Reding
     [not found]           ` <20120612072444.GA8577-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-12 16:00             ` Stephen Warren
2012-06-13  8:12               ` Thierry Reding
     [not found]   ` <1339427118-32263-6-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-06-11 21:22     ` Stephen Warren
     [not found]       ` <4FD6617C.4090805-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-12  4:59         ` Thierry Reding
2012-06-11 15:05 ` [PATCH v2 06/10] ARM: tegra: pcie: Add MSI support Thierry Reding
     [not found]   ` <1339427118-32263-7-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-06-11 21:19     ` Stephen Warren
2012-06-12  5:07       ` Thierry Reding
2012-06-12  5:33         ` Stephen Warren
     [not found]           ` <4FD6D4C6.2080201-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-12  5:41             ` Thierry Reding
     [not found]         ` <20120612050713.GB3669-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-06-12  6:10           ` Thierry Reding
     [not found]             ` <20120612061003.GC4040-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-06-12 15:40               ` Stephen Warren
2012-06-12 17:23                 ` Thierry Reding
2012-06-11 15:05 ` [PATCH v2 08/10] ARM: tegra: harmony: Initialize regulators from DT Thierry Reding
2012-06-11 21:36   ` Stephen Warren
     [not found]     ` <4FD664F8.4030800-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-12  6:13       ` Thierry Reding
     [not found]   ` <1339427118-32263-9-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-06-21 20:17     ` Stephen Warren
     [not found]       ` <4FE3815C.8030505-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-06-22  6:06         ` Thierry Reding
2012-06-11 15:05 ` [PATCH v2 10/10] ARM: tegra: trimslice: Initialize PCIe " 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=20120612064124.GF4040@avionic-0098.adnet.avionic-design.de \
    --to=thierry.reding-rm9k5ik7kjkj5m59nbduvrnah6klmebb@public.gmane.org \
    --cc=ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org \
    --cc=jbarnes-Y1mF5jBUw70BENJcbMCuUQ@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
    --cc=linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org \
    --cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org \
    --cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org \
    /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).