On Fri, Jun 07, 2013 at 09:53:03PM +0200, Arnd Bergmann wrote: > Can you explain to me why it is an invalid target ID value? Is it > treated very differently by the mbus register setup than all the > others? I guess we can define it as something else to make a valid > target ID, by using one or more of the remaining bits in the first > address cell.
There is a special dedicated window register for the internal regs base. Marvell did not define it a target ID or window attributes, and only that window register can be used to configure it. The mbus driver should never read or write this register. So we have a 2 cell address encoding of the form: IIAA0000 00oooooo Where: -- I = Marvell defined target ID for programmable windows -- A = Marvell defined target attributes for programmable windows -- o = offset within the window Now, we need 2 cell format that tells the driver that this is the internal regs block. Assuming that marvell defines all I/A values we need another value (I called it an invalid valid) to indicate internal regs, several choices: FFFFFFFF 00oooooo 0000FFFF 00oooooo 00000001 00oooooo Doesn't really matter which is picked, as far as I can tell, though maybe the 01 option is best, leading to: IIAAssss 00oooooo Where: -- s = target space == 0 means I/A are: -- I = Marvell defined target ID for programmable windows -- A = Marvell defined target attributes for programmable windows == 1 means internal regs block -- o = offset within the target Which is pretty tidy.. Jason _______________________________________________ devicetree-discuss mailing list devicetree-discuss@lists.ozlabs.org https://lists.ozlabs.org/listinfo/devicetree-discuss