On Thu, Jun 03, 2021 at 08:25:08PM +0200, Sander Vanheule wrote: > 1. I've opted to just ignore any bits that lie beyond the allowed address > width. Would it be cleaner to raise an error instead? It doesn't *really* matter, enforcement is probably a bit better as it might catch bugs. > 2. Packing of the clause-45 register addresses (16 bit) and adressed device > type (5 bit) is the same as in the mdio subsystem, resulting in a 21 bit > address. Is this an appropriate way to pack this information into one > address for the regmap interface? Either that or pass the type in when instantiating the regmap (it sounds like it should be the same for all registers on the device?). > The reasoning behind (1) is to allow the regmap user to use extra bits > as a way to virtually extend the address space. Note that this actually > results in aliasing. This can be useful if the data read from to a > register doesn't have the same meaning as the data written to it > (e.g. GPIO pin input and output data). An alternative solution to this > would be some concept of "aliased registers" in regmap -- like volatile or > precious registers. I think these registers are in practice going to either need to be volatile (how most of them work at the minute) or otherwise handled in regmap (eg, the page support we've got). Having two different names for the same register feels like it's asking for bugs if any of the higher level functions of regmap get used.