summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/clock/xgene.txt
blob: 8233e771711b11c853569209bd4e7c6682c45832 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
Device Tree Clock bindings for APM X-Gene

This binding uses the common clock binding[1].

[1] Documentation/devicetree/bindings/clock/clock-bindings.txt

Required properties:
- compatible : shall be one of the following:
	"apm,xgene-socpll-clock" - for a X-Gene SoC PLL clock
	"apm,xgene-pcppll-clock" - for a X-Gene PCP PLL clock
	"apm,xgene-pmd-clock" - for a X-Gene PMD clock
	"apm,xgene-device-clock" - for a X-Gene device clock
	"apm,xgene-socpll-v2-clock" - for a X-Gene SoC PLL v2 clock
	"apm,xgene-pcppll-v2-clock" - for a X-Gene PCP PLL v2 clock

Required properties for SoC or PCP PLL clocks:
- reg : shall be the physical PLL register address for the pll clock.
- clocks : shall be the input parent clock phandle for the clock. This should
	be the reference clock.
- #clock-cells : shall be set to 1.
- clock-output-names : shall be the name of the PLL referenced by derive
  clock.
Optional properties for PLL clocks:
- clock-names : shall be the name of the PLL. If missing, use the device name.

Required properties for PMD clocks:
- reg : shall be the physical register address for the pmd clock.
- clocks : shall be the input parent clock phandle for the clock.
- #clock-cells : shall be set to 1.
- clock-output-names : shall be the name of the clock referenced by derive
  clock.
Optional properties for PLL clocks:
- clock-names : shall be the name of the clock. If missing, use the device name.

Required properties for device clocks:
- reg : shall be a list of address and length pairs describing the CSR
         reset and/or the divider. Either may be omitted, but at least
         one must be present.
 - reg-names : shall be a string list describing the reg resource. This
               may include "csr-reg" and/or "div-reg". If this property
               is not present, the reg property is assumed to describe
               only "csr-reg".
- clocks : shall be the input parent clock phandle for the clock.
- #clock-cells : shall be set to 1.
- clock-output-names : shall be the name of the device referenced.
Optional properties for device clocks:
- clock-names : shall be the name of the device clock. If missing, use the
                device name.
- csr-offset : Offset to the CSR reset register from the reset address base.
               Default is 0.
- csr-mask : CSR reset mask bit. Default is 0xF.
- enable-offset : Offset to the enable register from the reset address base.
                  Default is 0x8.
- enable-mask : CSR enable mask bit. Default is 0xF.
- divider-offset : Offset to the divider CSR register from the divider base.
                   Default is 0x0.
- divider-width : Width of the divider register. Default is 0.
- divider-shift : Bit shift of the divider register. Default is 0.

For example:

	pcppll: pcppll@17000100 {
		compatible = "apm,xgene-pcppll-clock";
		#clock-cells = <1>;
		clocks = <&refclk 0>;
		clock-names = "pcppll";
		reg = <0x0 0x17000100 0x0 0x1000>;
		clock-output-names = "pcppll";
		type = <0>;
	};

	pmd0clk: pmd0clk@7e200200 {
		compatible = "apm,xgene-pmd-clock";
		#clock-cells = <1>;
		clocks = <&pmdpll 0>;
		reg = <0x0 0x7e200200 0x0 0x10>;
		clock-output-names = "pmd0clk";
	};

	socpll: socpll@17000120 {
		compatible = "apm,xgene-socpll-clock";
		#clock-cells = <1>;
		clocks = <&refclk 0>;
		clock-names = "socpll";
		reg = <0x0 0x17000120 0x0 0x1000>;
		clock-output-names = "socpll";
		type = <1>;
	};

	qmlclk: qmlclk {
		compatible = "apm,xgene-device-clock";
		#clock-cells = <1>;
		clocks = <&socplldiv2 0>;
		clock-names = "qmlclk";
		reg = <0x0 0x1703C000 0x0 0x1000>;
		reg-name = "csr-reg";
		clock-output-names = "qmlclk";
	};

	ethclk: ethclk {
		compatible = "apm,xgene-device-clock";
		#clock-cells = <1>;
		clocks = <&socplldiv2 0>;
		clock-names = "ethclk";
		reg = <0x0 0x17000000 0x0 0x1000>;
		reg-names = "div-reg";
		divider-offset = <0x238>;
		divider-width = <0x9>;
		divider-shift = <0x0>;
		clock-output-names = "ethclk";
	};

	apbclk: apbclk {
		compatible = "apm,xgene-device-clock";
		#clock-cells = <1>;
		clocks = <&ahbclk 0>;
		clock-names = "apbclk";
		reg = <0x0 0x1F2AC000 0x0 0x1000
			0x0 0x1F2AC000 0x0 0x1000>;
		reg-names = "csr-reg", "div-reg";
		csr-offset = <0x0>;
		csr-mask = <0x200>;
		enable-offset = <0x8>;
		enable-mask = <0x200>;
		divider-offset = <0x10>;
		divider-width = <0x2>;
		divider-shift = <0x0>;
		flags = <0x8>;
		clock-output-names = "apbclk";
	};