# SPDX-License-Identifier: GPL-2.0 %YAML 1.2 --- $id: http://devicetree.org/schemas/timer/arm,sp804.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: ARM sp804 Dual Timers maintainers: - Haojian Zhuang <haojian.zhuang@linaro.org> description: |+ The Arm SP804 IP implements two independent timers, configurable for 16 or 32 bit operation and capable of running in one-shot, periodic, or free-running mode. The input clock is shared, but can be gated and prescaled independently for each timer. There is a viriant of Arm SP804: Hisilicon 64-bit SP804 timer. Some Hisilicon SoCs, such as Hi1212, should use the dedicated compatible: "hisilicon,sp804". # Need a custom select here or 'arm,primecell' will match on lots of nodes select: properties: compatible: contains: enum: - arm,sp804 - hisilicon,sp804 required: - compatible properties: compatible: items: - enum: - arm,sp804 - hisilicon,sp804 - const: arm,primecell interrupts: description: | If two interrupts are listed, those are the interrupts for timer 1 and 2, respectively. If there is only a single interrupt, it is either a combined interrupt or the sole interrupt of one timer, as specified by the "arm,sp804-has-irq" property. minItems: 1 maxItems: 2 reg: description: The physical base address of the SP804 IP. maxItems: 1 clocks: description: | Clocks driving the dual timer hardware. This list should be 1 or 3 clocks. With 3 clocks, the order is timer0 clock, timer1 clock, apb_pclk. A single clock can also be specified if the same clock is used for all clock inputs. oneOf: - items: - description: clock for timer 1 - description: clock for timer 2 - description: bus clock - items: - description: unified clock for both timers and the bus clock-names: true # The original binding did not specify any clock names, and there is no # consistent naming used in the existing DTs. The primecell binding # requires the "apb_pclk" name, so we need this property. # Use "timer0clk", "timer1clk", "apb_pclk" for new DTs. arm,sp804-has-irq: description: If only one interrupt line is connected to the interrupt controller, this property specifies which timer is connected to this line. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 1 maximum: 2 required: - compatible - interrupts - reg - clocks additionalProperties: false examples: - | timer0: timer@fc800000 { compatible = "arm,sp804", "arm,primecell"; reg = <0xfc800000 0x1000>; interrupts = <0 0 4>, <0 1 4>; clocks = <&timclk1>, <&timclk2>, <&pclk>; clock-names = "timer1", "timer2", "apb_pclk"; };