| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- # SPDX-License-Identifier: GPL-2.0
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/timer/arm,arch_timer.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: ARM architected timer
- maintainers:
- - Marc Zyngier <marc.zyngier@arm.com>
- - Mark Rutland <mark.rutland@arm.com>
- description: |+
- ARM cores may have a per-core architected timer, which provides per-cpu timers,
- or a memory mapped architected timer, which provides up to 8 frames with a
- physical and optional virtual timer per frame.
- The per-core architected timer is attached to a GIC to deliver its
- per-processor interrupts via PPIs. The memory mapped timer is attached to a GIC
- to deliver its interrupts via SPIs.
- properties:
- compatible:
- oneOf:
- - items:
- - const: arm,cortex-a15-timer
- - const: arm,armv7-timer
- - items:
- - enum:
- - arm,armv7-timer
- - arm,armv8-timer
- - items:
- - const: arm,armv8-timer
- - const: arm,armv7-timer
- interrupts:
- minItems: 1
- items:
- - description: secure timer irq
- - description: non-secure timer irq
- - description: virtual timer irq
- - description: hypervisor timer irq
- - description: hypervisor virtual timer irq
- interrupt-names:
- oneOf:
- - minItems: 2
- items:
- - const: phys
- - const: virt
- - const: hyp-phys
- - const: hyp-virt
- - minItems: 3
- items:
- - const: sec-phys
- - const: phys
- - const: virt
- - const: hyp-phys
- - const: hyp-virt
- clock-frequency:
- description: The frequency of the main counter, in Hz. Should be present
- only where necessary to work around broken firmware which does not configure
- CNTFRQ on all CPUs to a uniform correct value. Use of this property is
- strongly discouraged; fix your firmware unless absolutely impossible.
- always-on:
- type: boolean
- description: If present, the timer is powered through an always-on power
- domain, therefore it never loses context.
- allwinner,erratum-unknown1:
- type: boolean
- description: Indicates the presence of an erratum found in Allwinner SoCs,
- where reading certain values from the counter is unreliable. This also
- affects writes to the tval register, due to the implicit counter read.
- fsl,erratum-a008585:
- type: boolean
- description: Indicates the presence of QorIQ erratum A-008585, which says
- that reading the counter is unreliable unless the same value is returned
- by back-to-back reads. This also affects writes to the tval register, due
- to the implicit counter read.
- hisilicon,erratum-161010101:
- type: boolean
- description: Indicates the presence of Hisilicon erratum 161010101, which
- says that reading the counters is unreliable in some cases, and reads may
- return a value 32 beyond the correct value. This also affects writes to
- the tval registers, due to the implicit counter read.
- arm,cpu-registers-not-fw-configured:
- type: boolean
- description: Firmware does not initialize any of the generic timer CPU
- registers, which contain their architecturally-defined reset values. Only
- supported for 32-bit systems which follow the ARMv7 architected reset
- values.
- arm,no-tick-in-suspend:
- type: boolean
- description: The main counter does not tick when the system is in
- low-power system suspend on some SoCs. This behavior does not match the
- Architecture Reference Manual's specification that the system counter "must
- be implemented in an always-on power domain."
- required:
- - compatible
- additionalProperties: false
- oneOf:
- - required:
- - interrupts
- - required:
- - interrupts-extended
- examples:
- - |
- timer {
- compatible = "arm,cortex-a15-timer",
- "arm,armv7-timer";
- interrupts = <1 13 0xf08>,
- <1 14 0xf08>,
- <1 11 0xf08>,
- <1 10 0xf08>;
- clock-frequency = <100000000>;
- };
- ...
|