Some clock node hardware (eg the qualcomm code I'm working on)
allows you to read the current frequency and gate configuration.
So:
- For root fixed clock nodes, we may as well configure their frequency at init time, as we don't need to read the clock frequency of any parent nodes to know what our frequency is.
- For gates that can read their own status, configure the gate status.
clk: track whether the clock is enabled or not, provide it out via sysctl
This is useful for gates that set their status at boot time but haven't
yet been programmed.
clk: add call for nodes to get the programmed/decided frequency passed back
The existing call can only really be used for a node wishing to
configure its parent, but as we don't pass in a pointer to the freq,
we can't set it to what it would be for a DRY_RUN pass.
So for clock nodes that wish to try setting parent frequencies to see
which would be the best for its own target frequency, we really do need
a way to call in and pass in a flag /and/ a pointer to freq so it can be
updated for us as the clock tree is recursed through.