| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/interrupt-controller/apple,aic.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: Apple Interrupt Controller
- maintainers:
- - Hector Martin <marcan@marcan.st>
- description: |
- The Apple Interrupt Controller is a simple interrupt controller present on
- Apple ARM SoC platforms, including various iPhone and iPad devices and the
- "Apple Silicon" Macs.
- It provides the following features:
- - Level-triggered hardware IRQs wired to SoC blocks
- - Single mask bit per IRQ
- - Per-IRQ affinity setting
- - Automatic masking on event delivery (auto-ack)
- - Software triggering (ORed with hw line)
- - 2 per-CPU IPIs (meant as "self" and "other", but they are interchangeable
- if not symmetric)
- - Automatic prioritization (single event/ack register per CPU, lower IRQs =
- higher priority)
- - Automatic masking on ack
- - Default "this CPU" register view and explicit per-CPU views
- This device also represents the FIQ interrupt sources on platforms using AIC,
- which do not go through a discrete interrupt controller.
- IPIs may be performed via MMIO registers on all variants of AIC. Starting
- from A11, system registers may also be used for "fast" IPIs. Starting from
- M1, even faster IPIs within the same cluster may be achieved by writing to
- a "local" fast IPI register as opposed to using the "global" fast IPI
- register.
- allOf:
- - $ref: /schemas/interrupt-controller.yaml#
- properties:
- compatible:
- items:
- - enum:
- - apple,s5l8960x-aic
- - apple,t7000-aic
- - apple,s8000-aic
- - apple,t8010-aic
- - apple,t8015-aic
- - apple,t8103-aic
- - const: apple,aic
- interrupt-controller: true
- '#interrupt-cells':
- const: 3
- description: |
- The 1st cell contains the interrupt type:
- - 0: Hardware IRQ
- - 1: FIQ
- The 2nd cell contains the interrupt number.
- - HW IRQs: interrupt number
- - FIQs:
- - 0: physical HV timer
- - 1: virtual HV timer
- - 2: physical guest timer
- - 3: virtual guest timer
- - 4: 'efficient' CPU PMU
- - 5: 'performance' CPU PMU
- The 3rd cell contains the interrupt flags. This is normally
- IRQ_TYPE_LEVEL_HIGH (4).
- reg:
- description: |
- Specifies base physical address and size of the AIC registers.
- maxItems: 1
- power-domains:
- maxItems: 1
- affinities:
- type: object
- additionalProperties: false
- description:
- FIQ affinity can be expressed as a single "affinities" node,
- containing a set of sub-nodes, one per FIQ with a non-default
- affinity.
- patternProperties:
- "^.+-affinity$":
- type: object
- additionalProperties: false
- properties:
- apple,fiq-index:
- description:
- The interrupt number specified as a FIQ, and for which
- the affinity is not the default.
- $ref: /schemas/types.yaml#/definitions/uint32
- maximum: 5
- cpus:
- description:
- Should be a list of phandles to CPU nodes (as described in
- Documentation/devicetree/bindings/arm/cpus.yaml).
- required:
- - apple,fiq-index
- - cpus
- required:
- - compatible
- - '#interrupt-cells'
- - interrupt-controller
- - reg
- additionalProperties: false
- examples:
- - |
- soc {
- #address-cells = <2>;
- #size-cells = <2>;
- aic: interrupt-controller@23b100000 {
- compatible = "apple,t8103-aic", "apple,aic";
- #interrupt-cells = <3>;
- interrupt-controller;
- reg = <0x2 0x3b100000 0x0 0x8000>;
- };
- };
|