162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/timer/arm,sp804.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: ARM sp804 Dual Timers 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Haojian Zhuang <haojian.zhuang@linaro.org> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: |+ 1362306a36Sopenharmony_ci The Arm SP804 IP implements two independent timers, configurable for 1462306a36Sopenharmony_ci 16 or 32 bit operation and capable of running in one-shot, periodic, or 1562306a36Sopenharmony_ci free-running mode. The input clock is shared, but can be gated and prescaled 1662306a36Sopenharmony_ci independently for each timer. 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci There is a viriant of Arm SP804: Hisilicon 64-bit SP804 timer. Some Hisilicon 1962306a36Sopenharmony_ci SoCs, such as Hi1212, should use the dedicated compatible: "hisilicon,sp804". 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci# Need a custom select here or 'arm,primecell' will match on lots of nodes 2262306a36Sopenharmony_ciselect: 2362306a36Sopenharmony_ci properties: 2462306a36Sopenharmony_ci compatible: 2562306a36Sopenharmony_ci contains: 2662306a36Sopenharmony_ci enum: 2762306a36Sopenharmony_ci - arm,sp804 2862306a36Sopenharmony_ci - hisilicon,sp804 2962306a36Sopenharmony_ci required: 3062306a36Sopenharmony_ci - compatible 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ciproperties: 3362306a36Sopenharmony_ci compatible: 3462306a36Sopenharmony_ci items: 3562306a36Sopenharmony_ci - enum: 3662306a36Sopenharmony_ci - arm,sp804 3762306a36Sopenharmony_ci - hisilicon,sp804 3862306a36Sopenharmony_ci - const: arm,primecell 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci interrupts: 4162306a36Sopenharmony_ci description: | 4262306a36Sopenharmony_ci If two interrupts are listed, those are the interrupts for timer 4362306a36Sopenharmony_ci 1 and 2, respectively. If there is only a single interrupt, it is 4462306a36Sopenharmony_ci either a combined interrupt or the sole interrupt of one timer, as 4562306a36Sopenharmony_ci specified by the "arm,sp804-has-irq" property. 4662306a36Sopenharmony_ci minItems: 1 4762306a36Sopenharmony_ci maxItems: 2 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci reg: 5062306a36Sopenharmony_ci description: The physical base address of the SP804 IP. 5162306a36Sopenharmony_ci maxItems: 1 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci clocks: 5462306a36Sopenharmony_ci description: | 5562306a36Sopenharmony_ci Clocks driving the dual timer hardware. This list should 5662306a36Sopenharmony_ci be 1 or 3 clocks. With 3 clocks, the order is timer0 clock, timer1 5762306a36Sopenharmony_ci clock, apb_pclk. A single clock can also be specified if the same 5862306a36Sopenharmony_ci clock is used for all clock inputs. 5962306a36Sopenharmony_ci oneOf: 6062306a36Sopenharmony_ci - items: 6162306a36Sopenharmony_ci - description: clock for timer 1 6262306a36Sopenharmony_ci - description: clock for timer 2 6362306a36Sopenharmony_ci - description: bus clock 6462306a36Sopenharmony_ci - items: 6562306a36Sopenharmony_ci - description: unified clock for both timers and the bus 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci clock-names: true 6862306a36Sopenharmony_ci # The original binding did not specify any clock names, and there is no 6962306a36Sopenharmony_ci # consistent naming used in the existing DTs. The primecell binding 7062306a36Sopenharmony_ci # requires the "apb_pclk" name, so we need this property. 7162306a36Sopenharmony_ci # Use "timer0clk", "timer1clk", "apb_pclk" for new DTs. 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci arm,sp804-has-irq: 7462306a36Sopenharmony_ci description: If only one interrupt line is connected to the interrupt 7562306a36Sopenharmony_ci controller, this property specifies which timer is connected to this 7662306a36Sopenharmony_ci line. 7762306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 7862306a36Sopenharmony_ci minimum: 1 7962306a36Sopenharmony_ci maximum: 2 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_cirequired: 8262306a36Sopenharmony_ci - compatible 8362306a36Sopenharmony_ci - interrupts 8462306a36Sopenharmony_ci - reg 8562306a36Sopenharmony_ci - clocks 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ciadditionalProperties: false 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ciexamples: 9062306a36Sopenharmony_ci - | 9162306a36Sopenharmony_ci timer0: timer@fc800000 { 9262306a36Sopenharmony_ci compatible = "arm,sp804", "arm,primecell"; 9362306a36Sopenharmony_ci reg = <0xfc800000 0x1000>; 9462306a36Sopenharmony_ci interrupts = <0 0 4>, <0 1 4>; 9562306a36Sopenharmony_ci clocks = <&timclk1>, <&timclk2>, <&pclk>; 9662306a36Sopenharmony_ci clock-names = "timer1", "timer2", "apb_pclk"; 9762306a36Sopenharmony_ci }; 98