# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/clock/stericsson,u8500-clks.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: ST-Ericsson DB8500 (U8500) clocks maintainers: - Ulf Hansson <ulf.hansson@linaro.org> - Linus Walleij <linus.walleij@linaro.org> description: While named "U8500 clocks" these clocks are inside the DB8500 digital baseband system-on-chip and its siblings such as DB8520. These bindings consider the clocks present in the SoC itself, not off-chip clocks. There are four different on-chip clocks - RTC (32 kHz), CPU clock (SMP TWD), PRCMU (power reset and control management unit) clocks and PRCC (peripheral reset and clock controller) clocks. For some reason PRCC 4 does not exist so the itemization can be a bit unintuitive. properties: compatible: enum: - stericsson,u8500-clks - stericsson,u8540-clks - stericsson,u9540-clks reg: items: - description: PRCC 1 register area - description: PRCC 2 register area - description: PRCC 3 register area - description: PRCC 5 register area - description: PRCC 6 register area prcmu-clock: description: A subnode with one clock cell for PRCMU (power, reset, control management unit) clocks. The cell indicates which PRCMU clock in the prcmu-clock node the consumer wants to use. type: object properties: '#clock-cells': const: 1 additionalProperties: false prcc-periph-clock: description: A subnode with two clock cells for PRCC (peripheral reset and clock controller) peripheral clocks. The first cell indicates which PRCC block the consumer wants to use, possible values are 1, 2, 3, 5, 6. The second cell indicates which clock inside the PRCC block it wants, possible values are 0 thru 31. type: object properties: '#clock-cells': const: 2 additionalProperties: false prcc-kernel-clock: description: A subnode with two clock cells for PRCC (peripheral reset and clock controller) kernel clocks. The first cell indicates which PRCC block the consumer wants to use, possible values are 1, 2, 3, 5, 6. The second cell indicates which clock inside the PRCC block it wants, possible values are 0 thru 31. type: object properties: '#clock-cells': const: 2 additionalProperties: false prcc-reset-controller: description: A subnode with two reset cells for the reset portions of the PRCC (peripheral reset and clock controller). The first cell indicates which PRCC block the consumer wants to use, possible values are 1, 2, 3 5 and 6. The second cell indicates which reset line inside the PRCC block it wants to control, possible values are 0 thru 31. type: object properties: '#reset-cells': const: 2 additionalProperties: false rtc32k-clock: description: A subnode with zero clock cells for the 32kHz RTC clock. type: object properties: '#clock-cells': const: 0 additionalProperties: false smp-twd-clock: description: A subnode for the ARM SMP Timer Watchdog cluster with zero clock cells. type: object properties: '#clock-cells': const: 0 additionalProperties: false clkout-clock: description: A subnode with three clock cells for externally routed clocks, output clocks. These are two PRCMU-internal clocks that can be divided and muxed out on the pads of the DB8500 SoC. type: object properties: '#clock-cells': description: The first cell indicates which output clock we are using, possible values are 0 (CLKOUT1) and 1 (CLKOUT2). The second cell indicates which clock we want to use as source, possible values are 0 thru 7, see the defines for the different source clocks. The third cell is a divider, legal values are 1 thru 63. const: 3 additionalProperties: false required: - compatible - reg - prcmu-clock - prcc-periph-clock - prcc-kernel-clock - rtc32k-clock - smp-twd-clock additionalProperties: false examples: - | #include <dt-bindings/clock/ste-db8500-clkout.h> clocks@8012 { compatible = "stericsson,u8500-clks"; reg = <0x8012f000 0x1000>, <0x8011f000 0x1000>, <0x8000f000 0x1000>, <0xa03ff000 0x1000>, <0xa03cf000 0x1000>; prcmu_clk: prcmu-clock { #clock-cells = <1>; }; prcc_pclk: prcc-periph-clock { #clock-cells = <2>; }; prcc_kclk: prcc-kernel-clock { #clock-cells = <2>; }; prcc_reset: prcc-reset-controller { #reset-cells = <2>; }; rtc_clk: rtc32k-clock { #clock-cells = <0>; }; smp_twd_clk: smp-twd-clock { #clock-cells = <0>; }; clkout_clk: clkout-clock { #clock-cells = <3>; }; };