Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree bindings
0008 
0009 description: |
0010   For a description of the TCU hardware and drivers, have a look at
0011   Documentation/mips/ingenic-tcu.rst.
0012 
0013 maintainers:
0014   - Paul Cercueil <paul@crapouillou.net>
0015 
0016 select:
0017   properties:
0018     compatible:
0019       contains:
0020         enum:
0021           - ingenic,jz4740-tcu
0022           - ingenic,jz4725b-tcu
0023           - ingenic,jz4760-tcu
0024           - ingenic,jz4760b-tcu
0025           - ingenic,jz4770-tcu
0026           - ingenic,jz4780-tcu
0027           - ingenic,x1000-tcu
0028   required:
0029     - compatible
0030 
0031 properties:
0032   $nodename:
0033     pattern: "^timer@[0-9a-f]+$"
0034 
0035   "#address-cells":
0036     const: 1
0037 
0038   "#size-cells":
0039     const: 1
0040 
0041   "#clock-cells":
0042     const: 1
0043 
0044   "#interrupt-cells":
0045     const: 1
0046 
0047   interrupt-controller: true
0048 
0049   ranges: true
0050 
0051   compatible:
0052     oneOf:
0053       - items:
0054           - enum:
0055               - ingenic,jz4740-tcu
0056               - ingenic,jz4725b-tcu
0057               - ingenic,jz4760-tcu
0058               - ingenic,x1000-tcu
0059           - const: simple-mfd
0060       - items:
0061           - enum:
0062               - ingenic,jz4780-tcu
0063               - ingenic,jz4770-tcu
0064               - ingenic,jz4760b-tcu
0065           - const: ingenic,jz4760-tcu
0066           - const: simple-mfd
0067 
0068   reg:
0069     maxItems: 1
0070 
0071   clocks:
0072     items:
0073       - description: RTC clock
0074       - description: EXT clock
0075       - description: PCLK clock
0076       - description: TCU clock
0077     minItems: 3
0078 
0079   clock-names:
0080     items:
0081       - const: rtc
0082       - const: ext
0083       - const: pclk
0084       - const: tcu
0085     minItems: 3
0086 
0087   interrupts:
0088     items:
0089       - description: TCU0 interrupt
0090       - description: TCU1 interrupt
0091       - description: TCU2 interrupt
0092     minItems: 1
0093 
0094   assigned-clocks:
0095     minItems: 1
0096     maxItems: 8
0097 
0098   assigned-clock-parents:
0099     minItems: 1
0100     maxItems: 8
0101 
0102   assigned-clock-rates:
0103     minItems: 1
0104     maxItems: 8
0105 
0106   ingenic,pwm-channels-mask:
0107     description: Bitmask of TCU channels reserved for PWM use.
0108     $ref: /schemas/types.yaml#/definitions/uint32
0109     minimum: 0x00
0110     maximum: 0xff
0111     default: 0xfc
0112 
0113 patternProperties:
0114   "^watchdog@[a-f0-9]+$":
0115     type: object
0116     $ref: /schemas/watchdog/watchdog.yaml#
0117     properties:
0118       compatible:
0119         oneOf:
0120           - enum:
0121               - ingenic,jz4740-watchdog
0122               - ingenic,jz4780-watchdog
0123           - items:
0124               - enum:
0125                   - ingenic,jz4770-watchdog
0126                   - ingenic,jz4760b-watchdog
0127                   - ingenic,jz4760-watchdog
0128                   - ingenic,jz4725b-watchdog
0129               - const: ingenic,jz4740-watchdog
0130 
0131       reg:
0132         maxItems: 1
0133 
0134       clocks:
0135         maxItems: 1
0136 
0137       clock-names:
0138         const: wdt
0139 
0140     required:
0141       - compatible
0142       - reg
0143       - clocks
0144       - clock-names
0145 
0146   "^pwm@[a-f0-9]+$":
0147     type: object
0148     $ref: /schemas/pwm/pwm.yaml#
0149     properties:
0150       compatible:
0151         oneOf:
0152           - enum:
0153               - ingenic,jz4740-pwm
0154               - ingenic,jz4725b-pwm
0155               - ingenic,x1000-pwm
0156           - items:
0157               - enum:
0158                   - ingenic,jz4760-pwm
0159                   - ingenic,jz4760b-pwm
0160                   - ingenic,jz4770-pwm
0161                   - ingenic,jz4780-pwm
0162               - const: ingenic,jz4740-pwm
0163 
0164       reg:
0165         maxItems: 1
0166 
0167       clocks:
0168         minItems: 6
0169         maxItems: 8
0170 
0171       clock-names:
0172         items:
0173           - const: timer0
0174           - const: timer1
0175           - const: timer2
0176           - const: timer3
0177           - const: timer4
0178           - const: timer5
0179           - const: timer6
0180           - const: timer7
0181         minItems: 6
0182 
0183     required:
0184       - compatible
0185       - reg
0186       - clocks
0187       - clock-names
0188 
0189   "^timer@[a-f0-9]+$":
0190     type: object
0191     properties:
0192       compatible:
0193         oneOf:
0194           - enum:
0195               - ingenic,jz4725b-ost
0196               - ingenic,jz4760b-ost
0197           - items:
0198               - const: ingenic,jz4760-ost
0199               - const: ingenic,jz4725b-ost
0200           - items:
0201               - enum:
0202                   - ingenic,jz4780-ost
0203                   - ingenic,jz4770-ost
0204               - const: ingenic,jz4760b-ost
0205 
0206       reg:
0207         maxItems: 1
0208 
0209       clocks:
0210         maxItems: 1
0211 
0212       clock-names:
0213         const: ost
0214 
0215       interrupts:
0216         maxItems: 1
0217 
0218     required:
0219       - compatible
0220       - reg
0221       - clocks
0222       - clock-names
0223       - interrupts
0224 
0225     additionalProperties: false
0226 
0227 required:
0228   - "#clock-cells"
0229   - "#interrupt-cells"
0230   - interrupt-controller
0231   - compatible
0232   - reg
0233   - clocks
0234   - clock-names
0235   - interrupts
0236 
0237 additionalProperties: false
0238 
0239 examples:
0240   - |
0241     #include <dt-bindings/clock/ingenic,jz4770-cgu.h>
0242     #include <dt-bindings/clock/ingenic,tcu.h>
0243     tcu: timer@10002000 {
0244       compatible = "ingenic,jz4770-tcu", "ingenic,jz4760-tcu", "simple-mfd";
0245       reg = <0x10002000 0x1000>;
0246       #address-cells = <1>;
0247       #size-cells = <1>;
0248       ranges = <0x0 0x10002000 0x1000>;
0249 
0250       #clock-cells = <1>;
0251 
0252       clocks = <&cgu JZ4770_CLK_RTC>,
0253                <&cgu JZ4770_CLK_EXT>,
0254                <&cgu JZ4770_CLK_PCLK>;
0255       clock-names = "rtc", "ext", "pclk";
0256 
0257       interrupt-controller;
0258       #interrupt-cells = <1>;
0259 
0260       interrupt-parent = <&intc>;
0261       interrupts = <27 26 25>;
0262 
0263       watchdog: watchdog@0 {
0264         compatible = "ingenic,jz4770-watchdog", "ingenic,jz4740-watchdog";
0265         reg = <0x0 0xc>;
0266 
0267         clocks = <&tcu TCU_CLK_WDT>;
0268         clock-names = "wdt";
0269       };
0270 
0271       pwm: pwm@40 {
0272         compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm";
0273         reg = <0x40 0x80>;
0274 
0275         #pwm-cells = <3>;
0276 
0277         clocks = <&tcu TCU_CLK_TIMER0>,
0278                  <&tcu TCU_CLK_TIMER1>,
0279                  <&tcu TCU_CLK_TIMER2>,
0280                  <&tcu TCU_CLK_TIMER3>,
0281                  <&tcu TCU_CLK_TIMER4>,
0282                  <&tcu TCU_CLK_TIMER5>,
0283                  <&tcu TCU_CLK_TIMER6>,
0284                  <&tcu TCU_CLK_TIMER7>;
0285         clock-names = "timer0", "timer1", "timer2", "timer3",
0286                 "timer4", "timer5", "timer6", "timer7";
0287       };
0288 
0289       ost: timer@e0 {
0290         compatible = "ingenic,jz4770-ost", "ingenic,jz4760b-ost";
0291         reg = <0xe0 0x20>;
0292 
0293         clocks = <&tcu TCU_CLK_OST>;
0294         clock-names = "ost";
0295 
0296         interrupts = <15>;
0297       };
0298     };