162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/timer/arm,arch_timer.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: ARM architected timer 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Marc Zyngier <marc.zyngier@arm.com> 1162306a36Sopenharmony_ci - Mark Rutland <mark.rutland@arm.com> 1262306a36Sopenharmony_cidescription: |+ 1362306a36Sopenharmony_ci ARM cores may have a per-core architected timer, which provides per-cpu timers, 1462306a36Sopenharmony_ci or a memory mapped architected timer, which provides up to 8 frames with a 1562306a36Sopenharmony_ci physical and optional virtual timer per frame. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci The per-core architected timer is attached to a GIC to deliver its 1862306a36Sopenharmony_ci per-processor interrupts via PPIs. The memory mapped timer is attached to a GIC 1962306a36Sopenharmony_ci to deliver its interrupts via SPIs. 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciproperties: 2262306a36Sopenharmony_ci compatible: 2362306a36Sopenharmony_ci oneOf: 2462306a36Sopenharmony_ci - items: 2562306a36Sopenharmony_ci - const: arm,cortex-a15-timer 2662306a36Sopenharmony_ci - const: arm,armv7-timer 2762306a36Sopenharmony_ci - items: 2862306a36Sopenharmony_ci - enum: 2962306a36Sopenharmony_ci - arm,armv7-timer 3062306a36Sopenharmony_ci - arm,armv8-timer 3162306a36Sopenharmony_ci - items: 3262306a36Sopenharmony_ci - const: arm,armv8-timer 3362306a36Sopenharmony_ci - const: arm,armv7-timer 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci interrupts: 3662306a36Sopenharmony_ci minItems: 1 3762306a36Sopenharmony_ci items: 3862306a36Sopenharmony_ci - description: secure timer irq 3962306a36Sopenharmony_ci - description: non-secure timer irq 4062306a36Sopenharmony_ci - description: virtual timer irq 4162306a36Sopenharmony_ci - description: hypervisor timer irq 4262306a36Sopenharmony_ci - description: hypervisor virtual timer irq 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci interrupt-names: 4562306a36Sopenharmony_ci oneOf: 4662306a36Sopenharmony_ci - minItems: 2 4762306a36Sopenharmony_ci items: 4862306a36Sopenharmony_ci - const: phys 4962306a36Sopenharmony_ci - const: virt 5062306a36Sopenharmony_ci - const: hyp-phys 5162306a36Sopenharmony_ci - const: hyp-virt 5262306a36Sopenharmony_ci - minItems: 3 5362306a36Sopenharmony_ci items: 5462306a36Sopenharmony_ci - const: sec-phys 5562306a36Sopenharmony_ci - const: phys 5662306a36Sopenharmony_ci - const: virt 5762306a36Sopenharmony_ci - const: hyp-phys 5862306a36Sopenharmony_ci - const: hyp-virt 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci clock-frequency: 6162306a36Sopenharmony_ci description: The frequency of the main counter, in Hz. Should be present 6262306a36Sopenharmony_ci only where necessary to work around broken firmware which does not configure 6362306a36Sopenharmony_ci CNTFRQ on all CPUs to a uniform correct value. Use of this property is 6462306a36Sopenharmony_ci strongly discouraged; fix your firmware unless absolutely impossible. 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci always-on: 6762306a36Sopenharmony_ci type: boolean 6862306a36Sopenharmony_ci description: If present, the timer is powered through an always-on power 6962306a36Sopenharmony_ci domain, therefore it never loses context. 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci allwinner,erratum-unknown1: 7262306a36Sopenharmony_ci type: boolean 7362306a36Sopenharmony_ci description: Indicates the presence of an erratum found in Allwinner SoCs, 7462306a36Sopenharmony_ci where reading certain values from the counter is unreliable. This also 7562306a36Sopenharmony_ci affects writes to the tval register, due to the implicit counter read. 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci fsl,erratum-a008585: 7862306a36Sopenharmony_ci type: boolean 7962306a36Sopenharmony_ci description: Indicates the presence of QorIQ erratum A-008585, which says 8062306a36Sopenharmony_ci that reading the counter is unreliable unless the same value is returned 8162306a36Sopenharmony_ci by back-to-back reads. This also affects writes to the tval register, due 8262306a36Sopenharmony_ci to the implicit counter read. 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ci hisilicon,erratum-161010101: 8562306a36Sopenharmony_ci type: boolean 8662306a36Sopenharmony_ci description: Indicates the presence of Hisilicon erratum 161010101, which 8762306a36Sopenharmony_ci says that reading the counters is unreliable in some cases, and reads may 8862306a36Sopenharmony_ci return a value 32 beyond the correct value. This also affects writes to 8962306a36Sopenharmony_ci the tval registers, due to the implicit counter read. 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci arm,cpu-registers-not-fw-configured: 9262306a36Sopenharmony_ci type: boolean 9362306a36Sopenharmony_ci description: Firmware does not initialize any of the generic timer CPU 9462306a36Sopenharmony_ci registers, which contain their architecturally-defined reset values. Only 9562306a36Sopenharmony_ci supported for 32-bit systems which follow the ARMv7 architected reset 9662306a36Sopenharmony_ci values. 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci arm,no-tick-in-suspend: 9962306a36Sopenharmony_ci type: boolean 10062306a36Sopenharmony_ci description: The main counter does not tick when the system is in 10162306a36Sopenharmony_ci low-power system suspend on some SoCs. This behavior does not match the 10262306a36Sopenharmony_ci Architecture Reference Manual's specification that the system counter "must 10362306a36Sopenharmony_ci be implemented in an always-on power domain." 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_cirequired: 10662306a36Sopenharmony_ci - compatible 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ciadditionalProperties: false 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_cioneOf: 11162306a36Sopenharmony_ci - required: 11262306a36Sopenharmony_ci - interrupts 11362306a36Sopenharmony_ci - required: 11462306a36Sopenharmony_ci - interrupts-extended 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ciexamples: 11762306a36Sopenharmony_ci - | 11862306a36Sopenharmony_ci timer { 11962306a36Sopenharmony_ci compatible = "arm,cortex-a15-timer", 12062306a36Sopenharmony_ci "arm,armv7-timer"; 12162306a36Sopenharmony_ci interrupts = <1 13 0xf08>, 12262306a36Sopenharmony_ci <1 14 0xf08>, 12362306a36Sopenharmony_ci <1 11 0xf08>, 12462306a36Sopenharmony_ci <1 10 0xf08>; 12562306a36Sopenharmony_ci clock-frequency = <100000000>; 12662306a36Sopenharmony_ci }; 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci... 129