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

Commit d5651944 authored by Linus Walleij's avatar Linus Walleij
Browse files

ARM: dts: add top-level DT bindings for Cortina Gemini



This adds the top level SoC bindings for Cortina systems Gemini
platforms.

Cc: Janos Laube <janos.dev@gmail.com>
Cc: Paulius Zaleckas <paulius.zaleckas@gmail.com>
Cc: Hans Ulli Kroll <ulli.kroll@googlemail.com>
Cc: Florian Fainelli <f.fainelli@gmail.com>
Cc: devicetree@vger.kernel.org
Acked-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent c1ae3cfa
Loading
Loading
Loading
Loading
+86 −0
Original line number Diff line number Diff line
Cortina systems Gemini platforms

The Gemini SoC is the project name for an ARMv4 FA525-based SoC originally
produced by Storlink Semiconductor around 2005. The company was renamed
later renamed Storm Semiconductor. The chip product name is Storlink SL3516.
It was derived from earlier products from Storm named SL3316 (Centroid) and
SL3512 (Bulverde).

Storm Semiconductor was acquired by Cortina Systems in 2008 and the SoC was
produced and used for NAS and similar usecases. In 2014 Cortina Systems was
in turn acquired by Inphi, who seem to have discontinued this product family.

Many of the IP blocks used in the SoC comes from Faraday Technology.

Required properties (in root node):
	compatible = "cortina,gemini";

Required nodes:

- soc: the SoC should be represented by a simple bus encompassing all the
  onchip devices, this is referred to as the soc bus node.

- syscon: the soc bus node must have a system controller node pointing to the
  global control registers, with the compatible string
  "cortina,gemini-syscon", "syscon";

- timer: the soc bus node must have a timer node pointing to the SoC timer
  block, with the compatible string "cortina,gemini-timer"
  See: clocksource/cortina,gemini-timer.txt

- interrupt-controller: the sob bus node must have an interrupt controller
  node pointing to the SoC interrupt controller block, with the compatible
  string "cortina,gemini-interrupt-controller"
  See interrupt-controller/cortina,gemini-interrupt-controller.txt

Example:

/ {
	model = "Foo Gemini Machine";
	compatible = "cortina,gemini";
	#address-cells = <1>;
	#size-cells = <1>;

	memory {
		device_type = "memory";
		reg = <0x00000000 0x8000000>;
	};

	soc {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;
		compatible = "simple-bus";
		interrupt-parent = <&intcon>;

		syscon: syscon@40000000 {
			compatible = "cortina,gemini-syscon", "syscon";
			reg = <0x40000000 0x1000>;
		};

		uart0: serial@42000000 {
			compatible = "ns16550a";
			reg = <0x42000000 0x100>;
			clock-frequency = <48000000>;
			interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
			reg-shift = <2>;
		};

		timer@43000000 {
			compatible = "cortina,gemini-timer";
			reg = <0x43000000 0x1000>;
			interrupt-parent = <&intcon>;
			interrupts = <14 IRQ_TYPE_EDGE_FALLING>, /* Timer 1 */
				     <15 IRQ_TYPE_EDGE_FALLING>, /* Timer 2 */
				     <16 IRQ_TYPE_EDGE_FALLING>; /* Timer 3 */
			syscon = <&syscon>;
		};

		intcon: interrupt-controller@48000000 {
			compatible = "cortina,gemini-interrupt-controller";
			reg = <0x48000000 0x1000>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};
	};
};