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/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 ...