126 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 | |
| %YAML 1.2
 | |
| ---
 | |
| $id: http://devicetree.org/schemas/interrupt-controller/loongson,liointc.yaml#
 | |
| $schema: http://devicetree.org/meta-schemas/core.yaml#
 | |
| 
 | |
| title: Loongson Local I/O Interrupt Controller
 | |
| 
 | |
| maintainers:
 | |
|   - Jiaxun Yang <jiaxun.yang@flygoat.com>
 | |
| 
 | |
| description: |
 | |
|   This interrupt controller is found in the Loongson-3 family of chips and
 | |
|   Loongson-2K series chips, as the primary package interrupt controller which
 | |
|   can route local I/O interrupt to interrupt lines of cores.
 | |
|   Be aware of the following points.
 | |
|   1.The Loongson-2K0500 is a single core CPU;
 | |
|   2.The Loongson-2K0500/2K1000 has 64 device interrupt sources as inputs, so we
 | |
|     need to define two nodes in dts{i} to describe the "0-31" and "32-61" interrupt
 | |
|     sources respectively.  
 | |
| 
 | |
| allOf:
 | |
|   - $ref: /schemas/interrupt-controller.yaml#
 | |
| 
 | |
| properties:
 | |
|   compatible:
 | |
|     enum:
 | |
|       - loongson,liointc-1.0
 | |
|       - loongson,liointc-1.0a
 | |
|       - loongson,liointc-2.0
 | |
| 
 | |
|   reg:
 | |
|     minItems: 1
 | |
|     maxItems: 3
 | |
| 
 | |
|   reg-names:
 | |
|     items:
 | |
|       - const: main
 | |
|       - const: isr0
 | |
|       - const: isr1
 | |
|     minItems: 2
 | |
| 
 | |
|   interrupt-controller: true
 | |
| 
 | |
|   interrupts:
 | |
|     description:
 | |
|       Interrupt source of the CPU interrupts.
 | |
|     minItems: 1
 | |
|     maxItems: 4
 | |
| 
 | |
|   interrupt-names:
 | |
|     description: List of names for the parent interrupts.
 | |
|     items:
 | |
|       pattern: int[0-3]
 | |
|     minItems: 1
 | |
|     maxItems: 4
 | |
| 
 | |
|   '#interrupt-cells':
 | |
|     const: 2
 | |
| 
 | |
|   loongson,parent_int_map:
 | |
|     description: |
 | |
|       This property points how the children interrupts will be mapped into CPU
 | |
|       interrupt lines. Each cell refers to a parent interrupt line from 0 to 3
 | |
|       and each bit in the cell refers to a child interrupt from 0 to 31.
 | |
|       If a CPU interrupt line didn't connect with liointc, then keep its
 | |
|       cell with zero.      
 | |
|     $ref: /schemas/types.yaml#/definitions/uint32-array
 | |
|     minItems: 4
 | |
|     maxItems: 4
 | |
| 
 | |
| required:
 | |
|   - compatible
 | |
|   - reg
 | |
|   - interrupts
 | |
|   - interrupt-names
 | |
|   - interrupt-controller
 | |
|   - '#interrupt-cells'
 | |
|   - loongson,parent_int_map
 | |
| 
 | |
| 
 | |
| unevaluatedProperties: false
 | |
| 
 | |
| if:
 | |
|   properties:
 | |
|     compatible:
 | |
|       contains:
 | |
|         enum:
 | |
|           - loongson,liointc-2.0
 | |
| 
 | |
| then:
 | |
|   properties:
 | |
|     reg:
 | |
|       minItems: 2
 | |
|       maxItems: 3
 | |
| 
 | |
|   required:
 | |
|     - reg-names
 | |
| 
 | |
| else:
 | |
|   properties:
 | |
|     reg:
 | |
|       maxItems: 1
 | |
| 
 | |
| examples:
 | |
|   - |
 | |
|     iointc: interrupt-controller@3ff01400 {
 | |
|       compatible = "loongson,liointc-1.0";
 | |
|       reg = <0x3ff01400 0x64>;
 | |
| 
 | |
|       interrupt-controller;
 | |
|       #interrupt-cells = <2>;
 | |
| 
 | |
|       interrupt-parent = <&cpuintc>;
 | |
|       interrupts = <2>, <3>;
 | |
|       interrupt-names = "int0", "int1";
 | |
| 
 | |
|       loongson,parent_int_map = <0xf0ffffff>, /* int0 */
 | |
|                                 <0x0f000000>, /* int1 */
 | |
|                                 <0x00000000>, /* int2 */
 | |
|                                 <0x00000000>; /* int3 */
 | |
| 
 | |
|     };    
 | |
| 
 | |
| ...
 |