On Fri, Mar 08, 2013 at 09:52:28AM -0700, Jason Gunthorpe wrote: > On Fri, Mar 08, 2013 at 08:14:44AM +0100, Thierry Reding wrote: > > On Thu, Mar 07, 2013 at 06:05:33PM -0600, Rob Herring wrote: > > > On 03/07/2013 02:47 PM, Thierry Reding wrote: > > [...] > > > > In a nutshell (since some of the context isn't quoted anymore) the > > > > problem that we're trying to solve is that some of the embedded SoCs > > > > require per-root-port registers for configuration. The PCI DT > > > > specification doesn't make any provisions for this. A few alternatives > > > > have been discussed so far: > > > > > > I'm not sure I follow. This is different than the host controller > > > registers? Why would this not just be multiple entries in the reg property? > > > > Well the register regions are per root-port. On Tegra20 there's 2 of > > them, Tegra30 has 3 and if I understand correctly Marvell can have up to > > 10 (!). Adding all of them to the reg property of the host controller > > could work but it needs some way to match the reg entry to the root port > > similar to option 1 below. > > Thomas just posted an implementation like this, please see: > > http://www.spinics.net/lists/arm-kernel/msg228749.html Oh well. I don't like it, but if that's the way it has to be, then so be it. Any reason why the reg-names can't match the root port's node name so that it can be used directly instead of going through hoops to construct a string from extra parameters? Like below: pcie-controller { regs = <...>; reg-names = ..., "pcie@1,0", "pcie@2,0"; pcie@1,0 { ... }; pcie@2,0 { ... }; }; Thierry
Attachment:
pgpL1zcvDxW2H.pgp
Description: PGP signature