18c2ecf20Sopenharmony_ci* Actions Semi Owl Clock Management Unit (CMU)
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciThe Actions Semi Owl Clock Management Unit generates and supplies clock
48c2ecf20Sopenharmony_cito various controllers within the SoC. The clock binding described here is
58c2ecf20Sopenharmony_ciapplicable to S900, S700 and S500 SoC's.
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ciRequired Properties:
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci- compatible: should be one of the following,
108c2ecf20Sopenharmony_ci	"actions,s900-cmu"
118c2ecf20Sopenharmony_ci	"actions,s700-cmu"
128c2ecf20Sopenharmony_ci	"actions,s500-cmu"
138c2ecf20Sopenharmony_ci- reg: physical base address of the controller and length of memory mapped
148c2ecf20Sopenharmony_ci  region.
158c2ecf20Sopenharmony_ci- clocks: Reference to the parent clocks ("hosc", "losc")
168c2ecf20Sopenharmony_ci- #clock-cells: should be 1.
178c2ecf20Sopenharmony_ci- #reset-cells: should be 1.
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ciEach clock is assigned an identifier, and client nodes can use this identifier
208c2ecf20Sopenharmony_cito specify the clock which they consume.
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ciAll available clocks are defined as preprocessor macros in corresponding
238c2ecf20Sopenharmony_cidt-bindings/clock/actions,s900-cmu.h or actions,s700-cmu.h or
248c2ecf20Sopenharmony_ciactions,s500-cmu.h header and can be used in device tree sources.
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ciExternal clocks:
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ciThe hosc clock used as input for the plls is generated outside the SoC. It is
298c2ecf20Sopenharmony_ciexpected that it is defined using standard clock bindings as "hosc".
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ciActions Semi S900 CMU also requires one more clock:
328c2ecf20Sopenharmony_ci - "losc" - internal low frequency oscillator
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ciExample: Clock Management Unit node:
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci        cmu: clock-controller@e0160000 {
378c2ecf20Sopenharmony_ci                compatible = "actions,s900-cmu";
388c2ecf20Sopenharmony_ci                reg = <0x0 0xe0160000 0x0 0x1000>;
398c2ecf20Sopenharmony_ci                clocks = <&hosc>, <&losc>;
408c2ecf20Sopenharmony_ci                #clock-cells = <1>;
418c2ecf20Sopenharmony_ci                #reset-cells = <1>;
428c2ecf20Sopenharmony_ci        };
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciExample: UART controller node that consumes clock generated by the clock
458c2ecf20Sopenharmony_cimanagement unit:
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci        uart: serial@e012a000 {
488c2ecf20Sopenharmony_ci                compatible = "actions,s900-uart", "actions,owl-uart";
498c2ecf20Sopenharmony_ci                reg = <0x0 0xe012a000 0x0 0x2000>;
508c2ecf20Sopenharmony_ci                interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
518c2ecf20Sopenharmony_ci                clocks = <&cmu CLK_UART5>;
528c2ecf20Sopenharmony_ci        };
53