2017-01-21 20:38:22 +08:00
|
|
|
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";
|
|
|
|
|
2017-05-24 16:05:35 +08:00
|
|
|
Required properties on the syscon:
|
|
|
|
- reg: syscon register location and size.
|
|
|
|
- #clock-cells: should be set to <1> - the system controller is also a
|
|
|
|
clock provider.
|
|
|
|
- #reset-cells: should be set to <1> - the system controller is also a
|
|
|
|
reset line provider.
|
|
|
|
|
|
|
|
The clock sources have shorthand defines in the include file:
|
|
|
|
<dt-bindings/clock/cortina,gemini-clock.h>
|
|
|
|
|
|
|
|
The reset lines have shorthand defines in the include file:
|
|
|
|
<dt-bindings/reset/cortina,gemini-reset.h>
|
|
|
|
|
2017-01-21 20:38:22 +08:00
|
|
|
- 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>;
|
2017-05-24 16:05:35 +08:00
|
|
|
#clock-cells = <1>;
|
|
|
|
#reset-cells = <1>;
|
2017-01-21 20:38:22 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
uart0: serial@42000000 {
|
|
|
|
compatible = "ns16550a";
|
|
|
|
reg = <0x42000000 0x100>;
|
2017-05-24 16:05:35 +08:00
|
|
|
resets = <&syscon GEMINI_RESET_UART>;
|
|
|
|
clocks = <&syscon GEMINI_CLK_UART>;
|
2017-01-21 20:38:22 +08:00
|
|
|
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 */
|
2017-05-24 16:05:35 +08:00
|
|
|
resets = <&syscon GEMINI_RESET_TIMER>;
|
|
|
|
/* APB clock or RTC clock */
|
|
|
|
clocks = <&syscon GEMINI_CLK_APB>,
|
|
|
|
<&syscon GEMINI_CLK_RTC>;
|
|
|
|
clock-names = "PCLK", "EXTCLK";
|
2017-01-21 20:38:22 +08:00
|
|
|
syscon = <&syscon>;
|
|
|
|
};
|
|
|
|
|
|
|
|
intcon: interrupt-controller@48000000 {
|
|
|
|
compatible = "cortina,gemini-interrupt-controller";
|
|
|
|
reg = <0x48000000 0x1000>;
|
2017-05-24 16:05:35 +08:00
|
|
|
resets = <&syscon GEMINI_RESET_INTCON0>;
|
2017-01-21 20:38:22 +08:00
|
|
|
interrupt-controller;
|
|
|
|
#interrupt-cells = <2>;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|