| ARM System Controller ICST clocks |
| |
| 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), hardwires RDW to |
| different values and sometimes also hardwire 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): |
| |
| 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. |
| |
| Required properties: |
| - compatible: must be one of |
| "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" |
| - lock-offset: the offset address into the system controller where the |
| unlocking register is located |
| - vco-offset: the offset address into the system controller where the |
| ICST control register is located (even 32 bit address) |
| - #clock-cells: must be <0> |
| - clocks: parent clock, since the ICST needs a parent clock to derive its |
| frequency from, this attribute is compulsory. |
| |
| Example: |
| |
| syscon: syscon@10000000 { |
| compatible = "syscon"; |
| reg = <0x10000000 0x1000>; |
| |
| oscclk0: osc0@0c { |
| compatible = "arm,syscon-icst307"; |
| #clock-cells = <0>; |
| lock-offset = <0x20>; |
| vco-offset = <0x0c>; |
| clocks = <&xtal24mhz>; |
| }; |
| (...) |
| }; |