Commit | Line | Data |
---|---|---|
2440946c SH |
1 | Marvell Berlin SoC Family Device Tree Bindings |
2 | --------------------------------------------------------------- | |
3 | ||
f07b4e49 AT |
4 | Work in progress statement: |
5 | ||
6 | Device tree files and bindings applying to Marvell Berlin SoCs and boards are | |
7 | considered "unstable". Any Marvell Berlin device tree binding may change at any | |
8 | time. Be sure to use a device tree binary and a kernel image generated from the | |
9 | same source tree. | |
10 | ||
11 | Please refer to Documentation/devicetree/bindings/ABI.txt for a definition of a | |
12 | stable binding/ABI. | |
13 | ||
14 | --------------------------------------------------------------- | |
15 | ||
2440946c SH |
16 | Boards with a SoC of the Marvell Berlin family, e.g. Armada 1500 |
17 | shall have the following properties: | |
18 | ||
19 | * Required root node properties: | |
20 | compatible: must contain "marvell,berlin" | |
21 | ||
22 | In addition, the above compatible shall be extended with the specific | |
23 | SoC and board used. Currently known SoC compatibles are: | |
24 | "marvell,berlin2" for Marvell Armada 1500 (BG2, 88DE3100), | |
25 | "marvell,berlin2cd" for Marvell Armada 1500-mini (BG2CD, 88DE3005) | |
26 | "marvell,berlin2ct" for Marvell Armada ? (BG2CT, 88DE????) | |
374ddcbf | 27 | "marvell,berlin2q" for Marvell Armada 1500-pro (BG2Q, 88DE3114) |
2440946c SH |
28 | "marvell,berlin3" for Marvell Armada ? (BG3, 88DE????) |
29 | ||
30 | * Example: | |
31 | ||
32 | / { | |
33 | model = "Sony NSZ-GS7"; | |
34 | compatible = "sony,nsz-gs7", "marvell,berlin2", "marvell,berlin"; | |
35 | ||
36 | ... | |
37 | } | |
55a4b07a | 38 | |
9ab5fb8a AT |
39 | * Marvell Berlin CPU control bindings |
40 | ||
41 | CPU control register allows various operations on CPUs, like resetting them | |
42 | independently. | |
43 | ||
44 | Required properties: | |
45 | - compatible: should be "marvell,berlin-cpu-ctrl" | |
46 | - reg: address and length of the register set | |
47 | ||
48 | Example: | |
49 | ||
50 | cpu-ctrl@f7dd0000 { | |
51 | compatible = "marvell,berlin-cpu-ctrl"; | |
52 | reg = <0xf7dd0000 0x10000>; | |
53 | }; | |
54 | ||
55a4b07a SH |
55 | * Marvell Berlin2 chip control binding |
56 | ||
57 | Marvell Berlin SoCs have a chip control register set providing several | |
58 | individual registers dealing with pinmux, padmux, clock, reset, and secondary | |
59 | CPU boot address. Unfortunately, the individual registers are spread among the | |
60 | chip control registers, so there should be a single DT node only providing the | |
61 | different functions which are described below. | |
62 | ||
63 | Required properties: | |
7c90a5a9 AT |
64 | - compatible: |
65 | * the first value should be one of: | |
66 | "marvell,berlin2-chip-ctrl" for BG2 | |
67 | "marvell,berlin2cd-chip-ctrl" for BG2CD | |
68 | "marvell,berlin2q-chip-ctrl" for BG2Q | |
69 | * the second and third values must be: | |
70 | "simple-mfd", "syscon" | |
55a4b07a SH |
71 | - reg: address and length of following register sets for |
72 | BG2/BG2CD: chip control register set | |
73 | BG2Q: chip control register set and cpu pll registers | |
74 | ||
e9673a75 AT |
75 | * Marvell Berlin2 system control binding |
76 | ||
77 | Marvell Berlin SoCs have a system control register set providing several | |
78 | individual registers dealing with pinmux, padmux, and reset. | |
79 | ||
80 | Required properties: | |
7c90a5a9 AT |
81 | - compatible: |
82 | * the first value should be one of: | |
83 | "marvell,berlin2-system-ctrl" for BG2 | |
84 | "marvell,berlin2cd-system-ctrl" for BG2CD | |
85 | "marvell,berlin2q-system-ctrl" for BG2Q | |
86 | * the second and third values must be: | |
87 | "simple-mfd", "syscon" | |
e9673a75 AT |
88 | - reg: address and length of the system control register set |
89 | ||
55a4b07a SH |
90 | * Clock provider binding |
91 | ||
92 | As clock related registers are spread among the chip control registers, the | |
93 | chip control node also provides the clocks. Marvell Berlin2 (BG2, BG2CD, BG2Q) | |
94 | SoCs share the same IP for PLLs and clocks, with some minor differences in | |
95 | features and register layout. | |
96 | ||
97 | Required properties: | |
98 | - #clock-cells: shall be set to 1 | |
99 | - clocks: clock specifiers referencing the core clock input clocks | |
100 | - clock-names: array of strings describing the input clock specifiers above. | |
101 | Allowed clock-names for the reference clocks are | |
102 | "refclk" for the SoCs osciallator input on all SoCs, | |
103 | and SoC-specific input clocks for | |
104 | BG2/BG2CD: "video_ext0" for the external video clock input | |
105 | ||
106 | Clocks provided by core clocks shall be referenced by a clock specifier | |
107 | indexing one of the provided clocks. Refer to dt-bindings/clock/berlin<soc>.h | |
108 | for the corresponding index mapping. | |
109 | ||
e9673a75 AT |
110 | * Pin controller binding |
111 | ||
112 | Pin control registers are part of both register sets, chip control and system | |
113 | control. The pins controlled are organized in groups, so no actual pin | |
114 | information is needed. | |
115 | ||
116 | A pin-controller node should contain subnodes representing the pin group | |
117 | configurations, one per function. Each subnode has the group name and the muxing | |
118 | function used. | |
119 | ||
120 | Be aware the Marvell Berlin datasheets use the keyword 'mode' for what is called | |
121 | a 'function' in the pin-controller subsystem. | |
122 | ||
123 | Required subnode-properties: | |
124 | - groups: a list of strings describing the group names. | |
125 | - function: a string describing the function used to mux the groups. | |
126 | ||
55a4b07a SH |
127 | Example: |
128 | ||
129 | chip: chip-control@ea0000 { | |
7c90a5a9 | 130 | compatible = "marvell,berlin2-chip-ctrl", "simple-mfd", "syscon"; |
55a4b07a SH |
131 | #clock-cells = <1>; |
132 | reg = <0xea0000 0x400>; | |
133 | clocks = <&refclk>, <&externaldev 0>; | |
134 | clock-names = "refclk", "video_ext0"; | |
e9673a75 AT |
135 | |
136 | spi1_pmux: spi1-pmux { | |
137 | groups = "G0"; | |
138 | function = "spi1"; | |
139 | }; | |
140 | }; | |
141 | ||
142 | sysctrl: system-controller@d000 { | |
7c90a5a9 | 143 | compatible = "marvell,berlin2-system-ctrl", "simple-mfd", "syscon"; |
e9673a75 AT |
144 | reg = <0xd000 0x100>; |
145 | ||
146 | uart0_pmux: uart0-pmux { | |
147 | groups = "GSM4"; | |
148 | function = "uart0"; | |
149 | }; | |
150 | ||
151 | uart1_pmux: uart1-pmux { | |
152 | groups = "GSM5"; | |
153 | function = "uart1"; | |
154 | }; | |
155 | ||
156 | uart2_pmux: uart2-pmux { | |
157 | groups = "GSM3"; | |
158 | function = "uart2"; | |
159 | }; | |
55a4b07a | 160 | }; |