Marvell Berlin SoC Family Device Tree Bindings
---------------------------------------------------------------

Boards with a SoC of the Marvell Berlin family, e.g. Armada 1500
shall have the following properties:

* Required root node properties:
compatible: must contain "marvell,berlin"

In addition, the above compatible shall be extended with the specific
SoC and board used. Currently known SoC compatibles are:
    "marvell,berlin2"      for Marvell Armada 1500 (BG2, 88DE3100),
    "marvell,berlin2cd"    for Marvell Armada 1500-mini (BG2CD, 88DE3005)
    "marvell,berlin2ct"    for Marvell Armada ? (BG2CT, 88DE????)
    "marvell,berlin2q"     for Marvell Armada 1500-pro (BG2Q, 88DE3114)
    "marvell,berlin3"      for Marvell Armada ? (BG3, 88DE????)

* Example:

/ {
	model = "Sony NSZ-GS7";
	compatible = "sony,nsz-gs7", "marvell,berlin2", "marvell,berlin";

	...
}

* Marvell Berlin2 chip control binding

Marvell Berlin SoCs have a chip control register set providing several
individual registers dealing with pinmux, padmux, clock, reset, and secondary
CPU boot address. Unfortunately, the individual registers are spread among the
chip control registers, so there should be a single DT node only providing the
different functions which are described below.

Required properties:
- compatible: shall be one of
	"marvell,berlin2-chip-ctrl" for BG2
	"marvell,berlin2cd-chip-ctrl" for BG2CD
	"marvell,berlin2q-chip-ctrl" for BG2Q
- reg: address and length of following register sets for
  BG2/BG2CD: chip control register set
  BG2Q: chip control register set and cpu pll registers

* Marvell Berlin2 system control binding

Marvell Berlin SoCs have a system control register set providing several
individual registers dealing with pinmux, padmux, and reset.

Required properties:
- compatible: should be one of
	"marvell,berlin2-system-ctrl" for BG2
	"marvell,berlin2cd-system-ctrl" for BG2CD
	"marvell,berlin2q-system-ctrl" for BG2Q
- reg: address and length of the system control register set

* Clock provider binding

As clock related registers are spread among the chip control registers, the
chip control node also provides the clocks. Marvell Berlin2 (BG2, BG2CD, BG2Q)
SoCs share the same IP for PLLs and clocks, with some minor differences in
features and register layout.

Required properties:
- #clock-cells: shall be set to 1
- clocks: clock specifiers referencing the core clock input clocks
- clock-names: array of strings describing the input clock specifiers above.
    Allowed clock-names for the reference clocks are
      "refclk" for the SoCs osciallator input on all SoCs,
    and SoC-specific input clocks for
      BG2/BG2CD: "video_ext0" for the external video clock input

Clocks provided by core clocks shall be referenced by a clock specifier
indexing one of the provided clocks. Refer to dt-bindings/clock/berlin<soc>.h
for the corresponding index mapping.

* Pin controller binding

Pin control registers are part of both register sets, chip control and system
control. The pins controlled are organized in groups, so no actual pin
information is needed.

A pin-controller node should contain subnodes representing the pin group
configurations, one per function. Each subnode has the group name and the muxing
function used.

Be aware the Marvell Berlin datasheets use the keyword 'mode' for what is called
a 'function' in the pin-controller subsystem.

Required subnode-properties:
- groups: a list of strings describing the group names.
- function: a string describing the function used to mux the groups.

Example:

chip: chip-control@ea0000 {
	compatible = "marvell,berlin2-chip-ctrl";
	#clock-cells = <1>;
	reg = <0xea0000 0x400>;
	clocks = <&refclk>, <&externaldev 0>;
	clock-names = "refclk", "video_ext0";

	spi1_pmux: spi1-pmux {
		groups = "G0";
		function = "spi1";
	};
};

sysctrl: system-controller@d000 {
	compatible = "marvell,berlin2-system-ctrl";
	reg = <0xd000 0x100>;

	uart0_pmux: uart0-pmux {
		groups = "GSM4";
		function = "uart0";
	};

	uart1_pmux: uart1-pmux {
		groups = "GSM5";
		function = "uart1";
	};

	uart2_pmux: uart2-pmux {
		groups = "GSM3";
		function = "uart2";
	};
};
