Kumar Gala wrote:
On Aug 16, 2010, at 3:17 PM, Mitch Bradley wrote:

Kumar Gala wrote:
Do we or should we have a standard property to convey that address width a 
device is capable of?
...
If I had to describe a partial address, I'd consider a property name like 
"dma-address-mask", whose value is a bitmap of implemented bits, corresponding 
to the bits in a unit address for the parent bus.  Low-order bits might be zero if the 
DMA addressing hardware had alignment restrictions.

As I said to Stuart.  On the Freescale SOCs we have different device blocks 
w/varying dma address capabilities.  Some are limited to 32-bits some are 
capable of 36-bits on the same SOC.

- k


The closest existing property that I know of is "dma-ranges" - see http://playground.sun.com/1275/proposals/Closed/Accepted/410-it.txt

That's not directly applicable, as "dma-ranges" in its current form applies to bus bridges, describing the translation between DMA addresses on a child bus to DMA addresses on a parent bus.

The case in question has some general similarities, in that the limited devices have an implicit 32-bit "child bus" that is translated to the 36-bit parent bus, presumably by concatenating zeros in bits 35:32. Is that correct, i.e. are the high bits implicitly 0?

The dma-ranges representation doesn't assume the "zero-extend" property, but rather explicitly lists child-base-address,parent-base-address,size triples. I wonder if that generality is justifiable in this case?

I see several obvious representations with varying degrees of generality:

a) boolean property saying "this is one of those 32-bit only devices, with all the implications"
b) width in bits - assumes an implicit translation rule (e.g. zero-extend)
c) bitmask - assumes implicit translation rule, capable of representing alignment restrictions with low-order zeros d) something like dma-ranges - explicitly represents translation rule, no representation for alignment restriction

My 2 cents: Generality is often only justified when you have a good collection of problem instances, so you can amortize the generality over several specific known examples. Otherwise you often end up implementing something elaborate that never gets used.


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

Reply via email to