162306a36Sopenharmony_ci* Actions Semi Owl Clock Management Unit (CMU)
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciThe Actions Semi Owl Clock Management Unit generates and supplies clock
462306a36Sopenharmony_cito various controllers within the SoC. The clock binding described here is
562306a36Sopenharmony_ciapplicable to S900, S700 and S500 SoC's.
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciRequired Properties:
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci- compatible: should be one of the following,
1062306a36Sopenharmony_ci	"actions,s900-cmu"
1162306a36Sopenharmony_ci	"actions,s700-cmu"
1262306a36Sopenharmony_ci	"actions,s500-cmu"
1362306a36Sopenharmony_ci- reg: physical base address of the controller and length of memory mapped
1462306a36Sopenharmony_ci  region.
1562306a36Sopenharmony_ci- clocks: Reference to the parent clocks ("hosc", "losc")
1662306a36Sopenharmony_ci- #clock-cells: should be 1.
1762306a36Sopenharmony_ci- #reset-cells: should be 1.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciEach clock is assigned an identifier, and client nodes can use this identifier
2062306a36Sopenharmony_cito specify the clock which they consume.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciAll available clocks are defined as preprocessor macros in corresponding
2362306a36Sopenharmony_cidt-bindings/clock/actions,s900-cmu.h or actions,s700-cmu.h or
2462306a36Sopenharmony_ciactions,s500-cmu.h header and can be used in device tree sources.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciExternal clocks:
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciThe hosc clock used as input for the plls is generated outside the SoC. It is
2962306a36Sopenharmony_ciexpected that it is defined using standard clock bindings as "hosc".
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciActions Semi S900 CMU also requires one more clock:
3262306a36Sopenharmony_ci - "losc" - internal low frequency oscillator
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ciExample: Clock Management Unit node:
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci        cmu: clock-controller@e0160000 {
3762306a36Sopenharmony_ci                compatible = "actions,s900-cmu";
3862306a36Sopenharmony_ci                reg = <0x0 0xe0160000 0x0 0x1000>;
3962306a36Sopenharmony_ci                clocks = <&hosc>, <&losc>;
4062306a36Sopenharmony_ci                #clock-cells = <1>;
4162306a36Sopenharmony_ci                #reset-cells = <1>;
4262306a36Sopenharmony_ci        };
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciExample: UART controller node that consumes clock generated by the clock
4562306a36Sopenharmony_cimanagement unit:
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci        uart: serial@e012a000 {
4862306a36Sopenharmony_ci                compatible = "actions,s900-uart", "actions,owl-uart";
4962306a36Sopenharmony_ci                reg = <0x0 0xe012a000 0x0 0x2000>;
5062306a36Sopenharmony_ci                interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
5162306a36Sopenharmony_ci                clocks = <&cmu CLK_UART5>;
5262306a36Sopenharmony_ci        };
53