-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dt-bindings: interrupt-controller: Convert mti,gic to DT schema
Modern device tree bindings are supposed to be created as YAML-files in accordance with DT schema. This commit replaces MIPS GIC legacy bare text binding with YAML file. As before the binding file states that the corresponding dts node is supposed to be compatible with MIPS Global Interrupt Controller indicated by the "mti,gic" compatible string and to provide a mandatory interrupt-controller and '#interrupt-cells' properties. There might be optional registers memory range, "mti,reserved-cpu-vectors" and "mti,reserved-ipi-vectors" properties specified. MIPS GIC also includes a free-running global timer, per-CPU count/compare timers, and a watchdog. Since currently the GIC Timer is only supported the DT schema expects an IRQ and clock-phandler charged timer sub-node with "mti,mips-gic-timer" compatible string. Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
- Loading branch information
Serge Semin
authored and
Thomas Bogendoerfer
committed
Jul 21, 2020
1 parent
29cf195
commit e4fd970
Showing
2 changed files
with
148 additions
and
67 deletions.
There are no files selected for viewing
67 changes: 0 additions & 67 deletions
67
Documentation/devicetree/bindings/interrupt-controller/mips-gic.txt
This file was deleted.
Oops, something went wrong.
148 changes: 148 additions & 0 deletions
148
Documentation/devicetree/bindings/interrupt-controller/mti,gic.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
# SPDX-License-Identifier: GPL-2.0-only | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/interrupt-controller/mti,gic.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: MIPS Global Interrupt Controller | ||
|
||
maintainers: | ||
- Paul Burton <paulburton@kernel.org> | ||
- Thomas Bogendoerfer <tsbogend@alpha.franken.de> | ||
|
||
description: | | ||
The MIPS GIC routes external interrupts to individual VPEs and IRQ pins. | ||
It also supports local (per-processor) interrupts and software-generated | ||
interrupts which can be used as IPIs. The GIC also includes a free-running | ||
global timer, per-CPU count/compare timers, and a watchdog. | ||
properties: | ||
compatible: | ||
const: mti,gic | ||
|
||
"#interrupt-cells": | ||
const: 3 | ||
description: | | ||
The 1st cell is the type of interrupt: local or shared defined in the | ||
file 'dt-bindings/interrupt-controller/mips-gic.h'. The 2nd cell is the | ||
GIC interrupt number. The 3d cell encodes the interrupt flags setting up | ||
the IRQ trigger modes, which are defined in the file | ||
'dt-bindings/interrupt-controller/irq.h'. | ||
reg: | ||
description: | | ||
Base address and length of the GIC registers space. If not present, | ||
the base address reported by the hardware GCR_GIC_BASE will be used. | ||
maxItems: 1 | ||
|
||
interrupt-controller: true | ||
|
||
mti,reserved-cpu-vectors: | ||
description: | | ||
Specifies the list of CPU interrupt vectors to which the GIC may not | ||
route interrupts. This property is ignored if the CPU is started in EIC | ||
mode. | ||
allOf: | ||
- $ref: /schemas/types.yaml#definitions/uint32-array | ||
- minItems: 1 | ||
maxItems: 6 | ||
uniqueItems: true | ||
items: | ||
minimum: 2 | ||
maximum: 7 | ||
|
||
mti,reserved-ipi-vectors: | ||
description: | | ||
Specifies the range of GIC interrupts that are reserved for IPIs. | ||
It accepts two values: the 1st is the starting interrupt and the 2nd is | ||
the size of the reserved range. If not specified, the driver will | ||
allocate the last (2 * number of VPEs in the system). | ||
allOf: | ||
- $ref: /schemas/types.yaml#definitions/uint32-array | ||
- items: | ||
- minimum: 0 | ||
maximum: 254 | ||
- minimum: 2 | ||
maximum: 254 | ||
|
||
timer: | ||
type: object | ||
description: | | ||
MIPS GIC includes a free-running global timer, per-CPU count/compare | ||
timers, and a watchdog. Currently only the GIC Timer is supported. | ||
properties: | ||
compatible: | ||
const: mti,gic-timer | ||
|
||
interrupts: | ||
description: | | ||
Interrupt for the GIC local timer, so normally it's suppose to be of | ||
<GIC_LOCAL X IRQ_TYPE_NONE> format. | ||
maxItems: 1 | ||
|
||
clocks: | ||
maxItems: 1 | ||
|
||
clock-frequency: true | ||
|
||
required: | ||
- compatible | ||
- interrupts | ||
|
||
oneOf: | ||
- required: | ||
- clocks | ||
- required: | ||
- clock-frequency | ||
|
||
additionalProperties: false | ||
|
||
unevaluatedProperties: false | ||
|
||
required: | ||
- compatible | ||
- "#interrupt-cells" | ||
- interrupt-controller | ||
|
||
examples: | ||
- | | ||
#include <dt-bindings/interrupt-controller/mips-gic.h> | ||
#include <dt-bindings/interrupt-controller/irq.h> | ||
interrupt-controller@1bdc0000 { | ||
compatible = "mti,gic"; | ||
reg = <0x1bdc0000 0x20000>; | ||
interrupt-controller; | ||
#interrupt-cells = <3>; | ||
mti,reserved-cpu-vectors = <7>; | ||
mti,reserved-ipi-vectors = <40 8>; | ||
timer { | ||
compatible = "mti,gic-timer"; | ||
interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>; | ||
clock-frequency = <50000000>; | ||
}; | ||
}; | ||
- | | ||
#include <dt-bindings/interrupt-controller/mips-gic.h> | ||
#include <dt-bindings/interrupt-controller/irq.h> | ||
interrupt-controller@1bdc0000 { | ||
compatible = "mti,gic"; | ||
reg = <0x1bdc0000 0x20000>; | ||
interrupt-controller; | ||
#interrupt-cells = <3>; | ||
timer { | ||
compatible = "mti,gic-timer"; | ||
interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>; | ||
clocks = <&cpu_pll>; | ||
}; | ||
}; | ||
- | | ||
interrupt-controller { | ||
compatible = "mti,gic"; | ||
interrupt-controller; | ||
#interrupt-cells = <3>; | ||
}; | ||
... |