]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ARM: dts: add top-level DT bindings for Cortina Gemini
authorLinus Walleij <linus.walleij@linaro.org>
Sat, 21 Jan 2017 12:38:22 +0000 (13:38 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Sun, 12 Mar 2017 11:17:53 +0000 (12:17 +0100)
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: Rob Herring <robh@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Documentation/devicetree/bindings/arm/gemini.txt [new file with mode: 0644]

diff --git a/Documentation/devicetree/bindings/arm/gemini.txt b/Documentation/devicetree/bindings/arm/gemini.txt
new file mode 100644 (file)
index 0000000..0041eb0
--- /dev/null
@@ -0,0 +1,86 @@
+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>;
+               };
+       };
+};