Chapter 4: Storming the Common Clock Framework
From the beginning, embedded systems have always needed clock signals in order to orchestrate their inner workings, either for synchronization or for power management (for example, enabling clocks when the device is in active use or adjusting the clock depending on some criteria, such as the system load). Therefore, Linux has always had a clock framework. There has only ever been programming interface declaration support for software management of the system clock tree, and each platform had to implement this API. Different System on Chips (SoCs) had their own implementation. This was okay for a while, but people soon found that their hardware implementations were quite similar. The code also became bushy and redundant, which meant it was necessary to use platform-dependent APIs to get/set the clock.
This was rather an uncomfortable situation. Then, the common clock framework (CCF) came in, allowing software to manage clocks available...