xref: /freebsd/sys/contrib/device-tree/Bindings/interrupt-controller/thead,c900-aclint-sswi.yaml (revision 833e5d42ab135b0238e61c5b3c19b8619677cbfa)
15f62a964SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
25f62a964SEmmanuel Vadot%YAML 1.2
35f62a964SEmmanuel Vadot---
45f62a964SEmmanuel Vadot$id: http://devicetree.org/schemas/interrupt-controller/thead,c900-aclint-sswi.yaml#
55f62a964SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
65f62a964SEmmanuel Vadot
7*833e5d42SEmmanuel Vadottitle: ACLINT Supervisor-level Software Interrupt Device
85f62a964SEmmanuel Vadot
95f62a964SEmmanuel Vadotmaintainers:
105f62a964SEmmanuel Vadot  - Inochi Amaoto <inochiama@outlook.com>
115f62a964SEmmanuel Vadot
125f62a964SEmmanuel Vadotdescription:
13*833e5d42SEmmanuel Vadot  The SSWI device is a part of the ACLINT device. It provides
14*833e5d42SEmmanuel Vadot  supervisor-level IPI functionality for a set of HARTs on a supported
15*833e5d42SEmmanuel Vadot  platforms. It provides a register to set an IPI (SETSSIP) for each
16*833e5d42SEmmanuel Vadot  HART connected to the SSWI device. See draft specification
17*833e5d42SEmmanuel Vadot  https://github.com/riscvarchive/riscv-aclint
18*833e5d42SEmmanuel Vadot
19*833e5d42SEmmanuel Vadot  Following variants of the SSWI ACLINT supported, using dedicated
20*833e5d42SEmmanuel Vadot  compatible string
21*833e5d42SEmmanuel Vadot  - THEAD C900
22*833e5d42SEmmanuel Vadot  - MIPS P8700
235f62a964SEmmanuel Vadot
245f62a964SEmmanuel Vadotproperties:
255f62a964SEmmanuel Vadot  compatible:
26*833e5d42SEmmanuel Vadot    oneOf:
27*833e5d42SEmmanuel Vadot      - items:
285f62a964SEmmanuel Vadot          - enum:
295f62a964SEmmanuel Vadot              - sophgo,sg2044-aclint-sswi
305f62a964SEmmanuel Vadot          - const: thead,c900-aclint-sswi
31*833e5d42SEmmanuel Vadot      - items:
32*833e5d42SEmmanuel Vadot          - const: mips,p8700-aclint-sswi
335f62a964SEmmanuel Vadot
345f62a964SEmmanuel Vadot  reg:
355f62a964SEmmanuel Vadot    maxItems: 1
365f62a964SEmmanuel Vadot
375f62a964SEmmanuel Vadot  "#interrupt-cells":
385f62a964SEmmanuel Vadot    const: 0
395f62a964SEmmanuel Vadot
405f62a964SEmmanuel Vadot  interrupt-controller: true
415f62a964SEmmanuel Vadot
425f62a964SEmmanuel Vadot  interrupts-extended:
435f62a964SEmmanuel Vadot    minItems: 1
445f62a964SEmmanuel Vadot    maxItems: 4095
455f62a964SEmmanuel Vadot
46*833e5d42SEmmanuel Vadot  riscv,hart-indexes:
47*833e5d42SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
48*833e5d42SEmmanuel Vadot    minItems: 1
49*833e5d42SEmmanuel Vadot    maxItems: 4095
50*833e5d42SEmmanuel Vadot    description:
51*833e5d42SEmmanuel Vadot      A list of hart indexes that APLIC should use to address each hart
52*833e5d42SEmmanuel Vadot      that is mentioned in the "interrupts-extended"
53*833e5d42SEmmanuel Vadot
545f62a964SEmmanuel VadotadditionalProperties: false
555f62a964SEmmanuel Vadot
565f62a964SEmmanuel Vadotrequired:
575f62a964SEmmanuel Vadot  - compatible
585f62a964SEmmanuel Vadot  - reg
595f62a964SEmmanuel Vadot  - "#interrupt-cells"
605f62a964SEmmanuel Vadot  - interrupt-controller
615f62a964SEmmanuel Vadot  - interrupts-extended
625f62a964SEmmanuel Vadot
63*833e5d42SEmmanuel VadotallOf:
64*833e5d42SEmmanuel Vadot  - if:
65*833e5d42SEmmanuel Vadot      properties:
66*833e5d42SEmmanuel Vadot        compatible:
67*833e5d42SEmmanuel Vadot          contains:
68*833e5d42SEmmanuel Vadot            const: mips,p8700-aclint-sswi
69*833e5d42SEmmanuel Vadot    then:
70*833e5d42SEmmanuel Vadot      required:
71*833e5d42SEmmanuel Vadot        - riscv,hart-indexes
72*833e5d42SEmmanuel Vadot    else:
73*833e5d42SEmmanuel Vadot      properties:
74*833e5d42SEmmanuel Vadot        riscv,hart-indexes: false
75*833e5d42SEmmanuel Vadot
765f62a964SEmmanuel Vadotexamples:
775f62a964SEmmanuel Vadot  - |
78*833e5d42SEmmanuel Vadot    //Example 1
795f62a964SEmmanuel Vadot    interrupt-controller@94000000 {
805f62a964SEmmanuel Vadot      compatible = "sophgo,sg2044-aclint-sswi", "thead,c900-aclint-sswi";
815f62a964SEmmanuel Vadot      reg = <0x94000000 0x00004000>;
825f62a964SEmmanuel Vadot      #interrupt-cells = <0>;
835f62a964SEmmanuel Vadot      interrupt-controller;
845f62a964SEmmanuel Vadot      interrupts-extended = <&cpu1intc 1>,
855f62a964SEmmanuel Vadot                            <&cpu2intc 1>,
865f62a964SEmmanuel Vadot                            <&cpu3intc 1>,
875f62a964SEmmanuel Vadot                            <&cpu4intc 1>;
885f62a964SEmmanuel Vadot    };
89*833e5d42SEmmanuel Vadot
90*833e5d42SEmmanuel Vadot  - |
91*833e5d42SEmmanuel Vadot    //Example 2
92*833e5d42SEmmanuel Vadot    interrupt-controller@94000000 {
93*833e5d42SEmmanuel Vadot      compatible = "mips,p8700-aclint-sswi";
94*833e5d42SEmmanuel Vadot      reg = <0x94000000 0x00004000>;
95*833e5d42SEmmanuel Vadot      #interrupt-cells = <0>;
96*833e5d42SEmmanuel Vadot      interrupt-controller;
97*833e5d42SEmmanuel Vadot      interrupts-extended = <&cpu1intc 1>,
98*833e5d42SEmmanuel Vadot                            <&cpu2intc 1>,
99*833e5d42SEmmanuel Vadot                            <&cpu3intc 1>,
100*833e5d42SEmmanuel Vadot                            <&cpu4intc 1>;
101*833e5d42SEmmanuel Vadot      riscv,hart-indexes = <0x0 0x1 0x10 0x11>;
102*833e5d42SEmmanuel Vadot    };
103*833e5d42SEmmanuel Vadot
1045f62a964SEmmanuel Vadot...
105