109 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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";
 | |
| 
 | |
|   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>
 | |
| 
 | |
| - 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>;
 | |
| 			#clock-cells = <1>;
 | |
| 			#reset-cells = <1>;
 | |
| 		};
 | |
| 
 | |
| 		uart0: serial@42000000 {
 | |
| 			compatible = "ns16550a";
 | |
| 			reg = <0x42000000 0x100>;
 | |
| 			resets = <&syscon GEMINI_RESET_UART>;
 | |
| 			clocks = <&syscon GEMINI_CLK_UART>;
 | |
| 			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 */
 | |
| 			resets = <&syscon GEMINI_RESET_TIMER>;
 | |
| 			/* APB clock or RTC clock */
 | |
| 			clocks = <&syscon GEMINI_CLK_APB>,
 | |
| 				 <&syscon GEMINI_CLK_RTC>;
 | |
| 			clock-names = "PCLK", "EXTCLK";
 | |
| 			syscon = <&syscon>;
 | |
| 		};
 | |
| 
 | |
| 		intcon: interrupt-controller@48000000 {
 | |
| 			compatible = "cortina,gemini-interrupt-controller";
 | |
| 			reg = <0x48000000 0x1000>;
 | |
| 			resets = <&syscon GEMINI_RESET_INTCON0>;
 | |
| 			interrupt-controller;
 | |
| 			#interrupt-cells = <2>;
 | |
| 		};
 | |
| 	};
 | |
| };
 |