123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- Imagination Technologies Pistachio SoC clock controllers
- ========================================================
- Pistachio has four clock controllers (core clock, peripheral clock, peripheral
- general control, and top general control) which are instantiated individually
- from the device-tree.
- External clocks:
- ----------------
- There are three external inputs to the clock controllers which should be
- defined with the following clock-output-names:
- - "xtal": External 52Mhz oscillator (required)
- - "audio_clk_in": Alternate audio reference clock (optional)
- - "enet_clk_in": Alternate ethernet PHY clock (optional)
- Core clock controller:
- ----------------------
- The core clock controller generates clocks for the CPU, RPU (WiFi + BT
- co-processor), audio, and several peripherals.
- Required properties:
- - compatible: Must be "img,pistachio-clk".
- - reg: Must contain the base address and length of the core clock controller.
- - #clock-cells: Must be 1. The single cell is the clock identifier.
- See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
- - clocks: Must contain an entry for each clock in clock-names.
- - clock-names: Must include "xtal" (see "External clocks") and
- "audio_clk_in_gate", "enet_clk_in_gate" which are generated by the
- top-level general control.
- Example:
- clk_core: clock-controller@18144000 {
- compatible = "img,pistachio-clk";
- reg = <0x18144000 0x800>;
- clocks = <&xtal>, <&cr_top EXT_CLK_AUDIO_IN>,
- <&cr_top EXT_CLK_ENET_IN>;
- clock-names = "xtal", "audio_clk_in_gate", "enet_clk_in_gate";
- #clock-cells = <1>;
- };
- Peripheral clock controller:
- ----------------------------
- The peripheral clock controller generates clocks for the DDR, ROM, and other
- peripherals. The peripheral system clock ("periph_sys") generated by the core
- clock controller is the input clock to the peripheral clock controller.
- Required properties:
- - compatible: Must be "img,pistachio-periph-clk".
- - reg: Must contain the base address and length of the peripheral clock
- controller.
- - #clock-cells: Must be 1. The single cell is the clock identifier.
- See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
- - clocks: Must contain an entry for each clock in clock-names.
- - clock-names: Must include "periph_sys", the peripheral system clock generated
- by the core clock controller.
- Example:
- clk_periph: clock-controller@18144800 {
- compatible = "img,pistachio-clk-periph";
- reg = <0x18144800 0x800>;
- clocks = <&clk_core CLK_PERIPH_SYS>;
- clock-names = "periph_sys";
- #clock-cells = <1>;
- };
- Peripheral general control:
- ---------------------------
- The peripheral general control block generates system interface clocks and
- resets for various peripherals. It also contains miscellaneous peripheral
- control registers. The system clock ("sys") generated by the peripheral clock
- controller is the input clock to the system clock controller.
- Required properties:
- - compatible: Must include "img,pistachio-periph-cr" and "syscon".
- - reg: Must contain the base address and length of the peripheral general
- control registers.
- - #clock-cells: Must be 1. The single cell is the clock identifier.
- See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
- - clocks: Must contain an entry for each clock in clock-names.
- - clock-names: Must include "sys", the system clock generated by the peripheral
- clock controller.
- Example:
- cr_periph: syscon@18144800 {
- compatible = "img,pistachio-cr-periph", "syscon";
- reg = <0x18148000 0x1000>;
- clocks = <&clock_periph PERIPH_CLK_PERIPH_SYS>;
- clock-names = "sys";
- #clock-cells = <1>;
- };
- Top-level general control:
- --------------------------
- The top-level general control block contains miscellaneous control registers and
- gates for the external clocks "audio_clk_in" and "enet_clk_in".
- Required properties:
- - compatible: Must include "img,pistachio-cr-top" and "syscon".
- - reg: Must contain the base address and length of the top-level
- control registers.
- - clocks: Must contain an entry for each clock in clock-names.
- - clock-names: Two optional clocks, "audio_clk_in" and "enet_clk_in" (see
- "External clocks").
- - #clock-cells: Must be 1. The single cell is the clock identifier.
- See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
- Example:
- cr_top: syscon@18144800 {
- compatible = "img,pistachio-cr-top", "syscon";
- reg = <0x18149000 0x200>;
- clocks = <&audio_refclk>, <&ext_enet_in>;
- clock-names = "audio_clk_in", "enet_clk_in";
- #clock-cells = <1>;
- };
|