Asif Haswarey wrote: [...]
After looking at the pci bus-binding, [...] Well this does not seem to be the case on the SPARC system I am using:
/pci@1f,700000 .properties
[...]
If I use the first phy-hi value from the reg property, and extract the dev# and fun# as described in the OpenFirmware PCI Bus Binding, I get dev# = 0x00, fun# = 0x04. So how does Sun get: dev# = 0x1f fun# = 0x700000 [and valid fun#s range from 0 .. 7] Perhaps I am supposed to look at another property. Does anyone know which one that would be?
The unit address of a device node (and the reg property) is defined by the *parent's* encode-unit. The root nexus on your system translates
00000400 0ff00000 (binary form from the reg property)
into 1f,700000 (text form). See the encode-unit and decode-unit methods in the top level "/" node. I recall this particular pattern is from our first sun4s systems (excalibur et.al.), and I don't recall the reason for the bits being scattered about like that. But it's irrelevant to the pci nodes, the pci driver itself does not need to know the translation.