162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/clock/arm,syscon-icst.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: ARM System Controller ICST Clocks
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Linus Walleij <linusw@kernel.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  The ICS525 and ICS307 oscillators are produced by Integrated
1462306a36Sopenharmony_ci  Devices Technology (IDT). ARM integrated these oscillators deeply into their
1562306a36Sopenharmony_ci  reference designs by adding special control registers that manage such
1662306a36Sopenharmony_ci  oscillators to their system controllers.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci  The various ARM system controllers contain logic to serialize and initialize
1962306a36Sopenharmony_ci  an ICST clock request after a write to the 32 bit register at an offset
2062306a36Sopenharmony_ci  into the system controller. Furthermore, to even be able to alter one of
2162306a36Sopenharmony_ci  these frequencies, the system controller must first be unlocked by
2262306a36Sopenharmony_ci  writing a special token to another offset in the system controller.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci  Some ARM hardware contain special versions of the serial interface that only
2562306a36Sopenharmony_ci  connects the low 8 bits of the VDW (missing one bit), hard-wires RDW to
2662306a36Sopenharmony_ci  different values and sometimes also hard-wires the output divider. They
2762306a36Sopenharmony_ci  therefore have special compatible strings as per this table (the OD value is
2862306a36Sopenharmony_ci  the value on the pins, not the resulting output divider).
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  In the core modules and logic tiles, the ICST is a configurable clock fed
3162306a36Sopenharmony_ci  from a 24 MHz clock on the motherboard (usually the main crystal) used for
3262306a36Sopenharmony_ci  generating e.g. video clocks. It is located on the core module and there is
3362306a36Sopenharmony_ci  only one of these. This clock node must be a subnode of the core module.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  Hardware variant         RDW     OD          VDW
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  Integrator/AP            22      1           Bit 8 0, rest variable
3862306a36Sopenharmony_ci  integratorap-cm
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci  Integrator/AP            46      3           Bit 8 0, rest variable
4162306a36Sopenharmony_ci  integratorap-sys
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  Integrator/AP            22 or   1           17 or (33 or 25 MHz)
4462306a36Sopenharmony_ci  integratorap-pci         14      1           14
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  Integrator/CP            22      variable    Bit 8 0, rest variable
4762306a36Sopenharmony_ci  integratorcp-cm-core
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  Integrator/CP            22      variable    Bit 8 0, rest variable
5062306a36Sopenharmony_ci  integratorcp-cm-mem
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  The ICST oscillator must be provided inside a system controller node.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciproperties:
5562306a36Sopenharmony_ci  "#clock-cells":
5662306a36Sopenharmony_ci    const: 0
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci  compatible:
5962306a36Sopenharmony_ci    enum:
6062306a36Sopenharmony_ci      - arm,syscon-icst525
6162306a36Sopenharmony_ci      - arm,syscon-icst307
6262306a36Sopenharmony_ci      - arm,syscon-icst525-integratorap-cm
6362306a36Sopenharmony_ci      - arm,syscon-icst525-integratorap-sys
6462306a36Sopenharmony_ci      - arm,syscon-icst525-integratorap-pci
6562306a36Sopenharmony_ci      - arm,syscon-icst525-integratorcp-cm-core
6662306a36Sopenharmony_ci      - arm,syscon-icst525-integratorcp-cm-mem
6762306a36Sopenharmony_ci      - arm,integrator-cm-auxosc
6862306a36Sopenharmony_ci      - arm,versatile-cm-auxosc
6962306a36Sopenharmony_ci      - arm,impd1-vco1
7062306a36Sopenharmony_ci      - arm,impd1-vco2
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci  reg:
7362306a36Sopenharmony_ci    maxItems: 1
7462306a36Sopenharmony_ci    description: The VCO register
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci  clocks:
7762306a36Sopenharmony_ci    description: Parent clock for the ICST VCO
7862306a36Sopenharmony_ci    maxItems: 1
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci  clock-output-names:
8162306a36Sopenharmony_ci    maxItems: 1
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci  lock-offset:
8462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
8562306a36Sopenharmony_ci    description: Offset to the unlocking register for the oscillator
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci  vco-offset:
8862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
8962306a36Sopenharmony_ci    description: Offset to the VCO register for the oscillator
9062306a36Sopenharmony_ci    deprecated: true
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_cirequired:
9362306a36Sopenharmony_ci  - "#clock-cells"
9462306a36Sopenharmony_ci  - compatible
9562306a36Sopenharmony_ci  - clocks
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ciadditionalProperties: false
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ciexamples:
10062306a36Sopenharmony_ci  - |
10162306a36Sopenharmony_ci    vco1: clock {
10262306a36Sopenharmony_ci      compatible = "arm,impd1-vco1";
10362306a36Sopenharmony_ci      #clock-cells = <0>;
10462306a36Sopenharmony_ci      lock-offset = <0x08>;
10562306a36Sopenharmony_ci      vco-offset = <0x00>;
10662306a36Sopenharmony_ci      clocks = <&sysclk>;
10762306a36Sopenharmony_ci      clock-output-names = "IM-PD1-VCO1";
10862306a36Sopenharmony_ci    };
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci...
111