74 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
 | |
| %YAML 1.2
 | |
| ---
 | |
| $id: http://devicetree.org/schemas/interrupt-controller/riscv,cpu-intc.yaml#
 | |
| $schema: http://devicetree.org/meta-schemas/core.yaml#
 | |
| 
 | |
| title: RISC-V Hart-Level Interrupt Controller (HLIC)
 | |
| 
 | |
| description:
 | |
|   RISC-V cores include Control Status Registers (CSRs) which are local to
 | |
|   each CPU core (HART in RISC-V terminology) and can be read or written by
 | |
|   software. Some of these CSRs are used to control local interrupts connected
 | |
|   to the core. Every interrupt is ultimately routed through a hart's HLIC
 | |
|   before it interrupts that hart.
 | |
| 
 | |
|   The RISC-V supervisor ISA manual specifies three interrupt sources that are
 | |
|   attached to every HLIC namely software interrupts, the timer interrupt, and
 | |
|   external interrupts. Software interrupts are used to send IPIs between
 | |
|   cores.  The timer interrupt comes from an architecturally mandated real-
 | |
|   time timer that is controlled via Supervisor Binary Interface (SBI) calls
 | |
|   and CSR reads. External interrupts connect all other device interrupts to
 | |
|   the HLIC, which are routed via the platform-level interrupt controller
 | |
|   (PLIC).
 | |
| 
 | |
|   All RISC-V systems that conform to the supervisor ISA specification are
 | |
|   required to have a HLIC with these three interrupt sources present.  Since
 | |
|   the interrupt map is defined by the ISA it's not listed in the HLIC's device
 | |
|   tree entry, though external interrupt controllers (like the PLIC, for
 | |
|   example) will need to define how their interrupts map to the relevant HLICs.
 | |
|   This means a PLIC interrupt property will typically list the HLICs for all
 | |
|   present HARTs in the system.
 | |
| 
 | |
| maintainers:
 | |
|   - Palmer Dabbelt <palmer@dabbelt.com>
 | |
|   - Paul Walmsley <paul.walmsley@sifive.com>
 | |
| 
 | |
| properties:
 | |
|   compatible:
 | |
|     oneOf:
 | |
|       - items:
 | |
|           - const: andestech,cpu-intc
 | |
|           - const: riscv,cpu-intc
 | |
|       - const: riscv,cpu-intc
 | |
| 
 | |
|   interrupt-controller: true
 | |
| 
 | |
|   '#interrupt-cells':
 | |
|     const: 1
 | |
|     description: |
 | |
|       The interrupt sources are defined by the RISC-V supervisor ISA manual,
 | |
|       with only the following three interrupts being defined for
 | |
|       supervisor mode:
 | |
|         - Source 1 is the supervisor software interrupt, which can be sent by
 | |
|           an SBI call and is reserved for use by software.
 | |
|         - Source 5 is the supervisor timer interrupt, which can be configured
 | |
|           by SBI calls and implements a one-shot timer.
 | |
|         - Source 9 is the supervisor external interrupt, which chains to all
 | |
|           other device interrupts.      
 | |
| 
 | |
| required:
 | |
|   - compatible
 | |
|   - '#interrupt-cells'
 | |
|   - interrupt-controller
 | |
| 
 | |
| additionalProperties: false
 | |
| 
 | |
| examples:
 | |
|   - |
 | |
|     interrupt-controller {
 | |
|         #interrupt-cells = <1>;
 | |
|         compatible = "riscv,cpu-intc";
 | |
|         interrupt-controller;
 | |
|     };    
 |