106 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 | |
| %YAML 1.2
 | |
| ---
 | |
| $id: http://devicetree.org/schemas/clock/arm,syscon-icst.yaml#
 | |
| $schema: http://devicetree.org/meta-schemas/core.yaml#
 | |
| 
 | |
| title: ARM System Controller ICST Clocks
 | |
| 
 | |
| maintainers:
 | |
|   - Linus Walleij <linusw@kernel.org>
 | |
| 
 | |
| description: |
 | |
|   The ICS525 and ICS307 oscillators are produced by Integrated
 | |
|   Devices Technology (IDT). ARM integrated these oscillators deeply into their
 | |
|   reference designs by adding special control registers that manage such
 | |
|   oscillators to their system controllers.
 | |
| 
 | |
|   The various ARM system controllers contain logic to serialize and initialize
 | |
|   an ICST clock request after a write to the 32 bit register at an offset
 | |
|   into the system controller. Furthermore, to even be able to alter one of
 | |
|   these frequencies, the system controller must first be unlocked by
 | |
|   writing a special token to another offset in the system controller.
 | |
| 
 | |
|   Some ARM hardware contain special versions of the serial interface that only
 | |
|   connects the low 8 bits of the VDW (missing one bit), hard-wires RDW to
 | |
|   different values and sometimes also hard-wires the output divider. They
 | |
|   therefore have special compatible strings as per this table (the OD value is
 | |
|   the value on the pins, not the resulting output divider).
 | |
| 
 | |
|   In the core modules and logic tiles, the ICST is a configurable clock fed
 | |
|   from a 24 MHz clock on the motherboard (usually the main crystal) used for
 | |
|   generating e.g. video clocks. It is located on the core module and there is
 | |
|   only one of these. This clock node must be a subnode of the core module.
 | |
| 
 | |
|   Hardware variant         RDW     OD          VDW
 | |
| 
 | |
|   Integrator/AP            22      1           Bit 8 0, rest variable
 | |
|   integratorap-cm
 | |
| 
 | |
|   Integrator/AP            46      3           Bit 8 0, rest variable
 | |
|   integratorap-sys
 | |
| 
 | |
|   Integrator/AP            22 or   1           17 or (33 or 25 MHz)
 | |
|   integratorap-pci         14      1           14
 | |
| 
 | |
|   Integrator/CP            22      variable    Bit 8 0, rest variable
 | |
|   integratorcp-cm-core
 | |
| 
 | |
|   Integrator/CP            22      variable    Bit 8 0, rest variable
 | |
|   integratorcp-cm-mem
 | |
| 
 | |
|   The ICST oscillator must be provided inside a system controller node.
 | |
| 
 | |
| properties:
 | |
|   "#clock-cells":
 | |
|     const: 0
 | |
| 
 | |
|   compatible:
 | |
|     enum:
 | |
|       - arm,syscon-icst525
 | |
|       - arm,syscon-icst307
 | |
|       - arm,syscon-icst525-integratorap-cm
 | |
|       - arm,syscon-icst525-integratorap-sys
 | |
|       - arm,syscon-icst525-integratorap-pci
 | |
|       - arm,syscon-icst525-integratorcp-cm-core
 | |
|       - arm,syscon-icst525-integratorcp-cm-mem
 | |
|       - arm,integrator-cm-auxosc
 | |
|       - arm,versatile-cm-auxosc
 | |
|       - arm,impd-vco1
 | |
|       - arm,impd-vco2
 | |
| 
 | |
|   clocks:
 | |
|     description: Parent clock for the ICST VCO
 | |
|     maxItems: 1
 | |
| 
 | |
|   clock-output-names:
 | |
|     maxItems: 1
 | |
| 
 | |
|   lock-offset:
 | |
|     $ref: '/schemas/types.yaml#/definitions/uint32'
 | |
|     description: Offset to the unlocking register for the oscillator
 | |
| 
 | |
|   vco-offset:
 | |
|     $ref: '/schemas/types.yaml#/definitions/uint32'
 | |
|     description: Offset to the VCO register for the oscillator
 | |
| 
 | |
| required:
 | |
|   - "#clock-cells"
 | |
|   - compatible
 | |
|   - clocks
 | |
| 
 | |
| additionalProperties: false
 | |
| 
 | |
| examples:
 | |
|   - |
 | |
|     vco1: clock {
 | |
|       compatible = "arm,impd1-vco1";
 | |
|       #clock-cells = <0>;
 | |
|       lock-offset = <0x08>;
 | |
|       vco-offset = <0x00>;
 | |
|       clocks = <&sysclk>;
 | |
|       clock-output-names = "IM-PD1-VCO1";
 | |
|     };
 | |
| 
 | |
| ...
 |