0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/clock/arm,syscon-icst.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006
0007 title: ARM System Controller ICST Clocks
0008
0009 maintainers:
0010 - Linus Walleij <linusw@kernel.org>
0011
0012 description: |
0013 The ICS525 and ICS307 oscillators are produced by Integrated
0014 Devices Technology (IDT). ARM integrated these oscillators deeply into their
0015 reference designs by adding special control registers that manage such
0016 oscillators to their system controllers.
0017
0018 The various ARM system controllers contain logic to serialize and initialize
0019 an ICST clock request after a write to the 32 bit register at an offset
0020 into the system controller. Furthermore, to even be able to alter one of
0021 these frequencies, the system controller must first be unlocked by
0022 writing a special token to another offset in the system controller.
0023
0024 Some ARM hardware contain special versions of the serial interface that only
0025 connects the low 8 bits of the VDW (missing one bit), hard-wires RDW to
0026 different values and sometimes also hard-wires the output divider. They
0027 therefore have special compatible strings as per this table (the OD value is
0028 the value on the pins, not the resulting output divider).
0029
0030 In the core modules and logic tiles, the ICST is a configurable clock fed
0031 from a 24 MHz clock on the motherboard (usually the main crystal) used for
0032 generating e.g. video clocks. It is located on the core module and there is
0033 only one of these. This clock node must be a subnode of the core module.
0034
0035 Hardware variant RDW OD VDW
0036
0037 Integrator/AP 22 1 Bit 8 0, rest variable
0038 integratorap-cm
0039
0040 Integrator/AP 46 3 Bit 8 0, rest variable
0041 integratorap-sys
0042
0043 Integrator/AP 22 or 1 17 or (33 or 25 MHz)
0044 integratorap-pci 14 1 14
0045
0046 Integrator/CP 22 variable Bit 8 0, rest variable
0047 integratorcp-cm-core
0048
0049 Integrator/CP 22 variable Bit 8 0, rest variable
0050 integratorcp-cm-mem
0051
0052 The ICST oscillator must be provided inside a system controller node.
0053
0054 properties:
0055 "#clock-cells":
0056 const: 0
0057
0058 compatible:
0059 enum:
0060 - arm,syscon-icst525
0061 - arm,syscon-icst307
0062 - arm,syscon-icst525-integratorap-cm
0063 - arm,syscon-icst525-integratorap-sys
0064 - arm,syscon-icst525-integratorap-pci
0065 - arm,syscon-icst525-integratorcp-cm-core
0066 - arm,syscon-icst525-integratorcp-cm-mem
0067 - arm,integrator-cm-auxosc
0068 - arm,versatile-cm-auxosc
0069 - arm,impd1-vco1
0070 - arm,impd1-vco2
0071
0072 reg:
0073 maxItems: 1
0074 description: The VCO register
0075
0076 clocks:
0077 description: Parent clock for the ICST VCO
0078 maxItems: 1
0079
0080 clock-output-names:
0081 maxItems: 1
0082
0083 lock-offset:
0084 $ref: '/schemas/types.yaml#/definitions/uint32'
0085 description: Offset to the unlocking register for the oscillator
0086
0087 vco-offset:
0088 $ref: '/schemas/types.yaml#/definitions/uint32'
0089 description: Offset to the VCO register for the oscillator
0090 deprecated: true
0091
0092 required:
0093 - "#clock-cells"
0094 - compatible
0095 - clocks
0096
0097 additionalProperties: false
0098
0099 examples:
0100 - |
0101 vco1: clock {
0102 compatible = "arm,impd1-vco1";
0103 #clock-cells = <0>;
0104 lock-offset = <0x08>;
0105 vco-offset = <0x00>;
0106 clocks = <&sysclk>;
0107 clock-output-names = "IM-PD1-VCO1";
0108 };
0109
0110 ...