Re: address translation for PCIe-to-localbus bridge

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 11/12/2013 08:05 AM, Thomas Petazzoni wrote:
Dear Grant Likely,

On Mon, 11 Nov 2013 15:50:50 +0000, Grant Likely wrote:

So the mbus would register an address xlate for its node that is
called instead of ranges parsing. For the example in my last message
the FPGA driver would register an xlate that made addresses relative
to its own BAR0 address.

There are already bus-specific transations available. Take a look at
struct of_bus in drivers/of/address.c

Hum, right, but unless I'm wrong the of_busses[] array of struct of_bus
is fixed in drivers/of/address.c, and as it is, there is no way for a
specific bus driver to provide its own struct of_bus.

That was exactly my understanding as well, and that's where I was expecting some trickery to happen.

So that would need to be extended, right?

The other approach I was foreseeing was to implement a way of dynamically updating the DT when the PCI subsystem enumerates the devices and assigns memory areas (namely, I would expect the ranges property to reflect that). But this would imply a standard way of defining the ranges property (I would expect something like <bar# start_addr length>, with an arguable number of cells). And I could not find any such definition in the PCI bus binding document, so I'm probably completely off-track here. Aren't I?

After all, we should expect a driver to behave (and expect) the same of the DT, regardless of whether enumeration was performed by firmware or
by the OS itself. Or am I wrong on this too?

Thanks guys!
Gerlando
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux