Description
Is your feature request related to a problem? Please describe.
Implement the SOF clk.h interface without depending on SOF platform interface and rather implement the functions using direct calls to Zephyr. This allows to move the platform specifics to Zephyr side and reduce the work needed to be done on SOF side to add new platforms.
Part of #5794
Additional context
Primary use in code base is for clock_get_freq() (e.g. in basefw.c). Most of the other uses are in XTOS drivers, which can be ignored for Zephyr builds. All in all, it's a good question whether clk.h interface is needed at all for application use and whether the clk.h could be just dropped (and only used for XTOS driver and platform code).
IOW, is there any need to query the CPU frequency from application code? After all, clock gating and scaling can be used and any logic dependent on exact frequency, is potentially sensitive to platform differences.
Activity
kv2019i commentedon Oct 4, 2024
Ok this is somewhat more complex as src/lib/cpu-clk-manager.c has non-trivial use of clk.h and this is used on many native Zephyr SOF platforms.
lgirdwood commentedon Oct 15, 2024
Ok, pls do create a new generic application header for cpu-clk manager and we can transition to that and remove the old headers.
kv2019i commentedon Nov 19, 2024
Further observations of current design:
- Zephyr clock_control.h and DTS can describe invididual clocks but AFAIK there is not way to query and enumerate core clocks
- no matching fucnction in Zephyr, but also no actual users of this in SOF Zephyr builds, so maybe can be dropped
Ripping out the cpu-clk-manager usage to its own interface might still be the best course of action, but above is stll useful to input even if we go down on this path.
lgirdwood commentedon Nov 21, 2024
We need to rip out the SOF side code that deals with clock IP and clock change notifications, i.e. any RTOS service/API should be used and the SOF code should be a client that asks for clock changes.
Agree, I dont think we have any notifier usage for clock change so can be dropped.
kv2019i commentedon Nov 22, 2024
Some study into implementing clock management on top of Zephyr:
Next step would be to clean up the Intel ACE platform code in SOF to use more Zephyr definitions.
platform: intel: ace: make CPU clock control calls optional
kv2019i commentedon Dec 13, 2024
Feature cutoff for v2.12. The remaining work has complex dependencies to Zephyr, so I won't move this to 2.13 directly. Needs to be separately planned, when SOF can intercept the clock framework.