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

Commit db515368 authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'gemini-dts-base' of...

Merge tag 'gemini-dts-base' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-nomadik into next/dt

Base patches for Gemini device trees:

- Bindings for the platform.

- Device trees for everything that was available as board
  files previously.

- New device tree for my target system SQ201.

- Device tree bindings for the watchdog. The driver was merged
  to the watchdog subsystem so this was probably just missed
  by the maintainer, and it is ACKed by Rob Herring.

* tag 'gemini-dts-base' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-nomadik

:
  ARM: dts: add watchdog to the Gemini
  watchdog: add DT bindings for Cortina Gemini
  ARM: dts: add a devicetree for Wiliboard WBD-222
  ARM: dts: add a devicetree for Wiliboard WBD-111
  ARM: dts: add a devicetree for Teltonika RUT1xx
  ARM: dts: add a devicetree for Raidsonic NAS IB-4220-B
  ARM: dts: add device tree for Gemini SoC and SQ201
  ARM: dts: add top-level DT bindings for Cortina Gemini

Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents 4495c08e 6ae4d211
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>;
		};
	};
};
+17 −0
Original line number Diff line number Diff line
Cortina Systems Gemini SoC Watchdog

Required properties:
- compatible : must be "cortina,gemini-watchdog"
- reg : shall contain base register location and length
- interrupts : shall contain the interrupt for the watchdog

Optional properties:
- timeout-sec : the default watchdog timeout in seconds.

Example:

watchdog@41000000 {
	compatible = "cortina,gemini-watchdog";
	reg = <0x41000000 0x1000>;
	interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
};
+6 −0
Original line number Diff line number Diff line
@@ -173,6 +173,12 @@ dtb-$(CONFIG_ARCH_EXYNOS5) += \
	exynos5440-sd5v1.dtb \
	exynos5440-ssdk5440.dtb \
	exynos5800-peach-pi.dtb
dtb-$(CONFIG_ARCH_GEMINI) += \
	gemini-nas4220b.dtb \
	gemini-rut1xx.dtb \
	gemini-sq201.dtb \
	gemini-wbd111.dtb \
	gemini-wbd222.dtb
dtb-$(CONFIG_ARCH_HI3xxx) += \
	hi3620-hi4511.dtb
dtb-$(CONFIG_ARCH_HIGHBANK) += \
+102 −0
Original line number Diff line number Diff line
/*
 * Device Tree file for the Gemini-based Raidsonic NAS IB-4220-B
 */

/dts-v1/;

#include "gemini.dtsi"
#include <dt-bindings/input/input.h>

/ {
	model = "Raidsonic NAS IB-4220-B";
	compatible = "raidsonic,ib-4220-b", "cortina,gemini";
	#address-cells = <1>;
	#size-cells = <1>;

	memory { /* 128 MB */
		device_type = "memory";
		reg = <0x00000000 0x8000000>;
	};

	chosen {
		bootargs = "console=ttyS0,19200n8";
		stdout-path = &uart0;
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		button@29 {
			debounce_interval = <50>;
			wakeup-source;
			linux,code = <KEY_SETUP>;
			label = "Backup button";
			gpios = <&gpio1 29 GPIO_ACTIVE_LOW>;
		};
		button@31 {
			debounce_interval = <50>;
			wakeup-source;
			linux,code = <KEY_RESTART>;
			label = "Softreset button";
			gpios = <&gpio1 31 GPIO_ACTIVE_LOW>;
		};
	};

	leds {
		compatible = "gpio-leds";
		led@28 {
			label = "nas4220b:orange:hdd";
			gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};
		led@30 {
			label = "nas4220b:green:os";
			gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>;
			default-state = "on";
			linux,default-trigger = "heartbeat";
		};
	};

	soc {
		flash@30000000 {
			status = "okay";
			/* 16MB of flash */
			reg = <0x30000000 0x01000000>;

			partition@0 {
				label = "RedBoot";
				reg = <0x00000000 0x00020000>;
				read-only;
			};
			partition@20000 {
				label = "Kernel";
				reg = <0x00020000 0x00300000>;
			};
			partition@320000 {
				label = "Ramdisk";
				reg = <0x00320000 0x00600000>;
			};
			partition@920000 {
				label = "Application";
				reg = <0x00920000 0x00600000>;
			};
			partition@f20000 {
				label = "VCTL";
				reg = <0x00f20000 0x00020000>;
				read-only;
			};
			partition@f40000 {
				label = "CurConf";
				reg = <0x00f40000 0x000a0000>;
				read-only;
			};
			partition@fe0000 {
				label = "FIS directory";
				reg = <0x00fe0000 0x00020000>;
				read-only;
			};
		};
	};
};
+65 −0
Original line number Diff line number Diff line
/*
 * Device Tree file for Teltonika RUT1xx
 */

/dts-v1/;

#include "gemini.dtsi"
#include <dt-bindings/input/input.h>

/ {
	model = "Teltonika RUT1xx";
	compatible = "teltonika,rut1xx", "cortina,gemini";
	#address-cells = <1>;
	#size-cells = <1>;

	memory { /* 128 MB */
		device_type = "memory";
		reg = <0x00000000 0x8000000>;
	};

	chosen {
		bootargs = "console=ttyS0,115200n8";
		stdout-path = &uart0;
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		button@28 {
			debounce_interval = <50>;
			wakeup-source;
			linux,code = <KEY_SETUP>;
			label = "Reset to defaults";
			gpios = <&gpio1 28 GPIO_ACTIVE_LOW>;
		};
	};

	leds {
		compatible = "gpio-leds";
		led@7 {
			/* FIXME: add the LED color */
			label = "rut1xx::gsm";
			gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};
		led@31 {
			/* FIXME: add the LED color */
			label = "rut1xx::power";
			gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
			default-state = "off";
			linux,default-trigger = "heartbeat";
		};
	};

	soc {
		flash@30000000 {
			status = "okay";
			/* 8MB of flash */
			reg = <0x30000000 0x00800000>;
			/* TODO: add flash partitions here */
		};
	};
};
Loading