Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: interrupt-controller: Add MIPS P8700 aclint-sswi

Add ACLINT-SSWI variant for the MIPS P8700 SoC. This CPU has a SSWI device
compliant with the RISC-V draft spec (see [1]).

CPU indexes on this platform are not continuous, instead it uses bit-fields
to encode hart,core,cluster numbers, thus the DT property
"riscv,hart-indexes" is mandatory for it.

Signed-off-by: Vladimir Kondratiev <vladimir.kondratiev@mobileye.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/all/20250612143911.3224046-4-vladimir.kondratiev@mobileye.com
Link: https://github.com/riscvarchive/riscv-aclint [1]


authored by

Vladimir Kondratiev and committed by
Thomas Gleixner
ed651979 81f335e1

+55 -9
+55 -9
Documentation/devicetree/bindings/interrupt-controller/thead,c900-aclint-sswi.yaml
··· 4 4 $id: http://devicetree.org/schemas/interrupt-controller/thead,c900-aclint-sswi.yaml# 5 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 6 6 7 - title: T-HEAD C900 ACLINT Supervisor-level Software Interrupt Device 7 + title: ACLINT Supervisor-level Software Interrupt Device 8 8 9 9 maintainers: 10 10 - Inochi Amaoto <inochiama@outlook.com> 11 11 12 12 description: 13 - The SSWI device is a part of the THEAD ACLINT device. It provides 14 - supervisor-level IPI functionality for a set of HARTs on a THEAD 15 - platform. It provides a register to set an IPI (SETSSIP) for each 16 - HART connected to the SSWI device. 13 + The SSWI device is a part of the ACLINT device. It provides 14 + supervisor-level IPI functionality for a set of HARTs on a supported 15 + platforms. It provides a register to set an IPI (SETSSIP) for each 16 + HART connected to the SSWI device. See draft specification 17 + https://github.com/riscvarchive/riscv-aclint 18 + 19 + Following variants of the SSWI ACLINT supported, using dedicated 20 + compatible string 21 + - THEAD C900 22 + - MIPS P8700 17 23 18 24 properties: 19 25 compatible: 20 - items: 21 - - enum: 22 - - sophgo,sg2044-aclint-sswi 23 - - const: thead,c900-aclint-sswi 26 + oneOf: 27 + - items: 28 + - enum: 29 + - sophgo,sg2044-aclint-sswi 30 + - const: thead,c900-aclint-sswi 31 + - items: 32 + - const: mips,p8700-aclint-sswi 24 33 25 34 reg: 26 35 maxItems: 1 ··· 43 34 minItems: 1 44 35 maxItems: 4095 45 36 37 + riscv,hart-indexes: 38 + $ref: /schemas/types.yaml#/definitions/uint32-array 39 + minItems: 1 40 + maxItems: 4095 41 + description: 42 + A list of hart indexes that APLIC should use to address each hart 43 + that is mentioned in the "interrupts-extended" 44 + 46 45 additionalProperties: false 47 46 48 47 required: ··· 60 43 - interrupt-controller 61 44 - interrupts-extended 62 45 46 + allOf: 47 + - if: 48 + properties: 49 + compatible: 50 + contains: 51 + const: mips,p8700-aclint-sswi 52 + then: 53 + required: 54 + - riscv,hart-indexes 55 + else: 56 + properties: 57 + riscv,hart-indexes: false 58 + 63 59 examples: 64 60 - | 61 + //Example 1 65 62 interrupt-controller@94000000 { 66 63 compatible = "sophgo,sg2044-aclint-sswi", "thead,c900-aclint-sswi"; 67 64 reg = <0x94000000 0x00004000>; ··· 86 55 <&cpu3intc 1>, 87 56 <&cpu4intc 1>; 88 57 }; 58 + 59 + - | 60 + //Example 2 61 + interrupt-controller@94000000 { 62 + compatible = "mips,p8700-aclint-sswi"; 63 + reg = <0x94000000 0x00004000>; 64 + #interrupt-cells = <0>; 65 + interrupt-controller; 66 + interrupts-extended = <&cpu1intc 1>, 67 + <&cpu2intc 1>, 68 + <&cpu3intc 1>, 69 + <&cpu4intc 1>; 70 + riscv,hart-indexes = <0x0 0x1 0x10 0x11>; 71 + }; 72 + 89 73 ...