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