Hi Conor, Am Donnerstag, 18. Juni 2026, 22:54:53 Ostafrikanische Zeit schrieb Conor Dooley: I think I get the gist of your suggestions. I have a few follow-up questions to make sure I understand things right: > I think aux bus makes perfect sense when you have a clock/reset > controller, but once you start expanding past that and you have reboot > or hwmon or hwspinlock then mfd starts to make sense. At what point does it make sense to move the bindings from bindings/clock to bindings/mfd? The controllers are still very clock-heavy. allwinner,*- prcm.yaml look like clock, reset, misc controllers in mfd/ whereas ingenic,cgu.yaml, sprd,sc9863a-clk.yaml and da8xx-cfgchip.txt are clock + misc drivers in clock/. Likewise for the node names: syscon@ or clock-controller@? > You'd then have topclock that is a syscon + simple-mfd, matrixclk that is > a syscon and lsp that's using the aux bus. The topclock and matrixclock > would have dedicated and trivial drivers somewhere that have the mfd_cells > and call mfd_add_devices(). Do I even need simple-mfd? It seems I can add the syscon-reboot node via mfd_cells too by setting .of_compatible. It seems once it has a driver (even a very short one) simple-mfd is misplaced. What about syscon? Topclk needs it for syscon-reboot and the watchdog controls. For the other two I only want a regmap. Afaiu device_node_to_regmap works without a "syscon" compatible. There's also regmap_init_mmio, but afaics I only want this when my driver is the only one using the regmap. > Probably the compatibles you've chosen start to make less sense at this > point though, but probably "topclk" and "matrixclk" are not what the > documentation for this device calls these register regions? Yeah I'll rename them top topcrm / matrixcrm / lspcrm. I just stuck to the old names for this email. > I think the priority is having something that reflects the hardware > accurately, I wouldn't compromise on that just to have the same design > for all three drivers. As far as I can see the primary difference between mfd_add_devices and simple- mfd + child nodes is that the latter makes the MFD composition visible in the device tree and the former keeps it a driver implementation detail. My sense is that the latter is preferred unless a subcomponent of the MFD might be reused in other components - e.g. an ADC is used in PMIC-abc and PMIC-xyz and thus the driver can be reused as well.