303 lines
6.4 KiB
YAML
303 lines
6.4 KiB
YAML
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||
|
%YAML 1.2
|
||
|
---
|
||
|
$id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml#
|
||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||
|
|
||
|
title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree bindings
|
||
|
|
||
|
description: |
|
||
|
For a description of the TCU hardware and drivers, have a look at
|
||
|
Documentation/mips/ingenic-tcu.rst.
|
||
|
|
||
|
maintainers:
|
||
|
- Paul Cercueil <paul@crapouillou.net>
|
||
|
|
||
|
select:
|
||
|
properties:
|
||
|
compatible:
|
||
|
contains:
|
||
|
enum:
|
||
|
- ingenic,jz4740-tcu
|
||
|
- ingenic,jz4725b-tcu
|
||
|
- ingenic,jz4760-tcu
|
||
|
- ingenic,jz4760b-tcu
|
||
|
- ingenic,jz4770-tcu
|
||
|
- ingenic,jz4780-tcu
|
||
|
- ingenic,x1000-tcu
|
||
|
required:
|
||
|
- compatible
|
||
|
|
||
|
properties:
|
||
|
$nodename:
|
||
|
pattern: "^timer@[0-9a-f]+$"
|
||
|
|
||
|
"#address-cells":
|
||
|
const: 1
|
||
|
|
||
|
"#size-cells":
|
||
|
const: 1
|
||
|
|
||
|
"#clock-cells":
|
||
|
const: 1
|
||
|
|
||
|
"#interrupt-cells":
|
||
|
const: 1
|
||
|
|
||
|
interrupt-controller: true
|
||
|
|
||
|
ranges: true
|
||
|
|
||
|
compatible:
|
||
|
oneOf:
|
||
|
- items:
|
||
|
- enum:
|
||
|
- ingenic,jz4740-tcu
|
||
|
- ingenic,jz4725b-tcu
|
||
|
- ingenic,jz4760-tcu
|
||
|
- ingenic,x1000-tcu
|
||
|
- const: simple-mfd
|
||
|
- items:
|
||
|
- enum:
|
||
|
- ingenic,jz4780-tcu
|
||
|
- ingenic,jz4770-tcu
|
||
|
- ingenic,jz4760b-tcu
|
||
|
- const: ingenic,jz4760-tcu
|
||
|
- const: simple-mfd
|
||
|
|
||
|
reg:
|
||
|
maxItems: 1
|
||
|
|
||
|
clocks:
|
||
|
items:
|
||
|
- description: RTC clock
|
||
|
- description: EXT clock
|
||
|
- description: PCLK clock
|
||
|
- description: TCU clock
|
||
|
minItems: 3
|
||
|
|
||
|
clock-names:
|
||
|
items:
|
||
|
- const: rtc
|
||
|
- const: ext
|
||
|
- const: pclk
|
||
|
- const: tcu
|
||
|
minItems: 3
|
||
|
|
||
|
interrupts:
|
||
|
items:
|
||
|
- description: TCU0 interrupt
|
||
|
- description: TCU1 interrupt
|
||
|
- description: TCU2 interrupt
|
||
|
minItems: 1
|
||
|
|
||
|
assigned-clocks:
|
||
|
minItems: 1
|
||
|
maxItems: 8
|
||
|
|
||
|
assigned-clock-parents:
|
||
|
minItems: 1
|
||
|
maxItems: 8
|
||
|
|
||
|
assigned-clock-rates:
|
||
|
minItems: 1
|
||
|
maxItems: 8
|
||
|
|
||
|
ingenic,pwm-channels-mask:
|
||
|
description: Bitmask of TCU channels reserved for PWM use.
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
minimum: 0x00
|
||
|
maximum: 0xff
|
||
|
default: 0xfc
|
||
|
|
||
|
patternProperties:
|
||
|
"^watchdog@[a-f0-9]+$":
|
||
|
type: object
|
||
|
$ref: /schemas/watchdog/watchdog.yaml#
|
||
|
unevaluatedProperties: false
|
||
|
|
||
|
properties:
|
||
|
compatible:
|
||
|
oneOf:
|
||
|
- enum:
|
||
|
- ingenic,jz4740-watchdog
|
||
|
- ingenic,jz4780-watchdog
|
||
|
- items:
|
||
|
- enum:
|
||
|
- ingenic,jz4770-watchdog
|
||
|
- ingenic,jz4760b-watchdog
|
||
|
- ingenic,jz4760-watchdog
|
||
|
- ingenic,jz4725b-watchdog
|
||
|
- const: ingenic,jz4740-watchdog
|
||
|
|
||
|
reg:
|
||
|
maxItems: 1
|
||
|
|
||
|
clocks:
|
||
|
maxItems: 1
|
||
|
|
||
|
clock-names:
|
||
|
const: wdt
|
||
|
|
||
|
required:
|
||
|
- compatible
|
||
|
- reg
|
||
|
- clocks
|
||
|
- clock-names
|
||
|
|
||
|
"^pwm@[a-f0-9]+$":
|
||
|
type: object
|
||
|
$ref: /schemas/pwm/pwm.yaml#
|
||
|
unevaluatedProperties: false
|
||
|
|
||
|
properties:
|
||
|
compatible:
|
||
|
oneOf:
|
||
|
- enum:
|
||
|
- ingenic,jz4740-pwm
|
||
|
- ingenic,jz4725b-pwm
|
||
|
- ingenic,x1000-pwm
|
||
|
- items:
|
||
|
- enum:
|
||
|
- ingenic,jz4760-pwm
|
||
|
- ingenic,jz4760b-pwm
|
||
|
- ingenic,jz4770-pwm
|
||
|
- ingenic,jz4780-pwm
|
||
|
- const: ingenic,jz4740-pwm
|
||
|
|
||
|
reg:
|
||
|
maxItems: 1
|
||
|
|
||
|
clocks:
|
||
|
minItems: 6
|
||
|
maxItems: 8
|
||
|
|
||
|
clock-names:
|
||
|
items:
|
||
|
- const: timer0
|
||
|
- const: timer1
|
||
|
- const: timer2
|
||
|
- const: timer3
|
||
|
- const: timer4
|
||
|
- const: timer5
|
||
|
- const: timer6
|
||
|
- const: timer7
|
||
|
minItems: 6
|
||
|
|
||
|
required:
|
||
|
- compatible
|
||
|
- reg
|
||
|
- clocks
|
||
|
- clock-names
|
||
|
|
||
|
"^timer@[a-f0-9]+$":
|
||
|
type: object
|
||
|
properties:
|
||
|
compatible:
|
||
|
oneOf:
|
||
|
- enum:
|
||
|
- ingenic,jz4725b-ost
|
||
|
- ingenic,jz4760b-ost
|
||
|
- items:
|
||
|
- const: ingenic,jz4760-ost
|
||
|
- const: ingenic,jz4725b-ost
|
||
|
- items:
|
||
|
- enum:
|
||
|
- ingenic,jz4780-ost
|
||
|
- ingenic,jz4770-ost
|
||
|
- const: ingenic,jz4760b-ost
|
||
|
|
||
|
reg:
|
||
|
maxItems: 1
|
||
|
|
||
|
clocks:
|
||
|
maxItems: 1
|
||
|
|
||
|
clock-names:
|
||
|
const: ost
|
||
|
|
||
|
interrupts:
|
||
|
maxItems: 1
|
||
|
|
||
|
required:
|
||
|
- compatible
|
||
|
- reg
|
||
|
- clocks
|
||
|
- clock-names
|
||
|
- interrupts
|
||
|
|
||
|
additionalProperties: false
|
||
|
|
||
|
required:
|
||
|
- "#clock-cells"
|
||
|
- "#interrupt-cells"
|
||
|
- interrupt-controller
|
||
|
- compatible
|
||
|
- reg
|
||
|
- clocks
|
||
|
- clock-names
|
||
|
- interrupts
|
||
|
|
||
|
additionalProperties: false
|
||
|
|
||
|
examples:
|
||
|
- |
|
||
|
#include <dt-bindings/clock/ingenic,jz4770-cgu.h>
|
||
|
#include <dt-bindings/clock/ingenic,tcu.h>
|
||
|
tcu: timer@10002000 {
|
||
|
compatible = "ingenic,jz4770-tcu", "ingenic,jz4760-tcu", "simple-mfd";
|
||
|
reg = <0x10002000 0x1000>;
|
||
|
#address-cells = <1>;
|
||
|
#size-cells = <1>;
|
||
|
ranges = <0x0 0x10002000 0x1000>;
|
||
|
|
||
|
#clock-cells = <1>;
|
||
|
|
||
|
clocks = <&cgu JZ4770_CLK_RTC>,
|
||
|
<&cgu JZ4770_CLK_EXT>,
|
||
|
<&cgu JZ4770_CLK_PCLK>;
|
||
|
clock-names = "rtc", "ext", "pclk";
|
||
|
|
||
|
interrupt-controller;
|
||
|
#interrupt-cells = <1>;
|
||
|
|
||
|
interrupt-parent = <&intc>;
|
||
|
interrupts = <27 26 25>;
|
||
|
|
||
|
watchdog: watchdog@0 {
|
||
|
compatible = "ingenic,jz4770-watchdog", "ingenic,jz4740-watchdog";
|
||
|
reg = <0x0 0xc>;
|
||
|
|
||
|
clocks = <&tcu TCU_CLK_WDT>;
|
||
|
clock-names = "wdt";
|
||
|
};
|
||
|
|
||
|
pwm: pwm@40 {
|
||
|
compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm";
|
||
|
reg = <0x40 0x80>;
|
||
|
|
||
|
#pwm-cells = <3>;
|
||
|
|
||
|
clocks = <&tcu TCU_CLK_TIMER0>,
|
||
|
<&tcu TCU_CLK_TIMER1>,
|
||
|
<&tcu TCU_CLK_TIMER2>,
|
||
|
<&tcu TCU_CLK_TIMER3>,
|
||
|
<&tcu TCU_CLK_TIMER4>,
|
||
|
<&tcu TCU_CLK_TIMER5>,
|
||
|
<&tcu TCU_CLK_TIMER6>,
|
||
|
<&tcu TCU_CLK_TIMER7>;
|
||
|
clock-names = "timer0", "timer1", "timer2", "timer3",
|
||
|
"timer4", "timer5", "timer6", "timer7";
|
||
|
};
|
||
|
|
||
|
ost: timer@e0 {
|
||
|
compatible = "ingenic,jz4770-ost", "ingenic,jz4760b-ost";
|
||
|
reg = <0xe0 0x20>;
|
||
|
|
||
|
clocks = <&tcu TCU_CLK_OST>;
|
||
|
clock-names = "ost";
|
||
|
|
||
|
interrupts = <15>;
|
||
|
};
|
||
|
};
|