18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci%YAML 1.2 38c2ecf20Sopenharmony_ci--- 48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/timer/arm,sp804.yaml# 58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cititle: ARM sp804 Dual Timers 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_cimaintainers: 108c2ecf20Sopenharmony_ci - Haojian Zhuang <haojian.zhuang@linaro.org> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cidescription: |+ 138c2ecf20Sopenharmony_ci The Arm SP804 IP implements two independent timers, configurable for 148c2ecf20Sopenharmony_ci 16 or 32 bit operation and capable of running in one-shot, periodic, or 158c2ecf20Sopenharmony_ci free-running mode. The input clock is shared, but can be gated and prescaled 168c2ecf20Sopenharmony_ci independently for each timer. 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci There is a viriant of Arm SP804: Hisilicon 64-bit SP804 timer. Some Hisilicon 198c2ecf20Sopenharmony_ci SoCs, such as Hi1212, should use the dedicated compatible: "hisilicon,sp804". 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci# Need a custom select here or 'arm,primecell' will match on lots of nodes 228c2ecf20Sopenharmony_ciselect: 238c2ecf20Sopenharmony_ci properties: 248c2ecf20Sopenharmony_ci compatible: 258c2ecf20Sopenharmony_ci contains: 268c2ecf20Sopenharmony_ci oneOf: 278c2ecf20Sopenharmony_ci - const: arm,sp804 288c2ecf20Sopenharmony_ci - const: hisilicon,sp804 298c2ecf20Sopenharmony_ci required: 308c2ecf20Sopenharmony_ci - compatible 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ciproperties: 338c2ecf20Sopenharmony_ci compatible: 348c2ecf20Sopenharmony_ci items: 358c2ecf20Sopenharmony_ci - enum: 368c2ecf20Sopenharmony_ci - arm,sp804 378c2ecf20Sopenharmony_ci - hisilicon,sp804 388c2ecf20Sopenharmony_ci - const: arm,primecell 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci interrupts: 418c2ecf20Sopenharmony_ci description: | 428c2ecf20Sopenharmony_ci If two interrupts are listed, those are the interrupts for timer 438c2ecf20Sopenharmony_ci 1 and 2, respectively. If there is only a single interrupt, it is 448c2ecf20Sopenharmony_ci either a combined interrupt or the sole interrupt of one timer, as 458c2ecf20Sopenharmony_ci specified by the "arm,sp804-has-irq" property. 468c2ecf20Sopenharmony_ci minItems: 1 478c2ecf20Sopenharmony_ci maxItems: 2 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci reg: 508c2ecf20Sopenharmony_ci description: The physical base address of the SP804 IP. 518c2ecf20Sopenharmony_ci maxItems: 1 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci clocks: 548c2ecf20Sopenharmony_ci description: | 558c2ecf20Sopenharmony_ci Clocks driving the dual timer hardware. This list should 568c2ecf20Sopenharmony_ci be 1 or 3 clocks. With 3 clocks, the order is timer0 clock, timer1 578c2ecf20Sopenharmony_ci clock, apb_pclk. A single clock can also be specified if the same 588c2ecf20Sopenharmony_ci clock is used for all clock inputs. 598c2ecf20Sopenharmony_ci oneOf: 608c2ecf20Sopenharmony_ci - items: 618c2ecf20Sopenharmony_ci - description: clock for timer 1 628c2ecf20Sopenharmony_ci - description: clock for timer 2 638c2ecf20Sopenharmony_ci - description: bus clock 648c2ecf20Sopenharmony_ci - items: 658c2ecf20Sopenharmony_ci - description: unified clock for both timers and the bus 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci clock-names: true 688c2ecf20Sopenharmony_ci # The original binding did not specify any clock names, and there is no 698c2ecf20Sopenharmony_ci # consistent naming used in the existing DTs. The primecell binding 708c2ecf20Sopenharmony_ci # requires the "apb_pclk" name, so we need this property. 718c2ecf20Sopenharmony_ci # Use "timer0clk", "timer1clk", "apb_pclk" for new DTs. 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci arm,sp804-has-irq: 748c2ecf20Sopenharmony_ci description: If only one interrupt line is connected to the interrupt 758c2ecf20Sopenharmony_ci controller, this property specifies which timer is connected to this 768c2ecf20Sopenharmony_ci line. 778c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 788c2ecf20Sopenharmony_ci minimum: 1 798c2ecf20Sopenharmony_ci maximum: 2 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_cirequired: 828c2ecf20Sopenharmony_ci - compatible 838c2ecf20Sopenharmony_ci - interrupts 848c2ecf20Sopenharmony_ci - reg 858c2ecf20Sopenharmony_ci - clocks 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ciadditionalProperties: false 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ciexamples: 908c2ecf20Sopenharmony_ci - | 918c2ecf20Sopenharmony_ci timer0: timer@fc800000 { 928c2ecf20Sopenharmony_ci compatible = "arm,sp804", "arm,primecell"; 938c2ecf20Sopenharmony_ci reg = <0xfc800000 0x1000>; 948c2ecf20Sopenharmony_ci interrupts = <0 0 4>, <0 1 4>; 958c2ecf20Sopenharmony_ci clocks = <&timclk1>, <&timclk2>, <&pclk>; 968c2ecf20Sopenharmony_ci clock-names = "timer1", "timer2", "apb_pclk"; 978c2ecf20Sopenharmony_ci }; 98