Commit 43705f52 authored by Stephen Boyd's avatar Stephen Boyd
Browse files

Merge branch 'clk-actions' into clk-next

* clk-actions:
  clk: actions: Add S900 SoC clock support
  clk: actions: Add pll clock support
  clk: actions: Add composite clock support
  clk: actions: Add fixed factor clock support
  clk: actions: Add factor clock support
  clk: actions: Add divider clock support
  clk: actions: Add mux clock support
  clk: actions: Add gate clock support
  clk: actions: Add common clock driver support
  dt-bindings: clock: Add Actions S900 clock bindings
parents 101cfc9f d85d2005
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
* Actions S900 Clock Management Unit (CMU)

The Actions S900 clock management unit generates and supplies clock to various
controllers within the SoC. The clock binding described here is applicable to
S900 SoC.

Required Properties:

- compatible: should be "actions,s900-cmu"
- reg: physical base address of the controller and length of memory mapped
  region.
- clocks: Reference to the parent clocks ("hosc", "losc")
- #clock-cells: should be 1.

Each clock is assigned an identifier, and client nodes can use this identifier
to specify the clock which they consume.

All available clocks are defined as preprocessor macros in
dt-bindings/clock/actions,s900-cmu.h header and can be used in device
tree sources.

External clocks:

The hosc clock used as input for the plls is generated outside the SoC. It is
expected that it is defined using standard clock bindings as "hosc".

Actions S900 CMU also requires one more clock:
 - "losc" - internal low frequency oscillator

Example: Clock Management Unit node:

        cmu: clock-controller@e0160000 {
                compatible = "actions,s900-cmu";
                reg = <0x0 0xe0160000 0x0 0x1000>;
                clocks = <&hosc>, <&losc>;
                #clock-cells = <1>;
        };

Example: UART controller node that consumes clock generated by the clock
management unit:

        uart: serial@e012a000 {
                compatible = "actions,s900-uart", "actions,owl-uart";
                reg = <0x0 0xe012a000 0x0 0x2000>;
                interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&cmu CLK_UART5>;
        };
+1 −0
Original line number Diff line number Diff line
@@ -279,6 +279,7 @@ config COMMON_CLK_STM32H7
	---help---
	  Support for stm32h7 SoC family clocks

source "drivers/clk/actions/Kconfig"
source "drivers/clk/bcm/Kconfig"
source "drivers/clk/hisilicon/Kconfig"
source "drivers/clk/imgtec/Kconfig"
+1 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ obj-$(CONFIG_COMMON_CLK_WM831X) += clk-wm831x.o
obj-$(CONFIG_COMMON_CLK_XGENE)		+= clk-xgene.o

# please keep this section sorted lexicographically by directory path name
obj-y					+= actions/
obj-$(CONFIG_COMMON_CLK_AT91)		+= at91/
obj-$(CONFIG_ARCH_ARTPEC)		+= axis/
obj-$(CONFIG_ARC_PLAT_AXS10X)		+= axs10x/
+14 −0
Original line number Diff line number Diff line
config CLK_ACTIONS
	bool "Clock driver for Actions Semi SoCs"
	depends on ARCH_ACTIONS || COMPILE_TEST
	default ARCH_ACTIONS

if CLK_ACTIONS

# SoC Drivers

config CLK_OWL_S900
	bool "Support for the Actions Semi OWL S900 clocks"
	depends on (ARM64 && ARCH_ACTIONS) || COMPILE_TEST
	default ARM64 && ARCH_ACTIONS
endif
+12 −0
Original line number Diff line number Diff line
obj-$(CONFIG_CLK_ACTIONS)	+= clk-owl.o

clk-owl-y			+= owl-common.o
clk-owl-y			+= owl-gate.o
clk-owl-y			+= owl-mux.o
clk-owl-y			+= owl-divider.o
clk-owl-y			+= owl-factor.o
clk-owl-y			+= owl-composite.o
clk-owl-y			+= owl-pll.o

# SoC support
obj-$(CONFIG_CLK_OWL_S900)	+= owl-s900.o
Loading