> > Another artefact of not have a child-parent relationship. I wounder if > > it makes sense to change the architecture. Have the PCS driver > > instantiate the PCS devices as its children. They then have a device > > structure for calls like clk_bulk_get(), and a more normal > > consumer/provider setup. > > > > I think you may be suggesting to drop the child node usage in the DTS, so > that we can attach all the MII clocks to the single PCS node, to facilitate > usage of bulk get() API to retrieve the MII clocks for that PCS. I would keep the child nodes. They describe the cookie-cutter nature of the hardware. The problem is with the clk_bulk API, not allowing you to pass a device_node. of_clk_bulk_get() appears to do what you want, but it is not exported. What we do have is: /** * devm_get_clk_from_child - lookup and obtain a managed reference to a * clock producer from child node. * @dev: device for clock "consumer" * @np: pointer to clock consumer node * @con_id: clock consumer ID * * This function parses the clocks, and uses them to look up the * struct clk from the registered list of clock providers by using * @np and @con_id * * The clock will automatically be freed when the device is unbound * from the bus. */ struct clk *devm_get_clk_from_child(struct device *dev, struct device_node *np, const char *con_id); So maybe a devm_get_clk_bulk_from_child() would be accepted? However, it might not be worth the effort. Using the bulk API was just a suggestion to make the code simpler, not a strong requirement. Andrew