Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/interrupt-controller/apple,aic.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: Apple Interrupt Controller
0008 
0009 maintainers:
0010   - Hector Martin <marcan@marcan.st>
0011 
0012 description: |
0013   The Apple Interrupt Controller is a simple interrupt controller present on
0014   Apple ARM SoC platforms, including various iPhone and iPad devices and the
0015   "Apple Silicon" Macs.
0016 
0017   It provides the following features:
0018 
0019   - Level-triggered hardware IRQs wired to SoC blocks
0020     - Single mask bit per IRQ
0021     - Per-IRQ affinity setting
0022     - Automatic masking on event delivery (auto-ack)
0023     - Software triggering (ORed with hw line)
0024   - 2 per-CPU IPIs (meant as "self" and "other", but they are interchangeable
0025     if not symmetric)
0026   - Automatic prioritization (single event/ack register per CPU, lower IRQs =
0027     higher priority)
0028   - Automatic masking on ack
0029   - Default "this CPU" register view and explicit per-CPU views
0030 
0031   This device also represents the FIQ interrupt sources on platforms using AIC,
0032   which do not go through a discrete interrupt controller.
0033 
0034 allOf:
0035   - $ref: /schemas/interrupt-controller.yaml#
0036 
0037 properties:
0038   compatible:
0039     items:
0040       - const: apple,t8103-aic
0041       - const: apple,aic
0042 
0043   interrupt-controller: true
0044 
0045   '#interrupt-cells':
0046     const: 3
0047     description: |
0048       The 1st cell contains the interrupt type:
0049         - 0: Hardware IRQ
0050         - 1: FIQ
0051 
0052       The 2nd cell contains the interrupt number.
0053         - HW IRQs: interrupt number
0054         - FIQs:
0055           - 0: physical HV timer
0056           - 1: virtual HV timer
0057           - 2: physical guest timer
0058           - 3: virtual guest timer
0059           - 4: 'efficient' CPU PMU
0060           - 5: 'performance' CPU PMU
0061 
0062       The 3rd cell contains the interrupt flags. This is normally
0063       IRQ_TYPE_LEVEL_HIGH (4).
0064 
0065   reg:
0066     description: |
0067       Specifies base physical address and size of the AIC registers.
0068     maxItems: 1
0069 
0070   power-domains:
0071     maxItems: 1
0072 
0073   affinities:
0074     type: object
0075     additionalProperties: false
0076     description:
0077       FIQ affinity can be expressed as a single "affinities" node,
0078       containing a set of sub-nodes, one per FIQ with a non-default
0079       affinity.
0080     patternProperties:
0081       "^.+-affinity$":
0082         type: object
0083         additionalProperties: false
0084         properties:
0085           apple,fiq-index:
0086             description:
0087               The interrupt number specified as a FIQ, and for which
0088               the affinity is not the default.
0089             $ref: /schemas/types.yaml#/definitions/uint32
0090             maximum: 5
0091 
0092           cpus:
0093             $ref: /schemas/types.yaml#/definitions/phandle-array
0094             description:
0095               Should be a list of phandles to CPU nodes (as described in
0096               Documentation/devicetree/bindings/arm/cpus.yaml).
0097 
0098         required:
0099           - apple,fiq-index
0100           - cpus
0101 
0102 required:
0103   - compatible
0104   - '#interrupt-cells'
0105   - interrupt-controller
0106   - reg
0107 
0108 additionalProperties: false
0109 
0110 examples:
0111   - |
0112     soc {
0113         #address-cells = <2>;
0114         #size-cells = <2>;
0115 
0116         aic: interrupt-controller@23b100000 {
0117             compatible = "apple,t8103-aic", "apple,aic";
0118             #interrupt-cells = <3>;
0119             interrupt-controller;
0120             reg = <0x2 0x3b100000 0x0 0x8000>;
0121         };
0122     };