mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-21 06:50:25 +00:00
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;
|
||
|
};
|