Documentation / devicetree / bindings / clock / xgene.txt


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
Device Tree Clock bindings for APM X-Gene

This binding uses the common clock binding[1].

[1] Documentation/devicetree/bindings/clock/clock-bindings.txt

Required properties:
- compatible : shall be one of the following:
	"apm,xgene-socpll-clock" - for a X-Gene SoC PLL clock
	"apm,xgene-pcppll-clock" - for a X-Gene PCP PLL clock
	"apm,xgene-pmd-clock" - for a X-Gene PMD clock
	"apm,xgene-device-clock" - for a X-Gene device clock
	"apm,xgene-socpll-v2-clock" - for a X-Gene SoC PLL v2 clock
	"apm,xgene-pcppll-v2-clock" - for a X-Gene PCP PLL v2 clock

Required properties for SoC or PCP PLL clocks:
- reg : shall be the physical PLL register address for the pll clock.
- clocks : shall be the input parent clock phandle for the clock. This should
	be the reference clock.
- #clock-cells : shall be set to 1.
- clock-output-names : shall be the name of the PLL referenced by derive
  clock.
Optional properties for PLL clocks:
- clock-names : shall be the name of the PLL. If missing, use the device name.

Required properties for PMD clocks:
- reg : shall be the physical register address for the pmd clock.
- clocks : shall be the input parent clock phandle for the clock.
- #clock-cells : shall be set to 1.
- clock-output-names : shall be the name of the clock referenced by derive
  clock.
Optional properties for PLL clocks:
- clock-names : shall be the name of the clock. If missing, use the device name.

Required properties for device clocks:
- reg : shall be a list of address and length pairs describing the CSR
         reset and/or the divider. Either may be omitted, but at least
         one must be present.
 - reg-names : shall be a string list describing the reg resource. This
               may include "csr-reg" and/or "div-reg". If this property
               is not present, the reg property is assumed to describe
               only "csr-reg".
- clocks : shall be the input parent clock phandle for the clock.
- #clock-cells : shall be set to 1.
- clock-output-names : shall be the name of the device referenced.
Optional properties for device clocks:
- clock-names : shall be the name of the device clock. If missing, use the
                device name.
- csr-offset : Offset to the CSR reset register from the reset address base.
               Default is 0.
- csr-mask : CSR reset mask bit. Default is 0xF.
- enable-offset : Offset to the enable register from the reset address base.
                  Default is 0x8.
- enable-mask : CSR enable mask bit. Default is 0xF.
- divider-offset : Offset to the divider CSR register from the divider base.
                   Default is 0x0.
- divider-width : Width of the divider register. Default is 0.
- divider-shift : Bit shift of the divider register. Default is 0.

For example:

	pcppll: pcppll@17000100 {
		compatible = "apm,xgene-pcppll-clock";
		#clock-cells = <1>;
		clocks = <&refclk 0>;
		clock-names = "pcppll";
		reg = <0x0 0x17000100 0x0 0x1000>;
		clock-output-names = "pcppll";
		type = <0>;
	};

	pmd0clk: pmd0clk@7e200200 {
		compatible = "apm,xgene-pmd-clock";
		#clock-cells = <1>;
		clocks = <&pmdpll 0>;
		reg = <0x0 0x7e200200 0x0 0x10>;
		clock-output-names = "pmd0clk";
	};

	socpll: socpll@17000120 {
		compatible = "apm,xgene-socpll-clock";
		#clock-cells = <1>;
		clocks = <&refclk 0>;
		clock-names = "socpll";
		reg = <0x0 0x17000120 0x0 0x1000>;
		clock-output-names = "socpll";
		type = <1>;
	};

	qmlclk: qmlclk {
		compatible = "apm,xgene-device-clock";
		#clock-cells = <1>;
		clocks = <&socplldiv2 0>;
		clock-names = "qmlclk";
		reg = <0x0 0x1703C000 0x0 0x1000>;
		reg-name = "csr-reg";
		clock-output-names = "qmlclk";
	};

	ethclk: ethclk {
		compatible = "apm,xgene-device-clock";
		#clock-cells = <1>;
		clocks = <&socplldiv2 0>;
		clock-names = "ethclk";
		reg = <0x0 0x17000000 0x0 0x1000>;
		reg-names = "div-reg";
		divider-offset = <0x238>;
		divider-width = <0x9>;
		divider-shift = <0x0>;
		clock-output-names = "ethclk";
	};

	apbclk: apbclk {
		compatible = "apm,xgene-device-clock";
		#clock-cells = <1>;
		clocks = <&ahbclk 0>;
		clock-names = "apbclk";
		reg = <0x0 0x1F2AC000 0x0 0x1000
			0x0 0x1F2AC000 0x0 0x1000>;
		reg-names = "csr-reg", "div-reg";
		csr-offset = <0x0>;
		csr-mask = <0x200>;
		enable-offset = <0x8>;
		enable-mask = <0x200>;
		divider-offset = <0x10>;
		divider-width = <0x2>;
		divider-shift = <0x0>;
		flags = <0x8>;
		clock-output-names = "apbclk";
	};