CCF data structures and interfaces
In the old kernel days, each platform had to implement a basic API defined in the kernel (to grab/release the clock, set/get the rate, enable/disable the clock, and so on) that could be used by consumer drivers. Since the implementation of these specific APIs was done by each machine's code, this resulted in a similar file in each machine directory, with similar logic to implement the clock provider functions. This had several drawbacks, among which there was a lot of redundant code inside them. Later, the kernel abstracted this common code in the form of a clock provider (drivers/clk/clk.c
), which became what we now call the CCF core.
Before playing with the CCF, its support needs to be pulled into the kernel by means of the CONFIG_COMMON_CLK
option. The CCF itself is divided into two halves:
- The Common Clock Framework core: This is the core of the framework and is not supposed to be modified when you add a new driver and provide...