Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 97fa4cf4 authored by Sebastian Hesselbarth's avatar Sebastian Hesselbarth Committed by Thomas Petazzoni
Browse files

clk: mvebu: add mvebu core clocks.



This driver allows to provide DT clocks for core clocks found on
Marvell Kirkwood, Dove & 370/XP SoCs. The core clock frequencies and
ratios are determined by decoding the Sample-At-Reset registers.

Although technically correct, using a divider of 0 will lead to
div_by_zero panic. Let's use a ratio of 0/1 instead to fail later
with a zero clock.

Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: default avatarSebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Tested-by Gregory CLEMENT <gregory.clement@free-electrons.com>
parent f4a75d2e
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
* Core Clock bindings for Marvell MVEBU SoCs

Marvell MVEBU SoCs usually allow to determine core clock frequencies by
reading the Sample-At-Reset (SAR) register. The core clock consumer should
specify the desired clock by having the clock ID in its "clocks" phandle cell.

The following is a list of provided IDs and clock names on Armada 370/XP:
 0 = tclk    (Internal Bus clock)
 1 = cpuclk  (CPU clock)
 2 = nbclk   (L2 Cache clock)
 3 = hclk    (DRAM control clock)
 4 = dramclk (DDR clock)

The following is a list of provided IDs and clock names on Kirkwood and Dove:
 0 = tclk   (Internal Bus clock)
 1 = cpuclk (CPU0 clock)
 2 = l2clk  (L2 Cache clock derived from CPU0 clock)
 3 = ddrclk (DDR controller clock derived from CPU0 clock)

Required properties:
- compatible : shall be one of the following:
	"marvell,armada-370-core-clock" - For Armada 370 SoC core clocks
	"marvell,armada-xp-core-clock" - For Armada XP SoC core clocks
	"marvell,dove-core-clock" - for Dove SoC core clocks
	"marvell,kirkwood-core-clock" - for Kirkwood SoC (except mv88f6180)
	"marvell,mv88f6180-core-clock" - for Kirkwood MV88f6180 SoC
- reg : shall be the register address of the Sample-At-Reset (SAR) register
- #clock-cells : from common clock binding; shall be set to 1

Optional properties:
- clock-output-names : from common clock binding; allows overwrite default clock
	output names ("tclk", "cpuclk", "l2clk", "ddrclk")

Example:

core_clk: core-clocks@d0214 {
	compatible = "marvell,dove-core-clock";
	reg = <0xd0214 0x4>;
	#clock-cells = <1>;
};

spi0: spi@10600 {
	compatible = "marvell,orion-spi";
	/* ... */
	/* get tclk from core clock provider */
	clocks = <&core_clk 0>;
};
+2 −0
Original line number Diff line number Diff line
@@ -54,3 +54,5 @@ config COMMON_CLK_MAX77686
	  This driver supports Maxim 77686 crystal oscillator clock. 

endmenu

source "drivers/clk/mvebu/Kconfig"
+1 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ obj-$(CONFIG_PLAT_SPEAR) += spear/
obj-$(CONFIG_ARCH_U300)		+= clk-u300.o
obj-$(CONFIG_COMMON_CLK_VERSATILE) += versatile/
obj-$(CONFIG_ARCH_PRIMA2)	+= clk-prima2.o
obj-$(CONFIG_PLAT_ORION)	+= mvebu/
ifeq ($(CONFIG_COMMON_CLK), y)
obj-$(CONFIG_ARCH_MMP)		+= mmp/
endif
+3 −0
Original line number Diff line number Diff line
config MVEBU_CLK_CORE
       bool
+1 −0
Original line number Diff line number Diff line
obj-$(CONFIG_MVEBU_CLK_CORE) 	+= clk.o clk-core.o
Loading