linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
@ 2013-10-09  6:38 Yuantian.Tang
  2013-10-10 10:03 ` Mark Rutland
                   ` (2 more replies)
  0 siblings, 3 replies; 25+ messages in thread
From: Yuantian.Tang @ 2013-10-09  6:38 UTC (permalink / raw)
  To: galak; +Cc: devicetree, linuxppc-dev, Tang Yuantian

From: Tang Yuantian <yuantian.tang@freescale.com>

The following SoCs will be affected: p2041, p3041, p4080,
p5020, p5040, b4420, b4860, t4240

Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
v5:
	- refine the binding document
	- update the compatible string
v4:
	- add binding document
	- update compatible string
	- update the reg property
v3:
	- fix typo
v2:
	- add t4240, b4420, b4860 support
	- remove pll/4 clock from p2041, p3041 and p5020 board

 .../devicetree/bindings/clock/corenet-clock.txt    | 111 ++++++++++++++++++++
 arch/powerpc/boot/dts/fsl/b4420si-post.dtsi        |  35 +++++++
 arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi         |   2 +
 arch/powerpc/boot/dts/fsl/b4860si-post.dtsi        |  35 +++++++
 arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi         |   4 +
 arch/powerpc/boot/dts/fsl/p2041si-post.dtsi        |  60 +++++++++++
 arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi         |   4 +
 arch/powerpc/boot/dts/fsl/p3041si-post.dtsi        |  60 +++++++++++
 arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi         |   4 +
 arch/powerpc/boot/dts/fsl/p4080si-post.dtsi        | 112 +++++++++++++++++++++
 arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi         |   8 ++
 arch/powerpc/boot/dts/fsl/p5020si-post.dtsi        |  42 ++++++++
 arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi         |   2 +
 arch/powerpc/boot/dts/fsl/p5040si-post.dtsi        |  60 +++++++++++
 arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi         |   4 +
 arch/powerpc/boot/dts/fsl/t4240si-post.dtsi        |  85 ++++++++++++++++
 arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi         |  12 +++
 17 files changed, 640 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/corenet-clock.txt

diff --git a/Documentation/devicetree/bindings/clock/corenet-clock.txt b/Documentation/devicetree/bindings/clock/corenet-clock.txt
new file mode 100644
index 0000000..8efc62d
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/corenet-clock.txt
@@ -0,0 +1,111 @@
+* Clock Block on Freescale CoreNet Platforms
+
+Freescale CoreNet chips take primary clocking input from the external
+SYSCLK signal. The SYSCLK input (frequency) is multiplied using
+multiple phase locked loops (PLL) to create a variety of frequencies
+which can then be passed to a variety of internal logic, including
+cores and peripheral IP blocks.
+Please refer to the Reference Manual for details.
+
+1. Clock Block Binding
+
+Required properties:
+- compatible: Should include one or more of the following:
+	- "fsl,<chip>-clockgen": for chip specific clock block
+	- "fsl,qoriq-clockgen-[1,2].x": for chassis 1.x and 2.x clock
+- reg: Offset and length of the clock register set
+- clock-frequency: Indicates input clock frequency of clock block.
+	Will be set by u-boot
+
+Recommended properties:
+- #ddress-cells: Specifies the number of cells used to represent
+	physical base addresses.  Must be present if the device has
+	sub-nodes and set to 1 if present
+- #size-cells: Specifies the number of cells used to represent
+	the size of an address. Must be present if the device has
+	sub-nodes and set to 1 if present
+
+2. Clock Provider/Consumer Binding
+
+Most of the binding are from the common clock binding[1].
+ [1] Documentation/devicetree/bindings/clock/clock-bindings.txt
+
+Required properties:
+- compatible : Should include one or more of the following:
+	- "fsl,qoriq-core-pll-[1,2].x": Indicates a core PLL clock device
+	- "fsl,qoriq-core-mux-[1,2].x": Indicates a core multiplexer clock
+		device; divided from the core PLL clock
+	- "fixed-clock": From common clock binding; indicates output clock
+		of oscillator
+	- "fsl,qoriq-sysclk-[1,2].x": Indicates input system clock
+- #clock-cells: From common clock binding; indicates the number of
+	output clock. 0 is for one output clock; 1 for more than one clock
+
+Recommended properties:
+- clocks: Should be the phandle of input parent clock
+- clock-names: From common clock binding, indicates the clock name
+- clock-output-names: From common clock binding, indicates the names of
+	output clocks
+- reg: Should be the offset and length of clock block base address.
+	The length should be 4.
+
+Example for clock block and clock provider:
+/ {
+	clockgen: global-utilities@e1000 {
+		compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
+		reg = <0xe1000 0x1000>;
+		clock-frequency = <0>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		sysclk: sysclk {
+			#clock-cells = <0>;
+			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
+			clock-output-names = "sysclk";
+		}
+
+		pll0: pll0@800 {
+			#clock-cells = <1>;
+			reg = <0x800 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll0", "pll0-div2";
+		};
+
+		pll1: pll1@820 {
+			#clock-cells = <1>;
+			reg = <0x820 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll1", "pll1-div2";
+		};
+
+		mux0: mux0@0 {
+			#clock-cells = <0>;
+			reg = <0x0 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux0";
+		};
+
+		mux1: mux1@20 {
+			#clock-cells = <0>;
+			reg = <0x20 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux1";
+		};
+	};
+  }
+
+Example for clock consumer:
+
+/ {
+	cpu0: PowerPC,e5500@0 {
+		...
+		clocks = <&mux0>;
+		...
+	};
+  }
diff --git a/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi b/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi
index 5a6615d..e910e82 100644
--- a/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi
@@ -86,6 +86,41 @@
 
 	clockgen: global-utilities@e1000 {
 		compatible = "fsl,b4420-clockgen", "fsl,qoriq-clockgen-2.0";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		sysclk: sysclk {
+			#clock-cells = <0>;
+			compatible = "fsl,qoriq-sysclk-2.0", "fixed-clock";
+			clock-output-names = "sysclk";
+		}
+
+		pll0: pll0@800 {
+			#clock-cells = <1>;
+			reg = <0x800 0x4>;
+			compatible = "fsl,qoriq-core-pll-2.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll0", "pll0-div2", "pll0-div4";
+		};
+
+		pll1: pll1@820 {
+			#clock-cells = <1>;
+			reg = <0x820 0x4>;
+			compatible = "fsl,qoriq-core-pll-2.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll1", "pll1-div2", "pll1-div4";
+		};
+
+		mux0: mux0@0 {
+			#clock-cells = <0>;
+			reg = <0x0 0x4>;
+			compatible = "fsl,qoriq-core-mux-2.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>,
+				 <&pll1 0>, <&pll1 1>, <&pll1 2>;
+			clock-names = "pll0_0", "pll0_1", "pll0_2",
+				"pll1_0", "pll1_1", "pll1_2";
+			clock-output-names = "cmux0";
+		};
 	};
 
 	rcpm: global-utilities@e2000 {
diff --git a/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi b/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi
index 7b4426e..a11126b 100644
--- a/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi
+++ b/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi
@@ -62,11 +62,13 @@
 		cpu0: PowerPC,e6500@0 {
 			device_type = "cpu";
 			reg = <0 1>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2>;
 		};
 		cpu1: PowerPC,e6500@2 {
 			device_type = "cpu";
 			reg = <2 3>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2>;
 		};
 	};
diff --git a/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi b/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi
index e5cf6c8..5cfcfe4 100644
--- a/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi
@@ -130,6 +130,41 @@
 
 	clockgen: global-utilities@e1000 {
 		compatible = "fsl,b4860-clockgen", "fsl,qoriq-clockgen-2.0";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		sysclk: sysclk {
+			#clock-cells = <0>;
+			compatible = "fsl,qoriq-sysclk-2.0", "fixed-clock";
+			clock-output-names = "sysclk";
+		}
+
+		pll0: pll0@800 {
+			#clock-cells = <1>;
+			reg = <0x800 0x4>;
+			compatible = "fsl,qoriq-core-pll-2.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll0", "pll0-div2", "pll0-div4";
+		};
+
+		pll1: pll1@820 {
+			#clock-cells = <1>;
+			reg = <0x820 0x4>;
+			compatible = "fsl,qoriq-core-pll-2.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll1", "pll1-div2", "pll1-div4";
+		};
+
+		mux0: mux0@0 {
+			#clock-cells = <0>;
+			reg = <0x0 0x4>;
+			compatible = "fsl,qoriq-core-mux-2.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>,
+				 <&pll1 0>, <&pll1 1>, <&pll1 2>;
+			clock-names = "pll0_0", "pll0_1", "pll0_2",
+				"pll1_0", "pll1_1", "pll1_2";
+			clock-output-names = "cmux0";
+		};
 	};
 
 	rcpm: global-utilities@e2000 {
diff --git a/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi b/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi
index 5263fa4..185a231 100644
--- a/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi
+++ b/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi
@@ -62,21 +62,25 @@
 		cpu0: PowerPC,e6500@0 {
 			device_type = "cpu";
 			reg = <0 1>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2>;
 		};
 		cpu1: PowerPC,e6500@2 {
 			device_type = "cpu";
 			reg = <2 3>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2>;
 		};
 		cpu2: PowerPC,e6500@4 {
 			device_type = "cpu";
 			reg = <4 5>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2>;
 		};
 		cpu3: PowerPC,e6500@6 {
 			device_type = "cpu";
 			reg = <6 7>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2>;
 		};
 	};
diff --git a/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi b/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
index dc6cc5a..f3f7f65 100644
--- a/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
@@ -308,6 +308,66 @@
 		compatible = "fsl,p2041-clockgen", "fsl,qoriq-clockgen-1.0";
 		reg = <0xe1000 0x1000>;
 		clock-frequency = <0>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		sysclk: sysclk {
+			#clock-cells = <0>;
+			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
+			clock-output-names = "sysclk";
+		}
+
+		pll0: pll0@800 {
+			#clock-cells = <1>;
+			reg = <0x800 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll0", "pll0-div2";
+		};
+
+		pll1: pll1@820 {
+			#clock-cells = <1>;
+			reg = <0x820 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll1", "pll1-div2";
+		};
+
+		mux0: mux0@0 {
+			#clock-cells = <0>;
+			reg = <0x0 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux0";
+		};
+
+		mux1: mux1@20 {
+			#clock-cells = <0>;
+			reg = <0x20 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux1";
+		};
+
+		mux2: mux2@40 {
+			#clock-cells = <0>;
+			reg = <0x40 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux2";
+		};
+
+		mux3: mux3@60 {
+			#clock-cells = <0>;
+			reg = <0x60 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux3";
+		};
 	};
 
 	rcpm: global-utilities@e2000 {
diff --git a/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi
index 7a2697d..22f3b14 100644
--- a/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi
@@ -81,6 +81,7 @@
 		cpu0: PowerPC,e500mc@0 {
 			device_type = "cpu";
 			reg = <0>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2_0>;
 			L2_0: l2-cache {
 				next-level-cache = <&cpc>;
@@ -89,6 +90,7 @@
 		cpu1: PowerPC,e500mc@1 {
 			device_type = "cpu";
 			reg = <1>;
+			clocks = <&mux1>;
 			next-level-cache = <&L2_1>;
 			L2_1: l2-cache {
 				next-level-cache = <&cpc>;
@@ -97,6 +99,7 @@
 		cpu2: PowerPC,e500mc@2 {
 			device_type = "cpu";
 			reg = <2>;
+			clocks = <&mux2>;
 			next-level-cache = <&L2_2>;
 			L2_2: l2-cache {
 				next-level-cache = <&cpc>;
@@ -105,6 +108,7 @@
 		cpu3: PowerPC,e500mc@3 {
 			device_type = "cpu";
 			reg = <3>;
+			clocks = <&mux3>;
 			next-level-cache = <&L2_3>;
 			L2_3: l2-cache {
 				next-level-cache = <&cpc>;
diff --git a/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi b/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
index 3fa1e22..9bab9c9 100644
--- a/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
@@ -335,6 +335,66 @@
 		compatible = "fsl,p3041-clockgen", "fsl,qoriq-clockgen-1.0";
 		reg = <0xe1000 0x1000>;
 		clock-frequency = <0>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		sysclk: sysclk {
+			#clock-cells = <0>;
+			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
+			clock-output-names = "sysclk";
+		}
+
+		pll0: pll0@800 {
+			#clock-cells = <1>;
+			reg = <0x800 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll0", "pll0-div2";
+		};
+
+		pll1: pll1@820 {
+			#clock-cells = <1>;
+			reg = <0x820 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll1", "pll1-div2";
+		};
+
+		mux0: mux0@0 {
+			#clock-cells = <0>;
+			reg = <0x0 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux0";
+		};
+
+		mux1: mux1@20 {
+			#clock-cells = <0>;
+			reg = <0x20 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux1";
+		};
+
+		mux2: mux2@40 {
+			#clock-cells = <0>;
+			reg = <0x40 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux2";
+		};
+
+		mux3: mux3@60 {
+			#clock-cells = <0>;
+			reg = <0x60 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux3";
+		};
 	};
 
 	rcpm: global-utilities@e2000 {
diff --git a/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi
index c9ca2c3..468e8be 100644
--- a/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi
@@ -82,6 +82,7 @@
 		cpu0: PowerPC,e500mc@0 {
 			device_type = "cpu";
 			reg = <0>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2_0>;
 			L2_0: l2-cache {
 				next-level-cache = <&cpc>;
@@ -90,6 +91,7 @@
 		cpu1: PowerPC,e500mc@1 {
 			device_type = "cpu";
 			reg = <1>;
+			clocks = <&mux1>;
 			next-level-cache = <&L2_1>;
 			L2_1: l2-cache {
 				next-level-cache = <&cpc>;
@@ -98,6 +100,7 @@
 		cpu2: PowerPC,e500mc@2 {
 			device_type = "cpu";
 			reg = <2>;
+			clocks = <&mux2>;
 			next-level-cache = <&L2_2>;
 			L2_2: l2-cache {
 				next-level-cache = <&cpc>;
@@ -106,6 +109,7 @@
 		cpu3: PowerPC,e500mc@3 {
 			device_type = "cpu";
 			reg = <3>;
+			clocks = <&mux3>;
 			next-level-cache = <&L2_3>;
 			L2_3: l2-cache {
 				next-level-cache = <&cpc>;
diff --git a/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi b/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
index 34769a7..2108269 100644
--- a/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
@@ -355,6 +355,118 @@
 		compatible = "fsl,p4080-clockgen", "fsl,qoriq-clockgen-1.0";
 		reg = <0xe1000 0x1000>;
 		clock-frequency = <0>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		sysclk: sysclk {
+			#clock-cells = <0>;
+			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
+			clock-output-names = "sysclk";
+		}
+
+		pll0: pll0@800 {
+			#clock-cells = <1>;
+			reg = <0x800 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll0", "pll0-div2";
+		};
+
+		pll1: pll1@820 {
+			#clock-cells = <1>;
+			reg = <0x820 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll1", "pll1-div2";
+		};
+
+		pll2: pll2@840 {
+			#clock-cells = <1>;
+			reg = <0x840 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll2", "pll2-div2";
+		};
+
+		pll3: pll3@860 {
+			#clock-cells = <1>;
+			reg = <0x860 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll3", "pll3-div2";
+		};
+
+		mux0: mux0@0 {
+			#clock-cells = <0>;
+			reg = <0x0 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux0";
+		};
+
+		mux1: mux1@20 {
+			#clock-cells = <0>;
+			reg = <0x20 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux1";
+		};
+
+		mux2: mux2@40 {
+			#clock-cells = <0>;
+			reg = <0x40 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux2";
+		};
+
+		mux3: mux3@60 {
+			#clock-cells = <0>;
+			reg = <0x60 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux3";
+		};
+
+		mux4: mux4@80 {
+			#clock-cells = <0>;
+			reg = <0x80 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
+			clock-names = "pll2_0", "pll2_1", "pll3_0", "pll3_1";
+			clock-output-names = "cmux4";
+		};
+
+		mux5: mux5@a0 {
+			#clock-cells = <0>;
+			reg = <0xa0 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
+			clock-names = "pll2_0", "pll2_1", "pll3_0", "pll3_1";
+			clock-output-names = "cmux5";
+		};
+
+		mux6: mux6@c0 {
+			#clock-cells = <0>;
+			reg = <0xc0 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
+			clock-names = "pll2_0", "pll2_1", "pll3_0", "pll3_1";
+			clock-output-names = "cmux6";
+		};
+
+		mux7: mux7@e0 {
+			#clock-cells = <0>;
+			reg = <0xe0 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
+			clock-names = "pll2_0", "pll2_1", "pll3_0", "pll3_1";
+			clock-output-names = "cmux7";
+		};
 	};
 
 	rcpm: global-utilities@e2000 {
diff --git a/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi
index 493d9a0..0040b5a 100644
--- a/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi
@@ -81,6 +81,7 @@
 		cpu0: PowerPC,e500mc@0 {
 			device_type = "cpu";
 			reg = <0>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2_0>;
 			L2_0: l2-cache {
 				next-level-cache = <&cpc>;
@@ -89,6 +90,7 @@
 		cpu1: PowerPC,e500mc@1 {
 			device_type = "cpu";
 			reg = <1>;
+			clocks = <&mux1>;
 			next-level-cache = <&L2_1>;
 			L2_1: l2-cache {
 				next-level-cache = <&cpc>;
@@ -97,6 +99,7 @@
 		cpu2: PowerPC,e500mc@2 {
 			device_type = "cpu";
 			reg = <2>;
+			clocks = <&mux2>;
 			next-level-cache = <&L2_2>;
 			L2_2: l2-cache {
 				next-level-cache = <&cpc>;
@@ -105,6 +108,7 @@
 		cpu3: PowerPC,e500mc@3 {
 			device_type = "cpu";
 			reg = <3>;
+			clocks = <&mux3>;
 			next-level-cache = <&L2_3>;
 			L2_3: l2-cache {
 				next-level-cache = <&cpc>;
@@ -113,6 +117,7 @@
 		cpu4: PowerPC,e500mc@4 {
 			device_type = "cpu";
 			reg = <4>;
+			clocks = <&mux4>;
 			next-level-cache = <&L2_4>;
 			L2_4: l2-cache {
 				next-level-cache = <&cpc>;
@@ -121,6 +126,7 @@
 		cpu5: PowerPC,e500mc@5 {
 			device_type = "cpu";
 			reg = <5>;
+			clocks = <&mux5>;
 			next-level-cache = <&L2_5>;
 			L2_5: l2-cache {
 				next-level-cache = <&cpc>;
@@ -129,6 +135,7 @@
 		cpu6: PowerPC,e500mc@6 {
 			device_type = "cpu";
 			reg = <6>;
+			clocks = <&mux6>;
 			next-level-cache = <&L2_6>;
 			L2_6: l2-cache {
 				next-level-cache = <&cpc>;
@@ -137,6 +144,7 @@
 		cpu7: PowerPC,e500mc@7 {
 			device_type = "cpu";
 			reg = <7>;
+			clocks = <&mux7>;
 			next-level-cache = <&L2_7>;
 			L2_7: l2-cache {
 				next-level-cache = <&cpc>;
diff --git a/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi b/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
index bc3ae5a..e09f8cd 100644
--- a/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
@@ -340,6 +340,48 @@
 		compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
 		reg = <0xe1000 0x1000>;
 		clock-frequency = <0>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		sysclk: sysclk {
+			#clock-cells = <0>;
+			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
+			clock-output-names = "sysclk";
+		}
+
+		pll0: pll0@800 {
+			#clock-cells = <1>;
+			reg = <0x800 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll0", "pll0-div2";
+		};
+
+		pll1: pll1@820 {
+			#clock-cells = <1>;
+			reg = <0x820 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll1", "pll1-div2";
+		};
+
+		mux0: mux0@0 {
+			#clock-cells = <0>;
+			reg = <0x0 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux0";
+		};
+
+		mux1: mux1@20 {
+			#clock-cells = <0>;
+			reg = <0x20 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux1";
+		};
 	};
 
 	rcpm: global-utilities@e2000 {
diff --git a/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
index 8df47fc..fe1a2e6 100644
--- a/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
@@ -88,6 +88,7 @@
 		cpu0: PowerPC,e5500@0 {
 			device_type = "cpu";
 			reg = <0>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2_0>;
 			L2_0: l2-cache {
 				next-level-cache = <&cpc>;
@@ -96,6 +97,7 @@
 		cpu1: PowerPC,e5500@1 {
 			device_type = "cpu";
 			reg = <1>;
+			clocks = <&mux1>;
 			next-level-cache = <&L2_1>;
 			L2_1: l2-cache {
 				next-level-cache = <&cpc>;
diff --git a/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi b/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi
index a91897f..109f132 100644
--- a/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi
@@ -300,6 +300,66 @@
 		compatible = "fsl,p5040-clockgen", "fsl,qoriq-clockgen-1.0";
 		reg = <0xe1000 0x1000>;
 		clock-frequency = <0>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		sysclk: sysclk {
+			#clock-cells = <0>;
+			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
+			clock-output-names = "sysclk";
+		}
+
+		pll0: pll0@800 {
+			#clock-cells = <1>;
+			reg = <0x800 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll0", "pll0-div2";
+		};
+
+		pll1: pll1@820 {
+			#clock-cells = <1>;
+			reg = <0x820 0x4>;
+			compatible = "fsl,qoriq-core-pll-1.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll1", "pll1-div2";
+		};
+
+		mux0: mux0@0 {
+			#clock-cells = <0>;
+			reg = <0x0 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux0";
+		};
+
+		mux1: mux1@20 {
+			#clock-cells = <0>;
+			reg = <0x20 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux1";
+		};
+
+		mux2: mux2@40 {
+			#clock-cells = <0>;
+			reg = <0x40 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux2";
+		};
+
+		mux3: mux3@60 {
+			#clock-cells = <0>;
+			reg = <0x60 0x4>;
+			compatible = "fsl,qoriq-core-mux-1.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
+			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
+			clock-output-names = "cmux3";
+		};
 	};
 
 	rcpm: global-utilities@e2000 {
diff --git a/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi
index 40ca943..3674686 100644
--- a/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi
@@ -81,6 +81,7 @@
 		cpu0: PowerPC,e5500@0 {
 			device_type = "cpu";
 			reg = <0>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2_0>;
 			L2_0: l2-cache {
 				next-level-cache = <&cpc>;
@@ -89,6 +90,7 @@
 		cpu1: PowerPC,e5500@1 {
 			device_type = "cpu";
 			reg = <1>;
+			clocks = <&mux1>;
 			next-level-cache = <&L2_1>;
 			L2_1: l2-cache {
 				next-level-cache = <&cpc>;
@@ -97,6 +99,7 @@
 		cpu2: PowerPC,e5500@2 {
 			device_type = "cpu";
 			reg = <2>;
+			clocks = <&mux2>;
 			next-level-cache = <&L2_2>;
 			L2_2: l2-cache {
 				next-level-cache = <&cpc>;
@@ -105,6 +108,7 @@
 		cpu3: PowerPC,e5500@3 {
 			device_type = "cpu";
 			reg = <3>;
+			clocks = <&mux3>;
 			next-level-cache = <&L2_3>;
 			L2_3: l2-cache {
 				next-level-cache = <&cpc>;
diff --git a/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi b/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi
index 510afa3..d45434f 100644
--- a/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi
@@ -370,6 +370,91 @@
 	clockgen: global-utilities@e1000 {
 		compatible = "fsl,t4240-clockgen", "fsl,qoriq-clockgen-2.0";
 		reg = <0xe1000 0x1000>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		sysclk: sysclk {
+			#clock-cells = <0>;
+			compatible = "fsl,qoriq-sysclk-2.0", "fixed-clock";
+			clock-output-names = "sysclk";
+		}
+
+		pll0: pll0@800 {
+			#clock-cells = <1>;
+			reg = <0x800 0x4>;
+			compatible = "fsl,qoriq-core-pll-2.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll0", "pll0-div2", "pll0-div4";
+		};
+
+		pll1: pll1@820 {
+			#clock-cells = <1>;
+			reg = <0x820 0x4>;
+			compatible = "fsl,qoriq-core-pll-2.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll1", "pll1-div2", "pll1-div4";
+		};
+
+		pll2: pll2@840 {
+			#clock-cells = <1>;
+			reg = <0x840 0x4>;
+			compatible = "fsl,qoriq-core-pll-2.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll2", "pll2-div2", "pll2-div4";
+		};
+
+		pll3: pll3@860 {
+			#clock-cells = <1>;
+			reg = <0x860 0x4>;
+			compatible = "fsl,qoriq-core-pll-2.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll3", "pll3-div2", "pll3-div4";
+		};
+
+		pll4: pll4@880 {
+			#clock-cells = <1>;
+			reg = <0x880 0x4>;
+			compatible = "fsl,qoriq-core-pll-2.0";
+			clocks = <&sysclk>;
+			clock-output-names = "pll4", "pll4-div2", "pll4-div4";
+		};
+
+		mux0: mux0@0 {
+			#clock-cells = <0>;
+			reg = <0x0 0x4>;
+			compatible = "fsl,qoriq-core-mux-2.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>,
+				 <&pll1 0>, <&pll1 1>, <&pll1 2>,
+				 <&pll2 0>, <&pll2 1>, <&pll2 2>;
+			clock-names = "pll0_0", "pll0_1", "pll0_2",
+				"pll1_0", "pll1_1", "pll1_2",
+				"pll2_0", "pll2_1", "pll2_2";
+			clock-output-names = "cmux0";
+		};
+
+		mux1: mux1@20 {
+			#clock-cells = <0>;
+			reg = <0x20 0x4>;
+			compatible = "fsl,qoriq-core-mux-2.0";
+			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>,
+				 <&pll1 0>, <&pll1 1>, <&pll1 2>,
+				 <&pll2 0>, <&pll2 1>, <&pll2 2>;
+			clock-names = "pll0_0", "pll0_1", "pll0_2",
+				"pll1_0", "pll1_1", "pll1_2",
+				"pll2_0", "pll2_1", "pll2_2";
+			clock-output-names = "cmux1";
+		};
+
+		mux2: mux2@40 {
+			#clock-cells = <0>;
+			reg = <0x40 0x4>;
+			compatible = "fsl,qoriq-core-mux-2.0";
+			clocks = <&pll3 0>, <&pll3 1>, <&pll3 2>,
+				 <&pll4 0>, <&pll4 1>, <&pll4 2>;
+			clock-names = "pll3_0", "pll3_1", "pll3_2",
+				"pll4_0", "pll4_1", "pll4_2";
+			clock-output-names = "cmux2";
+		};
 	};
 
 	rcpm: global-utilities@e2000 {
diff --git a/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi b/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi
index a93c55a..0b8ccc5 100644
--- a/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi
+++ b/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi
@@ -67,61 +67,73 @@
 		cpu0: PowerPC,e6500@0 {
 			device_type = "cpu";
 			reg = <0 1>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2_1>;
 		};
 		cpu1: PowerPC,e6500@2 {
 			device_type = "cpu";
 			reg = <2 3>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2_1>;
 		};
 		cpu2: PowerPC,e6500@4 {
 			device_type = "cpu";
 			reg = <4 5>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2_1>;
 		};
 		cpu3: PowerPC,e6500@6 {
 			device_type = "cpu";
 			reg = <6 7>;
+			clocks = <&mux0>;
 			next-level-cache = <&L2_1>;
 		};
 		cpu4: PowerPC,e6500@8 {
 			device_type = "cpu";
 			reg = <8 9>;
+			clocks = <&mux1>;
 			next-level-cache = <&L2_2>;
 		};
 		cpu5: PowerPC,e6500@10 {
 			device_type = "cpu";
 			reg = <10 11>;
+			clocks = <&mux1>;
 			next-level-cache = <&L2_2>;
 		};
 		cpu6: PowerPC,e6500@12 {
 			device_type = "cpu";
 			reg = <12 13>;
+			clocks = <&mux1>;
 			next-level-cache = <&L2_2>;
 		};
 		cpu7: PowerPC,e6500@14 {
 			device_type = "cpu";
 			reg = <14 15>;
+			clocks = <&mux1>;
 			next-level-cache = <&L2_2>;
 		};
 		cpu8: PowerPC,e6500@16 {
 			device_type = "cpu";
 			reg = <16 17>;
+			clocks = <&mux2>;
 			next-level-cache = <&L2_3>;
 		};
 		cpu9: PowerPC,e6500@18 {
 			device_type = "cpu";
 			reg = <18 19>;
+			clocks = <&mux2>;
 			next-level-cache = <&L2_3>;
 		};
 		cpu10: PowerPC,e6500@20 {
 			device_type = "cpu";
 			reg = <20 21>;
+			clocks = <&mux2>;
 			next-level-cache = <&L2_3>;
 		};
 		cpu11: PowerPC,e6500@22 {
 			device_type = "cpu";
 			reg = <22 23>;
+			clocks = <&mux2>;
 			next-level-cache = <&L2_3>;
 		};
 	};
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-09  6:38 [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree Yuantian.Tang
@ 2013-10-10 10:03 ` Mark Rutland
  2013-10-11  3:18   ` Tang Yuantian-B29983
  2013-10-11 19:08 ` Scott Wood
  2013-10-25 20:11 ` Grant Likely
  2 siblings, 1 reply; 25+ messages in thread
From: Mark Rutland @ 2013-10-10 10:03 UTC (permalink / raw)
  To: Yuantian.Tang; +Cc: devicetree, linuxppc-dev

On Wed, Oct 09, 2013 at 07:38:24AM +0100, Yuantian.Tang@freescale.com wrote:
> From: Tang Yuantian <yuantian.tang@freescale.com>
>
> The following SoCs will be affected: p2041, p3041, p4080,
> p5020, p5040, b4420, b4860, t4240
>
> Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> v5:
>         - refine the binding document
>         - update the compatible string
> v4:
>         - add binding document
>         - update compatible string
>         - update the reg property
> v3:
>         - fix typo
> v2:
>         - add t4240, b4420, b4860 support
>         - remove pll/4 clock from p2041, p3041 and p5020 board
>
>  .../devicetree/bindings/clock/corenet-clock.txt    | 111 ++++++++++++++++++++
>  arch/powerpc/boot/dts/fsl/b4420si-post.dtsi        |  35 +++++++
>  arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi         |   2 +
>  arch/powerpc/boot/dts/fsl/b4860si-post.dtsi        |  35 +++++++
>  arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi         |   4 +
>  arch/powerpc/boot/dts/fsl/p2041si-post.dtsi        |  60 +++++++++++
>  arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi         |   4 +
>  arch/powerpc/boot/dts/fsl/p3041si-post.dtsi        |  60 +++++++++++
>  arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi         |   4 +
>  arch/powerpc/boot/dts/fsl/p4080si-post.dtsi        | 112 +++++++++++++++++++++
>  arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi         |   8 ++
>  arch/powerpc/boot/dts/fsl/p5020si-post.dtsi        |  42 ++++++++
>  arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi         |   2 +
>  arch/powerpc/boot/dts/fsl/p5040si-post.dtsi        |  60 +++++++++++
>  arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi         |   4 +
>  arch/powerpc/boot/dts/fsl/t4240si-post.dtsi        |  85 ++++++++++++++++
>  arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi         |  12 +++
>  17 files changed, 640 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/clock/corenet-clock.txt
>
> diff --git a/Documentation/devicetree/bindings/clock/corenet-clock.txt b/Documentation/devicetree/bindings/clock/corenet-clock.txt
> new file mode 100644
> index 0000000..8efc62d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/corenet-clock.txt
> @@ -0,0 +1,111 @@
> +* Clock Block on Freescale CoreNet Platforms
> +
> +Freescale CoreNet chips take primary clocking input from the external
> +SYSCLK signal. The SYSCLK input (frequency) is multiplied using
> +multiple phase locked loops (PLL) to create a variety of frequencies
> +which can then be passed to a variety of internal logic, including
> +cores and peripheral IP blocks.
> +Please refer to the Reference Manual for details.
> +
> +1. Clock Block Binding
> +
> +Required properties:
> +- compatible: Should include one or more of the following:
> +       - "fsl,<chip>-clockgen": for chip specific clock block
> +       - "fsl,qoriq-clockgen-[1,2].x": for chassis 1.x and 2.x clock

While I can see that "fsl,<chip>-clockgen" might have a large set of
strings that we may never deal with in th kernel, I'd prefer that the
basic strings (i.e. all the "fsl,qoriq-clockgen-[1,2].x" variants) were
listed explicitly here.

Given they only seem to be "fsl,qoriq-clockgen-1.0" and
"fsl,qoriq-clockgen-2.0" this shouldn't be too difficult to list and
describe.

> +- reg: Offset and length of the clock register set
> +- clock-frequency: Indicates input clock frequency of clock block.
> +       Will be set by u-boot

Why does the fact this is set by u-boot matter to the binding?

> +
> +Recommended properties:
> +- #ddress-cells: Specifies the number of cells used to represent
> +       physical base addresses.  Must be present if the device has
> +       sub-nodes and set to 1 if present

Typo: #address-cells

In the example it looks like the address cells of child nodes are
offsets within the unit, rather than absolute physical addresses. Could
the code not treat them as absolute addresses? Then we'd only need to
document that #address-cells, #size-cells and ranges must be present and
have values suitable for mapping child nodes into the address space of
the parent.

> +- #size-cells: Specifies the number of cells used to represent
> +       the size of an address. Must be present if the device has
> +       sub-nodes and set to 1 if present

It's not really the size of an address, it's the size of a region
identified by a reg entry.

I think this can be simplified by my suggestion above.

> +
> +2. Clock Provider/Consumer Binding
> +
> +Most of the binding are from the common clock binding[1].
> + [1] Documentation/devicetree/bindings/clock/clock-bindings.txt
> +
> +Required properties:
> +- compatible : Should include one or more of the following:
> +       - "fsl,qoriq-core-pll-[1,2].x": Indicates a core PLL clock device
> +       - "fsl,qoriq-core-mux-[1,2].x": Indicates a core multiplexer clock
> +               device; divided from the core PLL clock

As above, I'd prefer a complete list of the basic strings we expect.

> +       - "fixed-clock": From common clock binding; indicates output clock
> +               of oscillator
> +       - "fsl,qoriq-sysclk-[1,2].x": Indicates input system clock

Here too.

> +- #clock-cells: From common clock binding; indicates the number of
> +       output clock. 0 is for one output clock; 1 for more than one clock

If a clock source has multiple outputs, what those outputs are and what
values in clock-cells they correspond to should be described here.

> +
> +Recommended properties:
> +- clocks: Should be the phandle of input parent clock
> +- clock-names: From common clock binding, indicates the clock name

That description's a bit opaque.

What's the name of the clock input on these units? That's what
clock-names should contain, and that should be documented.

Do we not _always_ need the parent clock?

If we have a clock do we need a clock-names entry for it?

> +- clock-output-names: From common clock binding, indicates the names of
> +       output clocks
> +- reg: Should be the offset and length of clock block base address.
> +       The length should be 4.
> +
> +Example for clock block and clock provider:
> +/ {
> +       clockgen: global-utilities@e1000 {
> +               compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
> +               reg = <0xe1000 0x1000>;
> +               clock-frequency = <0>;

That looks odd.

> +               #address-cells = <1>;
> +               #size-cells = <1>;
> +
> +               sysclk: sysclk {
> +                       #clock-cells = <0>;
> +                       compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";

We didn't mention in the binding that "fsl,qoriq-sysclk-1.0" was
compatible with "fixed-clock" and should have "fixed-clock" in the
compatible list...

> +                       clock-output-names = "sysclk";
> +               }
> +
> +               pll0: pll0@800 {
> +                       #clock-cells = <1>;
> +                       reg = <0x800 0x4>;
> +                       compatible = "fsl,qoriq-core-pll-1.0";
> +                       clocks = <&sysclk>;
> +                       clock-output-names = "pll0", "pll0-div2";
> +               };
> +
> +               pll1: pll1@820 {
> +                       #clock-cells = <1>;
> +                       reg = <0x820 0x4>;
> +                       compatible = "fsl,qoriq-core-pll-1.0";
> +                       clocks = <&sysclk>;
> +                       clock-output-names = "pll1", "pll1-div2";
> +               };
> +
> +               mux0: mux0@0 {
> +                       #clock-cells = <0>;
> +                       reg = <0x0 0x4>;
> +                       compatible = "fsl,qoriq-core-mux-1.0";
> +                       clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +                       clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +                       clock-output-names = "cmux0";
> +               };
> +
> +               mux1: mux1@20 {
> +                       #clock-cells = <0>;
> +                       reg = <0x20 0x4>;
> +                       compatible = "fsl,qoriq-core-mux-1.0";
> +                       clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +                       clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +                       clock-output-names = "cmux1";

How does the mux choose which input clock to use at a point in time?

Cheers,
Mark.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-10 10:03 ` Mark Rutland
@ 2013-10-11  3:18   ` Tang Yuantian-B29983
  2013-10-11  9:25     ` Mark Rutland
  0 siblings, 1 reply; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-11  3:18 UTC (permalink / raw)
  To: Mark Rutland; +Cc: devicetree, linuxppc-dev, Li Yang-Leo-R58472

VGhhbmtzIGZvciB5b3VyIHJldmlldy4NClNlZSBteSByZXBseSBpbmxpbmUNCg0KPiAtLS0tLU9y
aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXJrIFJ1dGxhbmQgW21haWx0bzptYXJrLnJ1
dGxhbmRAYXJtLmNvbV0NCj4gU2VudDogMjAxM8TqMTDUwjEwyNUg0MfG2svEIDE4OjA0DQo+IFRv
OiBUYW5nIFl1YW50aWFuLUIyOTk4Mw0KPiBDYzogZ2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZzsg
bGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7DQo+IGRldmljZXRyZWVAdmdlci5rZXJuZWwu
b3JnOyBMaSBZYW5nLUxlby1SNTg0NzINCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NV0gcG93ZXJw
Yy9tcGM4NXh4OiBVcGRhdGUgdGhlIGNsb2NrIG5vZGVzIGluIGRldmljZQ0KPiB0cmVlDQo+IA0K
PiBPbiBXZWQsIE9jdCAwOSwgMjAxMyBhdCAwNzozODoyNEFNICswMTAwLCBZdWFudGlhbi5UYW5n
QGZyZWVzY2FsZS5jb20NCj4gd3JvdGU6DQo+ID4gRnJvbTogVGFuZyBZdWFudGlhbiA8eXVhbnRp
YW4udGFuZ0BmcmVlc2NhbGUuY29tPg0KPiA+DQo+ID4gVGhlIGZvbGxvd2luZyBTb0NzIHdpbGwg
YmUgYWZmZWN0ZWQ6IHAyMDQxLCBwMzA0MSwgcDQwODAsIHA1MDIwLA0KPiA+IHA1MDQwLCBiNDQy
MCwgYjQ4NjAsIHQ0MjQwDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBUYW5nIFl1YW50aWFuIDxZ
dWFudGlhbi5UYW5nQGZyZWVzY2FsZS5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogTGkgWWFuZyA8
bGVvbGlAZnJlZXNjYWxlLmNvbT4NCj4gPiAtLS0NCj4gPiB2NToNCj4gPiAgICAgICAgIC0gcmVm
aW5lIHRoZSBiaW5kaW5nIGRvY3VtZW50DQo+ID4gICAgICAgICAtIHVwZGF0ZSB0aGUgY29tcGF0
aWJsZSBzdHJpbmcNCj4gPiB2NDoNCj4gPiAgICAgICAgIC0gYWRkIGJpbmRpbmcgZG9jdW1lbnQN
Cj4gPiAgICAgICAgIC0gdXBkYXRlIGNvbXBhdGlibGUgc3RyaW5nDQo+ID4gICAgICAgICAtIHVw
ZGF0ZSB0aGUgcmVnIHByb3BlcnR5DQo+ID4gdjM6DQo+ID4gICAgICAgICAtIGZpeCB0eXBvDQo+
ID4gdjI6DQo+ID4gICAgICAgICAtIGFkZCB0NDI0MCwgYjQ0MjAsIGI0ODYwIHN1cHBvcnQNCj4g
PiAgICAgICAgIC0gcmVtb3ZlIHBsbC80IGNsb2NrIGZyb20gcDIwNDEsIHAzMDQxIGFuZCBwNTAy
MCBib2FyZA0KPiA+DQo+ID4gIC4uLi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2NvcmVuZXQt
Y2xvY2sudHh0ICAgIHwgMTExDQo+ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gIGFyY2gvcG93
ZXJwYy9ib290L2R0cy9mc2wvYjQ0MjBzaS1wb3N0LmR0c2kgICAgICAgIHwgIDM1ICsrKysrKysN
Cj4gPiAgYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9iNDQyMHNpLXByZS5kdHNpICAgICAgICAg
fCAgIDIgKw0KPiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL2I0ODYwc2ktcG9zdC5kdHNp
ICAgICAgICB8ICAzNSArKysrKysrDQo+ID4gIGFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvYjQ4
NjBzaS1wcmUuZHRzaSAgICAgICAgIHwgICA0ICsNCj4gPiAgYXJjaC9wb3dlcnBjL2Jvb3QvZHRz
L2ZzbC9wMjA0MXNpLXBvc3QuZHRzaSAgICAgICAgfCAgNjAgKysrKysrKysrKysNCj4gPiAgYXJj
aC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9wMjA0MXNpLXByZS5kdHNpICAgICAgICAgfCAgIDQgKw0K
PiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3AzMDQxc2ktcG9zdC5kdHNpICAgICAgICB8
ICA2MCArKysrKysrKysrKw0KPiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3AzMDQxc2kt
cHJlLmR0c2kgICAgICAgICB8ICAgNCArDQo+ID4gIGFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wv
cDQwODBzaS1wb3N0LmR0c2kgICAgICAgIHwgMTEyDQo+ICsrKysrKysrKysrKysrKysrKysrKw0K
PiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3A0MDgwc2ktcHJlLmR0c2kgICAgICAgICB8
ICAgOCArKw0KPiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3A1MDIwc2ktcG9zdC5kdHNp
ICAgICAgICB8ICA0MiArKysrKysrKw0KPiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3A1
MDIwc2ktcHJlLmR0c2kgICAgICAgICB8ICAgMiArDQo+ID4gIGFyY2gvcG93ZXJwYy9ib290L2R0
cy9mc2wvcDUwNDBzaS1wb3N0LmR0c2kgICAgICAgIHwgIDYwICsrKysrKysrKysrDQo+ID4gIGFy
Y2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcDUwNDBzaS1wcmUuZHRzaSAgICAgICAgIHwgICA0ICsN
Cj4gPiAgYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC90NDI0MHNpLXBvc3QuZHRzaSAgICAgICAg
fCAgODUNCj4gKysrKysrKysrKysrKysrKw0KPiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNs
L3Q0MjQwc2ktcHJlLmR0c2kgICAgICAgICB8ICAxMiArKysNCj4gPiAgMTcgZmlsZXMgY2hhbmdl
ZCwgNjQwIGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2NvcmVuZXQtY2xvY2sudHh0DQo+ID4N
Cj4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2Nr
L2NvcmVuZXQtY2xvY2sudHh0DQo+ID4gYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvY2xvY2svY29yZW5ldC1jbG9jay50eHQNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+
IGluZGV4IDAwMDAwMDAuLjhlZmM2MmQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2NvcmVuZXQtY2xvY2sudHh0DQo+
ID4gQEAgLTAsMCArMSwxMTEgQEANCj4gPiArKiBDbG9jayBCbG9jayBvbiBGcmVlc2NhbGUgQ29y
ZU5ldCBQbGF0Zm9ybXMNCj4gPiArDQo+ID4gK0ZyZWVzY2FsZSBDb3JlTmV0IGNoaXBzIHRha2Ug
cHJpbWFyeSBjbG9ja2luZyBpbnB1dCBmcm9tIHRoZSBleHRlcm5hbA0KPiA+ICtTWVNDTEsgc2ln
bmFsLiBUaGUgU1lTQ0xLIGlucHV0IChmcmVxdWVuY3kpIGlzIG11bHRpcGxpZWQgdXNpbmcNCj4g
PiArbXVsdGlwbGUgcGhhc2UgbG9ja2VkIGxvb3BzIChQTEwpIHRvIGNyZWF0ZSBhIHZhcmlldHkg
b2YgZnJlcXVlbmNpZXMNCj4gPiArd2hpY2ggY2FuIHRoZW4gYmUgcGFzc2VkIHRvIGEgdmFyaWV0
eSBvZiBpbnRlcm5hbCBsb2dpYywgaW5jbHVkaW5nDQo+ID4gK2NvcmVzIGFuZCBwZXJpcGhlcmFs
IElQIGJsb2Nrcy4NCj4gPiArUGxlYXNlIHJlZmVyIHRvIHRoZSBSZWZlcmVuY2UgTWFudWFsIGZv
ciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArMS4gQ2xvY2sgQmxvY2sgQmluZGluZw0KPiA+ICsNCj4g
PiArUmVxdWlyZWQgcHJvcGVydGllczoNCj4gPiArLSBjb21wYXRpYmxlOiBTaG91bGQgaW5jbHVk
ZSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nOg0KPiA+ICsgICAgICAgLSAiZnNsLDxjaGlw
Pi1jbG9ja2dlbiI6IGZvciBjaGlwIHNwZWNpZmljIGNsb2NrIGJsb2NrDQo+ID4gKyAgICAgICAt
ICJmc2wscW9yaXEtY2xvY2tnZW4tWzEsMl0ueCI6IGZvciBjaGFzc2lzIDEueCBhbmQgMi54IGNs
b2NrDQo+IA0KPiBXaGlsZSBJIGNhbiBzZWUgdGhhdCAiZnNsLDxjaGlwPi1jbG9ja2dlbiIgbWln
aHQgaGF2ZSBhIGxhcmdlIHNldCBvZg0KPiBzdHJpbmdzIHRoYXQgd2UgbWF5IG5ldmVyIGRlYWwg
d2l0aCBpbiB0aCBrZXJuZWwsIEknZCBwcmVmZXIgdGhhdCB0aGUNCj4gYmFzaWMgc3RyaW5ncyAo
aS5lLiBhbGwgdGhlICJmc2wscW9yaXEtY2xvY2tnZW4tWzEsMl0ueCIgdmFyaWFudHMpIHdlcmUN
Cj4gbGlzdGVkIGV4cGxpY2l0bHkgaGVyZS4NCj4gDQo+IEdpdmVuIHRoZXkgb25seSBzZWVtIHRv
IGJlICJmc2wscW9yaXEtY2xvY2tnZW4tMS4wIiBhbmQgImZzbCxxb3JpcS0NCj4gY2xvY2tnZW4t
Mi4wIiB0aGlzIHNob3VsZG4ndCBiZSB0b28gZGlmZmljdWx0IHRvIGxpc3QgYW5kIGRlc2NyaWJl
Lg0KPiANCk9LLCBJIHdpbGwgbGlzdCB0aGVtIGFsbC4NCg0KPiA+ICstIHJlZzogT2Zmc2V0IGFu
ZCBsZW5ndGggb2YgdGhlIGNsb2NrIHJlZ2lzdGVyIHNldA0KPiA+ICstIGNsb2NrLWZyZXF1ZW5j
eTogSW5kaWNhdGVzIGlucHV0IGNsb2NrIGZyZXF1ZW5jeSBvZiBjbG9jayBibG9jay4NCj4gPiAr
ICAgICAgIFdpbGwgYmUgc2V0IGJ5IHUtYm9vdA0KPiANCj4gV2h5IGRvZXMgdGhlIGZhY3QgdGhp
cyBpcyBzZXQgYnkgdS1ib290IG1hdHRlciB0byB0aGUgYmluZGluZz8NCj4gDQpPSywgSSB3aWxs
IHJlbW92ZSBpdC4NCg0KPiA+ICsNCj4gPiArUmVjb21tZW5kZWQgcHJvcGVydGllczoNCj4gPiAr
LSAjZGRyZXNzLWNlbGxzOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyB1c2VkIHRvIHJl
cHJlc2VudA0KPiA+ICsgICAgICAgcGh5c2ljYWwgYmFzZSBhZGRyZXNzZXMuICBNdXN0IGJlIHBy
ZXNlbnQgaWYgdGhlIGRldmljZSBoYXMNCj4gPiArICAgICAgIHN1Yi1ub2RlcyBhbmQgc2V0IHRv
IDEgaWYgcHJlc2VudA0KPiANCj4gVHlwbzogI2FkZHJlc3MtY2VsbHMNCj4gDQo+IEluIHRoZSBl
eGFtcGxlIGl0IGxvb2tzIGxpa2UgdGhlIGFkZHJlc3MgY2VsbHMgb2YgY2hpbGQgbm9kZXMgYXJl
IG9mZnNldHMNCj4gd2l0aGluIHRoZSB1bml0LCByYXRoZXIgdGhhbiBhYnNvbHV0ZSBwaHlzaWNh
bCBhZGRyZXNzZXMuIENvdWxkIHRoZSBjb2RlDQo+IG5vdCB0cmVhdCB0aGVtIGFzIGFic29sdXRl
IGFkZHJlc3Nlcz8gVGhlbiB3ZSdkIG9ubHkgbmVlZCB0byBkb2N1bWVudA0KPiB0aGF0ICNhZGRy
ZXNzLWNlbGxzLCAjc2l6ZS1jZWxscyBhbmQgcmFuZ2VzIG11c3QgYmUgcHJlc2VudCBhbmQgaGF2
ZQ0KPiB2YWx1ZXMgc3VpdGFibGUgZm9yIG1hcHBpbmcgY2hpbGQgbm9kZXMgaW50byB0aGUgYWRk
cmVzcyBzcGFjZSBvZiB0aGUNCj4gcGFyZW50Lg0KPiANCk9LLCB0aGFua3MuDQoNCj4gPiArLSAj
c2l6ZS1jZWxsczogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgdXNlZCB0byByZXByZXNl
bnQNCj4gPiArICAgICAgIHRoZSBzaXplIG9mIGFuIGFkZHJlc3MuIE11c3QgYmUgcHJlc2VudCBp
ZiB0aGUgZGV2aWNlIGhhcw0KPiA+ICsgICAgICAgc3ViLW5vZGVzIGFuZCBzZXQgdG8gMSBpZiBw
cmVzZW50DQo+IA0KPiBJdCdzIG5vdCByZWFsbHkgdGhlIHNpemUgb2YgYW4gYWRkcmVzcywgaXQn
cyB0aGUgc2l6ZSBvZiBhIHJlZ2lvbg0KPiBpZGVudGlmaWVkIGJ5IGEgcmVnIGVudHJ5Lg0KPiAN
Cj4gSSB0aGluayB0aGlzIGNhbiBiZSBzaW1wbGlmaWVkIGJ5IG15IHN1Z2dlc3Rpb24gYWJvdmUu
DQo+IA0KWWVzDQoNCj4gPiArDQo+ID4gKzIuIENsb2NrIFByb3ZpZGVyL0NvbnN1bWVyIEJpbmRp
bmcNCj4gPiArDQo+ID4gK01vc3Qgb2YgdGhlIGJpbmRpbmcgYXJlIGZyb20gdGhlIGNvbW1vbiBj
bG9jayBiaW5kaW5nWzFdLg0KPiA+ICsgWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQNCj4gPiArDQo+ID4gK1JlcXVpcmVkIHByb3Bl
cnRpZXM6DQo+ID4gKy0gY29tcGF0aWJsZSA6IFNob3VsZCBpbmNsdWRlIG9uZSBvciBtb3JlIG9m
IHRoZSBmb2xsb3dpbmc6DQo+ID4gKyAgICAgICAtICJmc2wscW9yaXEtY29yZS1wbGwtWzEsMl0u
eCI6IEluZGljYXRlcyBhIGNvcmUgUExMIGNsb2NrDQo+IGRldmljZQ0KPiA+ICsgICAgICAgLSAi
ZnNsLHFvcmlxLWNvcmUtbXV4LVsxLDJdLngiOiBJbmRpY2F0ZXMgYSBjb3JlIG11bHRpcGxleGVy
DQo+IGNsb2NrDQo+ID4gKyAgICAgICAgICAgICAgIGRldmljZTsgZGl2aWRlZCBmcm9tIHRoZSBj
b3JlIFBMTCBjbG9jaw0KPiANCj4gQXMgYWJvdmUsIEknZCBwcmVmZXIgYSBjb21wbGV0ZSBsaXN0
IG9mIHRoZSBiYXNpYyBzdHJpbmdzIHdlIGV4cGVjdC4NCj4gDQpUaGVyZSBpcyBubyBsaXN0IGhl
cmUsIGp1c3QgKi1tdXgtMS54IGFuZCAqLW11eC0yLngNCldoYXQga2luZCBvZiBsaXN0IGRvIHlv
dSBwcmVmZXI/DQoNCj4gPiArICAgICAgIC0gImZpeGVkLWNsb2NrIjogRnJvbSBjb21tb24gY2xv
Y2sgYmluZGluZzsgaW5kaWNhdGVzIG91dHB1dA0KPiBjbG9jaw0KPiA+ICsgICAgICAgICAgICAg
ICBvZiBvc2NpbGxhdG9yDQo+ID4gKyAgICAgICAtICJmc2wscW9yaXEtc3lzY2xrLVsxLDJdLngi
OiBJbmRpY2F0ZXMgaW5wdXQgc3lzdGVtIGNsb2NrDQo+IA0KPiBIZXJlIHRvby4NCj4gDQo+ID4g
Ky0gI2Nsb2NrLWNlbGxzOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBpbmRpY2F0ZXMgdGhl
IG51bWJlciBvZg0KPiA+ICsgICAgICAgb3V0cHV0IGNsb2NrLiAwIGlzIGZvciBvbmUgb3V0cHV0
IGNsb2NrOyAxIGZvciBtb3JlIHRoYW4gb25lDQo+ID4gK2Nsb2NrDQo+IA0KPiBJZiBhIGNsb2Nr
IHNvdXJjZSBoYXMgbXVsdGlwbGUgb3V0cHV0cywgd2hhdCB0aG9zZSBvdXRwdXRzIGFyZSBhbmQg
d2hhdA0KPiB2YWx1ZXMgaW4gY2xvY2stY2VsbHMgdGhleSBjb3JyZXNwb25kIHRvIHNob3VsZCBi
ZSBkZXNjcmliZWQgaGVyZS4NCj4gDQpUaGVyZSBpcyBubyB3YXkgdG8gZGVzY3JpYmUgdGhlIHZh
bHVlcyBvZiBtdWx0aXBsZSBvdXRwdXRzIGhlcmUuDQpUaGlzIHByb3BlcnR5IGlzIHRoZSB0eXBl
IG9mIEJPT0wuIFNlZSB0aGUgY2xvY2stYmluZGluZ3MudHh0Lg0KDQo+ID4gKw0KPiA+ICtSZWNv
bW1lbmRlZCBwcm9wZXJ0aWVzOg0KPiA+ICstIGNsb2NrczogU2hvdWxkIGJlIHRoZSBwaGFuZGxl
IG9mIGlucHV0IHBhcmVudCBjbG9jaw0KPiA+ICstIGNsb2NrLW5hbWVzOiBGcm9tIGNvbW1vbiBj
bG9jayBiaW5kaW5nLCBpbmRpY2F0ZXMgdGhlIGNsb2NrIG5hbWUNCj4gDQo+IFRoYXQgZGVzY3Jp
cHRpb24ncyBhIGJpdCBvcGFxdWUuDQo+IA0KPiBXaGF0J3MgdGhlIG5hbWUgb2YgdGhlIGNsb2Nr
IGlucHV0IG9uIHRoZXNlIHVuaXRzPyBUaGF0J3Mgd2hhdCBjbG9jay0NCj4gbmFtZXMgc2hvdWxk
IGNvbnRhaW4sIGFuZCB0aGF0IHNob3VsZCBiZSBkb2N1bWVudGVkLg0KPiANCklzIGl0IG5lY2Vz
c2FyeSB0byBkb2N1bWVudCB0aGVzZSBuYW1lcyBzaW5jZSB0aGV5IGFyZSB0b3RhbGx5IHVzZWQN
CmJ5IGNsb2NrIHByb3ZpZGVyIGFuZCBjbG9jayBjb25zdW1lciBoYXMgbm8gaWRlYSBhYm91dCB0
aGVtPw0KDQo+IERvIHdlIG5vdCBfYWx3YXlzXyBuZWVkIHRoZSBwYXJlbnQgY2xvY2s/DQo+IA0K
Tm90IGZvciBmaXhlZC1jbG9jayB0aGF0IGl0cyBwYXJlbnQgY2xvY2sgaXMgb3NjaWxsYXRvciA6
KQ0KDQo+IElmIHdlIGhhdmUgYSBjbG9jayBkbyB3ZSBuZWVkIGEgY2xvY2stbmFtZXMgZW50cnkg
Zm9yIGl0Pw0KPiANClRlY2huaWNhbGx5IHllcywgYnV0IEkgZG9uJ3QgYm90aGVyIHRvIGFkZCBp
dCBpZiB0aGUgY2xvY2sgbm9kZSBoYXMNCm9ubHkgb25lIGNsb2Nrcy4NCg0KPiA+ICstIGNsb2Nr
LW91dHB1dC1uYW1lczogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZywgaW5kaWNhdGVzIHRoZSBu
YW1lcw0KPiBvZg0KPiA+ICsgICAgICAgb3V0cHV0IGNsb2Nrcw0KPiA+ICstIHJlZzogU2hvdWxk
IGJlIHRoZSBvZmZzZXQgYW5kIGxlbmd0aCBvZiBjbG9jayBibG9jayBiYXNlIGFkZHJlc3MuDQo+
ID4gKyAgICAgICBUaGUgbGVuZ3RoIHNob3VsZCBiZSA0Lg0KPiA+ICsNCj4gPiArRXhhbXBsZSBm
b3IgY2xvY2sgYmxvY2sgYW5kIGNsb2NrIHByb3ZpZGVyOg0KPiA+ICsvIHsNCj4gPiArICAgICAg
IGNsb2NrZ2VuOiBnbG9iYWwtdXRpbGl0aWVzQGUxMDAwIHsNCj4gPiArICAgICAgICAgICAgICAg
Y29tcGF0aWJsZSA9ICJmc2wscDUwMjAtY2xvY2tnZW4iLCAiZnNsLHFvcmlxLWNsb2NrZ2VuLQ0K
PiAxLjAiOw0KPiA+ICsgICAgICAgICAgICAgICByZWcgPSA8MHhlMTAwMCAweDEwMDA+Ow0KPiA+
ICsgICAgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3kgPSA8MD47DQo+IA0KPiBUaGF0IGxvb2tz
IG9kZC4NCj4gDQpZZXMsIGJ1dCBpdCBoYXMgYWxyZWFkeSBleGlzdGVkIGhlcmUgYmVmb3JlIHRo
aXMgcGF0Y2guDQpDYW4gSSBtb3ZlIGl0IHRvIHN5c2NsayBjbG9jayBub2RlIHNpbmNlIGl0IGlz
IG5vdCB1c2VkIHlldD8NCg0KPiA+ICsgICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwx
PjsNCj4gPiArICAgICAgICAgICAgICAgI3NpemUtY2VsbHMgPSA8MT47DQo+ID4gKw0KPiA+ICsg
ICAgICAgICAgICAgICBzeXNjbGs6IHN5c2NsayB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg
ICAgI2Nsb2NrLWNlbGxzID0gPDA+Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbXBh
dGlibGUgPSAiZnNsLHFvcmlxLXN5c2Nsay0xLjAiLA0KPiA+ICsgImZpeGVkLWNsb2NrIjsNCj4g
DQo+IFdlIGRpZG4ndCBtZW50aW9uIGluIHRoZSBiaW5kaW5nIHRoYXQgImZzbCxxb3JpcS1zeXNj
bGstMS4wIiB3YXMNCj4gY29tcGF0aWJsZSB3aXRoICJmaXhlZC1jbG9jayIgYW5kIHNob3VsZCBo
YXZlICJmaXhlZC1jbG9jayIgaW4gdGhlDQo+IGNvbXBhdGlibGUgbGlzdC4uLg0KPiANCk9LLCB3
aWxsIGZpeCBpdC4NCg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLW91dHB1dC1u
YW1lcyA9ICJzeXNjbGsiOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg
ICAgICAgICAgICBwbGwwOiBwbGwwQDgwMCB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg
I2Nsb2NrLWNlbGxzID0gPDE+Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDww
eDgwMCAweDQ+Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiZnNs
LHFvcmlxLWNvcmUtcGxsLTEuMCI7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tz
ID0gPCZzeXNjbGs+Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLW91dHB1dC1u
YW1lcyA9ICJwbGwwIiwgInBsbDAtZGl2MiI7DQo+ID4gKyAgICAgICAgICAgICAgIH07DQo+ID4g
Kw0KPiA+ICsgICAgICAgICAgICAgICBwbGwxOiBwbGwxQDgyMCB7DQo+ID4gKyAgICAgICAgICAg
ICAgICAgICAgICAgI2Nsb2NrLWNlbGxzID0gPDE+Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAg
ICAgIHJlZyA9IDwweDgyMCAweDQ+Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbXBh
dGlibGUgPSAiZnNsLHFvcmlxLWNvcmUtcGxsLTEuMCI7DQo+ID4gKyAgICAgICAgICAgICAgICAg
ICAgICAgY2xvY2tzID0gPCZzeXNjbGs+Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNs
b2NrLW91dHB1dC1uYW1lcyA9ICJwbGwxIiwgInBsbDEtZGl2MiI7DQo+ID4gKyAgICAgICAgICAg
ICAgIH07DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBtdXgwOiBtdXgwQDAgew0KPiA+ICsg
ICAgICAgICAgICAgICAgICAgICAgICNjbG9jay1jZWxscyA9IDwwPjsNCj4gPiArICAgICAgICAg
ICAgICAgICAgICAgICByZWcgPSA8MHgwIDB4ND47DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg
ICAgY29tcGF0aWJsZSA9ICJmc2wscW9yaXEtY29yZS1tdXgtMS4wIjsNCj4gPiArICAgICAgICAg
ICAgICAgICAgICAgICBjbG9ja3MgPSA8JnBsbDAgMD4sIDwmcGxsMCAxPiwgPCZwbGwxIDA+LA0K
PiA8JnBsbDEgMT47DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2xvY2stbmFtZXMgPSAi
cGxsMF8wIiwgInBsbDBfMSIsICJwbGwxXzAiLA0KPiAicGxsMV8xIjsNCj4gPiArICAgICAgICAg
ICAgICAgICAgICAgICBjbG9jay1vdXRwdXQtbmFtZXMgPSAiY211eDAiOw0KPiA+ICsgICAgICAg
ICAgICAgICB9Ow0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgbXV4MTogbXV4MUAyMCB7DQo+
ID4gKyAgICAgICAgICAgICAgICAgICAgICAgI2Nsb2NrLWNlbGxzID0gPDA+Ow0KPiA+ICsgICAg
ICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDIwIDB4ND47DQo+ID4gKyAgICAgICAgICAgICAg
ICAgICAgICAgY29tcGF0aWJsZSA9ICJmc2wscW9yaXEtY29yZS1tdXgtMS4wIjsNCj4gPiArICAg
ICAgICAgICAgICAgICAgICAgICBjbG9ja3MgPSA8JnBsbDAgMD4sIDwmcGxsMCAxPiwgPCZwbGwx
IDA+LA0KPiA8JnBsbDEgMT47DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2xvY2stbmFt
ZXMgPSAicGxsMF8wIiwgInBsbDBfMSIsICJwbGwxXzAiLA0KPiAicGxsMV8xIjsNCj4gPiArICAg
ICAgICAgICAgICAgICAgICAgICBjbG9jay1vdXRwdXQtbmFtZXMgPSAiY211eDEiOw0KPiANCj4g
SG93IGRvZXMgdGhlIG11eCBjaG9vc2Ugd2hpY2ggaW5wdXQgY2xvY2sgdG8gdXNlIGF0IGEgcG9p
bnQgaW4gdGltZT8NCj4gDQpUaGF0IGlzIGRlY2lkZWQgYXQgcnVudGltZS4gRGlmZmVyZW50IGlu
cHV0IGNsb2NrIHdpbGwgbGVhZCB0byB0aGUgZGlmZmVyZW50DQpDbG9jayBmcmVxdWVuY3kgdGhh
dCB0aGUgQ1BVcyB3b3JrIG9uLg0KDQpUaGFua3MsDQpZdWFudGlhbg0KDQo+IENoZWVycywNCj4g
TWFyay4NCg0K

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-11  3:18   ` Tang Yuantian-B29983
@ 2013-10-11  9:25     ` Mark Rutland
  2013-10-11 19:07       ` Scott Wood
  2013-10-12  3:40       ` Tang Yuantian-B29983
  0 siblings, 2 replies; 25+ messages in thread
From: Mark Rutland @ 2013-10-11  9:25 UTC (permalink / raw)
  To: Tang Yuantian-B29983; +Cc: devicetree, linuxppc-dev, Li Yang-Leo-R58472

On Fri, Oct 11, 2013 at 04:18:18AM +0100, Tang Yuantian-B29983 wrote:
> Thanks for your review.
> See my reply inline
>
> > -----Original Message-----
> > From: Mark Rutland [mailto:mark.rutland@arm.com]
> > Sent: 2013年10月10日 星期四 18:04
> > To: Tang Yuantian-B29983
> > Cc: galak@kernel.crashing.org; linuxppc-dev@lists.ozlabs.org;
> > devicetree@vger.kernel.org; Li Yang-Leo-R58472
> > Subject: Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device
> > tree
> >
> > On Wed, Oct 09, 2013 at 07:38:24AM +0100, Yuantian.Tang@freescale.com
> > wrote:
> > > From: Tang Yuantian <yuantian.tang@freescale.com>
> > >
> > > The following SoCs will be affected: p2041, p3041, p4080, p5020,
> > > p5040, b4420, b4860, t4240
> > >
> > > Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> > > Signed-off-by: Li Yang <leoli@freescale.com>
> > > ---
> > > v5:
> > >         - refine the binding document
> > >         - update the compatible string
> > > v4:
> > >         - add binding document
> > >         - update compatible string
> > >         - update the reg property
> > > v3:
> > >         - fix typo
> > > v2:
> > >         - add t4240, b4420, b4860 support
> > >         - remove pll/4 clock from p2041, p3041 and p5020 board
> > >
> > >  .../devicetree/bindings/clock/corenet-clock.txt    | 111
> > ++++++++++++++++++++
> > >  arch/powerpc/boot/dts/fsl/b4420si-post.dtsi        |  35 +++++++
> > >  arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi         |   2 +
> > >  arch/powerpc/boot/dts/fsl/b4860si-post.dtsi        |  35 +++++++
> > >  arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi         |   4 +
> > >  arch/powerpc/boot/dts/fsl/p2041si-post.dtsi        |  60 +++++++++++
> > >  arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi         |   4 +
> > >  arch/powerpc/boot/dts/fsl/p3041si-post.dtsi        |  60 +++++++++++
> > >  arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi         |   4 +
> > >  arch/powerpc/boot/dts/fsl/p4080si-post.dtsi        | 112
> > +++++++++++++++++++++
> > >  arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi         |   8 ++
> > >  arch/powerpc/boot/dts/fsl/p5020si-post.dtsi        |  42 ++++++++
> > >  arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi         |   2 +
> > >  arch/powerpc/boot/dts/fsl/p5040si-post.dtsi        |  60 +++++++++++
> > >  arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi         |   4 +
> > >  arch/powerpc/boot/dts/fsl/t4240si-post.dtsi        |  85
> > ++++++++++++++++
> > >  arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi         |  12 +++
> > >  17 files changed, 640 insertions(+)
> > >  create mode 100644
> > > Documentation/devicetree/bindings/clock/corenet-clock.txt
> > >
> > > diff --git a/Documentation/devicetree/bindings/clock/corenet-clock.txt
> > > b/Documentation/devicetree/bindings/clock/corenet-clock.txt
> > > new file mode 100644
> > > index 0000000..8efc62d
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/clock/corenet-clock.txt
> > > @@ -0,0 +1,111 @@
> > > +* Clock Block on Freescale CoreNet Platforms
> > > +
> > > +Freescale CoreNet chips take primary clocking input from the external
> > > +SYSCLK signal. The SYSCLK input (frequency) is multiplied using
> > > +multiple phase locked loops (PLL) to create a variety of frequencies
> > > +which can then be passed to a variety of internal logic, including
> > > +cores and peripheral IP blocks.
> > > +Please refer to the Reference Manual for details.
> > > +
> > > +1. Clock Block Binding
> > > +
> > > +Required properties:
> > > +- compatible: Should include one or more of the following:
> > > +       - "fsl,<chip>-clockgen": for chip specific clock block
> > > +       - "fsl,qoriq-clockgen-[1,2].x": for chassis 1.x and 2.x clock
> >
> > While I can see that "fsl,<chip>-clockgen" might have a large set of
> > strings that we may never deal with in th kernel, I'd prefer that the
> > basic strings (i.e. all the "fsl,qoriq-clockgen-[1,2].x" variants) were
> > listed explicitly here.
> >
> > Given they only seem to be "fsl,qoriq-clockgen-1.0" and "fsl,qoriq-
> > clockgen-2.0" this shouldn't be too difficult to list and describe.
> >
> OK, I will list them all.

Thanks.

>
> > > +- reg: Offset and length of the clock register set
> > > +- clock-frequency: Indicates input clock frequency of clock block.
> > > +       Will be set by u-boot
> >
> > Why does the fact this is set by u-boot matter to the binding?
> >
> OK, I will remove it.
>
> > > +
> > > +Recommended properties:
> > > +- #ddress-cells: Specifies the number of cells used to represent
> > > +       physical base addresses.  Must be present if the device has
> > > +       sub-nodes and set to 1 if present
> >
> > Typo: #address-cells
> >
> > In the example it looks like the address cells of child nodes are offsets
> > within the unit, rather than absolute physical addresses. Could the code
> > not treat them as absolute addresses? Then we'd only need to document
> > that #address-cells, #size-cells and ranges must be present and have
> > values suitable for mapping child nodes into the address space of the
> > parent.
> >
> OK, thanks.
>
> > > +- #size-cells: Specifies the number of cells used to represent
> > > +       the size of an address. Must be present if the device has
> > > +       sub-nodes and set to 1 if present
> >
> > It's not really the size of an address, it's the size of a region
> > identified by a reg entry.
> >
> > I think this can be simplified by my suggestion above.
> >
> Yes

Aah, I see that this is already in use, so it's a bit late to change
this...

>
> > > +
> > > +2. Clock Provider/Consumer Binding
> > > +
> > > +Most of the binding are from the common clock binding[1].
> > > + [1] Documentation/devicetree/bindings/clock/clock-bindings.txt
> > > +
> > > +Required properties:
> > > +- compatible : Should include one or more of the following:

I didn't spot this earlier, but why "one or more"? are the 2.0 variants
backwards compatible with the 1.0 variants.

> > > +       - "fsl,qoriq-core-pll-[1,2].x": Indicates a core PLL clock
> > device
> > > +       - "fsl,qoriq-core-mux-[1,2].x": Indicates a core multiplexer
> > clock
> > > +               device; divided from the core PLL clock
> >
> > As above, I'd prefer a complete list of the basic strings we expect.
> >
> There is no list here, just *-mux-1.x and *-mux-2.x
> What kind of list do you prefer?

Something like:

- compatible: Should include at least one of:
    * "fsl,qoriq-core-pll-1.0" for core PLL clocks (v1.0)
    * "fsl,qoriq-core-pll-2.0" for core PLL clocks (v2.0)
    * "fsl,qoriq-core-mux-1.0" for core mux clocks (v1.0)
    * "fsl,qoriq-core-mux-2.0" for core mux clocks (v2.0)
  The *-2.0 variants are backwards compatible with the *-1.0 variants,
  so for compatiblity a *-1.0 variant string should be in the list.

>
> > > +       - "fixed-clock": From common clock binding; indicates output
> > clock
> > > +               of oscillator
> > > +       - "fsl,qoriq-sysclk-[1,2].x": Indicates input system clock
> >
> > Here too.
> >
> > > +- #clock-cells: From common clock binding; indicates the number of
> > > +       output clock. 0 is for one output clock; 1 for more than one
> > > +clock
> >
> > If a clock source has multiple outputs, what those outputs are and what
> > values in clock-cells they correspond to should be described here.
> >
> There is no way to describe the values of multiple outputs here.
> This property is the type of BOOL. See the clock-bindings.txt.

Sorry? #clock-cells is most definitely _not_ a bool:

17: #clock-cells:      Number of cells in a clock specifier; Typically 0 for nodes
18:                    with a single clock output and 1 for nodes with multiple
19:                    clock outputs.

And neither are the clock-specifiers encoded with those cells. Consider:

  pll0: pll0@800 {
          #clock-cells = <1>;
          reg = <0x800 0x4>;
          compatible = "fsl,qoriq-core-pll-1.0";
          clocks = <&sysclk>;
          clock-output-names = "pll0", "pll0-div2";
  };

Here the value of the cells in a clock-specifier seem to be:
0: pll0
1: pll0-div2

So in a consumer, the valid values of the cells in a clock-specifier
are:

  consumer: device {
          compatible = "vendor,some-device";
          clocks = <&pll0 0>, /* pll0 */
                   <&pll0 1>; /* pll0-div2 */
  };

There must be some meaning assigned to the values of the cells in the
clock-specifier (e.g. linear index of the clock output in the hardware).
It would be good to describe this, other clock bindings do.

>
> > > +
> > > +Recommended properties:
> > > +- clocks: Should be the phandle of input parent clock
> > > +- clock-names: From common clock binding, indicates the clock name
> >
> > That description's a bit opaque.
> >
> > What's the name of the clock input on these units? That's what clock-
> > names should contain, and that should be documented.
> >
> Is it necessary to document these names since they are totally used
> by clock provider and clock consumer has no idea about them?

I'm not sure I follow -- clocks and clock-names are used by consumers.
They define which clocks are inputs to a consumer, and the names of the
clock inputs on the consumer:

  consumer@0xffff0000 {
          reg = <0xffff0000 0x1000>;
          compatible = "vendor,some-consumer";
          clocks = <&pl011 0>,
                   <&otherclock 43 22>,
                   <&pl011 1>;
          clock-names = "apb_pclk",
                        "pixel_clk",
                        "scanout_clk";
  };

Here the set of clock-names would be defined in the binding of the
consumer, based on the clock input names in the IP documentation -- they
tell the consumer which clock inputs on the consumer the clocks
described in clocks are wired in to, and describe nothing about output
of the provider. Using clock-names allows the set of clocks on an IP to
change over revisions and for some clock inputs to be optional.

>
> > Do we not _always_ need the parent clock?
> >
> Not for fixed-clock that its parent clock is oscillator :)

Certainly fixed-clock doesn't need any parent clock, but I guess PLLs
and muxes always do.

>
> > If we have a clock do we need a clock-names entry for it?
> >
> Technically yes, but I don't bother to add it if the clock node has
> only one clocks.

Ok. Where we only have one input clock, this doesn't need to be
described.

Do the mux clocks always take 3 input clocks (judging by the examples
they do)?

>
> > > +- clock-output-names: From common clock binding, indicates the names
> > of
> > > +       output clocks
> > > +- reg: Should be the offset and length of clock block base address.
> > > +       The length should be 4.
> > > +
> > > +Example for clock block and clock provider:
> > > +/ {
> > > +       clockgen: global-utilities@e1000 {
> > > +               compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-
> > 1.0";
> > > +               reg = <0xe1000 0x1000>;
> > > +               clock-frequency = <0>;
> >
> > That looks odd.
> >
> Yes, but it has already existed here before this patch.
> Can I move it to sysclk clock node since it is not used yet?

I hadn't realised there were DTS with this already. Why is there a clock
with clock-frequency = <0> at all? Surely that isn't useful...

>
> > > +               #address-cells = <1>;
> > > +               #size-cells = <1>;
> > > +
> > > +               sysclk: sysclk {
> > > +                       #clock-cells = <0>;
> > > +                       compatible = "fsl,qoriq-sysclk-1.0",
> > > + "fixed-clock";
> >
> > We didn't mention in the binding that "fsl,qoriq-sysclk-1.0" was
> > compatible with "fixed-clock" and should have "fixed-clock" in the
> > compatible list...
> >
> OK, will fix it.

Cheers. Also, doesn't a fixed-clock require a clock-frequency?

>
> > > +                       clock-output-names = "sysclk";
> > > +               }
> > > +
> > > +               pll0: pll0@800 {
> > > +                       #clock-cells = <1>;
> > > +                       reg = <0x800 0x4>;
> > > +                       compatible = "fsl,qoriq-core-pll-1.0";
> > > +                       clocks = <&sysclk>;
> > > +                       clock-output-names = "pll0", "pll0-div2";
> > > +               };
> > > +
> > > +               pll1: pll1@820 {
> > > +                       #clock-cells = <1>;
> > > +                       reg = <0x820 0x4>;
> > > +                       compatible = "fsl,qoriq-core-pll-1.0";
> > > +                       clocks = <&sysclk>;
> > > +                       clock-output-names = "pll1", "pll1-div2";
> > > +               };
> > > +
> > > +               mux0: mux0@0 {
> > > +                       #clock-cells = <0>;
> > > +                       reg = <0x0 0x4>;
> > > +                       compatible = "fsl,qoriq-core-mux-1.0";
> > > +                       clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>,
> > <&pll1 1>;
> > > +                       clock-names = "pll0_0", "pll0_1", "pll1_0",
> > "pll1_1";
> > > +                       clock-output-names = "cmux0";
> > > +               };
> > > +
> > > +               mux1: mux1@20 {
> > > +                       #clock-cells = <0>;
> > > +                       reg = <0x20 0x4>;
> > > +                       compatible = "fsl,qoriq-core-mux-1.0";
> > > +                       clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>,
> > <&pll1 1>;
> > > +                       clock-names = "pll0_0", "pll0_1", "pll1_0",
> > "pll1_1";

I didn't spot this last time, but the clock-names here seem to be the
names of the outputs from the provider, rather than the input names of
the consumer. This goes against the intended purpose of clock-names.

> > > +                       clock-output-names = "cmux1";
> >
> > How does the mux choose which input clock to use at a point in time?
> >
> That is decided at runtime. Different input clock will lead to the different
> Clock frequency that the CPUs work on.

Ok.

Cheers,
Mark.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-11  9:25     ` Mark Rutland
@ 2013-10-11 19:07       ` Scott Wood
  2013-10-12  2:52         ` Tang Yuantian-B29983
  2013-10-12  3:40       ` Tang Yuantian-B29983
  1 sibling, 1 reply; 25+ messages in thread
From: Scott Wood @ 2013-10-11 19:07 UTC (permalink / raw)
  To: Mark Rutland
  Cc: Tang Yuantian-B29983, devicetree, linuxppc-dev, Li Yang-Leo-R58472

On Fri, 2013-10-11 at 10:25 +0100, Mark Rutland wrote:
> On Fri, Oct 11, 2013 at 04:18:18AM +0100, Tang Yuantian-B29983 wrote:
> > Thanks for your review.
> > See my reply inline
> >
> > > -----Original Message-----
> > > From: Mark Rutland [mailto:mark.rutland@arm.com]
> > > Sent: 2013=E5=B9=B410=E6=9C=8810=E6=97=A5 =E6=98=9F=E6=9C=9F=E5=9B=9B=
 18:04
> > > To: Tang Yuantian-B29983
> > > Cc: galak@kernel.crashing.org; linuxppc-dev@lists.ozlabs.org;
> > > devicetree@vger.kernel.org; Li Yang-Leo-R58472
> > > Subject: Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in =
device
> > > tree
> > >
> > > On Wed, Oct 09, 2013 at 07:38:24AM +0100, Yuantian.Tang@freescale.c=
om
> > > wrote:
> > > > From: Tang Yuantian <yuantian.tang@freescale.com>
> > > >
> > > > The following SoCs will be affected: p2041, p3041, p4080, p5020,
> > > > p5040, b4420, b4860, t4240
> > > >
> > > > Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> > > > Signed-off-by: Li Yang <leoli@freescale.com>
> > > > ---
> > > > v5:
> > > >         - refine the binding document
> > > >         - update the compatible string
> > > > v4:
> > > >         - add binding document
> > > >         - update compatible string
> > > >         - update the reg property
> > > > v3:
> > > >         - fix typo
> > > > v2:
> > > >         - add t4240, b4420, b4860 support
> > > >         - remove pll/4 clock from p2041, p3041 and p5020 board
> > > >
> > > >  .../devicetree/bindings/clock/corenet-clock.txt    | 111
> > > ++++++++++++++++++++
> > > >  arch/powerpc/boot/dts/fsl/b4420si-post.dtsi        |  35 +++++++
> > > >  arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi         |   2 +
> > > >  arch/powerpc/boot/dts/fsl/b4860si-post.dtsi        |  35 +++++++
> > > >  arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi         |   4 +
> > > >  arch/powerpc/boot/dts/fsl/p2041si-post.dtsi        |  60 +++++++=
++++
> > > >  arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi         |   4 +
> > > >  arch/powerpc/boot/dts/fsl/p3041si-post.dtsi        |  60 +++++++=
++++
> > > >  arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi         |   4 +
> > > >  arch/powerpc/boot/dts/fsl/p4080si-post.dtsi        | 112
> > > +++++++++++++++++++++
> > > >  arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi         |   8 ++
> > > >  arch/powerpc/boot/dts/fsl/p5020si-post.dtsi        |  42 +++++++=
+
> > > >  arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi         |   2 +
> > > >  arch/powerpc/boot/dts/fsl/p5040si-post.dtsi        |  60 +++++++=
++++
> > > >  arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi         |   4 +
> > > >  arch/powerpc/boot/dts/fsl/t4240si-post.dtsi        |  85
> > > ++++++++++++++++
> > > >  arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi         |  12 +++
> > > >  17 files changed, 640 insertions(+)
> > > >  create mode 100644
> > > > Documentation/devicetree/bindings/clock/corenet-clock.txt
> > > >
> > > > diff --git a/Documentation/devicetree/bindings/clock/corenet-cloc=
k.txt
> > > > b/Documentation/devicetree/bindings/clock/corenet-clock.txt
> > > > new file mode 100644
> > > > index 0000000..8efc62d
> > > > --- /dev/null
> > > > +++ b/Documentation/devicetree/bindings/clock/corenet-clock.txt
> > > > @@ -0,0 +1,111 @@
> > > > +* Clock Block on Freescale CoreNet Platforms
> > > > +
> > > > +Freescale CoreNet chips take primary clocking input from the ext=
ernal
> > > > +SYSCLK signal. The SYSCLK input (frequency) is multiplied using
> > > > +multiple phase locked loops (PLL) to create a variety of frequen=
cies
> > > > +which can then be passed to a variety of internal logic, includi=
ng
> > > > +cores and peripheral IP blocks.
> > > > +Please refer to the Reference Manual for details.
> > > > +
> > > > +1. Clock Block Binding
> > > > +
> > > > +Required properties:
> > > > +- compatible: Should include one or more of the following:
> > > > +       - "fsl,<chip>-clockgen": for chip specific clock block
> > > > +       - "fsl,qoriq-clockgen-[1,2].x": for chassis 1.x and 2.x c=
lock
> > >
> > > While I can see that "fsl,<chip>-clockgen" might have a large set o=
f
> > > strings that we may never deal with in th kernel, I'd prefer that t=
he
> > > basic strings (i.e. all the "fsl,qoriq-clockgen-[1,2].x" variants) =
were
> > > listed explicitly here.
> > >
> > > Given they only seem to be "fsl,qoriq-clockgen-1.0" and "fsl,qoriq-
> > > clockgen-2.0" this shouldn't be too difficult to list and describe.
> > >
> > OK, I will list them all.
>=20
> Thanks.
>=20
> >
> > > > +- reg: Offset and length of the clock register set
> > > > +- clock-frequency: Indicates input clock frequency of clock bloc=
k.
> > > > +       Will be set by u-boot
> > >
> > > Why does the fact this is set by u-boot matter to the binding?
> > >
> > OK, I will remove it.
> >
> > > > +
> > > > +Recommended properties:
> > > > +- #ddress-cells: Specifies the number of cells used to represent
> > > > +       physical base addresses.  Must be present if the device h=
as
> > > > +       sub-nodes and set to 1 if present
> > >
> > > Typo: #address-cells
> > >
> > > In the example it looks like the address cells of child nodes are o=
ffsets
> > > within the unit, rather than absolute physical addresses. Could the=
 code
> > > not treat them as absolute addresses? Then we'd only need to docume=
nt
> > > that #address-cells, #size-cells and ranges must be present and hav=
e
> > > values suitable for mapping child nodes into the address space of t=
he
> > > parent.
> > >
> > OK, thanks.
> >
> > > > +- #size-cells: Specifies the number of cells used to represent
> > > > +       the size of an address. Must be present if the device has
> > > > +       sub-nodes and set to 1 if present
> > >
> > > It's not really the size of an address, it's the size of a region
> > > identified by a reg entry.
> > >
> > > I think this can be simplified by my suggestion above.
> > >
> > Yes
>=20
> Aah, I see that this is already in use, so it's a bit late to change
> this...
>=20
> >
> > > > +
> > > > +2. Clock Provider/Consumer Binding
> > > > +
> > > > +Most of the binding are from the common clock binding[1].
> > > > + [1] Documentation/devicetree/bindings/clock/clock-bindings.txt
> > > > +
> > > > +Required properties:
> > > > +- compatible : Should include one or more of the following:
>=20
> I didn't spot this earlier, but why "one or more"? are the 2.0 variants
> backwards compatible with the 1.0 variants.
>=20
> > > > +       - "fsl,qoriq-core-pll-[1,2].x": Indicates a core PLL cloc=
k
> > > device
> > > > +       - "fsl,qoriq-core-mux-[1,2].x": Indicates a core multiple=
xer
> > > clock
> > > > +               device; divided from the core PLL clock
> > >
> > > As above, I'd prefer a complete list of the basic strings we expect=
.
> > >
> > There is no list here, just *-mux-1.x and *-mux-2.x
> > What kind of list do you prefer?
>=20
> Something like:
>=20
> - compatible: Should include at least one of:
>     * "fsl,qoriq-core-pll-1.0" for core PLL clocks (v1.0)
>     * "fsl,qoriq-core-pll-2.0" for core PLL clocks (v2.0)
>     * "fsl,qoriq-core-mux-1.0" for core mux clocks (v1.0)
>     * "fsl,qoriq-core-mux-2.0" for core mux clocks (v2.0)
>   The *-2.0 variants are backwards compatible with the *-1.0 variants,
>   so for compatiblity a *-1.0 variant string should be in the list.

I'm not sure that they're 100% compatible.  1.0 seems to have a "KILL"
bit in the PLL register that 2.0 doesn't have (unless it's a
documentation glitch).

> > > > +- clock-output-names: From common clock binding, indicates the n=
ames
> > > of
> > > > +       output clocks
> > > > +- reg: Should be the offset and length of clock block base addre=
ss.
> > > > +       The length should be 4.
> > > > +
> > > > +Example for clock block and clock provider:
> > > > +/ {
> > > > +       clockgen: global-utilities@e1000 {
> > > > +               compatible =3D "fsl,p5020-clockgen", "fsl,qoriq-c=
lockgen-
> > > 1.0";
> > > > +               reg =3D <0xe1000 0x1000>;
> > > > +               clock-frequency =3D <0>;
> > >
> > > That looks odd.
> > >
> > Yes, but it has already existed here before this patch.
> > Can I move it to sysclk clock node since it is not used yet?
>=20
> I hadn't realised there were DTS with this already. Why is there a cloc=
k
> with clock-frequency =3D <0> at all? Surely that isn't useful...

The actual frequency is patched in by U-Boot -- and moving it to a
different node would break this.

> > > > +               #address-cells =3D <1>;
> > > > +               #size-cells =3D <1>;
> > > > +
> > > > +               sysclk: sysclk {
> > > > +                       #clock-cells =3D <0>;
> > > > +                       compatible =3D "fsl,qoriq-sysclk-1.0",
> > > > + "fixed-clock";
> > >
> > > We didn't mention in the binding that "fsl,qoriq-sysclk-1.0" was
> > > compatible with "fixed-clock" and should have "fixed-clock" in the
> > > compatible list...
> > >
> > OK, will fix it.
>=20
> Cheers. Also, doesn't a fixed-clock require a clock-frequency?

Why isn't the global-utilities node, that has the clock-frequency,
acting as the fixed-clock?  I thought that's what was in earlier
revisions...

If it absolutely must be a separate node for some reason, I suppose you
could remove the "fixed-clock" and have a tiny "driver" that looks up
the frequency in the parent node.  This would be an instance of a
non-"fixed-clock" that doesn't have a parent clock described in the
device tree, because the information comes from some other mechanism.

> > > > +               mux1: mux1@20 {
> > > > +                       #clock-cells =3D <0>;
> > > > +                       reg =3D <0x20 0x4>;
> > > > +                       compatible =3D "fsl,qoriq-core-mux-1.0";
> > > > +                       clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0=
>,
> > > <&pll1 1>;
> > > > +                       clock-names =3D "pll0_0", "pll0_1", "pll1=
_0",
> > > "pll1_1";
>=20
> I didn't spot this last time, but the clock-names here seem to be the
> names of the outputs from the provider, rather than the input names of
> the consumer. This goes against the intended purpose of clock-names.

As far as "pll0", "pll1", etc. goes, that appears to be the input name.
It's all on one chip, so the virtual pins are documented based on what
they're connected to.

I'm not sure I understand the "_0"/"_1" part, though.  Doesn't each PLL
just have one output, which the consumer may choose to divide by 2 (or
in some cases 4)?  Why does that division need to be exposed in the
device tree as separate connections to the parent clock?

-Scott

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-09  6:38 [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree Yuantian.Tang
  2013-10-10 10:03 ` Mark Rutland
@ 2013-10-11 19:08 ` Scott Wood
  2013-10-12  2:53   ` Tang Yuantian-B29983
  2013-10-25 20:11 ` Grant Likely
  2 siblings, 1 reply; 25+ messages in thread
From: Scott Wood @ 2013-10-11 19:08 UTC (permalink / raw)
  To: Yuantian.Tang; +Cc: devicetree, linuxppc-dev

On Wed, 2013-10-09 at 14:38 +0800, Yuantian.Tang@freescale.com wrote:
> From: Tang Yuantian <yuantian.tang@frovider:
> +/ {
> +	clockgen: global-utilities@e1000 {
> +		compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
> +		reg = <0xe1000 0x1000>;
> +		clock-frequency = <0>;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		sysclk: sysclk {
> +			#clock-cells = <0>;
> +			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
> +			clock-output-names = "sysclk";
> +		}
> +
> +		pll0: pll0@800 {
> +			#clock-cells = <1>;
> +			reg = <0x800 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll0", "pll0-div2";
> +		};

Where is "ranges" in the global-utilities node?

-Scott

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-11 19:07       ` Scott Wood
@ 2013-10-12  2:52         ` Tang Yuantian-B29983
  2013-10-14 22:13           ` Scott Wood
  0 siblings, 1 reply; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-12  2:52 UTC (permalink / raw)
  To: Wood Scott-B07421, Mark Rutland
  Cc: devicetree, linuxppc-dev, Li Yang-Leo-R58472

VGhhbmtzIGZvciB5b3VyIHJldmlldy4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K
PiBGcm9tOiBXb29kIFNjb3R0LUIwNzQyMQ0KPiBTZW50OiAyMDEz5bm0MTDmnIgxMuaXpSDmmJ/m
nJ/lha0gMzowNw0KPiBUbzogTWFyayBSdXRsYW5kDQo+IENjOiBUYW5nIFl1YW50aWFuLUIyOTk4
MzsgZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4cHBjLQ0KPiBkZXZAbGlzdHMub3ps
YWJzLm9yZzsgTGkgWWFuZy1MZW8tUjU4NDcyDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjVdIHBv
d2VycGMvbXBjODV4eDogVXBkYXRlIHRoZSBjbG9jayBub2RlcyBpbiBkZXZpY2UNCj4gdHJlZQ0K
PiANCj4gT24gRnJpLCAyMDEzLTEwLTExIGF0IDEwOjI1ICswMTAwLCBNYXJrIFJ1dGxhbmQgd3Jv
dGU6DQo+ID4gT24gRnJpLCBPY3QgMTEsIDIwMTMgYXQgMDQ6MTg6MThBTSArMDEwMCwgVGFuZyBZ
dWFudGlhbi1CMjk5ODMgd3JvdGU6DQo+ID4gPiBUaGFua3MgZm9yIHlvdXIgcmV2aWV3Lg0KPiA+
ID4gU2VlIG15IHJlcGx5IGlubGluZQ0KPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNz
YWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogTWFyayBSdXRsYW5kIFttYWlsdG86bWFyay5ydXRsYW5k
QGFybS5jb21dDQo+ID4gPiA+IFNlbnQ6IDIwMTPlubQxMOaciDEw5pelIOaYn+acn+WbmyAxODow
NA0KPiA+ID4gPiBUbzogVGFuZyBZdWFudGlhbi1CMjk5ODMNCj4gPiA+ID4gQ2M6IGdhbGFrQGtl
cm5lbC5jcmFzaGluZy5vcmc7IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnOw0KPiA+ID4g
PiBkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZzsgTGkgWWFuZy1MZW8tUjU4NDcyDQo+ID4gPiA+
IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjVdIHBvd2VycGMvbXBjODV4eDogVXBkYXRlIHRoZSBjbG9j
ayBub2RlcyBpbg0KPiA+ID4gPiBkZXZpY2UgdHJlZQ0KPiA+ID4gPg0KPiA+ID4gPiBPbiBXZWQs
IE9jdCAwOSwgMjAxMyBhdCAwNzozODoyNEFNICswMTAwLA0KPiA+ID4gPiBZdWFudGlhbi5UYW5n
QGZyZWVzY2FsZS5jb20NCj4gPiA+ID4gd3JvdGU6DQo+ID4gPiA+ID4gRnJvbTogVGFuZyBZdWFu
dGlhbiA8eXVhbnRpYW4udGFuZ0BmcmVlc2NhbGUuY29tPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g
VGhlIGZvbGxvd2luZyBTb0NzIHdpbGwgYmUgYWZmZWN0ZWQ6IHAyMDQxLCBwMzA0MSwgcDQwODAs
IHA1MDIwLA0KPiA+ID4gPiA+IHA1MDQwLCBiNDQyMCwgYjQ4NjAsIHQ0MjQwDQo+ID4gPiA+ID4N
Cj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBUYW5nIFl1YW50aWFuIDxZdWFudGlhbi5UYW5nQGZy
ZWVzY2FsZS5jb20+DQo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogTGkgWWFuZyA8bGVvbGlAZnJl
ZXNjYWxlLmNvbT4NCj4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiB2NToNCj4gPiA+ID4gPiAgICAg
ICAgIC0gcmVmaW5lIHRoZSBiaW5kaW5nIGRvY3VtZW50DQo+ID4gPiA+ID4gICAgICAgICAtIHVw
ZGF0ZSB0aGUgY29tcGF0aWJsZSBzdHJpbmcNCj4gPiA+ID4gPiB2NDoNCj4gPiA+ID4gPiAgICAg
ICAgIC0gYWRkIGJpbmRpbmcgZG9jdW1lbnQNCj4gPiA+ID4gPiAgICAgICAgIC0gdXBkYXRlIGNv
bXBhdGlibGUgc3RyaW5nDQo+ID4gPiA+ID4gICAgICAgICAtIHVwZGF0ZSB0aGUgcmVnIHByb3Bl
cnR5DQo+ID4gPiA+ID4gdjM6DQo+ID4gPiA+ID4gICAgICAgICAtIGZpeCB0eXBvDQo+ID4gPiA+
ID4gdjI6DQo+ID4gPiA+ID4gICAgICAgICAtIGFkZCB0NDI0MCwgYjQ0MjAsIGI0ODYwIHN1cHBv
cnQNCj4gPiA+ID4gPiAgICAgICAgIC0gcmVtb3ZlIHBsbC80IGNsb2NrIGZyb20gcDIwNDEsIHAz
MDQxIGFuZCBwNTAyMCBib2FyZA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIC4uLi9kZXZpY2V0cmVl
L2JpbmRpbmdzL2Nsb2NrL2NvcmVuZXQtY2xvY2sudHh0ICAgIHwgMTExDQo+ID4gPiA+ICsrKysr
KysrKysrKysrKysrKysrDQo+ID4gPiA+ID4gIGFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvYjQ0
MjBzaS1wb3N0LmR0c2kgICAgICAgIHwgIDM1ICsrKysrKysNCj4gPiA+ID4gPiAgYXJjaC9wb3dl
cnBjL2Jvb3QvZHRzL2ZzbC9iNDQyMHNpLXByZS5kdHNpICAgICAgICAgfCAgIDIgKw0KPiA+ID4g
PiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL2I0ODYwc2ktcG9zdC5kdHNpICAgICAgICB8
ICAzNSArKysrKysrDQo+ID4gPiA+ID4gIGFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvYjQ4NjBz
aS1wcmUuZHRzaSAgICAgICAgIHwgICA0ICsNCj4gPiA+ID4gPiAgYXJjaC9wb3dlcnBjL2Jvb3Qv
ZHRzL2ZzbC9wMjA0MXNpLXBvc3QuZHRzaSAgICAgICAgfCAgNjANCj4gKysrKysrKysrKysNCj4g
PiA+ID4gPiAgYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9wMjA0MXNpLXByZS5kdHNpICAgICAg
ICAgfCAgIDQgKw0KPiA+ID4gPiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3AzMDQxc2kt
cG9zdC5kdHNpICAgICAgICB8ICA2MA0KPiArKysrKysrKysrKw0KPiA+ID4gPiA+ICBhcmNoL3Bv
d2VycGMvYm9vdC9kdHMvZnNsL3AzMDQxc2ktcHJlLmR0c2kgICAgICAgICB8ICAgNCArDQo+ID4g
PiA+ID4gIGFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcDQwODBzaS1wb3N0LmR0c2kgICAgICAg
IHwgMTEyDQo+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiA+ICBhcmNoL3Bv
d2VycGMvYm9vdC9kdHMvZnNsL3A0MDgwc2ktcHJlLmR0c2kgICAgICAgICB8ICAgOCArKw0KPiA+
ID4gPiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3A1MDIwc2ktcG9zdC5kdHNpICAgICAg
ICB8ICA0Mg0KPiArKysrKysrKw0KPiA+ID4gPiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNs
L3A1MDIwc2ktcHJlLmR0c2kgICAgICAgICB8ICAgMiArDQo+ID4gPiA+ID4gIGFyY2gvcG93ZXJw
Yy9ib290L2R0cy9mc2wvcDUwNDBzaS1wb3N0LmR0c2kgICAgICAgIHwgIDYwDQo+ICsrKysrKysr
KysrDQo+ID4gPiA+ID4gIGFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcDUwNDBzaS1wcmUuZHRz
aSAgICAgICAgIHwgICA0ICsNCj4gPiA+ID4gPiAgYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC90
NDI0MHNpLXBvc3QuZHRzaSAgICAgICAgfCAgODUNCj4gPiA+ID4gKysrKysrKysrKysrKysrKw0K
PiA+ID4gPiA+ICBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3Q0MjQwc2ktcHJlLmR0c2kgICAg
ICAgICB8ICAxMiArKysNCj4gPiA+ID4gPiAgMTcgZmlsZXMgY2hhbmdlZCwgNjQwIGluc2VydGlv
bnMoKykgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+IERvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9jbG9jay9jb3JlbmV0LWNsb2NrLnR4dA0KPiA+ID4gPiA+DQo+ID4gPiA+
ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiA+IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2Nsb2NrL2NvcmVuZXQtY2xvY2sudHh0DQo+ID4gPiA+ID4gYi9Eb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvY2xvY2svY29yZW5ldC1jbG9jay50eHQNCj4gPiA+ID4gPiBuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAuLjhlZmM2MmQNCj4gPiA+
ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2Nsb2NrL2NvcmVuZXQtY2xvY2sudHh0DQo+ID4gPiA+ID4gQEAgLTAsMCAr
MSwxMTEgQEANCj4gPiA+ID4gPiArKiBDbG9jayBCbG9jayBvbiBGcmVlc2NhbGUgQ29yZU5ldCBQ
bGF0Zm9ybXMNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK0ZyZWVzY2FsZSBDb3JlTmV0IGNoaXBz
IHRha2UgcHJpbWFyeSBjbG9ja2luZyBpbnB1dCBmcm9tIHRoZQ0KPiA+ID4gPiA+ICtleHRlcm5h
bCBTWVNDTEsgc2lnbmFsLiBUaGUgU1lTQ0xLIGlucHV0IChmcmVxdWVuY3kpIGlzDQo+ID4gPiA+
ID4gK211bHRpcGxpZWQgdXNpbmcgbXVsdGlwbGUgcGhhc2UgbG9ja2VkIGxvb3BzIChQTEwpIHRv
IGNyZWF0ZSBhDQo+ID4gPiA+ID4gK3ZhcmlldHkgb2YgZnJlcXVlbmNpZXMgd2hpY2ggY2FuIHRo
ZW4gYmUgcGFzc2VkIHRvIGEgdmFyaWV0eSBvZg0KPiA+ID4gPiA+ICtpbnRlcm5hbCBsb2dpYywg
aW5jbHVkaW5nIGNvcmVzIGFuZCBwZXJpcGhlcmFsIElQIGJsb2Nrcy4NCj4gPiA+ID4gPiArUGxl
YXNlIHJlZmVyIHRvIHRoZSBSZWZlcmVuY2UgTWFudWFsIGZvciBkZXRhaWxzLg0KPiA+ID4gPiA+
ICsNCj4gPiA+ID4gPiArMS4gQ2xvY2sgQmxvY2sgQmluZGluZw0KPiA+ID4gPiA+ICsNCj4gPiA+
ID4gPiArUmVxdWlyZWQgcHJvcGVydGllczoNCj4gPiA+ID4gPiArLSBjb21wYXRpYmxlOiBTaG91
bGQgaW5jbHVkZSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nOg0KPiA+ID4gPiA+ICsgICAg
ICAgLSAiZnNsLDxjaGlwPi1jbG9ja2dlbiI6IGZvciBjaGlwIHNwZWNpZmljIGNsb2NrIGJsb2Nr
DQo+ID4gPiA+ID4gKyAgICAgICAtICJmc2wscW9yaXEtY2xvY2tnZW4tWzEsMl0ueCI6IGZvciBj
aGFzc2lzIDEueCBhbmQgMi54DQo+ID4gPiA+ID4gK2Nsb2NrDQo+ID4gPiA+DQo+ID4gPiA+IFdo
aWxlIEkgY2FuIHNlZSB0aGF0ICJmc2wsPGNoaXA+LWNsb2NrZ2VuIiBtaWdodCBoYXZlIGEgbGFy
Z2Ugc2V0DQo+ID4gPiA+IG9mIHN0cmluZ3MgdGhhdCB3ZSBtYXkgbmV2ZXIgZGVhbCB3aXRoIGlu
IHRoIGtlcm5lbCwgSSdkIHByZWZlcg0KPiA+ID4gPiB0aGF0IHRoZSBiYXNpYyBzdHJpbmdzIChp
LmUuIGFsbCB0aGUgImZzbCxxb3JpcS1jbG9ja2dlbi1bMSwyXS54Ig0KPiA+ID4gPiB2YXJpYW50
cykgd2VyZSBsaXN0ZWQgZXhwbGljaXRseSBoZXJlLg0KPiA+ID4gPg0KPiA+ID4gPiBHaXZlbiB0
aGV5IG9ubHkgc2VlbSB0byBiZSAiZnNsLHFvcmlxLWNsb2NrZ2VuLTEuMCIgYW5kDQo+ID4gPiA+
ICJmc2wscW9yaXEtIGNsb2NrZ2VuLTIuMCIgdGhpcyBzaG91bGRuJ3QgYmUgdG9vIGRpZmZpY3Vs
dCB0byBsaXN0DQo+IGFuZCBkZXNjcmliZS4NCj4gPiA+ID4NCj4gPiA+IE9LLCBJIHdpbGwgbGlz
dCB0aGVtIGFsbC4NCj4gPg0KPiA+IFRoYW5rcy4NCj4gPg0KPiA+ID4NCj4gPiA+ID4gPiArLSBy
ZWc6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSBjbG9jayByZWdpc3RlciBzZXQNCj4gPiA+ID4g
PiArLSBjbG9jay1mcmVxdWVuY3k6IEluZGljYXRlcyBpbnB1dCBjbG9jayBmcmVxdWVuY3kgb2Yg
Y2xvY2sNCj4gYmxvY2suDQo+ID4gPiA+ID4gKyAgICAgICBXaWxsIGJlIHNldCBieSB1LWJvb3QN
Cj4gPiA+ID4NCj4gPiA+ID4gV2h5IGRvZXMgdGhlIGZhY3QgdGhpcyBpcyBzZXQgYnkgdS1ib290
IG1hdHRlciB0byB0aGUgYmluZGluZz8NCj4gPiA+ID4NCj4gPiA+IE9LLCBJIHdpbGwgcmVtb3Zl
IGl0Lg0KPiA+ID4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK1JlY29tbWVuZGVkIHByb3BlcnRp
ZXM6DQo+ID4gPiA+ID4gKy0gI2RkcmVzcy1jZWxsczogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2Yg
Y2VsbHMgdXNlZCB0byByZXByZXNlbnQNCj4gPiA+ID4gPiArICAgICAgIHBoeXNpY2FsIGJhc2Ug
YWRkcmVzc2VzLiAgTXVzdCBiZSBwcmVzZW50IGlmIHRoZSBkZXZpY2UNCj4gaGFzDQo+ID4gPiA+
ID4gKyAgICAgICBzdWItbm9kZXMgYW5kIHNldCB0byAxIGlmIHByZXNlbnQNCj4gPiA+ID4NCj4g
PiA+ID4gVHlwbzogI2FkZHJlc3MtY2VsbHMNCj4gPiA+ID4NCj4gPiA+ID4gSW4gdGhlIGV4YW1w
bGUgaXQgbG9va3MgbGlrZSB0aGUgYWRkcmVzcyBjZWxscyBvZiBjaGlsZCBub2RlcyBhcmUNCj4g
PiA+ID4gb2Zmc2V0cyB3aXRoaW4gdGhlIHVuaXQsIHJhdGhlciB0aGFuIGFic29sdXRlIHBoeXNp
Y2FsIGFkZHJlc3Nlcy4NCj4gPiA+ID4gQ291bGQgdGhlIGNvZGUgbm90IHRyZWF0IHRoZW0gYXMg
YWJzb2x1dGUgYWRkcmVzc2VzPyBUaGVuIHdlJ2QNCj4gPiA+ID4gb25seSBuZWVkIHRvIGRvY3Vt
ZW50IHRoYXQgI2FkZHJlc3MtY2VsbHMsICNzaXplLWNlbGxzIGFuZCByYW5nZXMNCj4gPiA+ID4g
bXVzdCBiZSBwcmVzZW50IGFuZCBoYXZlIHZhbHVlcyBzdWl0YWJsZSBmb3IgbWFwcGluZyBjaGls
ZCBub2Rlcw0KPiA+ID4gPiBpbnRvIHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBwYXJlbnQuDQo+
ID4gPiA+DQo+ID4gPiBPSywgdGhhbmtzLg0KPiA+ID4NCj4gPiA+ID4gPiArLSAjc2l6ZS1jZWxs
czogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgdXNlZCB0byByZXByZXNlbnQNCj4gPiA+
ID4gPiArICAgICAgIHRoZSBzaXplIG9mIGFuIGFkZHJlc3MuIE11c3QgYmUgcHJlc2VudCBpZiB0
aGUgZGV2aWNlIGhhcw0KPiA+ID4gPiA+ICsgICAgICAgc3ViLW5vZGVzIGFuZCBzZXQgdG8gMSBp
ZiBwcmVzZW50DQo+ID4gPiA+DQo+ID4gPiA+IEl0J3Mgbm90IHJlYWxseSB0aGUgc2l6ZSBvZiBh
biBhZGRyZXNzLCBpdCdzIHRoZSBzaXplIG9mIGEgcmVnaW9uDQo+ID4gPiA+IGlkZW50aWZpZWQg
YnkgYSByZWcgZW50cnkuDQo+ID4gPiA+DQo+ID4gPiA+IEkgdGhpbmsgdGhpcyBjYW4gYmUgc2lt
cGxpZmllZCBieSBteSBzdWdnZXN0aW9uIGFib3ZlLg0KPiA+ID4gPg0KPiA+ID4gWWVzDQo+ID4N
Cj4gPiBBYWgsIEkgc2VlIHRoYXQgdGhpcyBpcyBhbHJlYWR5IGluIHVzZSwgc28gaXQncyBhIGJp
dCBsYXRlIHRvIGNoYW5nZQ0KPiA+IHRoaXMuLi4NCj4gPg0KPiA+ID4NCj4gPiA+ID4gPiArDQo+
ID4gPiA+ID4gKzIuIENsb2NrIFByb3ZpZGVyL0NvbnN1bWVyIEJpbmRpbmcNCj4gPiA+ID4gPiAr
DQo+ID4gPiA+ID4gK01vc3Qgb2YgdGhlIGJpbmRpbmcgYXJlIGZyb20gdGhlIGNvbW1vbiBjbG9j
ayBiaW5kaW5nWzFdLg0KPiA+ID4gPiA+ICsgWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g
K1JlcXVpcmVkIHByb3BlcnRpZXM6DQo+ID4gPiA+ID4gKy0gY29tcGF0aWJsZSA6IFNob3VsZCBp
bmNsdWRlIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmc6DQo+ID4NCj4gPiBJIGRpZG4ndCBz
cG90IHRoaXMgZWFybGllciwgYnV0IHdoeSAib25lIG9yIG1vcmUiPyBhcmUgdGhlIDIuMA0KPiA+
IHZhcmlhbnRzIGJhY2t3YXJkcyBjb21wYXRpYmxlIHdpdGggdGhlIDEuMCB2YXJpYW50cy4NCj4g
Pg0KPiA+ID4gPiA+ICsgICAgICAgLSAiZnNsLHFvcmlxLWNvcmUtcGxsLVsxLDJdLngiOiBJbmRp
Y2F0ZXMgYSBjb3JlIFBMTA0KPiA+ID4gPiA+ICsgY2xvY2sNCj4gPiA+ID4gZGV2aWNlDQo+ID4g
PiA+ID4gKyAgICAgICAtICJmc2wscW9yaXEtY29yZS1tdXgtWzEsMl0ueCI6IEluZGljYXRlcyBh
IGNvcmUNCj4gPiA+ID4gPiArIG11bHRpcGxleGVyDQo+ID4gPiA+IGNsb2NrDQo+ID4gPiA+ID4g
KyAgICAgICAgICAgICAgIGRldmljZTsgZGl2aWRlZCBmcm9tIHRoZSBjb3JlIFBMTCBjbG9jaw0K
PiA+ID4gPg0KPiA+ID4gPiBBcyBhYm92ZSwgSSdkIHByZWZlciBhIGNvbXBsZXRlIGxpc3Qgb2Yg
dGhlIGJhc2ljIHN0cmluZ3Mgd2UgZXhwZWN0Lg0KPiA+ID4gPg0KPiA+ID4gVGhlcmUgaXMgbm8g
bGlzdCBoZXJlLCBqdXN0ICotbXV4LTEueCBhbmQgKi1tdXgtMi54IFdoYXQga2luZCBvZg0KPiA+
ID4gbGlzdCBkbyB5b3UgcHJlZmVyPw0KPiA+DQo+ID4gU29tZXRoaW5nIGxpa2U6DQo+ID4NCj4g
PiAtIGNvbXBhdGlibGU6IFNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBvZjoNCj4gPiAgICAg
KiAiZnNsLHFvcmlxLWNvcmUtcGxsLTEuMCIgZm9yIGNvcmUgUExMIGNsb2NrcyAodjEuMCkNCj4g
PiAgICAgKiAiZnNsLHFvcmlxLWNvcmUtcGxsLTIuMCIgZm9yIGNvcmUgUExMIGNsb2NrcyAodjIu
MCkNCj4gPiAgICAgKiAiZnNsLHFvcmlxLWNvcmUtbXV4LTEuMCIgZm9yIGNvcmUgbXV4IGNsb2Nr
cyAodjEuMCkNCj4gPiAgICAgKiAiZnNsLHFvcmlxLWNvcmUtbXV4LTIuMCIgZm9yIGNvcmUgbXV4
IGNsb2NrcyAodjIuMCkNCj4gPiAgIFRoZSAqLTIuMCB2YXJpYW50cyBhcmUgYmFja3dhcmRzIGNv
bXBhdGlibGUgd2l0aCB0aGUgKi0xLjAgdmFyaWFudHMsDQo+ID4gICBzbyBmb3IgY29tcGF0aWJs
aXR5IGEgKi0xLjAgdmFyaWFudCBzdHJpbmcgc2hvdWxkIGJlIGluIHRoZSBsaXN0Lg0KPiANCj4g
SSdtIG5vdCBzdXJlIHRoYXQgdGhleSdyZSAxMDAlIGNvbXBhdGlibGUuICAxLjAgc2VlbXMgdG8g
aGF2ZSBhICJLSUxMIg0KPiBiaXQgaW4gdGhlIFBMTCByZWdpc3RlciB0aGF0IDIuMCBkb2Vzbid0
IGhhdmUgKHVubGVzcyBpdCdzIGENCj4gZG9jdW1lbnRhdGlvbiBnbGl0Y2gpLg0KPiANCj4gPiA+
ID4gPiArLSBjbG9jay1vdXRwdXQtbmFtZXM6IEZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmcsIGlu
ZGljYXRlcyB0aGUNCj4gPiA+ID4gPiArbmFtZXMNCj4gPiA+ID4gb2YNCj4gPiA+ID4gPiArICAg
ICAgIG91dHB1dCBjbG9ja3MNCj4gPiA+ID4gPiArLSByZWc6IFNob3VsZCBiZSB0aGUgb2Zmc2V0
IGFuZCBsZW5ndGggb2YgY2xvY2sgYmxvY2sgYmFzZQ0KPiBhZGRyZXNzLg0KPiA+ID4gPiA+ICsg
ICAgICAgVGhlIGxlbmd0aCBzaG91bGQgYmUgNC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK0V4
YW1wbGUgZm9yIGNsb2NrIGJsb2NrIGFuZCBjbG9jayBwcm92aWRlcjoNCj4gPiA+ID4gPiArLyB7
DQo+ID4gPiA+ID4gKyAgICAgICBjbG9ja2dlbjogZ2xvYmFsLXV0aWxpdGllc0BlMTAwMCB7DQo+
ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiZnNsLHA1MDIwLWNsb2NrZ2Vu
IiwNCj4gPiA+ID4gPiArImZzbCxxb3JpcS1jbG9ja2dlbi0NCj4gPiA+ID4gMS4wIjsNCj4gPiA+
ID4gPiArICAgICAgICAgICAgICAgcmVnID0gPDB4ZTEwMDAgMHgxMDAwPjsNCj4gPiA+ID4gPiAr
ICAgICAgICAgICAgICAgY2xvY2stZnJlcXVlbmN5ID0gPDA+Ow0KPiA+ID4gPg0KPiA+ID4gPiBU
aGF0IGxvb2tzIG9kZC4NCj4gPiA+ID4NCj4gPiA+IFllcywgYnV0IGl0IGhhcyBhbHJlYWR5IGV4
aXN0ZWQgaGVyZSBiZWZvcmUgdGhpcyBwYXRjaC4NCj4gPiA+IENhbiBJIG1vdmUgaXQgdG8gc3lz
Y2xrIGNsb2NrIG5vZGUgc2luY2UgaXQgaXMgbm90IHVzZWQgeWV0Pw0KPiA+DQo+ID4gSSBoYWRu
J3QgcmVhbGlzZWQgdGhlcmUgd2VyZSBEVFMgd2l0aCB0aGlzIGFscmVhZHkuIFdoeSBpcyB0aGVy
ZSBhDQo+ID4gY2xvY2sgd2l0aCBjbG9jay1mcmVxdWVuY3kgPSA8MD4gYXQgYWxsPyBTdXJlbHkg
dGhhdCBpc24ndCB1c2VmdWwuLi4NCj4gDQo+IFRoZSBhY3R1YWwgZnJlcXVlbmN5IGlzIHBhdGNo
ZWQgaW4gYnkgVS1Cb290IC0tIGFuZCBtb3ZpbmcgaXQgdG8gYQ0KPiBkaWZmZXJlbnQgbm9kZSB3
b3VsZCBicmVhayB0aGlzLg0KPiANCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgI2FkZHJlc3Mt
Y2VsbHMgPSA8MT47DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICNzaXplLWNlbGxzID0gPDE+
Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgc3lzY2xrOiBzeXNjbGsg
ew0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICNjbG9jay1jZWxscyA9IDwwPjsN
Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gImZzbCxxb3Jp
cS1zeXNjbGstMS4wIiwNCj4gPiA+ID4gPiArICJmaXhlZC1jbG9jayI7DQo+ID4gPiA+DQo+ID4g
PiA+IFdlIGRpZG4ndCBtZW50aW9uIGluIHRoZSBiaW5kaW5nIHRoYXQgImZzbCxxb3JpcS1zeXNj
bGstMS4wIiB3YXMNCj4gPiA+ID4gY29tcGF0aWJsZSB3aXRoICJmaXhlZC1jbG9jayIgYW5kIHNo
b3VsZCBoYXZlICJmaXhlZC1jbG9jayIgaW4gdGhlDQo+ID4gPiA+IGNvbXBhdGlibGUgbGlzdC4u
Lg0KPiA+ID4gPg0KPiA+ID4gT0ssIHdpbGwgZml4IGl0Lg0KPiA+DQo+ID4gQ2hlZXJzLiBBbHNv
LCBkb2Vzbid0IGEgZml4ZWQtY2xvY2sgcmVxdWlyZSBhIGNsb2NrLWZyZXF1ZW5jeT8NCj4gDQo+
IFdoeSBpc24ndCB0aGUgZ2xvYmFsLXV0aWxpdGllcyBub2RlLCB0aGF0IGhhcyB0aGUgY2xvY2st
ZnJlcXVlbmN5LCBhY3RpbmcNCj4gYXMgdGhlIGZpeGVkLWNsb2NrPyAgSSB0aG91Z2h0IHRoYXQn
cyB3aGF0IHdhcyBpbiBlYXJsaWVyIHJldmlzaW9ucy4uLg0KPiANCkFzIHlvdSBwb2ludGVkIG91
dCBiZWZvcmUsIHdlIGNhbid0IGNvbWJpbmUgdGhlIGdsb2JhbC11dGlsaXRpZXMgbm9kZSBhbmQN
CnRoZSBmaXhlZC1jbG9jayBub2RlIGludG8gb25lIG5vZGUsIGJlY2F1c2UgdGhlc2UgdHdvIG5v
ZGVzIGhhdmUgZGlmZmVyZW50DQpwcm9wZXJ0aWVzIHdoaWNoIGFyZSBub3QgY29tcGF0aWJsZSBl
YWNoIG90aGVyLg0KDQo+IElmIGl0IGFic29sdXRlbHkgbXVzdCBiZSBhIHNlcGFyYXRlIG5vZGUg
Zm9yIHNvbWUgcmVhc29uLCBJIHN1cHBvc2UgeW91DQo+IGNvdWxkIHJlbW92ZSB0aGUgImZpeGVk
LWNsb2NrIiBhbmQgaGF2ZSBhIHRpbnkgImRyaXZlciIgdGhhdCBsb29rcyB1cCB0aGUNCj4gZnJl
cXVlbmN5IGluIHRoZSBwYXJlbnQgbm9kZS4gIFRoaXMgd291bGQgYmUgYW4gaW5zdGFuY2Ugb2Yg
YSBub24tImZpeGVkLQ0KPiBjbG9jayIgdGhhdCBkb2Vzbid0IGhhdmUgYSBwYXJlbnQgY2xvY2sg
ZGVzY3JpYmVkIGluIHRoZSBkZXZpY2UgdHJlZSwNCj4gYmVjYXVzZSB0aGUgaW5mb3JtYXRpb24g
Y29tZXMgZnJvbSBzb21lIG90aGVyIG1lY2hhbmlzbS4NCj4gDQpUaGlzIHRpbnkgZHJpdmVyIGlz
IHN0aWxsIG5lZWRlZCB0byBnZXQgdGhlIGNsb2NrIGZyZXF1ZW5jeSBmcm9tIHBhcmVudCBub2Rl
Lg0KVGhhdCBpcyB3aGF0IEkgYW0gZ29pbmcgdG8gY2hhbmdlIHdpdGggY3VycmVudCBkcml2ZXIu
DQpCdXQgd2Ugc3RpbGwgbmVlZCB0byBhZGQgdGhlIGZpeGVkLWNsb2NrIG5vZGUgaW4gb3JkZXIg
dG8gcHJvdmlkZSBjbG9jayBzb3VyY2UNCnRvIFBMTCBub2Rlcy4NCg0KPiA+ID4gPiA+ICsgICAg
ICAgICAgICAgICBtdXgxOiBtdXgxQDIwIHsNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg
ICAgICAjY2xvY2stY2VsbHMgPSA8MD47DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg
ICAgcmVnID0gPDB4MjAgMHg0PjsNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBj
b21wYXRpYmxlID0gImZzbCxxb3JpcS1jb3JlLW11eC0xLjAiOw0KPiA+ID4gPiA+ICsgICAgICAg
ICAgICAgICAgICAgICAgIGNsb2NrcyA9IDwmcGxsMCAwPiwgPCZwbGwwIDE+LCA8JnBsbDENCj4g
PiA+ID4gPiArIDA+LA0KPiA+ID4gPiA8JnBsbDEgMT47DQo+ID4gPiA+ID4gKyAgICAgICAgICAg
ICAgICAgICAgICAgY2xvY2stbmFtZXMgPSAicGxsMF8wIiwgInBsbDBfMSIsDQo+ID4gPiA+ID4g
KyAicGxsMV8wIiwNCj4gPiA+ID4gInBsbDFfMSI7DQo+ID4NCj4gPiBJIGRpZG4ndCBzcG90IHRo
aXMgbGFzdCB0aW1lLCBidXQgdGhlIGNsb2NrLW5hbWVzIGhlcmUgc2VlbSB0byBiZSB0aGUNCj4g
PiBuYW1lcyBvZiB0aGUgb3V0cHV0cyBmcm9tIHRoZSBwcm92aWRlciwgcmF0aGVyIHRoYW4gdGhl
IGlucHV0IG5hbWVzIG9mDQo+ID4gdGhlIGNvbnN1bWVyLiBUaGlzIGdvZXMgYWdhaW5zdCB0aGUg
aW50ZW5kZWQgcHVycG9zZSBvZiBjbG9jay1uYW1lcy4NCj4gDQo+IEFzIGZhciBhcyAicGxsMCIs
ICJwbGwxIiwgZXRjLiBnb2VzLCB0aGF0IGFwcGVhcnMgdG8gYmUgdGhlIGlucHV0IG5hbWUuDQo+
IEl0J3MgYWxsIG9uIG9uZSBjaGlwLCBzbyB0aGUgdmlydHVhbCBwaW5zIGFyZSBkb2N1bWVudGVk
IGJhc2VkIG9uIHdoYXQNCj4gdGhleSdyZSBjb25uZWN0ZWQgdG8uDQo+IA0KPiBJJ20gbm90IHN1
cmUgSSB1bmRlcnN0YW5kIHRoZSAiXzAiLyJfMSIgcGFydCwgdGhvdWdoLiAgRG9lc24ndCBlYWNo
IFBMTA0KPiBqdXN0IGhhdmUgb25lIG91dHB1dCwgd2hpY2ggdGhlIGNvbnN1bWVyIG1heSBjaG9v
c2UgdG8gZGl2aWRlIGJ5IDIgKG9yIGluDQo+IHNvbWUgY2FzZXMgNCk/ICBXaHkgZG9lcyB0aGF0
IGRpdmlzaW9uIG5lZWQgdG8gYmUgZXhwb3NlZCBpbiB0aGUgZGV2aWNlDQo+IHRyZWUgYXMgc2Vw
YXJhdGUgY29ubmVjdGlvbnMgdG8gdGhlIHBhcmVudCBjbG9jaz8NCj4gDQpUaGUgZGV2aWNlIHRy
ZWUgbWFrZXMgdGhhdCBxdWl0ZSBjbGVhci4gRWFjaCBQTEwgaGFzIHNldmVyYWwgb3V0cHV0IHdo
aWNoDQpNVVggbm9kZSBjYW4gdGFrZSBmcm9tLiBJdCBpcyBub3QgYSBydW50aW1lIGRlY2lzaW9u
Lg0KDQpSZWdhcmRzLA0KWXVhbnRpYW4NCj4gLVNjb3R0DQo+IA0KDQo=

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-11 19:08 ` Scott Wood
@ 2013-10-12  2:53   ` Tang Yuantian-B29983
  0 siblings, 0 replies; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-12  2:53 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: devicetree, linuxppc-dev

VGhhbmtzIGZvciB5b3VyIHJldmlldy4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K
PiBGcm9tOiBXb29kIFNjb3R0LUIwNzQyMQ0KPiBTZW50OiAyMDEz5bm0MTDmnIgxMuaXpSDmmJ/m
nJ/lha0gMzowOA0KPiBUbzogVGFuZyBZdWFudGlhbi1CMjk5ODMNCj4gQ2M6IGdhbGFrQGtlcm5l
bC5jcmFzaGluZy5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBsaW51eHBwYy0NCj4g
ZGV2QGxpc3RzLm96bGFicy5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NV0gcG93ZXJwYy9t
cGM4NXh4OiBVcGRhdGUgdGhlIGNsb2NrIG5vZGVzIGluIGRldmljZQ0KPiB0cmVlDQo+IA0KPiBP
biBXZWQsIDIwMTMtMTAtMDkgYXQgMTQ6MzggKzA4MDAsIFl1YW50aWFuLlRhbmdAZnJlZXNjYWxl
LmNvbSB3cm90ZToNCj4gPiBGcm9tOiBUYW5nIFl1YW50aWFuIDx5dWFudGlhbi50YW5nQGZyb3Zp
ZGVyOg0KPiA+ICsvIHsNCj4gPiArCWNsb2NrZ2VuOiBnbG9iYWwtdXRpbGl0aWVzQGUxMDAwIHsN
Cj4gPiArCQljb21wYXRpYmxlID0gImZzbCxwNTAyMC1jbG9ja2dlbiIsICJmc2wscW9yaXEtY2xv
Y2tnZW4tMS4wIjsNCj4gPiArCQlyZWcgPSA8MHhlMTAwMCAweDEwMDA+Ow0KPiA+ICsJCWNsb2Nr
LWZyZXF1ZW5jeSA9IDwwPjsNCj4gPiArCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsNCj4gPiArCQkj
c2l6ZS1jZWxscyA9IDwxPjsNCj4gPiArDQo+ID4gKwkJc3lzY2xrOiBzeXNjbGsgew0KPiA+ICsJ
CQkjY2xvY2stY2VsbHMgPSA8MD47DQo+ID4gKwkJCWNvbXBhdGlibGUgPSAiZnNsLHFvcmlxLXN5
c2Nsay0xLjAiLCAiZml4ZWQtY2xvY2siOw0KPiA+ICsJCQljbG9jay1vdXRwdXQtbmFtZXMgPSAi
c3lzY2xrIjsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCXBsbDA6IHBsbDBAODAwIHsNCj4gPiAr
CQkJI2Nsb2NrLWNlbGxzID0gPDE+Ow0KPiA+ICsJCQlyZWcgPSA8MHg4MDAgMHg0PjsNCj4gPiAr
CQkJY29tcGF0aWJsZSA9ICJmc2wscW9yaXEtY29yZS1wbGwtMS4wIjsNCj4gPiArCQkJY2xvY2tz
ID0gPCZzeXNjbGs+Ow0KPiA+ICsJCQljbG9jay1vdXRwdXQtbmFtZXMgPSAicGxsMCIsICJwbGww
LWRpdjIiOw0KPiA+ICsJCX07DQo+IA0KPiBXaGVyZSBpcyAicmFuZ2VzIiBpbiB0aGUgZ2xvYmFs
LXV0aWxpdGllcyBub2RlPw0KPiANCldpbGwgYWRkIGl0IHRoYW5rcy4NCg0KUmVnYXJkcywNCll1
YW50aWFuDQoNCj4gLVNjb3R0DQo+IA0KDQo=

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-11  9:25     ` Mark Rutland
  2013-10-11 19:07       ` Scott Wood
@ 2013-10-12  3:40       ` Tang Yuantian-B29983
  2013-10-21  9:14         ` Mark Rutland
  1 sibling, 1 reply; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-12  3:40 UTC (permalink / raw)
  To: Mark Rutland; +Cc: devicetree, linuxppc-dev, Li Yang-Leo-R58472

VGhhbmtzIGZvciB5b3VyIHJldmlldy4NCg0KPiANCj4gPg0KPiA+ID4gPiArLSByZWc6IE9mZnNl
dCBhbmQgbGVuZ3RoIG9mIHRoZSBjbG9jayByZWdpc3RlciBzZXQNCj4gPiA+ID4gKy0gY2xvY2st
ZnJlcXVlbmN5OiBJbmRpY2F0ZXMgaW5wdXQgY2xvY2sgZnJlcXVlbmN5IG9mIGNsb2NrIGJsb2Nr
Lg0KPiA+ID4gPiArICAgICAgIFdpbGwgYmUgc2V0IGJ5IHUtYm9vdA0KPiA+ID4NCj4gPiA+IFdo
eSBkb2VzIHRoZSBmYWN0IHRoaXMgaXMgc2V0IGJ5IHUtYm9vdCBtYXR0ZXIgdG8gdGhlIGJpbmRp
bmc/DQo+ID4gPg0KPiA+IE9LLCBJIHdpbGwgcmVtb3ZlIGl0Lg0KPiA+DQo+ID4gPiA+ICsNCj4g
PiA+ID4gK1JlY29tbWVuZGVkIHByb3BlcnRpZXM6DQo+ID4gPiA+ICstICNkZHJlc3MtY2VsbHM6
IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIHVzZWQgdG8gcmVwcmVzZW50DQo+ID4gPiA+
ICsgICAgICAgcGh5c2ljYWwgYmFzZSBhZGRyZXNzZXMuICBNdXN0IGJlIHByZXNlbnQgaWYgdGhl
IGRldmljZSBoYXMNCj4gPiA+ID4gKyAgICAgICBzdWItbm9kZXMgYW5kIHNldCB0byAxIGlmIHBy
ZXNlbnQNCj4gPiA+DQo+ID4gPiBUeXBvOiAjYWRkcmVzcy1jZWxscw0KPiA+ID4NCj4gPiA+IElu
IHRoZSBleGFtcGxlIGl0IGxvb2tzIGxpa2UgdGhlIGFkZHJlc3MgY2VsbHMgb2YgY2hpbGQgbm9k
ZXMgYXJlDQo+ID4gPiBvZmZzZXRzIHdpdGhpbiB0aGUgdW5pdCwgcmF0aGVyIHRoYW4gYWJzb2x1
dGUgcGh5c2ljYWwgYWRkcmVzc2VzLg0KPiA+ID4gQ291bGQgdGhlIGNvZGUgbm90IHRyZWF0IHRo
ZW0gYXMgYWJzb2x1dGUgYWRkcmVzc2VzPyBUaGVuIHdlJ2Qgb25seQ0KPiA+ID4gbmVlZCB0byBk
b2N1bWVudCB0aGF0ICNhZGRyZXNzLWNlbGxzLCAjc2l6ZS1jZWxscyBhbmQgcmFuZ2VzIG11c3Qg
YmUNCj4gPiA+IHByZXNlbnQgYW5kIGhhdmUgdmFsdWVzIHN1aXRhYmxlIGZvciBtYXBwaW5nIGNo
aWxkIG5vZGVzIGludG8gdGhlDQo+ID4gPiBhZGRyZXNzIHNwYWNlIG9mIHRoZSBwYXJlbnQuDQo+
ID4gPg0KPiA+IE9LLCB0aGFua3MuDQo+ID4NCj4gPiA+ID4gKy0gI3NpemUtY2VsbHM6IFNwZWNp
ZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIHVzZWQgdG8gcmVwcmVzZW50DQo+ID4gPiA+ICsgICAg
ICAgdGhlIHNpemUgb2YgYW4gYWRkcmVzcy4gTXVzdCBiZSBwcmVzZW50IGlmIHRoZSBkZXZpY2Ug
aGFzDQo+ID4gPiA+ICsgICAgICAgc3ViLW5vZGVzIGFuZCBzZXQgdG8gMSBpZiBwcmVzZW50DQo+
ID4gPg0KPiA+ID4gSXQncyBub3QgcmVhbGx5IHRoZSBzaXplIG9mIGFuIGFkZHJlc3MsIGl0J3Mg
dGhlIHNpemUgb2YgYSByZWdpb24NCj4gPiA+IGlkZW50aWZpZWQgYnkgYSByZWcgZW50cnkuDQo+
ID4gPg0KPiA+ID4gSSB0aGluayB0aGlzIGNhbiBiZSBzaW1wbGlmaWVkIGJ5IG15IHN1Z2dlc3Rp
b24gYWJvdmUuDQo+ID4gPg0KPiA+IFllcw0KPiANCj4gQWFoLCBJIHNlZSB0aGF0IHRoaXMgaXMg
YWxyZWFkeSBpbiB1c2UsIHNvIGl0J3MgYSBiaXQgbGF0ZSB0byBjaGFuZ2UNCj4gdGhpcy4uLg0K
PiANCkkgd2lsbCBtb2RpZnkgdGhlIGRyaXZlciBhbnl3YXkgb25jZSB0aGUgYmluZGluZyBnZXRz
IGRvbmUuDQoNCj4gPg0KPiA+ID4gPiArDQo+ID4gPiA+ICsyLiBDbG9jayBQcm92aWRlci9Db25z
dW1lciBCaW5kaW5nDQo+ID4gPiA+ICsNCj4gPiA+ID4gK01vc3Qgb2YgdGhlIGJpbmRpbmcgYXJl
IGZyb20gdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLg0KPiA+ID4gPiArIFsxXSBEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0DQo+ID4g
PiA+ICsNCj4gPiA+ID4gK1JlcXVpcmVkIHByb3BlcnRpZXM6DQo+ID4gPiA+ICstIGNvbXBhdGli
bGUgOiBTaG91bGQgaW5jbHVkZSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nOg0KPiANCj4g
SSBkaWRuJ3Qgc3BvdCB0aGlzIGVhcmxpZXIsIGJ1dCB3aHkgIm9uZSBvciBtb3JlIj8gYXJlIHRo
ZSAyLjAgdmFyaWFudHMNCj4gYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aCB0aGUgMS4wIHZhcmlh
bnRzLg0KPiANCk9uZSBvciBtb3JlIGZvciBmaXhlZC1jbG9jayB3aGljaCBpcyBjb21wYXRpYmxl
IHdpdGggcW9yaXEtc3lzY2xrLSouDQoNCj4gPiA+ID4gKyAgICAgICAtICJmc2wscW9yaXEtY29y
ZS1wbGwtWzEsMl0ueCI6IEluZGljYXRlcyBhIGNvcmUgUExMIGNsb2NrDQo+ID4gPiBkZXZpY2UN
Cj4gPiA+ID4gKyAgICAgICAtICJmc2wscW9yaXEtY29yZS1tdXgtWzEsMl0ueCI6IEluZGljYXRl
cyBhIGNvcmUNCj4gPiA+ID4gKyBtdWx0aXBsZXhlcg0KPiA+ID4gY2xvY2sNCj4gPiA+ID4gKyAg
ICAgICAgICAgICAgIGRldmljZTsgZGl2aWRlZCBmcm9tIHRoZSBjb3JlIFBMTCBjbG9jaw0KPiA+
ID4NCj4gPiA+IEFzIGFib3ZlLCBJJ2QgcHJlZmVyIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgYmFz
aWMgc3RyaW5ncyB3ZSBleHBlY3QuDQo+ID4gPg0KPiA+IFRoZXJlIGlzIG5vIGxpc3QgaGVyZSwg
anVzdCAqLW11eC0xLnggYW5kICotbXV4LTIueCBXaGF0IGtpbmQgb2YgbGlzdA0KPiA+IGRvIHlv
dSBwcmVmZXI/DQo+IA0KPiBTb21ldGhpbmcgbGlrZToNCj4gDQo+IC0gY29tcGF0aWJsZTogU2hv
dWxkIGluY2x1ZGUgYXQgbGVhc3Qgb25lIG9mOg0KPiAgICAgKiAiZnNsLHFvcmlxLWNvcmUtcGxs
LTEuMCIgZm9yIGNvcmUgUExMIGNsb2NrcyAodjEuMCkNCj4gICAgICogImZzbCxxb3JpcS1jb3Jl
LXBsbC0yLjAiIGZvciBjb3JlIFBMTCBjbG9ja3MgKHYyLjApDQo+ICAgICAqICJmc2wscW9yaXEt
Y29yZS1tdXgtMS4wIiBmb3IgY29yZSBtdXggY2xvY2tzICh2MS4wKQ0KPiAgICAgKiAiZnNsLHFv
cmlxLWNvcmUtbXV4LTIuMCIgZm9yIGNvcmUgbXV4IGNsb2NrcyAodjIuMCkNCj4gICBUaGUgKi0y
LjAgdmFyaWFudHMgYXJlIGJhY2t3YXJkcyBjb21wYXRpYmxlIHdpdGggdGhlICotMS4wIHZhcmlh
bnRzLA0KPiAgIHNvIGZvciBjb21wYXRpYmxpdHkgYSAqLTEuMCB2YXJpYW50IHN0cmluZyBzaG91
bGQgYmUgaW4gdGhlIGxpc3QuDQo+IA0KU2VlIHRoZSBjb21tZW50IGJ5IFNjb3R0IHdvb2QuDQoN
Cj4gPg0KPiA+ID4gPiArICAgICAgIC0gImZpeGVkLWNsb2NrIjogRnJvbSBjb21tb24gY2xvY2sg
YmluZGluZzsgaW5kaWNhdGVzDQo+ID4gPiA+ICsgb3V0cHV0DQo+ID4gPiBjbG9jaw0KPiA+ID4g
PiArICAgICAgICAgICAgICAgb2Ygb3NjaWxsYXRvcg0KPiA+ID4gPiArICAgICAgIC0gImZzbCxx
b3JpcS1zeXNjbGstWzEsMl0ueCI6IEluZGljYXRlcyBpbnB1dCBzeXN0ZW0gY2xvY2sNCj4gPiA+
DQo+ID4gPiBIZXJlIHRvby4NCj4gPiA+DQo+ID4gPiA+ICstICNjbG9jay1jZWxsczogRnJvbSBj
b21tb24gY2xvY2sgYmluZGluZzsgaW5kaWNhdGVzIHRoZSBudW1iZXIgb2YNCj4gPiA+ID4gKyAg
ICAgICBvdXRwdXQgY2xvY2suIDAgaXMgZm9yIG9uZSBvdXRwdXQgY2xvY2s7IDEgZm9yIG1vcmUg
dGhhbg0KPiA+ID4gPiArb25lIGNsb2NrDQo+ID4gPg0KPiA+ID4gSWYgYSBjbG9jayBzb3VyY2Ug
aGFzIG11bHRpcGxlIG91dHB1dHMsIHdoYXQgdGhvc2Ugb3V0cHV0cyBhcmUgYW5kDQo+ID4gPiB3
aGF0IHZhbHVlcyBpbiBjbG9jay1jZWxscyB0aGV5IGNvcnJlc3BvbmQgdG8gc2hvdWxkIGJlIGRl
c2NyaWJlZA0KPiBoZXJlLg0KPiA+ID4NCj4gPiBUaGVyZSBpcyBubyB3YXkgdG8gZGVzY3JpYmUg
dGhlIHZhbHVlcyBvZiBtdWx0aXBsZSBvdXRwdXRzIGhlcmUuDQo+ID4gVGhpcyBwcm9wZXJ0eSBp
cyB0aGUgdHlwZSBvZiBCT09MLiBTZWUgdGhlIGNsb2NrLWJpbmRpbmdzLnR4dC4NCj4gDQo+IFNv
cnJ5PyAjY2xvY2stY2VsbHMgaXMgbW9zdCBkZWZpbml0ZWx5IF9ub3RfIGEgYm9vbDoNCj4gDQpB
Q1RzIGxpa2UgYm9vbC4NCg0KPiAxNzogI2Nsb2NrLWNlbGxzOiAgICAgIE51bWJlciBvZiBjZWxs
cyBpbiBhIGNsb2NrIHNwZWNpZmllcjsgVHlwaWNhbGx5IDANCj4gZm9yIG5vZGVzDQo+IDE4OiAg
ICAgICAgICAgICAgICAgICAgd2l0aCBhIHNpbmdsZSBjbG9jayBvdXRwdXQgYW5kIDEgZm9yIG5v
ZGVzIHdpdGgNCj4gbXVsdGlwbGUNCj4gMTk6ICAgICAgICAgICAgICAgICAgICBjbG9jayBvdXRw
dXRzLg0KPiANCj4gQW5kIG5laXRoZXIgYXJlIHRoZSBjbG9jay1zcGVjaWZpZXJzIGVuY29kZWQg
d2l0aCB0aG9zZSBjZWxscy4gQ29uc2lkZXI6DQo+IA0KPiAgIHBsbDA6IHBsbDBAODAwIHsNCj4g
ICAgICAgICAgICNjbG9jay1jZWxscyA9IDwxPjsNCj4gICAgICAgICAgIHJlZyA9IDwweDgwMCAw
eDQ+Ow0KPiAgICAgICAgICAgY29tcGF0aWJsZSA9ICJmc2wscW9yaXEtY29yZS1wbGwtMS4wIjsN
Cj4gICAgICAgICAgIGNsb2NrcyA9IDwmc3lzY2xrPjsNCj4gICAgICAgICAgIGNsb2NrLW91dHB1
dC1uYW1lcyA9ICJwbGwwIiwgInBsbDAtZGl2MiI7DQo+ICAgfTsNCj4gDQo+IEhlcmUgdGhlIHZh
bHVlIG9mIHRoZSBjZWxscyBpbiBhIGNsb2NrLXNwZWNpZmllciBzZWVtIHRvIGJlOg0KPiAwOiBw
bGwwDQo+IDE6IHBsbDAtZGl2Mg0KPiANCj4gU28gaW4gYSBjb25zdW1lciwgdGhlIHZhbGlkIHZh
bHVlcyBvZiB0aGUgY2VsbHMgaW4gYSBjbG9jay1zcGVjaWZpZXINCj4gYXJlOg0KPiANCj4gICBj
b25zdW1lcjogZGV2aWNlIHsNCj4gICAgICAgICAgIGNvbXBhdGlibGUgPSAidmVuZG9yLHNvbWUt
ZGV2aWNlIjsNCj4gICAgICAgICAgIGNsb2NrcyA9IDwmcGxsMCAwPiwgLyogcGxsMCAqLw0KPiAg
ICAgICAgICAgICAgICAgICAgPCZwbGwwIDE+OyAvKiBwbGwwLWRpdjIgKi8NCj4gICB9Ow0KPiAN
Cj4gVGhlcmUgbXVzdCBiZSBzb21lIG1lYW5pbmcgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBvZiB0
aGUgY2VsbHMgaW4gdGhlDQo+IGNsb2NrLXNwZWNpZmllciAoZS5nLiBsaW5lYXIgaW5kZXggb2Yg
dGhlIGNsb2NrIG91dHB1dCBpbiB0aGUgaGFyZHdhcmUpLg0KPiBJdCB3b3VsZCBiZSBnb29kIHRv
IGRlc2NyaWJlIHRoaXMsIG90aGVyIGNsb2NrIGJpbmRpbmdzIGRvLg0KPiANClNvcnJ5LCBJIHN0
aWxsIGdldCB3aGF0IHlvdSBtZWFuLiBUaGVyZSBpcyBubyBJTkRFWCBhdCBhbGwuDQowIGlzIGZv
ciBvbmUgb3V0cHV0LCAxIGZvciBtdWx0aXBsZSBvdXRwdXQuIEp1c3QgbGlrZSB0aGF0Lg0KV2hh
dCB0aGUgIiBvdGhlciBjbG9jayBiaW5kaW5ncyIgZGlkIHlvdSByZWZlciB0bz8NCg0KPiA+DQo+
ID4gPiA+ICsNCj4gPiA+ID4gK1JlY29tbWVuZGVkIHByb3BlcnRpZXM6DQo+ID4gPiA+ICstIGNs
b2NrczogU2hvdWxkIGJlIHRoZSBwaGFuZGxlIG9mIGlucHV0IHBhcmVudCBjbG9jaw0KPiA+ID4g
PiArLSBjbG9jay1uYW1lczogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZywgaW5kaWNhdGVzIHRo
ZSBjbG9jaw0KPiA+ID4gPiArbmFtZQ0KPiA+ID4NCj4gPiA+IFRoYXQgZGVzY3JpcHRpb24ncyBh
IGJpdCBvcGFxdWUuDQo+ID4gPg0KPiA+ID4gV2hhdCdzIHRoZSBuYW1lIG9mIHRoZSBjbG9jayBp
bnB1dCBvbiB0aGVzZSB1bml0cz8gVGhhdCdzIHdoYXQNCj4gPiA+IGNsb2NrLSBuYW1lcyBzaG91
bGQgY29udGFpbiwgYW5kIHRoYXQgc2hvdWxkIGJlIGRvY3VtZW50ZWQuDQo+ID4gPg0KPiA+IElz
IGl0IG5lY2Vzc2FyeSB0byBkb2N1bWVudCB0aGVzZSBuYW1lcyBzaW5jZSB0aGV5IGFyZSB0b3Rh
bGx5IHVzZWQgYnkNCj4gPiBjbG9jayBwcm92aWRlciBhbmQgY2xvY2sgY29uc3VtZXIgaGFzIG5v
IGlkZWEgYWJvdXQgdGhlbT8NCj4gDQo+IEknbSBub3Qgc3VyZSBJIGZvbGxvdyAtLSBjbG9ja3Mg
YW5kIGNsb2NrLW5hbWVzIGFyZSB1c2VkIGJ5IGNvbnN1bWVycy4NCj4gVGhleSBkZWZpbmUgd2hp
Y2ggY2xvY2tzIGFyZSBpbnB1dHMgdG8gYSBjb25zdW1lciwgYW5kIHRoZSBuYW1lcyBvZiB0aGUN
Cj4gY2xvY2sgaW5wdXRzIG9uIHRoZSBjb25zdW1lcjoNCj4gDQo+ICAgY29uc3VtZXJAMHhmZmZm
MDAwMCB7DQo+ICAgICAgICAgICByZWcgPSA8MHhmZmZmMDAwMCAweDEwMDA+Ow0KPiAgICAgICAg
ICAgY29tcGF0aWJsZSA9ICJ2ZW5kb3Isc29tZS1jb25zdW1lciI7DQo+ICAgICAgICAgICBjbG9j
a3MgPSA8JnBsMDExIDA+LA0KPiAgICAgICAgICAgICAgICAgICAgPCZvdGhlcmNsb2NrIDQzIDIy
PiwNCj4gICAgICAgICAgICAgICAgICAgIDwmcGwwMTEgMT47DQo+ICAgICAgICAgICBjbG9jay1u
YW1lcyA9ICJhcGJfcGNsayIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICJwaXhlbF9jbGsi
LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAic2Nhbm91dF9jbGsiOw0KPiAgIH07DQo+IA0K
PiBIZXJlIHRoZSBzZXQgb2YgY2xvY2stbmFtZXMgd291bGQgYmUgZGVmaW5lZCBpbiB0aGUgYmlu
ZGluZyBvZiB0aGUNCj4gY29uc3VtZXIsIGJhc2VkIG9uIHRoZSBjbG9jayBpbnB1dCBuYW1lcyBp
biB0aGUgSVAgZG9jdW1lbnRhdGlvbiAtLSB0aGV5DQo+IHRlbGwgdGhlIGNvbnN1bWVyIHdoaWNo
IGNsb2NrIGlucHV0cyBvbiB0aGUgY29uc3VtZXIgdGhlIGNsb2NrcyBkZXNjcmliZWQNCj4gaW4g
Y2xvY2tzIGFyZSB3aXJlZCBpbiB0bywgYW5kIGRlc2NyaWJlIG5vdGhpbmcgYWJvdXQgb3V0cHV0
IG9mIHRoZQ0KPiBwcm92aWRlci4gVXNpbmcgY2xvY2stbmFtZXMgYWxsb3dzIHRoZSBzZXQgb2Yg
Y2xvY2tzIG9uIGFuIElQIHRvIGNoYW5nZQ0KPiBvdmVyIHJldmlzaW9ucyBhbmQgZm9yIHNvbWUg
Y2xvY2sgaW5wdXRzIHRvIGJlIG9wdGlvbmFsLg0KPiANCk9LLCBJIGdldCBpdC4gV2lsbCBuYW1l
IHRoZSBjbG9jay1uYW1lcyBiZXR0ZXIsIGFuZCBhZGQgaXQgaWYgbWlzc2VkLg0KVGhhbmtzLA0K
DQo+ID4NCj4gPiA+IERvIHdlIG5vdCBfYWx3YXlzXyBuZWVkIHRoZSBwYXJlbnQgY2xvY2s/DQo+
ID4gPg0KPiA+IE5vdCBmb3IgZml4ZWQtY2xvY2sgdGhhdCBpdHMgcGFyZW50IGNsb2NrIGlzIG9z
Y2lsbGF0b3IgOikNCj4gDQo+IENlcnRhaW5seSBmaXhlZC1jbG9jayBkb2Vzbid0IG5lZWQgYW55
IHBhcmVudCBjbG9jaywgYnV0IEkgZ3Vlc3MgUExMcyBhbmQNCj4gbXV4ZXMgYWx3YXlzIGRvLg0K
PiANCj4gPg0KPiA+ID4gSWYgd2UgaGF2ZSBhIGNsb2NrIGRvIHdlIG5lZWQgYSBjbG9jay1uYW1l
cyBlbnRyeSBmb3IgaXQ/DQo+ID4gPg0KPiA+IFRlY2huaWNhbGx5IHllcywgYnV0IEkgZG9uJ3Qg
Ym90aGVyIHRvIGFkZCBpdCBpZiB0aGUgY2xvY2sgbm9kZSBoYXMNCj4gPiBvbmx5IG9uZSBjbG9j
a3MuDQo+IA0KPiBPay4gV2hlcmUgd2Ugb25seSBoYXZlIG9uZSBpbnB1dCBjbG9jaywgdGhpcyBk
b2Vzbid0IG5lZWQgdG8gYmUgZGVzY3JpYmVkLg0KPiANCj4gRG8gdGhlIG11eCBjbG9ja3MgYWx3
YXlzIHRha2UgMyBpbnB1dCBjbG9ja3MgKGp1ZGdpbmcgYnkgdGhlIGV4YW1wbGVzDQo+IHRoZXkg
ZG8pPw0KPiANCj4gPg0KPiA+ID4gPiArLSBjbG9jay1vdXRwdXQtbmFtZXM6IEZyb20gY29tbW9u
IGNsb2NrIGJpbmRpbmcsIGluZGljYXRlcyB0aGUNCj4gPiA+ID4gK25hbWVzDQo+ID4gPiBvZg0K
PiA+ID4gPiArICAgICAgIG91dHB1dCBjbG9ja3MNCj4gPiA+ID4gKy0gcmVnOiBTaG91bGQgYmUg
dGhlIG9mZnNldCBhbmQgbGVuZ3RoIG9mIGNsb2NrIGJsb2NrIGJhc2UgYWRkcmVzcy4NCj4gPiA+
ID4gKyAgICAgICBUaGUgbGVuZ3RoIHNob3VsZCBiZSA0Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICtF
eGFtcGxlIGZvciBjbG9jayBibG9jayBhbmQgY2xvY2sgcHJvdmlkZXI6DQo+ID4gPiA+ICsvIHsN
Cj4gPiA+ID4gKyAgICAgICBjbG9ja2dlbjogZ2xvYmFsLXV0aWxpdGllc0BlMTAwMCB7DQo+ID4g
PiA+ICsgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gImZzbCxwNTAyMC1jbG9ja2dlbiIsDQo+
ID4gPiA+ICsiZnNsLHFvcmlxLWNsb2NrZ2VuLQ0KPiA+ID4gMS4wIjsNCj4gPiA+ID4gKyAgICAg
ICAgICAgICAgIHJlZyA9IDwweGUxMDAwIDB4MTAwMD47DQo+ID4gPiA+ICsgICAgICAgICAgICAg
ICBjbG9jay1mcmVxdWVuY3kgPSA8MD47DQo+ID4gPg0KPiA+ID4gVGhhdCBsb29rcyBvZGQuDQo+
ID4gPg0KPiA+IFllcywgYnV0IGl0IGhhcyBhbHJlYWR5IGV4aXN0ZWQgaGVyZSBiZWZvcmUgdGhp
cyBwYXRjaC4NCj4gPiBDYW4gSSBtb3ZlIGl0IHRvIHN5c2NsayBjbG9jayBub2RlIHNpbmNlIGl0
IGlzIG5vdCB1c2VkIHlldD8NCj4gDQo+IEkgaGFkbid0IHJlYWxpc2VkIHRoZXJlIHdlcmUgRFRT
IHdpdGggdGhpcyBhbHJlYWR5LiBXaHkgaXMgdGhlcmUgYSBjbG9jaw0KPiB3aXRoIGNsb2NrLWZy
ZXF1ZW5jeSA9IDwwPiBhdCBhbGw/IFN1cmVseSB0aGF0IGlzbid0IHVzZWZ1bC4uLg0KPiANClNl
ZSBjb21tZW50cyBieSBTY290dCBXb29kLCBUaGFua3MgeW91IFNjb290Lg0KDQo+ID4NCj4gPiA+
ID4gKyAgICAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDE+Ow0KPiA+ID4gPiArICAgICAg
ICAgICAgICAgI3NpemUtY2VsbHMgPSA8MT47DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICAg
ICAgICAgIHN5c2Nsazogc3lzY2xrIHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg
I2Nsb2NrLWNlbGxzID0gPDA+Ow0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb21w
YXRpYmxlID0gImZzbCxxb3JpcS1zeXNjbGstMS4wIiwNCj4gPiA+ID4gKyAiZml4ZWQtY2xvY2si
Ow0KPiA+ID4NCj4gPiA+IFdlIGRpZG4ndCBtZW50aW9uIGluIHRoZSBiaW5kaW5nIHRoYXQgImZz
bCxxb3JpcS1zeXNjbGstMS4wIiB3YXMNCj4gPiA+IGNvbXBhdGlibGUgd2l0aCAiZml4ZWQtY2xv
Y2siIGFuZCBzaG91bGQgaGF2ZSAiZml4ZWQtY2xvY2siIGluIHRoZQ0KPiA+ID4gY29tcGF0aWJs
ZSBsaXN0Li4uDQo+ID4gPg0KPiA+IE9LLCB3aWxsIGZpeCBpdC4NCj4gDQo+IENoZWVycy4gQWxz
bywgZG9lc24ndCBhIGZpeGVkLWNsb2NrIHJlcXVpcmUgYSBjbG9jay1mcmVxdWVuY3k/DQo+IA0K
WWVzLCBpdCBzaG91bGQgYmUuIEJ1dCB3ZSBnb3QgdGhlIGNsb2NrLWZyZXF1ZW5jeSBmcm9tIHBh
cmVudCBub2RlIGJlY2F1c2UNClRoZXJlIGlzIGEgY2xvY2stZnJlcXVlbmN5IGFscmVhZHkgdGhl
cmUgYmVmb3JlIHRoaXMgcGF0Y2guDQoNCj4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAg
ICAgICBjbG9jay1vdXRwdXQtbmFtZXMgPSAic3lzY2xrIjsNCj4gPiA+ID4gKyAgICAgICAgICAg
ICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICAgICAgICAgcGxsMDogcGxsMEA4MDAg
ew0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAjY2xvY2stY2VsbHMgPSA8MT47DQo+
ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDgwMCAweDQ+Ow0KPiA+ID4g
PiArICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gImZzbCxxb3JpcS1jb3JlLXBs
bC0xLjAiOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBjbG9ja3MgPSA8JnN5c2Ns
az47DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLW91dHB1dC1uYW1lcyA9
ICJwbGwwIiwgInBsbDAtZGl2MiI7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICB9Ow0KPiA+ID4g
PiArDQo+ID4gPiA+ICsgICAgICAgICAgICAgICBwbGwxOiBwbGwxQDgyMCB7DQo+ID4gPiA+ICsg
ICAgICAgICAgICAgICAgICAgICAgICNjbG9jay1jZWxscyA9IDwxPjsNCj4gPiA+ID4gKyAgICAg
ICAgICAgICAgICAgICAgICAgcmVnID0gPDB4ODIwIDB4ND47DQo+ID4gPiA+ICsgICAgICAgICAg
ICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiZnNsLHFvcmlxLWNvcmUtcGxsLTEuMCI7DQo+ID4g
PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrcyA9IDwmc3lzY2xrPjsNCj4gPiA+ID4g
KyAgICAgICAgICAgICAgICAgICAgICAgY2xvY2stb3V0cHV0LW5hbWVzID0gInBsbDEiLCAicGxs
MS1kaXYyIjsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIH07DQo+ID4gPiA+ICsNCj4gPiA+ID4g
KyAgICAgICAgICAgICAgIG11eDA6IG11eDBAMCB7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAg
ICAgICAgICNjbG9jay1jZWxscyA9IDwwPjsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg
ICAgcmVnID0gPDB4MCAweDQ+Ow0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb21w
YXRpYmxlID0gImZzbCxxb3JpcS1jb3JlLW11eC0xLjAiOw0KPiA+ID4gPiArICAgICAgICAgICAg
ICAgICAgICAgICBjbG9ja3MgPSA8JnBsbDAgMD4sIDwmcGxsMCAxPiwgPCZwbGwxIDA+LA0KPiA+
ID4gPCZwbGwxIDE+Ow0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBjbG9jay1uYW1l
cyA9ICJwbGwwXzAiLCAicGxsMF8xIiwNCj4gPiA+ID4gKyAicGxsMV8wIiwNCj4gPiA+ICJwbGwx
XzEiOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBjbG9jay1vdXRwdXQtbmFtZXMg
PSAiY211eDAiOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgfTsNCj4gPiA+ID4gKw0KPiA+ID4g
PiArICAgICAgICAgICAgICAgbXV4MTogbXV4MUAyMCB7DQo+ID4gPiA+ICsgICAgICAgICAgICAg
ICAgICAgICAgICNjbG9jay1jZWxscyA9IDwwPjsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAg
ICAgICAgcmVnID0gPDB4MjAgMHg0PjsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg
Y29tcGF0aWJsZSA9ICJmc2wscW9yaXEtY29yZS1tdXgtMS4wIjsNCj4gPiA+ID4gKyAgICAgICAg
ICAgICAgICAgICAgICAgY2xvY2tzID0gPCZwbGwwIDA+LCA8JnBsbDAgMT4sIDwmcGxsMSAwPiwN
Cj4gPiA+IDwmcGxsMSAxPjsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2xvY2st
bmFtZXMgPSAicGxsMF8wIiwgInBsbDBfMSIsDQo+ID4gPiA+ICsgInBsbDFfMCIsDQo+ID4gPiAi
cGxsMV8xIjsNCj4gDQo+IEkgZGlkbid0IHNwb3QgdGhpcyBsYXN0IHRpbWUsIGJ1dCB0aGUgY2xv
Y2stbmFtZXMgaGVyZSBzZWVtIHRvIGJlIHRoZQ0KPiBuYW1lcyBvZiB0aGUgb3V0cHV0cyBmcm9t
IHRoZSBwcm92aWRlciwgcmF0aGVyIHRoYW4gdGhlIGlucHV0IG5hbWVzIG9mDQo+IHRoZSBjb25z
dW1lci4gVGhpcyBnb2VzIGFnYWluc3QgdGhlIGludGVuZGVkIHB1cnBvc2Ugb2YgY2xvY2stbmFt
ZXMuDQo+IA0KSSBhbSBjb25mdXNlZCBoZXJlIHdpdGggcHJvdmlkZXIvY29uc3VtZXIgYmVjYXVz
ZSBzb21lIG5vZGVzIGNhbiBib3RoIGJlIGNvbnN1bWVyIGFuZCBwcm92aWRlci4NClRoZSBjbG9j
ay1uYW1lcyBhcmUgY29ycmVzcG9uZGluZyB0byBjbG9ja3Mgb25lIGJ5IG9uZSwgd2hhdCdzIHdy
b25nIHdpdGggaXQ/DQoNClJlZ2FyZHMsDQpZdWFudGlhbg0KDQo+ID4gPiA+ICsgICAgICAgICAg
ICAgICAgICAgICAgIGNsb2NrLW91dHB1dC1uYW1lcyA9ICJjbXV4MSI7DQo+ID4gPg0KPiA+ID4g
SG93IGRvZXMgdGhlIG11eCBjaG9vc2Ugd2hpY2ggaW5wdXQgY2xvY2sgdG8gdXNlIGF0IGEgcG9p
bnQgaW4gdGltZT8NCj4gPiA+DQo+ID4gVGhhdCBpcyBkZWNpZGVkIGF0IHJ1bnRpbWUuIERpZmZl
cmVudCBpbnB1dCBjbG9jayB3aWxsIGxlYWQgdG8gdGhlDQo+ID4gZGlmZmVyZW50IENsb2NrIGZy
ZXF1ZW5jeSB0aGF0IHRoZSBDUFVzIHdvcmsgb24uDQo+IA0KPiBPay4NCj4gDQo+IENoZWVycywN
Cj4gTWFyay4NCg0K

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-12  2:52         ` Tang Yuantian-B29983
@ 2013-10-14 22:13           ` Scott Wood
  2013-10-15  1:59             ` Tang Yuantian-B29983
  0 siblings, 1 reply; 25+ messages in thread
From: Scott Wood @ 2013-10-14 22:13 UTC (permalink / raw)
  To: Tang Yuantian-B29983
  Cc: Mark Rutland, Wood Scott-B07421, linuxppc-dev,
	Li Yang-Leo-R58472, devicetree

On Fri, 2013-10-11 at 21:52 -0500, Tang Yuantian-B29983 wrote:
> Thanks for your review.
>=20
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: 2013=E5=B9=B410=E6=9C=8812=E6=97=A5 =E6=98=9F=E6=9C=9F=E5=85=AD=
 3:07
> > To: Mark Rutland
> > Cc: Tang Yuantian-B29983; devicetree@vger.kernel.org; linuxppc-
> > dev@lists.ozlabs.org; Li Yang-Leo-R58472
> > Subject: Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in de=
vice
> > tree
> >=20
> > I'm not sure I understand the "_0"/"_1" part, though.  Doesn't each P=
LL
> > just have one output, which the consumer may choose to divide by 2 (o=
r in
> > some cases 4)?  Why does that division need to be exposed in the devi=
ce
> > tree as separate connections to the parent clock?
> >=20
> The device tree makes that quite clear.=20

You chose to model it that way in the device tree; that doesn't make it
clear that the hardware works that way or that it's a good way to model
it.

> Each PLL has several output which MUX node can take from.

Point out where in the hardware documentation it says this.  What I see
is a PLL that has one output, and a MUX register that can choose from
multiple PLL and divider options.

>  It is not a runtime decision.

Hmm?  It's a register you write to.

-Scott

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-14 22:13           ` Scott Wood
@ 2013-10-15  1:59             ` Tang Yuantian-B29983
  2013-10-15 17:40               ` Scott Wood
  0 siblings, 1 reply; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-15  1:59 UTC (permalink / raw)
  To: Wood Scott-B07421
  Cc: Mark Rutland, devicetree, linuxppc-dev, Li Yang-Leo-R58472

DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFdvb2QgU2NvdHQtQjA3NDIx
DQo+IFNlbnQ6IDIwMTPlubQxMOaciDE15pelIOaYn+acn+S6jCA2OjEzDQo+IFRvOiBUYW5nIFl1
YW50aWFuLUIyOTk4Mw0KPiBDYzogV29vZCBTY290dC1CMDc0MjE7IE1hcmsgUnV0bGFuZDsgZGV2
aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmc7DQo+IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3Jn
OyBMaSBZYW5nLUxlby1SNTg0NzINCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NV0gcG93ZXJwYy9t
cGM4NXh4OiBVcGRhdGUgdGhlIGNsb2NrIG5vZGVzIGluIGRldmljZQ0KPiB0cmVlDQo+IA0KPiBP
biBGcmksIDIwMTMtMTAtMTEgYXQgMjE6NTIgLTA1MDAsIFRhbmcgWXVhbnRpYW4tQjI5OTgzIHdy
b3RlOg0KPiA+IFRoYW5rcyBmb3IgeW91ciByZXZpZXcuDQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2lu
YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBXb29kIFNjb3R0LUIwNzQyMQ0KPiA+ID4gU2Vu
dDogMjAxM+W5tDEw5pyIMTLml6Ug5pif5pyf5YWtIDM6MDcNCj4gPiA+IFRvOiBNYXJrIFJ1dGxh
bmQNCj4gPiA+IENjOiBUYW5nIFl1YW50aWFuLUIyOTk4MzsgZGV2aWNldHJlZUB2Z2VyLmtlcm5l
bC5vcmc7IGxpbnV4cHBjLQ0KPiA+ID4gZGV2QGxpc3RzLm96bGFicy5vcmc7IExpIFlhbmctTGVv
LVI1ODQ3Mg0KPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2NV0gcG93ZXJwYy9tcGM4NXh4OiBV
cGRhdGUgdGhlIGNsb2NrIG5vZGVzIGluDQo+ID4gPiBkZXZpY2UgdHJlZQ0KPiA+ID4NCj4gPiA+
IEknbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQgdGhlICJfMCIvIl8xIiBwYXJ0LCB0aG91Z2guICBE
b2Vzbid0IGVhY2gNCj4gPiA+IFBMTCBqdXN0IGhhdmUgb25lIG91dHB1dCwgd2hpY2ggdGhlIGNv
bnN1bWVyIG1heSBjaG9vc2UgdG8gZGl2aWRlIGJ5DQo+ID4gPiAyIChvciBpbiBzb21lIGNhc2Vz
IDQpPyAgV2h5IGRvZXMgdGhhdCBkaXZpc2lvbiBuZWVkIHRvIGJlIGV4cG9zZWQNCj4gPiA+IGlu
IHRoZSBkZXZpY2UgdHJlZSBhcyBzZXBhcmF0ZSBjb25uZWN0aW9ucyB0byB0aGUgcGFyZW50IGNs
b2NrPw0KPiA+ID4NCj4gPiBUaGUgZGV2aWNlIHRyZWUgbWFrZXMgdGhhdCBxdWl0ZSBjbGVhci4N
Cj4gDQo+IFlvdSBjaG9zZSB0byBtb2RlbCBpdCB0aGF0IHdheSBpbiB0aGUgZGV2aWNlIHRyZWU7
IHRoYXQgZG9lc24ndCBtYWtlIGl0DQo+IGNsZWFyIHRoYXQgdGhlIGhhcmR3YXJlIHdvcmtzIHRo
YXQgd2F5IG9yIHRoYXQgaXQncyBhIGdvb2Qgd2F5IHRvIG1vZGVsDQo+IGl0Lg0KPiANCj4gPiBF
YWNoIFBMTCBoYXMgc2V2ZXJhbCBvdXRwdXQgd2hpY2ggTVVYIG5vZGUgY2FuIHRha2UgZnJvbS4N
Cj4gDQo+IFBvaW50IG91dCB3aGVyZSBpbiB0aGUgaGFyZHdhcmUgZG9jdW1lbnRhdGlvbiBpdCBz
YXlzIHRoaXMuICBXaGF0IEkgc2VlDQo+IGlzIGEgUExMIHRoYXQgaGFzIG9uZSBvdXRwdXQsIGFu
ZCBhIE1VWCByZWdpc3RlciB0aGF0IGNhbiBjaG9vc2UgZnJvbQ0KPiBtdWx0aXBsZSBQTEwgYW5k
IGRpdmlkZXIgb3B0aW9ucy4NCj4gDQpUYWtlIFQ0MjQwIGZvciBleGFtcGxlOiBzZWUgc2VjdGlv
biA0LjYuNS4xICwgKFBhZ2UgMTQxKSBpbiBUNDI0MFJNIFJldi4gRCwgMDkvMjAxMi4NCg0KPiA+
ICBJdCBpcyBub3QgYSBydW50aW1lIGRlY2lzaW9uLg0KPiANCj4gSG1tPyAgSXQncyBhIHJlZ2lz
dGVyIHlvdSB3cml0ZSB0by4NCj4gDQpJIG1lYW4gdGhlIG51bWJlciBvZiBQTEwgb3V0cHV0IG9y
IHRoZSBkaXZpc2lvbiBvZiBQTEwgaXMgbm90IGEgcnVudGltZSBkZWNpc2lvbi4NCldoaWNoIG91
dHB1dCBvZiBQTEwgdGhlIE1VWCBjYW4gdGFrZSBpcyBhIHJ1bnRpbWUgZGVjaXNpb24uDQoNClJl
Z2FyZHMsDQpZdWFudGlhbg0KDQo+IC1TY290dA0KPiANCg0K

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-15  1:59             ` Tang Yuantian-B29983
@ 2013-10-15 17:40               ` Scott Wood
  2013-10-16  2:57                 ` Tang Yuantian-B29983
  0 siblings, 1 reply; 25+ messages in thread
From: Scott Wood @ 2013-10-15 17:40 UTC (permalink / raw)
  To: Tang Yuantian-B29983
  Cc: Mark Rutland, Wood Scott-B07421, linuxppc-dev,
	Li Yang-Leo-R58472, devicetree

On Mon, 2013-10-14 at 20:59 -0500, Tang Yuantian-B29983 wrote:
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: 2013=E5=B9=B410=E6=9C=8815=E6=97=A5 =E6=98=9F=E6=9C=9F=E4=BA=8C=
 6:13
> > To: Tang Yuantian-B29983
> > Cc: Wood Scott-B07421; Mark Rutland; devicetree@vger.kernel.org;
> > linuxppc-dev@lists.ozlabs.org; Li Yang-Leo-R58472
> > Subject: Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in de=
vice
> > tree
> >=20
> > On Fri, 2013-10-11 at 21:52 -0500, Tang Yuantian-B29983 wrote:
> > > Thanks for your review.
> > >
> > > > -----Original Message-----
> > > > From: Wood Scott-B07421
> > > > Sent: 2013=E5=B9=B410=E6=9C=8812=E6=97=A5 =E6=98=9F=E6=9C=9F=E5=85=
=AD 3:07
> > > > To: Mark Rutland
> > > > Cc: Tang Yuantian-B29983; devicetree@vger.kernel.org; linuxppc-
> > > > dev@lists.ozlabs.org; Li Yang-Leo-R58472
> > > > Subject: Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes i=
n
> > > > device tree
> > > >
> > > > I'm not sure I understand the "_0"/"_1" part, though.  Doesn't ea=
ch
> > > > PLL just have one output, which the consumer may choose to divide=
 by
> > > > 2 (or in some cases 4)?  Why does that division need to be expose=
d
> > > > in the device tree as separate connections to the parent clock?
> > > >
> > > The device tree makes that quite clear.
> >=20
> > You chose to model it that way in the device tree; that doesn't make =
it
> > clear that the hardware works that way or that it's a good way to mod=
el
> > it.
> >=20
> > > Each PLL has several output which MUX node can take from.
> >=20
> > Point out where in the hardware documentation it says this.  What I s=
ee
> > is a PLL that has one output, and a MUX register that can choose from
> > multiple PLL and divider options.
> >=20
> Take T4240 for example: see section 4.6.5.1 , (Page 141) in T4240RM Rev=
. D, 09/2012.

That shows the dividers as being somewhere in between the PLL and the
MUX.  The MUX is where the divider is selected.  There's nothing in the
PLL's programming interface that relates to the dividers.  As such it's
simpler to model it as being part of the MUX.

-Scott

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-15 17:40               ` Scott Wood
@ 2013-10-16  2:57                 ` Tang Yuantian-B29983
  2013-10-16 16:46                   ` Scott Wood
  0 siblings, 1 reply; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-16  2:57 UTC (permalink / raw)
  To: Wood Scott-B07421
  Cc: Mark Rutland, devicetree, linuxppc-dev, Li Yang-Leo-R58472

PiA+ID4gPiA+DQo+ID4gPiA+IFRoZSBkZXZpY2UgdHJlZSBtYWtlcyB0aGF0IHF1aXRlIGNsZWFy
Lg0KPiA+ID4NCj4gPiA+IFlvdSBjaG9zZSB0byBtb2RlbCBpdCB0aGF0IHdheSBpbiB0aGUgZGV2
aWNlIHRyZWU7IHRoYXQgZG9lc24ndCBtYWtlDQo+ID4gPiBpdCBjbGVhciB0aGF0IHRoZSBoYXJk
d2FyZSB3b3JrcyB0aGF0IHdheSBvciB0aGF0IGl0J3MgYSBnb29kIHdheSB0bw0KPiA+ID4gbW9k
ZWwgaXQuDQo+ID4gPg0KPiA+ID4gPiBFYWNoIFBMTCBoYXMgc2V2ZXJhbCBvdXRwdXQgd2hpY2gg
TVVYIG5vZGUgY2FuIHRha2UgZnJvbS4NCj4gPiA+DQo+ID4gPiBQb2ludCBvdXQgd2hlcmUgaW4g
dGhlIGhhcmR3YXJlIGRvY3VtZW50YXRpb24gaXQgc2F5cyB0aGlzLiAgV2hhdCBJDQo+ID4gPiBz
ZWUgaXMgYSBQTEwgdGhhdCBoYXMgb25lIG91dHB1dCwgYW5kIGEgTVVYIHJlZ2lzdGVyIHRoYXQg
Y2FuIGNob29zZQ0KPiA+ID4gZnJvbSBtdWx0aXBsZSBQTEwgYW5kIGRpdmlkZXIgb3B0aW9ucy4N
Cj4gPiA+DQo+ID4gVGFrZSBUNDI0MCBmb3IgZXhhbXBsZTogc2VlIHNlY3Rpb24gNC42LjUuMSAs
IChQYWdlIDE0MSkgaW4gVDQyNDBSTSBSZXYuDQo+IEQsIDA5LzIwMTIuDQo+IA0KPiBUaGF0IHNo
b3dzIHRoZSBkaXZpZGVycyBhcyBiZWluZyBzb21ld2hlcmUgaW4gYmV0d2VlbiB0aGUgUExMIGFu
ZCB0aGUgTVVYLg0KPiBUaGUgTVVYIGlzIHdoZXJlIHRoZSBkaXZpZGVyIGlzIHNlbGVjdGVkLiAg
VGhlcmUncyBub3RoaW5nIGluIHRoZSBQTEwncw0KPiBwcm9ncmFtbWluZyBpbnRlcmZhY2UgdGhh
dCByZWxhdGVzIHRvIHRoZSBkaXZpZGVycy4gIEFzIHN1Y2ggaXQncyBzaW1wbGVyDQo+IHRvIG1v
ZGVsIGl0IGFzIGJlaW5nIHBhcnQgb2YgdGhlIE1VWC4NCj4gDQo+IC1TY290dA0KPiANCkkgZG9u
J3Qga25vdyB3aGV0aGVyIGl0IGlzIHNpbXBsZXIsIGJ1dCAibW9kZWxpbmcgZGl2aWRlciBhcyBi
ZWluZyBwYXJ0IG9mIHRoZSBNVVgiDQppcyB5b3VyIGd1ZXNzLCByaWdodD8NCklmIHRoZSAiZGl2
aWRlciIgaXMgaW5jbHVkZWQgaW4gTVVYLCB0aGUgTVVYIHdvdWxkIG5vdCBiZSBjYWxsZWQgIk1V
WCIuDQpJIGRvbid0IGtub3cgd2hldGhlciAiZGl2aWRlciIgbW9kdWxlIGV4aXN0cyBvciBub3Qu
IElmIGl0IGV4aXN0cywgaXQgc2hvdWxkIGJlIHBhcnQNCm9mIFBMTCBvciBiZXR3ZWVuIFBMTCBh
bmQgTVVYLiB3aGVyZXZlciBpdCB3YXMsIHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIGlzIGFwcHJv
cHJpYXRlLg0KVGhlIFAzMDQxUk0gc2hvd3MgZXhhY3RseSBlYWNoIFBMTCBoYXMgMiBvdXRwdXRz
IHdoaWNoIGRlZmluaXRlbHkgaGF2ZSBubyAiZGl2aWRlciIgYXQgYWxsLg0KDQpSZWdhcmRzLA0K
WXVhbnRpYW4NCg==

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-16  2:57                 ` Tang Yuantian-B29983
@ 2013-10-16 16:46                   ` Scott Wood
  2013-10-17  2:08                     ` Tang Yuantian-B29983
  0 siblings, 1 reply; 25+ messages in thread
From: Scott Wood @ 2013-10-16 16:46 UTC (permalink / raw)
  To: Tang Yuantian-B29983
  Cc: Mark Rutland, Wood Scott-B07421, linuxppc-dev,
	Li Yang-Leo-R58472, devicetree

On Tue, 2013-10-15 at 21:57 -0500, Tang Yuantian-B29983 wrote:
> > > > > >
> > > > > The device tree makes that quite clear.
> > > >
> > > > You chose to model it that way in the device tree; that doesn't make
> > > > it clear that the hardware works that way or that it's a good way to
> > > > model it.
> > > >
> > > > > Each PLL has several output which MUX node can take from.
> > > >
> > > > Point out where in the hardware documentation it says this.  What I
> > > > see is a PLL that has one output, and a MUX register that can choose
> > > > from multiple PLL and divider options.
> > > >
> > > Take T4240 for example: see section 4.6.5.1 , (Page 141) in T4240RM Rev.
> > D, 09/2012.
> > 
> > That shows the dividers as being somewhere in between the PLL and the MUX.
> > The MUX is where the divider is selected.  There's nothing in the PLL's
> > programming interface that relates to the dividers.  As such it's simpler
> > to model it as being part of the MUX.
> > 
> > -Scott
> > 
> I don't know whether it is simpler, but "modeling divider as being part of the MUX"
> is your guess, right?
> If the "divider" is included in MUX, the MUX would not be called "MUX".

It's still selecting from multiple PLLs.

> I don't know whether "divider" module exists or not. If it exists, it should be part
> of PLL or between PLL and MUX. wherever it was, the device tree binding is appropriate.

The device tree binding is unnecessarily complicated.

> The P3041RM shows exactly each PLL has 2 outputs which definitely have no "divider" at all.

That diagram is a bit weird -- one of the outputs is used as is, and the
other is split into 1/2 and 1/4.  It doesn't really matter though; the
end result is the same.  We're describing the programming interface, not
artwork choices in the manual.

-Scott

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-16 16:46                   ` Scott Wood
@ 2013-10-17  2:08                     ` Tang Yuantian-B29983
  2013-10-17 16:24                       ` Scott Wood
  0 siblings, 1 reply; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-17  2:08 UTC (permalink / raw)
  To: Wood Scott-B07421
  Cc: Mark Rutland, devicetree, linuxppc-dev, Li Yang-Leo-R58472

PiA+ID4gVGhhdCBzaG93cyB0aGUgZGl2aWRlcnMgYXMgYmVpbmcgc29tZXdoZXJlIGluIGJldHdl
ZW4gdGhlIFBMTCBhbmQgdGhlDQo+IE1VWC4NCj4gPiA+IFRoZSBNVVggaXMgd2hlcmUgdGhlIGRp
dmlkZXIgaXMgc2VsZWN0ZWQuICBUaGVyZSdzIG5vdGhpbmcgaW4gdGhlDQo+ID4gPiBQTEwncyBw
cm9ncmFtbWluZyBpbnRlcmZhY2UgdGhhdCByZWxhdGVzIHRvIHRoZSBkaXZpZGVycy4gIEFzIHN1
Y2gNCj4gPiA+IGl0J3Mgc2ltcGxlciB0byBtb2RlbCBpdCBhcyBiZWluZyBwYXJ0IG9mIHRoZSBN
VVguDQo+ID4gPg0KPiA+ID4gLVNjb3R0DQo+ID4gPg0KPiA+IEkgZG9uJ3Qga25vdyB3aGV0aGVy
IGl0IGlzIHNpbXBsZXIsIGJ1dCAibW9kZWxpbmcgZGl2aWRlciBhcyBiZWluZyBwYXJ0DQo+IG9m
IHRoZSBNVVgiDQo+ID4gaXMgeW91ciBndWVzcywgcmlnaHQ/DQo+ID4gSWYgdGhlICJkaXZpZGVy
IiBpcyBpbmNsdWRlZCBpbiBNVVgsIHRoZSBNVVggd291bGQgbm90IGJlIGNhbGxlZCAiTVVYIi4N
Cj4gDQo+IEl0J3Mgc3RpbGwgc2VsZWN0aW5nIGZyb20gbXVsdGlwbGUgUExMcy4NCj4gDQo+ID4g
SSBkb24ndCBrbm93IHdoZXRoZXIgImRpdmlkZXIiIG1vZHVsZSBleGlzdHMgb3Igbm90LiBJZiBp
dCBleGlzdHMsIGl0DQo+ID4gc2hvdWxkIGJlIHBhcnQgb2YgUExMIG9yIGJldHdlZW4gUExMIGFu
ZCBNVVguIHdoZXJldmVyIGl0IHdhcywgdGhlDQo+IGRldmljZSB0cmVlIGJpbmRpbmcgaXMgYXBw
cm9wcmlhdGUuDQo+IA0KPiBUaGUgZGV2aWNlIHRyZWUgYmluZGluZyBpcyB1bm5lY2Vzc2FyaWx5
IGNvbXBsaWNhdGVkLg0KPiANCj4gPiBUaGUgUDMwNDFSTSBzaG93cyBleGFjdGx5IGVhY2ggUExM
IGhhcyAyIG91dHB1dHMgd2hpY2ggZGVmaW5pdGVseSBoYXZlDQo+IG5vICJkaXZpZGVyIiBhdCBh
bGwuDQo+IA0KPiBUaGF0IGRpYWdyYW0gaXMgYSBiaXQgd2VpcmQgLS0gb25lIG9mIHRoZSBvdXRw
dXRzIGlzIHVzZWQgYXMgaXMsIGFuZCB0aGUNCj4gb3RoZXIgaXMgc3BsaXQgaW50byAxLzIgYW5k
IDEvNC4gIEl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciB0aG91Z2g7IHRoZQ0KPiBlbmQgcmVzdWx0
IGlzIHRoZSBzYW1lLiAgV2UncmUgZGVzY3JpYmluZyB0aGUgcHJvZ3JhbW1pbmcgaW50ZXJmYWNl
LCBub3QNCj4gYXJ0d29yayBjaG9pY2VzIGluIHRoZSBtYW51YWwuDQo+IA0KPiAtU2NvdHQNCj4g
DQpJZiB0aGUgZGV2aWNlIHRyZWUgbmVlZHMgdG8gYmUgbW9kaWZpZWQsIGNvdWxkIHlvdSBnaXZl
IG1lIHlvdXIgc3VnZ2VzdGlvbnM/DQoNClJlZ2FyZHMsDQpZdWFudGlhbg0K

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-17  2:08                     ` Tang Yuantian-B29983
@ 2013-10-17 16:24                       ` Scott Wood
  2013-10-18  2:06                         ` Tang Yuantian-B29983
  0 siblings, 1 reply; 25+ messages in thread
From: Scott Wood @ 2013-10-17 16:24 UTC (permalink / raw)
  To: Tang Yuantian-B29983
  Cc: Mark Rutland, Wood Scott-B07421, linuxppc-dev,
	Li Yang-Leo-R58472, devicetree

On Wed, 2013-10-16 at 21:08 -0500, Tang Yuantian-B29983 wrote:
> > > > That shows the dividers as being somewhere in between the PLL and the
> > MUX.
> > > > The MUX is where the divider is selected.  There's nothing in the
> > > > PLL's programming interface that relates to the dividers.  As such
> > > > it's simpler to model it as being part of the MUX.
> > > >
> > > > -Scott
> > > >
> > > I don't know whether it is simpler, but "modeling divider as being part
> > of the MUX"
> > > is your guess, right?
> > > If the "divider" is included in MUX, the MUX would not be called "MUX".
> > 
> > It's still selecting from multiple PLLs.
> > 
> > > I don't know whether "divider" module exists or not. If it exists, it
> > > should be part of PLL or between PLL and MUX. wherever it was, the
> > device tree binding is appropriate.
> > 
> > The device tree binding is unnecessarily complicated.
> > 
> > > The P3041RM shows exactly each PLL has 2 outputs which definitely have
> > no "divider" at all.
> > 
> > That diagram is a bit weird -- one of the outputs is used as is, and the
> > other is split into 1/2 and 1/4.  It doesn't really matter though; the
> > end result is the same.  We're describing the programming interface, not
> > artwork choices in the manual.
> > 
> > -Scott
> > 
> If the device tree needs to be modified, could you give me your suggestions?

My suggestion is to have only one output per PLL node.  The MUX node
would have one input per PLL.  Dividers would be handled internally to
the MUX driver.

-Scott

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-17 16:24                       ` Scott Wood
@ 2013-10-18  2:06                         ` Tang Yuantian-B29983
  2013-10-18 16:31                           ` Scott Wood
  0 siblings, 1 reply; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-18  2:06 UTC (permalink / raw)
  To: Wood Scott-B07421
  Cc: Mark Rutland, devicetree, linuxppc-dev, Li Yang-Leo-R58472

PiBPbiBXZWQsIDIwMTMtMTAtMTYgYXQgMjE6MDggLTA1MDAsIFRhbmcgWXVhbnRpYW4tQjI5OTgz
IHdyb3RlOg0KPiA+ID4gPiA+IFRoYXQgc2hvd3MgdGhlIGRpdmlkZXJzIGFzIGJlaW5nIHNvbWV3
aGVyZSBpbiBiZXR3ZWVuIHRoZSBQTEwNCj4gPiA+ID4gPiBhbmQgdGhlDQo+ID4gPiBNVVguDQo+
ID4gPiA+ID4gVGhlIE1VWCBpcyB3aGVyZSB0aGUgZGl2aWRlciBpcyBzZWxlY3RlZC4gIFRoZXJl
J3Mgbm90aGluZyBpbg0KPiA+ID4gPiA+IHRoZSBQTEwncyBwcm9ncmFtbWluZyBpbnRlcmZhY2Ug
dGhhdCByZWxhdGVzIHRvIHRoZSBkaXZpZGVycy4NCj4gPiA+ID4gPiBBcyBzdWNoIGl0J3Mgc2lt
cGxlciB0byBtb2RlbCBpdCBhcyBiZWluZyBwYXJ0IG9mIHRoZSBNVVguDQo+ID4gPiA+ID4NCj4g
PiA+ID4gPiAtU2NvdHQNCj4gPiA+ID4gPg0KPiA+ID4gPiBJIGRvbid0IGtub3cgd2hldGhlciBp
dCBpcyBzaW1wbGVyLCBidXQgIm1vZGVsaW5nIGRpdmlkZXIgYXMgYmVpbmcNCj4gPiA+ID4gcGFy
dA0KPiA+ID4gb2YgdGhlIE1VWCINCj4gPiA+ID4gaXMgeW91ciBndWVzcywgcmlnaHQ/DQo+ID4g
PiA+IElmIHRoZSAiZGl2aWRlciIgaXMgaW5jbHVkZWQgaW4gTVVYLCB0aGUgTVVYIHdvdWxkIG5v
dCBiZSBjYWxsZWQNCj4gIk1VWCIuDQo+ID4gPg0KPiA+ID4gSXQncyBzdGlsbCBzZWxlY3Rpbmcg
ZnJvbSBtdWx0aXBsZSBQTExzLg0KPiA+ID4NCj4gPiA+ID4gSSBkb24ndCBrbm93IHdoZXRoZXIg
ImRpdmlkZXIiIG1vZHVsZSBleGlzdHMgb3Igbm90LiBJZiBpdCBleGlzdHMsDQo+ID4gPiA+IGl0
IHNob3VsZCBiZSBwYXJ0IG9mIFBMTCBvciBiZXR3ZWVuIFBMTCBhbmQgTVVYLiB3aGVyZXZlciBp
dCB3YXMsDQo+ID4gPiA+IHRoZQ0KPiA+ID4gZGV2aWNlIHRyZWUgYmluZGluZyBpcyBhcHByb3By
aWF0ZS4NCj4gPiA+DQo+ID4gPiBUaGUgZGV2aWNlIHRyZWUgYmluZGluZyBpcyB1bm5lY2Vzc2Fy
aWx5IGNvbXBsaWNhdGVkLg0KPiA+ID4NCj4gPiA+ID4gVGhlIFAzMDQxUk0gc2hvd3MgZXhhY3Rs
eSBlYWNoIFBMTCBoYXMgMiBvdXRwdXRzIHdoaWNoIGRlZmluaXRlbHkNCj4gPiA+ID4gaGF2ZQ0K
PiA+ID4gbm8gImRpdmlkZXIiIGF0IGFsbC4NCj4gPiA+DQo+ID4gPiBUaGF0IGRpYWdyYW0gaXMg
YSBiaXQgd2VpcmQgLS0gb25lIG9mIHRoZSBvdXRwdXRzIGlzIHVzZWQgYXMgaXMsIGFuZA0KPiA+
ID4gdGhlIG90aGVyIGlzIHNwbGl0IGludG8gMS8yIGFuZCAxLzQuICBJdCBkb2Vzbid0IHJlYWxs
eSBtYXR0ZXINCj4gPiA+IHRob3VnaDsgdGhlIGVuZCByZXN1bHQgaXMgdGhlIHNhbWUuICBXZSdy
ZSBkZXNjcmliaW5nIHRoZQ0KPiA+ID4gcHJvZ3JhbW1pbmcgaW50ZXJmYWNlLCBub3QgYXJ0d29y
ayBjaG9pY2VzIGluIHRoZSBtYW51YWwuDQo+ID4gPg0KPiA+ID4gLVNjb3R0DQo+ID4gPg0KPiA+
IElmIHRoZSBkZXZpY2UgdHJlZSBuZWVkcyB0byBiZSBtb2RpZmllZCwgY291bGQgeW91IGdpdmUg
bWUgeW91cg0KPiBzdWdnZXN0aW9ucz8NCj4gDQo+IE15IHN1Z2dlc3Rpb24gaXMgdG8gaGF2ZSBv
bmx5IG9uZSBvdXRwdXQgcGVyIFBMTCBub2RlLiAgVGhlIE1VWCBub2RlDQo+IHdvdWxkIGhhdmUg
b25lIGlucHV0IHBlciBQTEwuICBEaXZpZGVycyB3b3VsZCBiZSBoYW5kbGVkIGludGVybmFsbHkg
dG8NCj4gdGhlIE1VWCBkcml2ZXIuDQo+IA0KPiAtU2NvdHQNCj4gDQpJIGRvbid0IHRoaW5rIHlv
dXIgc3VnZ2VzdGlvbiBpcyBjb25zdHJ1Y3RpdmUuDQpZb3VyIHN1Z2dlc3Rpb24gaXMgb24gdGhl
IHByZW1pc2Ugb2YgdGhhdCB0aGUgImRpdmlkZXIiIGlzIHBhcnQgb2YgTVVYLA0KQW5kIEkgdGhp
bmsgaXQgc2hvdWxkIGJlIHBhcnQgb2YgUExMLg0KTVVYIGNhbid0IENSRUFURSBjbG9jayB3aGlj
aCBQTEwgY2FuLiBTbyBteSB0aG91Z2h0IGlzIG1vcmUgcmVhc29uYWJsZS4NCklmIHRoZSBkZXZp
Y2UgdHJlZSBkb2N1bWVudHMgbGlrZSB3aGF0IHlvdSBzYWlkLCBpdCB3b3VsZCBoYXZlIGZldyBo
ZWxwIGZvciBkcml2ZXIuDQpUaGUgcmVhc29uIGlzIG9idmlvdXMgdGhhdCB0aGUgZHJpdmVyIGlz
IHN0aWxsIGdvaW5nIHRvIGRlYWwgd2l0aCB0aGUgImRpdmlkZXIiIA0KZGV0YWlsIHdoaWNoIHZh
cmllcyBmcm9tIHBsYXRmb3JtIHRvIHBsYXRmb3JtLg0KSSB3aWxsIGRvY3VtZW50IGFzIGl0IHdh
cyB1bmxlc3MgeW91IHByb3ZlIHlvdXIgc3VnZ2VzdGlvbi4NCg0KVGhhbmtzLA0KWXVhbnRpYW4N
Cg==

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-18  2:06                         ` Tang Yuantian-B29983
@ 2013-10-18 16:31                           ` Scott Wood
  2013-10-21  2:55                             ` Tang Yuantian-B29983
  0 siblings, 1 reply; 25+ messages in thread
From: Scott Wood @ 2013-10-18 16:31 UTC (permalink / raw)
  To: Tang Yuantian-B29983
  Cc: Mark Rutland, Wood Scott-B07421, linuxppc-dev,
	Li Yang-Leo-R58472, devicetree

On Thu, 2013-10-17 at 21:06 -0500, Tang Yuantian-B29983 wrote:
> > On Wed, 2013-10-16 at 21:08 -0500, Tang Yuantian-B29983 wrote:
> > > > > > That shows the dividers as being somewhere in between the PLL
> > > > > > and the
> > > > MUX.
> > > > > > The MUX is where the divider is selected.  There's nothing in
> > > > > > the PLL's programming interface that relates to the dividers.
> > > > > > As such it's simpler to model it as being part of the MUX.
> > > > > >
> > > > > > -Scott
> > > > > >
> > > > > I don't know whether it is simpler, but "modeling divider as being
> > > > > part
> > > > of the MUX"
> > > > > is your guess, right?
> > > > > If the "divider" is included in MUX, the MUX would not be called
> > "MUX".
> > > >
> > > > It's still selecting from multiple PLLs.
> > > >
> > > > > I don't know whether "divider" module exists or not. If it exists,
> > > > > it should be part of PLL or between PLL and MUX. wherever it was,
> > > > > the
> > > > device tree binding is appropriate.
> > > >
> > > > The device tree binding is unnecessarily complicated.
> > > >
> > > > > The P3041RM shows exactly each PLL has 2 outputs which definitely
> > > > > have
> > > > no "divider" at all.
> > > >
> > > > That diagram is a bit weird -- one of the outputs is used as is, and
> > > > the other is split into 1/2 and 1/4.  It doesn't really matter
> > > > though; the end result is the same.  We're describing the
> > > > programming interface, not artwork choices in the manual.
> > > >
> > > > -Scott
> > > >
> > > If the device tree needs to be modified, could you give me your
> > suggestions?
> > 
> > My suggestion is to have only one output per PLL node.  The MUX node
> > would have one input per PLL.  Dividers would be handled internally to
> > the MUX driver.
> > 
> > -Scott
> > 
> I don't think your suggestion is constructive.

Hmm?

> Your suggestion is on the premise of that the "divider" is part of MUX,
> And I think it should be part of PLL.
> MUX can't CREATE clock which PLL can. So my thought is more reasonable.
> If the device tree documents like what you said, it would have few help for driver.
> The reason is obvious that the driver is still going to deal with the "divider" 
> detail which varies from platform to platform.
> I will document as it was unless you prove your suggestion.

I can't follow this.  My point is that my suggestion better matches the
programming model, and is simpler.

-Scott

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-18 16:31                           ` Scott Wood
@ 2013-10-21  2:55                             ` Tang Yuantian-B29983
  2013-10-29  3:26                               ` Scott Wood
  0 siblings, 1 reply; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-21  2:55 UTC (permalink / raw)
  To: Wood Scott-B07421
  Cc: Mark Rutland, devicetree, linuxppc-dev, Li Yang-Leo-R58472

PiA+ID4gPiA+DQo+ID4gPiA+ID4gSXQncyBzdGlsbCBzZWxlY3RpbmcgZnJvbSBtdWx0aXBsZSBQ
TExzLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBJIGRvbid0IGtub3cgd2hldGhlciAiZGl2aWRl
ciIgbW9kdWxlIGV4aXN0cyBvciBub3QuIElmIGl0DQo+ID4gPiA+ID4gPiBleGlzdHMsIGl0IHNo
b3VsZCBiZSBwYXJ0IG9mIFBMTCBvciBiZXR3ZWVuIFBMTCBhbmQgTVVYLg0KPiA+ID4gPiA+ID4g
d2hlcmV2ZXIgaXQgd2FzLCB0aGUNCj4gPiA+ID4gPiBkZXZpY2UgdHJlZSBiaW5kaW5nIGlzIGFw
cHJvcHJpYXRlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhlIGRldmljZSB0cmVlIGJpbmRpbmcg
aXMgdW5uZWNlc3NhcmlseSBjb21wbGljYXRlZC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gVGhl
IFAzMDQxUk0gc2hvd3MgZXhhY3RseSBlYWNoIFBMTCBoYXMgMiBvdXRwdXRzIHdoaWNoDQo+ID4g
PiA+ID4gPiBkZWZpbml0ZWx5IGhhdmUNCj4gPiA+ID4gPiBubyAiZGl2aWRlciIgYXQgYWxsLg0K
PiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhhdCBkaWFncmFtIGlzIGEgYml0IHdlaXJkIC0tIG9uZSBv
ZiB0aGUgb3V0cHV0cyBpcyB1c2VkIGFzIGlzLA0KPiA+ID4gPiA+IGFuZCB0aGUgb3RoZXIgaXMg
c3BsaXQgaW50byAxLzIgYW5kIDEvNC4gIEl0IGRvZXNuJ3QgcmVhbGx5DQo+ID4gPiA+ID4gbWF0
dGVyIHRob3VnaDsgdGhlIGVuZCByZXN1bHQgaXMgdGhlIHNhbWUuICBXZSdyZSBkZXNjcmliaW5n
IHRoZQ0KPiA+ID4gPiA+IHByb2dyYW1taW5nIGludGVyZmFjZSwgbm90IGFydHdvcmsgY2hvaWNl
cyBpbiB0aGUgbWFudWFsLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLVNjb3R0DQo+ID4gPiA+ID4N
Cj4gPiA+ID4gSWYgdGhlIGRldmljZSB0cmVlIG5lZWRzIHRvIGJlIG1vZGlmaWVkLCBjb3VsZCB5
b3UgZ2l2ZSBtZSB5b3VyDQo+ID4gPiBzdWdnZXN0aW9ucz8NCj4gPiA+DQo+ID4gPiBNeSBzdWdn
ZXN0aW9uIGlzIHRvIGhhdmUgb25seSBvbmUgb3V0cHV0IHBlciBQTEwgbm9kZS4gIFRoZSBNVVgg
bm9kZQ0KPiA+ID4gd291bGQgaGF2ZSBvbmUgaW5wdXQgcGVyIFBMTC4gIERpdmlkZXJzIHdvdWxk
IGJlIGhhbmRsZWQgaW50ZXJuYWxseQ0KPiA+ID4gdG8gdGhlIE1VWCBkcml2ZXIuDQo+ID4gPg0K
PiA+ID4gLVNjb3R0DQo+ID4gPg0KPiA+IEkgZG9uJ3QgdGhpbmsgeW91ciBzdWdnZXN0aW9uIGlz
IGNvbnN0cnVjdGl2ZS4NCj4gDQo+IEhtbT8NCj4gDQo+ID4gWW91ciBzdWdnZXN0aW9uIGlzIG9u
IHRoZSBwcmVtaXNlIG9mIHRoYXQgdGhlICJkaXZpZGVyIiBpcyBwYXJ0IG9mDQo+ID4gTVVYLCBB
bmQgSSB0aGluayBpdCBzaG91bGQgYmUgcGFydCBvZiBQTEwuDQo+ID4gTVVYIGNhbid0IENSRUFU
RSBjbG9jayB3aGljaCBQTEwgY2FuLiBTbyBteSB0aG91Z2h0IGlzIG1vcmUgcmVhc29uYWJsZS4N
Cj4gPiBJZiB0aGUgZGV2aWNlIHRyZWUgZG9jdW1lbnRzIGxpa2Ugd2hhdCB5b3Ugc2FpZCwgaXQg
d291bGQgaGF2ZSBmZXcgaGVscA0KPiBmb3IgZHJpdmVyLg0KPiA+IFRoZSByZWFzb24gaXMgb2J2
aW91cyB0aGF0IHRoZSBkcml2ZXIgaXMgc3RpbGwgZ29pbmcgdG8gZGVhbCB3aXRoIHRoZQ0KPiAi
ZGl2aWRlciINCj4gPiBkZXRhaWwgd2hpY2ggdmFyaWVzIGZyb20gcGxhdGZvcm0gdG8gcGxhdGZv
cm0uDQo+ID4gSSB3aWxsIGRvY3VtZW50IGFzIGl0IHdhcyB1bmxlc3MgeW91IHByb3ZlIHlvdXIg
c3VnZ2VzdGlvbi4NCj4gDQo+IEkgY2FuJ3QgZm9sbG93IHRoaXMuICBNeSBwb2ludCBpcyB0aGF0
IG15IHN1Z2dlc3Rpb24gYmV0dGVyIG1hdGNoZXMgdGhlDQo+IHByb2dyYW1taW5nIG1vZGVsLCBh
bmQgaXMgc2ltcGxlci4NCj4gDQo+IC1TY290dA0KPiANCkkgZGlkbid0IHNlZSBob3cgeW91ciBz
dWdnZXN0aW9uIGlzIGEgYmV0dGVyIG1hdGNoaW5nLg0KDQogT1NDIC0tLS0+IFBMTDEgLS0tLT4g
bXV4IC0tLS0+IENQVQ0KICAgICAgfCAgICAgICAgICAgfA0KICAgICAgfC0tPiBQTEwyIC0tfCAN
CiAgICAgICAgLi4uLi4uLi4NCkFzIHlvdXIgc3VnZ2VzdGlvbiwgdGhlIGNsb2NrIHRyZWUgbG9v
a3MgbGlrZSB0aGUgYWJvdmUuDQpJbiB0aGlzIGNhc2UsIHRoZSBNVVggZHJpdmVyIHdpbGwgbm90
IGtub3cgdGhlIGRpdmlkZXINCmRldGFpbHMoLzIsIC80LCBvciAvMykuDQpJIHRoaW5rIHRoZSBN
VVggc2hvdWxkIGFjdCBsaWtlICJzd2l0Y2giIHdoaWNoIGNob29zZSBvbmUNCm9mIHRoZSBpbnB1
dCBjbG9jayBhcyBhIG91dHB1dCBjbG9jay4gSXQgc2hvdWxkIG5vdCBDUkVBVEUNCmNsb2NrKGxp
a2UgUExMMS8yLCBQTEwxLzQpLg0KVGhlIHB1cnBvc2Ugb2YgY2xvY2sgZHJpdmVyIGlzIHRvIGVz
dGFibGlzaCB0aGUgY2xvY2sgdHJlZS4NClRoZSBjbG9jayB0cmVlIHdpbGwgbm90IGJlIGVzdGFi
bGlzaGVkIGluIHlvdXIgc3VnZ2VzdGlvbg0KYmVjYXVzZSB0aGUgZGl2aWRlciBpcyBtaXNzaW5n
LCB3ZSBkb24ndCBrbm93IHdoZXJlIFBMTC8yIGNvbWVzIGZyb20uDQoNCklmIHlvdSByZWFsbHkg
bGlrZSB5b3VyIHByb3Bvc2FsLCBpdCBzaG91bGQgYmUgY2hhbmdlZCB0byB0aGlzOg0KDQpPU0Mg
LS0tLS0tPiBQTEwxIC0tLS0tPiBQTEwxIC8xIC0tLS0tLS0tLT4gTVVYIC0tLS0tLS0+Q1BVDQog
ICAgIHwgICAgICAgICAgICB8X19fPiBQTEwxIC8yIF9fX19fX198DQogICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8DQogICAgIHxfX19fPiBQTEwyIC0tLS0tPiBQTEwyIC8y
IC0tLS0tLS18DQogICAgICAgICAgICAgICAgICB8X19fPiBQTEwyLyA0IF9fX19fX198DQoNCihp
dCBpcyBwb3NzaWJsZSB0aGF0IFBMTHMgaGF2ZSBkaWZmZXJlbnQgZGl2aWRlcikuDQoNClJlZ2Fy
ZHMsDQpZdWFudGlhbg0KDQo=

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-12  3:40       ` Tang Yuantian-B29983
@ 2013-10-21  9:14         ` Mark Rutland
  2013-10-22  3:19           ` Tang Yuantian-B29983
  0 siblings, 1 reply; 25+ messages in thread
From: Mark Rutland @ 2013-10-21  9:14 UTC (permalink / raw)
  To: Tang Yuantian-B29983; +Cc: devicetree, linuxppc-dev, Li Yang-Leo-R58472

On Sat, Oct 12, 2013 at 04:40:06AM +0100, Tang Yuantian-B29983 wrote:
> Thanks for your review.
> 
> >
> > >
> > > > > +- reg: Offset and length of the clock register set
> > > > > +- clock-frequency: Indicates input clock frequency of clock block.
> > > > > +       Will be set by u-boot
> > > >
> > > > Why does the fact this is set by u-boot matter to the binding?
> > > >
> > > OK, I will remove it.
> > >
> > > > > +
> > > > > +Recommended properties:
> > > > > +- #ddress-cells: Specifies the number of cells used to represent
> > > > > +       physical base addresses.  Must be present if the device has
> > > > > +       sub-nodes and set to 1 if present
> > > >
> > > > Typo: #address-cells
> > > >
> > > > In the example it looks like the address cells of child nodes are
> > > > offsets within the unit, rather than absolute physical addresses.
> > > > Could the code not treat them as absolute addresses? Then we'd only
> > > > need to document that #address-cells, #size-cells and ranges must be
> > > > present and have values suitable for mapping child nodes into the
> > > > address space of the parent.
> > > >
> > > OK, thanks.
> > >
> > > > > +- #size-cells: Specifies the number of cells used to represent
> > > > > +       the size of an address. Must be present if the device has
> > > > > +       sub-nodes and set to 1 if present
> > > >
> > > > It's not really the size of an address, it's the size of a region
> > > > identified by a reg entry.
> > > >
> > > > I think this can be simplified by my suggestion above.
> > > >
> > > Yes
> >
> > Aah, I see that this is already in use, so it's a bit late to change
> > this...
> >
> I will modify the driver anyway once the binding gets done.

Won't this break existing users DTBs?

> 
> > >
> > > > > +
> > > > > +2. Clock Provider/Consumer Binding
> > > > > +
> > > > > +Most of the binding are from the common clock binding[1].
> > > > > + [1] Documentation/devicetree/bindings/clock/clock-bindings.txt
> > > > > +
> > > > > +Required properties:
> > > > > +- compatible : Should include one or more of the following:
> >
> > I didn't spot this earlier, but why "one or more"? are the 2.0 variants
> > backwards compatible with the 1.0 variants.
> >
> One or more for fixed-clock which is compatible with qoriq-sysclk-*.

This may be somewhat pedantic, but an element from the list plus fixed-clock
isn't one or more of the following. It's one of the following plus fixed-clock.

It may be better to explicitly state that the compatible list must include one
of the following, plus fixed-clock.

> 
> > > > > +       - "fsl,qoriq-core-pll-[1,2].x": Indicates a core PLL clock
> > > > device
> > > > > +       - "fsl,qoriq-core-mux-[1,2].x": Indicates a core
> > > > > + multiplexer
> > > > clock
> > > > > +               device; divided from the core PLL clock
> > > >
> > > > As above, I'd prefer a complete list of the basic strings we expect.
> > > >
> > > There is no list here, just *-mux-1.x and *-mux-2.x What kind of list
> > > do you prefer?
> >
> > Something like:
> >
> > - compatible: Should include at least one of:
> >     * "fsl,qoriq-core-pll-1.0" for core PLL clocks (v1.0)
> >     * "fsl,qoriq-core-pll-2.0" for core PLL clocks (v2.0)
> >     * "fsl,qoriq-core-mux-1.0" for core mux clocks (v1.0)
> >     * "fsl,qoriq-core-mux-2.0" for core mux clocks (v2.0)
> >   The *-2.0 variants are backwards compatible with the *-1.0 variants,
> >   so for compatiblity a *-1.0 variant string should be in the list.
> >
> See the comment by Scott wood.

OK. The note at the bottom cna go, but I'd still prefer an explicit list with a
description of each entry.

> 
> > >
> > > > > +       - "fixed-clock": From common clock binding; indicates
> > > > > + output
> > > > clock
> > > > > +               of oscillator
> > > > > +       - "fsl,qoriq-sysclk-[1,2].x": Indicates input system clock
> > > >
> > > > Here too.
> > > >
> > > > > +- #clock-cells: From common clock binding; indicates the number of
> > > > > +       output clock. 0 is for one output clock; 1 for more than
> > > > > +one clock
> > > >
> > > > If a clock source has multiple outputs, what those outputs are and
> > > > what values in clock-cells they correspond to should be described
> > here.
> > > >
> > > There is no way to describe the values of multiple outputs here.
> > > This property is the type of BOOL. See the clock-bindings.txt.
> >
> > Sorry? #clock-cells is most definitely _not_ a bool:
> >
> ACTs like bool.

No it does not act like boo, a nd only appears to if you do not consider the
general casel. In general #clock-cells could be any arbitrarily large number,
not just <0> or <1>. It represents the number of cells in a clock-specifier,
not simply that there is a clock-specifier.

It's perfectly possible to have #clock-cells = <2>, or more. It' perfectly
possible to have a DT like the below (with some properties omitted for
brevity):

  clk_2: some-clock {
          compatible = "vendor,banked-clock";
          #clock-cells = <2>;
  };

  clk_5: other-clock {
          #clock-cells = <5>;
  };

  clk_0: another-clock {
          #clock-cells = <0>;
  };

  consumer {
          clocks = <&clk5 0 17 53 91 0>,
                   <&clk_0>,
                   <&clk2 3 17>;
  };

In all of these cases, the cells in the clock-specifier must mean something.
They uniquely identify a clock output of the clock provider, and there must be
a way of mapping them to a particular clock.

The meaning of the cells in the clock specifier should be specified. Consider
"vendor,banked-clock". It's binding could look something like:

  - compatible: should contain
      * "vendor,banked-clock" for v1 banked clock designs
  - #clock-cells: Should be <2>
      * The first cell selects the internal clock bank, indexed [1,3]
      * The second cell selects a clock within the bank, indexed [0,25]

A clock might have a set of named outputs:

  - #clock-cells: should be <1>, a single cell which may be one of the following:
      * 0 - REFCLKOUT
      * 1 - PLLCLKOUT
      * 5 - LOWPWRCLKOUT

A clock provider might have a contiguous (or discontiguous) set of clock indexes:

  - #clock-cells: should be <1>. The clock index as per the documentation, in the range [0,15].

I hope this clears up the confusion on what I am asking for.

> 
> > 17: #clock-cells:      Number of cells in a clock specifier; Typically 0
> > for nodes
> > 18:                    with a single clock output and 1 for nodes with
> > multiple
> > 19:                    clock outputs.
> >
> > And neither are the clock-specifiers encoded with those cells. Consider:
> >
> >   pll0: pll0@800 {
> >           #clock-cells = <1>;
> >           reg = <0x800 0x4>;
> >           compatible = "fsl,qoriq-core-pll-1.0";
> >           clocks = <&sysclk>;
> >           clock-output-names = "pll0", "pll0-div2";
> >   };
> >
> > Here the value of the cells in a clock-specifier seem to be:
> > 0: pll0
> > 1: pll0-div2
> >
> > So in a consumer, the valid values of the cells in a clock-specifier
> > are:
> >
> >   consumer: device {
> >           compatible = "vendor,some-device";
> >           clocks = <&pll0 0>, /* pll0 */
> >                    <&pll0 1>; /* pll0-div2 */
> >   };
> >
> > There must be some meaning assigned to the values of the cells in the
> > clock-specifier (e.g. linear index of the clock output in the hardware).
> > It would be good to describe this, other clock bindings do.
> >
> Sorry, I still get what you mean. There is no INDEX at all.
> 0 is for one output, 1 for multiple output. Just like that.
> What the " other clock bindings" did you refer to?

Take a look at Documentation/devicetree/bindings/clock/imx23-clock.txt, which
specifies each clock output by name. You can also take a look at the tegra
clock bindings, which define the set of clocks by reference to a device tree
header file.

> 
> > >
> > > > > +
> > > > > +Recommended properties:
> > > > > +- clocks: Should be the phandle of input parent clock
> > > > > +- clock-names: From common clock binding, indicates the clock
> > > > > +name
> > > >
> > > > That description's a bit opaque.
> > > >
> > > > What's the name of the clock input on these units? That's what
> > > > clock- names should contain, and that should be documented.
> > > >
> > > Is it necessary to document these names since they are totally used by
> > > clock provider and clock consumer has no idea about them?
> >
> > I'm not sure I follow -- clocks and clock-names are used by consumers.
> > They define which clocks are inputs to a consumer, and the names of the
> > clock inputs on the consumer:
> >
> >   consumer@0xffff0000 {
> >           reg = <0xffff0000 0x1000>;
> >           compatible = "vendor,some-consumer";
> >           clocks = <&pl011 0>,
> >                    <&otherclock 43 22>,
> >                    <&pl011 1>;
> >           clock-names = "apb_pclk",
> >                         "pixel_clk",
> >                         "scanout_clk";
> >   };
> >
> > Here the set of clock-names would be defined in the binding of the
> > consumer, based on the clock input names in the IP documentation -- they
> > tell the consumer which clock inputs on the consumer the clocks described
> > in clocks are wired in to, and describe nothing about output of the
> > provider. Using clock-names allows the set of clocks on an IP to change
> > over revisions and for some clock inputs to be optional.
> >
> OK, I get it. Will name the clock-names better, and add it if missed.
> Thanks,

Cheers.

[...]

> > > > > +               #address-cells = <1>;
> > > > > +               #size-cells = <1>;
> > > > > +
> > > > > +               sysclk: sysclk {
> > > > > +                       #clock-cells = <0>;
> > > > > +                       compatible = "fsl,qoriq-sysclk-1.0",
> > > > > + "fixed-clock";
> > > >
> > > > We didn't mention in the binding that "fsl,qoriq-sysclk-1.0" was
> > > > compatible with "fixed-clock" and should have "fixed-clock" in the
> > > > compatible list...
> > > >
> > > OK, will fix it.
> >
> > Cheers. Also, doesn't a fixed-clock require a clock-frequency?
> >
> Yes, it should be. But we got the clock-frequency from parent node because
> There is a clock-frequency already there before this patch.

OK. Should we not place it there for future? We're not compatible with
fixed-clock if we don't fulfil the minimum requirements of the fixed-clock
binding...

> 
> > >
> > > > > +                       clock-output-names = "sysclk";
> > > > > +               }
> > > > > +
> > > > > +               pll0: pll0@800 {
> > > > > +                       #clock-cells = <1>;
> > > > > +                       reg = <0x800 0x4>;
> > > > > +                       compatible = "fsl,qoriq-core-pll-1.0";
> > > > > +                       clocks = <&sysclk>;
> > > > > +                       clock-output-names = "pll0", "pll0-div2";
> > > > > +               };
> > > > > +
> > > > > +               pll1: pll1@820 {
> > > > > +                       #clock-cells = <1>;
> > > > > +                       reg = <0x820 0x4>;
> > > > > +                       compatible = "fsl,qoriq-core-pll-1.0";
> > > > > +                       clocks = <&sysclk>;
> > > > > +                       clock-output-names = "pll1", "pll1-div2";
> > > > > +               };
> > > > > +
> > > > > +               mux0: mux0@0 {
> > > > > +                       #clock-cells = <0>;
> > > > > +                       reg = <0x0 0x4>;
> > > > > +                       compatible = "fsl,qoriq-core-mux-1.0";
> > > > > +                       clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>,
> > > > <&pll1 1>;
> > > > > +                       clock-names = "pll0_0", "pll0_1",
> > > > > + "pll1_0",
> > > > "pll1_1";
> > > > > +                       clock-output-names = "cmux0";
> > > > > +               };
> > > > > +
> > > > > +               mux1: mux1@20 {
> > > > > +                       #clock-cells = <0>;
> > > > > +                       reg = <0x20 0x4>;
> > > > > +                       compatible = "fsl,qoriq-core-mux-1.0";
> > > > > +                       clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>,
> > > > <&pll1 1>;
> > > > > +                       clock-names = "pll0_0", "pll0_1",
> > > > > + "pll1_0",
> > > > "pll1_1";
> >
> > I didn't spot this last time, but the clock-names here seem to be the
> > names of the outputs from the provider, rather than the input names of
> > the consumer. This goes against the intended purpose of clock-names.
> >
> I am confused here with provider/consumer because some nodes can both be consumer and provider.
> The clock-names are corresponding to clocks one by one, what's wrong with it?

We have clock-names for a consumer's names of its inputs, and
clock-output-names for a provider's names of it's outputs.

Consider a PLL device which takes a clock input (REFCLK) and outputs a higher
frequency clock (OUTCLK). The PLL's specification only talks in terms of REFCLK
and OUTCLK, but these are not the names of the clocks as they are output from
the original clock, or provided to the final consumer.

Consider a sequence of these PLLs plugged together. The OUTCLK of one feeds
into the REFCLK of the next:

fixed: fixed-clock {
        compatible = "fixed-clock";
        clock-frequency = <50>;
};

pll_0: pll {
        compatible = "vendor,pll";
        clocks = <&fixed>;
        clock-names = "refclk";
        clock-output-names = "outclk";
};

pll_1: another-pll {
        compatible = "vendor,pll";
        clocks = <&pll_0>;
        clock-names = "refclk";
        clock-output-names = "outclk";
};

consumer {
        compatible = "vendor,clock-consumer";
        clocks = <&pll_1>,
                 <&pll_0>;
        clock-names = "halfclk", "fullclk";
};

In each case, clock-names describes the clock inputs from the view of the PLL
they are input to, not from the provider they came from, or the consumer some
outputs are going to. Giving the inputs names in this way makes it possible to
describe situations where onlya subset of clock inputs are wired up -- we could
just have "fullclk" on the final consumer, with only pll_0 as an input, and the
driver could figure out what to do.

Does that help?

Thanks,
Mark.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-21  9:14         ` Mark Rutland
@ 2013-10-22  3:19           ` Tang Yuantian-B29983
  0 siblings, 0 replies; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-22  3:19 UTC (permalink / raw)
  To: Mark Rutland; +Cc: devicetree, linuxppc-dev, Li Yang-Leo-R58472

VGhhbmtzIGZvciB5b3VyIHJldmlldy4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K
PiBGcm9tOiBNYXJrIFJ1dGxhbmQgW21haWx0bzptYXJrLnJ1dGxhbmRAYXJtLmNvbV0NCj4gU2Vu
dDogMjAxM+W5tDEw5pyIMjHml6Ug5pif5pyf5LiAIDE3OjE1DQo+IFRvOiBUYW5nIFl1YW50aWFu
LUIyOTk4Mw0KPiBDYzogZ2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZzsgbGludXhwcGMtZGV2QGxp
c3RzLm96bGFicy5vcmc7DQo+IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBMaSBZYW5nLUxl
by1SNTg0NzINCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NV0gcG93ZXJwYy9tcGM4NXh4OiBVcGRh
dGUgdGhlIGNsb2NrIG5vZGVzIGluIGRldmljZQ0KPiB0cmVlDQo+IA0KPiBPbiBTYXQsIE9jdCAx
MiwgMjAxMyBhdCAwNDo0MDowNkFNICswMTAwLCBUYW5nIFl1YW50aWFuLUIyOTk4MyB3cm90ZToN
Cj4gPiBUaGFua3MgZm9yIHlvdXIgcmV2aWV3Lg0KPiA+DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4g
PiA+ID4gKy0gcmVnOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgY2xvY2sgcmVnaXN0ZXIgc2V0
DQo+ID4gPiA+ID4gPiArLSBjbG9jay1mcmVxdWVuY3k6IEluZGljYXRlcyBpbnB1dCBjbG9jayBm
cmVxdWVuY3kgb2YgY2xvY2sNCj4gYmxvY2suDQo+ID4gPiA+ID4gPiArICAgICAgIFdpbGwgYmUg
c2V0IGJ5IHUtYm9vdA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gV2h5IGRvZXMgdGhlIGZhY3QgdGhp
cyBpcyBzZXQgYnkgdS1ib290IG1hdHRlciB0byB0aGUgYmluZGluZz8NCj4gPiA+ID4gPg0KPiA+
ID4gPiBPSywgSSB3aWxsIHJlbW92ZSBpdC4NCj4gPiA+ID4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+
ID4gPiA+ICtSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzOg0KPiA+ID4gPiA+ID4gKy0gI2RkcmVzcy1j
ZWxsczogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgdXNlZCB0bw0KPiByZXByZXNlbnQN
Cj4gPiA+ID4gPiA+ICsgICAgICAgcGh5c2ljYWwgYmFzZSBhZGRyZXNzZXMuICBNdXN0IGJlIHBy
ZXNlbnQgaWYgdGhlIGRldmljZQ0KPiBoYXMNCj4gPiA+ID4gPiA+ICsgICAgICAgc3ViLW5vZGVz
IGFuZCBzZXQgdG8gMSBpZiBwcmVzZW50DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUeXBvOiAjYWRk
cmVzcy1jZWxscw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSW4gdGhlIGV4YW1wbGUgaXQgbG9va3Mg
bGlrZSB0aGUgYWRkcmVzcyBjZWxscyBvZiBjaGlsZCBub2Rlcw0KPiA+ID4gPiA+IGFyZSBvZmZz
ZXRzIHdpdGhpbiB0aGUgdW5pdCwgcmF0aGVyIHRoYW4gYWJzb2x1dGUgcGh5c2ljYWwNCj4gYWRk
cmVzc2VzLg0KPiA+ID4gPiA+IENvdWxkIHRoZSBjb2RlIG5vdCB0cmVhdCB0aGVtIGFzIGFic29s
dXRlIGFkZHJlc3Nlcz8gVGhlbiB3ZSdkDQo+ID4gPiA+ID4gb25seSBuZWVkIHRvIGRvY3VtZW50
IHRoYXQgI2FkZHJlc3MtY2VsbHMsICNzaXplLWNlbGxzIGFuZA0KPiA+ID4gPiA+IHJhbmdlcyBt
dXN0IGJlIHByZXNlbnQgYW5kIGhhdmUgdmFsdWVzIHN1aXRhYmxlIGZvciBtYXBwaW5nDQo+ID4g
PiA+ID4gY2hpbGQgbm9kZXMgaW50byB0aGUgYWRkcmVzcyBzcGFjZSBvZiB0aGUgcGFyZW50Lg0K
PiA+ID4gPiA+DQo+ID4gPiA+IE9LLCB0aGFua3MuDQo+ID4gPiA+DQo+ID4gPiA+ID4gPiArLSAj
c2l6ZS1jZWxsczogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgdXNlZCB0byByZXByZXNl
bnQNCj4gPiA+ID4gPiA+ICsgICAgICAgdGhlIHNpemUgb2YgYW4gYWRkcmVzcy4gTXVzdCBiZSBw
cmVzZW50IGlmIHRoZSBkZXZpY2UNCj4gaGFzDQo+ID4gPiA+ID4gPiArICAgICAgIHN1Yi1ub2Rl
cyBhbmQgc2V0IHRvIDEgaWYgcHJlc2VudA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSXQncyBub3Qg
cmVhbGx5IHRoZSBzaXplIG9mIGFuIGFkZHJlc3MsIGl0J3MgdGhlIHNpemUgb2YgYQ0KPiA+ID4g
PiA+IHJlZ2lvbiBpZGVudGlmaWVkIGJ5IGEgcmVnIGVudHJ5Lg0KPiA+ID4gPiA+DQo+ID4gPiA+
ID4gSSB0aGluayB0aGlzIGNhbiBiZSBzaW1wbGlmaWVkIGJ5IG15IHN1Z2dlc3Rpb24gYWJvdmUu
DQo+ID4gPiA+ID4NCj4gPiA+ID4gWWVzDQo+ID4gPg0KPiA+ID4gQWFoLCBJIHNlZSB0aGF0IHRo
aXMgaXMgYWxyZWFkeSBpbiB1c2UsIHNvIGl0J3MgYSBiaXQgbGF0ZSB0byBjaGFuZ2UNCj4gPiA+
IHRoaXMuLi4NCj4gPiA+DQo+ID4gSSB3aWxsIG1vZGlmeSB0aGUgZHJpdmVyIGFueXdheSBvbmNl
IHRoZSBiaW5kaW5nIGdldHMgZG9uZS4NCj4gDQo+IFdvbid0IHRoaXMgYnJlYWsgZXhpc3Rpbmcg
dXNlcnMgRFRCcz8NCj4gDQpUaGlzIGJpbmRpbmcgYW5kIERUIHNob3VsZCBiZSBtZXJnZWQgZmly
c3QuIA0KRm9yIHNvbWUgcmVhc29ucywgdGhlIGRyaXZlciBoYXMgYWxyZWFkeSBiZWVuIG1lcmdl
ZC4NCg0KPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArMi4gQ2xvY2sg
UHJvdmlkZXIvQ29uc3VtZXIgQmluZGluZw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK01v
c3Qgb2YgdGhlIGJpbmRpbmcgYXJlIGZyb20gdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLg0K
PiA+ID4gPiA+ID4gKyBbMV0NCj4gPiA+ID4gPiA+ICtEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+
ID4gPiArUmVxdWlyZWQgcHJvcGVydGllczoNCj4gPiA+ID4gPiA+ICstIGNvbXBhdGlibGUgOiBT
aG91bGQgaW5jbHVkZSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nOg0KPiA+ID4NCj4gPiA+
IEkgZGlkbid0IHNwb3QgdGhpcyBlYXJsaWVyLCBidXQgd2h5ICJvbmUgb3IgbW9yZSI/IGFyZSB0
aGUgMi4wDQo+ID4gPiB2YXJpYW50cyBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIHRoZSAxLjAg
dmFyaWFudHMuDQo+ID4gPg0KPiA+IE9uZSBvciBtb3JlIGZvciBmaXhlZC1jbG9jayB3aGljaCBp
cyBjb21wYXRpYmxlIHdpdGggcW9yaXEtc3lzY2xrLSouDQo+IA0KPiBUaGlzIG1heSBiZSBzb21l
d2hhdCBwZWRhbnRpYywgYnV0IGFuIGVsZW1lbnQgZnJvbSB0aGUgbGlzdCBwbHVzIGZpeGVkLQ0K
PiBjbG9jayBpc24ndCBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nLiBJdCdzIG9uZSBvZiB0
aGUgZm9sbG93aW5nIHBsdXMNCj4gZml4ZWQtY2xvY2suDQo+IA0KPiBJdCBtYXkgYmUgYmV0dGVy
IHRvIGV4cGxpY2l0bHkgc3RhdGUgdGhhdCB0aGUgY29tcGF0aWJsZSBsaXN0IG11c3QNCj4gaW5j
bHVkZSBvbmUgb2YgdGhlIGZvbGxvd2luZywgcGx1cyBmaXhlZC1jbG9jay4NCj4gDQpTaW5jZSB0
aGUgcW9yaXEtc3lzY2xrLSogaXMgbm90IDEwMCUgY29tcGF0aWJsZSB3aXRoIGZpeGVkLWNsb2Nr
KG5vIGNsb2NrLWZyZXF1ZW5jeSBwcm9wZXJ0eSksDQpJIHdpbGwgcmVtb3ZlIGZpeGVkLWNsb2Nr
Lg0KDQo+ID4NCj4gPiA+ID4gPiA+ICsgICAgICAgLSAiZnNsLHFvcmlxLWNvcmUtcGxsLVsxLDJd
LngiOiBJbmRpY2F0ZXMgYSBjb3JlIFBMTA0KPiA+ID4gPiA+ID4gKyBjbG9jaw0KPiA+ID4gPiA+
IGRldmljZQ0KPiA+ID4gPiA+ID4gKyAgICAgICAtICJmc2wscW9yaXEtY29yZS1tdXgtWzEsMl0u
eCI6IEluZGljYXRlcyBhIGNvcmUNCj4gPiA+ID4gPiA+ICsgbXVsdGlwbGV4ZXINCj4gPiA+ID4g
PiBjbG9jaw0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGRldmljZTsgZGl2aWRlZCBmcm9t
IHRoZSBjb3JlIFBMTCBjbG9jaw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQXMgYWJvdmUsIEknZCBw
cmVmZXIgYSBjb21wbGV0ZSBsaXN0IG9mIHRoZSBiYXNpYyBzdHJpbmdzIHdlDQo+IGV4cGVjdC4N
Cj4gPiA+ID4gPg0KPiA+ID4gPiBUaGVyZSBpcyBubyBsaXN0IGhlcmUsIGp1c3QgKi1tdXgtMS54
IGFuZCAqLW11eC0yLnggV2hhdCBraW5kIG9mDQo+ID4gPiA+IGxpc3QgZG8geW91IHByZWZlcj8N
Cj4gPiA+DQo+ID4gPiBTb21ldGhpbmcgbGlrZToNCj4gPiA+DQo+ID4gPiAtIGNvbXBhdGlibGU6
IFNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBvZjoNCj4gPiA+ICAgICAqICJmc2wscW9yaXEt
Y29yZS1wbGwtMS4wIiBmb3IgY29yZSBQTEwgY2xvY2tzICh2MS4wKQ0KPiA+ID4gICAgICogImZz
bCxxb3JpcS1jb3JlLXBsbC0yLjAiIGZvciBjb3JlIFBMTCBjbG9ja3MgKHYyLjApDQo+ID4gPiAg
ICAgKiAiZnNsLHFvcmlxLWNvcmUtbXV4LTEuMCIgZm9yIGNvcmUgbXV4IGNsb2NrcyAodjEuMCkN
Cj4gPiA+ICAgICAqICJmc2wscW9yaXEtY29yZS1tdXgtMi4wIiBmb3IgY29yZSBtdXggY2xvY2tz
ICh2Mi4wKQ0KPiA+ID4gICBUaGUgKi0yLjAgdmFyaWFudHMgYXJlIGJhY2t3YXJkcyBjb21wYXRp
YmxlIHdpdGggdGhlICotMS4wIHZhcmlhbnRzLA0KPiA+ID4gICBzbyBmb3IgY29tcGF0aWJsaXR5
IGEgKi0xLjAgdmFyaWFudCBzdHJpbmcgc2hvdWxkIGJlIGluIHRoZSBsaXN0Lg0KPiA+ID4NCj4g
PiBTZWUgdGhlIGNvbW1lbnQgYnkgU2NvdHQgd29vZC4NCj4gDQo+IE9LLiBUaGUgbm90ZSBhdCB0
aGUgYm90dG9tIGNuYSBnbywgYnV0IEknZCBzdGlsbCBwcmVmZXIgYW4gZXhwbGljaXQgbGlzdA0K
PiB3aXRoIGEgZGVzY3JpcHRpb24gb2YgZWFjaCBlbnRyeS4NCj4gDQpPSywgd2lsbCBnaXZlIGEg
bGlzdCBmb3IgdGhlbS4NCg0KPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4gPiArICAgICAgIC0gImZp
eGVkLWNsb2NrIjogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgaW5kaWNhdGVzDQo+ID4gPiA+
ID4gPiArIG91dHB1dA0KPiA+ID4gPiA+IGNsb2NrDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAg
ICAgb2Ygb3NjaWxsYXRvcg0KPiA+ID4gPiA+ID4gKyAgICAgICAtICJmc2wscW9yaXEtc3lzY2xr
LVsxLDJdLngiOiBJbmRpY2F0ZXMgaW5wdXQgc3lzdGVtDQo+ID4gPiA+ID4gPiArIGNsb2NrDQo+
ID4gPiA+ID4NCj4gPiA+ID4gPiBIZXJlIHRvby4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gKy0g
I2Nsb2NrLWNlbGxzOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBpbmRpY2F0ZXMgdGhlDQo+
IG51bWJlciBvZg0KPiA+ID4gPiA+ID4gKyAgICAgICBvdXRwdXQgY2xvY2suIDAgaXMgZm9yIG9u
ZSBvdXRwdXQgY2xvY2s7IDEgZm9yIG1vcmUNCj4gPiA+ID4gPiA+ICt0aGFuIG9uZSBjbG9jaw0K
PiA+ID4gPiA+DQo+ID4gPiA+ID4gSWYgYSBjbG9jayBzb3VyY2UgaGFzIG11bHRpcGxlIG91dHB1
dHMsIHdoYXQgdGhvc2Ugb3V0cHV0cyBhcmUNCj4gPiA+ID4gPiBhbmQgd2hhdCB2YWx1ZXMgaW4g
Y2xvY2stY2VsbHMgdGhleSBjb3JyZXNwb25kIHRvIHNob3VsZCBiZQ0KPiA+ID4gPiA+IGRlc2Ny
aWJlZA0KPiA+ID4gaGVyZS4NCj4gPiA+ID4gPg0KPiA+ID4gPiBUaGVyZSBpcyBubyB3YXkgdG8g
ZGVzY3JpYmUgdGhlIHZhbHVlcyBvZiBtdWx0aXBsZSBvdXRwdXRzIGhlcmUuDQo+ID4gPiA+IFRo
aXMgcHJvcGVydHkgaXMgdGhlIHR5cGUgb2YgQk9PTC4gU2VlIHRoZSBjbG9jay1iaW5kaW5ncy50
eHQuDQo+ID4gPg0KPiA+ID4gU29ycnk/ICNjbG9jay1jZWxscyBpcyBtb3N0IGRlZmluaXRlbHkg
X25vdF8gYSBib29sOg0KPiA+ID4NCj4gPiBBQ1RzIGxpa2UgYm9vbC4NCj4gDQo+IE5vIGl0IGRv
ZXMgbm90IGFjdCBsaWtlIGJvbywgYSBuZCBvbmx5IGFwcGVhcnMgdG8gaWYgeW91IGRvIG5vdCBj
b25zaWRlcg0KPiB0aGUgZ2VuZXJhbCBjYXNlbC4gSW4gZ2VuZXJhbCAjY2xvY2stY2VsbHMgY291
bGQgYmUgYW55IGFyYml0cmFyaWx5IGxhcmdlDQo+IG51bWJlciwgbm90IGp1c3QgPDA+IG9yIDwx
Pi4gSXQgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIGNlbGxzIGluIGENCj4gY2xvY2stc3BlY2lm
aWVyLCBub3Qgc2ltcGx5IHRoYXQgdGhlcmUgaXMgYSBjbG9jay1zcGVjaWZpZXIuDQo+IA0KPiBJ
dCdzIHBlcmZlY3RseSBwb3NzaWJsZSB0byBoYXZlICNjbG9jay1jZWxscyA9IDwyPiwgb3IgbW9y
ZS4gSXQnDQo+IHBlcmZlY3RseSBwb3NzaWJsZSB0byBoYXZlIGEgRFQgbGlrZSB0aGUgYmVsb3cg
KHdpdGggc29tZSBwcm9wZXJ0aWVzDQo+IG9taXR0ZWQgZm9yDQo+IGJyZXZpdHkpOg0KPiANCj4g
ICBjbGtfMjogc29tZS1jbG9jayB7DQo+ICAgICAgICAgICBjb21wYXRpYmxlID0gInZlbmRvcixi
YW5rZWQtY2xvY2siOw0KPiAgICAgICAgICAgI2Nsb2NrLWNlbGxzID0gPDI+Ow0KPiAgIH07DQo+
IA0KPiAgIGNsa181OiBvdGhlci1jbG9jayB7DQo+ICAgICAgICAgICAjY2xvY2stY2VsbHMgPSA8
NT47DQo+ICAgfTsNCj4gDQo+ICAgY2xrXzA6IGFub3RoZXItY2xvY2sgew0KPiAgICAgICAgICAg
I2Nsb2NrLWNlbGxzID0gPDA+Ow0KPiAgIH07DQo+IA0KPiAgIGNvbnN1bWVyIHsNCj4gICAgICAg
ICAgIGNsb2NrcyA9IDwmY2xrNSAwIDE3IDUzIDkxIDA+LA0KPiAgICAgICAgICAgICAgICAgICAg
PCZjbGtfMD4sDQo+ICAgICAgICAgICAgICAgICAgICA8JmNsazIgMyAxNz47DQo+ICAgfTsNCj4g
DQo+IEluIGFsbCBvZiB0aGVzZSBjYXNlcywgdGhlIGNlbGxzIGluIHRoZSBjbG9jay1zcGVjaWZp
ZXIgbXVzdCBtZWFuDQo+IHNvbWV0aGluZy4NCj4gVGhleSB1bmlxdWVseSBpZGVudGlmeSBhIGNs
b2NrIG91dHB1dCBvZiB0aGUgY2xvY2sgcHJvdmlkZXIsIGFuZCB0aGVyZQ0KPiBtdXN0IGJlIGEg
d2F5IG9mIG1hcHBpbmcgdGhlbSB0byBhIHBhcnRpY3VsYXIgY2xvY2suDQo+IA0KPiBUaGUgbWVh
bmluZyBvZiB0aGUgY2VsbHMgaW4gdGhlIGNsb2NrIHNwZWNpZmllciBzaG91bGQgYmUgc3BlY2lm
aWVkLg0KPiBDb25zaWRlciAidmVuZG9yLGJhbmtlZC1jbG9jayIuIEl0J3MgYmluZGluZyBjb3Vs
ZCBsb29rIHNvbWV0aGluZyBsaWtlOg0KPiANCj4gICAtIGNvbXBhdGlibGU6IHNob3VsZCBjb250
YWluDQo+ICAgICAgICogInZlbmRvcixiYW5rZWQtY2xvY2siIGZvciB2MSBiYW5rZWQgY2xvY2sg
ZGVzaWducw0KPiAgIC0gI2Nsb2NrLWNlbGxzOiBTaG91bGQgYmUgPDI+DQo+ICAgICAgICogVGhl
IGZpcnN0IGNlbGwgc2VsZWN0cyB0aGUgaW50ZXJuYWwgY2xvY2sgYmFuaywgaW5kZXhlZCBbMSwz
XQ0KPiAgICAgICAqIFRoZSBzZWNvbmQgY2VsbCBzZWxlY3RzIGEgY2xvY2sgd2l0aGluIHRoZSBi
YW5rLCBpbmRleGVkIFswLDI1XQ0KPiANCj4gQSBjbG9jayBtaWdodCBoYXZlIGEgc2V0IG9mIG5h
bWVkIG91dHB1dHM6DQo+IA0KPiAgIC0gI2Nsb2NrLWNlbGxzOiBzaG91bGQgYmUgPDE+LCBhIHNp
bmdsZSBjZWxsIHdoaWNoIG1heSBiZSBvbmUgb2YgdGhlDQo+IGZvbGxvd2luZzoNCj4gICAgICAg
KiAwIC0gUkVGQ0xLT1VUDQo+ICAgICAgICogMSAtIFBMTENMS09VVA0KPiAgICAgICAqIDUgLSBM
T1dQV1JDTEtPVVQNCj4gDQo+IEEgY2xvY2sgcHJvdmlkZXIgbWlnaHQgaGF2ZSBhIGNvbnRpZ3Vv
dXMgKG9yIGRpc2NvbnRpZ3VvdXMpIHNldCBvZiBjbG9jaw0KPiBpbmRleGVzOg0KPiANCj4gICAt
ICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDwxPi4gVGhlIGNsb2NrIGluZGV4IGFzIHBlciB0aGUg
ZG9jdW1lbnRhdGlvbiwNCj4gaW4gdGhlIHJhbmdlIFswLDE1XS4NCj4gDQo+IEkgaG9wZSB0aGlz
IGNsZWFycyB1cCB0aGUgY29uZnVzaW9uIG9uIHdoYXQgSSBhbSBhc2tpbmcgZm9yLg0KPiANCkkg
dW5kZXJzdGFuZCBub3cuIFRoZXJlIGNvdWxkIGJlIGEgY2xvY2stY2VsbHMgd2l0aCB0aGUgdmFs
dWUgb2YgbW9yZSB0aGFuIDEuDQpUaGF0IGlzIGp1c3QgcmFyZWx5IHVzZWQuDQpJbiBteSBjYXNl
LCAjY2xvY2stY2VsbHMgc2hvdWxkIGJlIDwxPiBhbmQgSSB3aWxsIGFkZCBhIGxpc3Qgb2YgdmFs
dWVzLg0KDQo+ID4NCj4gPiA+IDE3OiAjY2xvY2stY2VsbHM6ICAgICAgTnVtYmVyIG9mIGNlbGxz
IGluIGEgY2xvY2sgc3BlY2lmaWVyOw0KPiBUeXBpY2FsbHkgMA0KPiA+ID4gZm9yIG5vZGVzDQo+
ID4gPiAxODogICAgICAgICAgICAgICAgICAgIHdpdGggYSBzaW5nbGUgY2xvY2sgb3V0cHV0IGFu
ZCAxIGZvciBub2Rlcw0KPiB3aXRoDQo+ID4gPiBtdWx0aXBsZQ0KPiA+ID4gMTk6ICAgICAgICAg
ICAgICAgICAgICBjbG9jayBvdXRwdXRzLg0KPiA+ID4NCj4gPiA+IEFuZCBuZWl0aGVyIGFyZSB0
aGUgY2xvY2stc3BlY2lmaWVycyBlbmNvZGVkIHdpdGggdGhvc2UgY2VsbHMuDQo+IENvbnNpZGVy
Og0KPiA+ID4NCj4gPiA+ICAgcGxsMDogcGxsMEA4MDAgew0KPiA+ID4gICAgICAgICAgICNjbG9j
ay1jZWxscyA9IDwxPjsNCj4gPiA+ICAgICAgICAgICByZWcgPSA8MHg4MDAgMHg0PjsNCj4gPiA+
ICAgICAgICAgICBjb21wYXRpYmxlID0gImZzbCxxb3JpcS1jb3JlLXBsbC0xLjAiOw0KPiA+ID4g
ICAgICAgICAgIGNsb2NrcyA9IDwmc3lzY2xrPjsNCj4gPiA+ICAgICAgICAgICBjbG9jay1vdXRw
dXQtbmFtZXMgPSAicGxsMCIsICJwbGwwLWRpdjIiOw0KPiA+ID4gICB9Ow0KPiA+ID4NCj4gPiA+
IEhlcmUgdGhlIHZhbHVlIG9mIHRoZSBjZWxscyBpbiBhIGNsb2NrLXNwZWNpZmllciBzZWVtIHRv
IGJlOg0KPiA+ID4gMDogcGxsMA0KPiA+ID4gMTogcGxsMC1kaXYyDQo+ID4gPg0KPiA+ID4gU28g
aW4gYSBjb25zdW1lciwgdGhlIHZhbGlkIHZhbHVlcyBvZiB0aGUgY2VsbHMgaW4gYSBjbG9jay1z
cGVjaWZpZXINCj4gPiA+IGFyZToNCj4gPiA+DQo+ID4gPiAgIGNvbnN1bWVyOiBkZXZpY2Ugew0K
PiA+ID4gICAgICAgICAgIGNvbXBhdGlibGUgPSAidmVuZG9yLHNvbWUtZGV2aWNlIjsNCj4gPiA+
ICAgICAgICAgICBjbG9ja3MgPSA8JnBsbDAgMD4sIC8qIHBsbDAgKi8NCj4gPiA+ICAgICAgICAg
ICAgICAgICAgICA8JnBsbDAgMT47IC8qIHBsbDAtZGl2MiAqLw0KPiA+ID4gICB9Ow0KPiA+ID4N
Cj4gPiA+IFRoZXJlIG11c3QgYmUgc29tZSBtZWFuaW5nIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMg
b2YgdGhlIGNlbGxzIGluDQo+ID4gPiB0aGUgY2xvY2stc3BlY2lmaWVyIChlLmcuIGxpbmVhciBp
bmRleCBvZiB0aGUgY2xvY2sgb3V0cHV0IGluIHRoZQ0KPiBoYXJkd2FyZSkuDQo+ID4gPiBJdCB3
b3VsZCBiZSBnb29kIHRvIGRlc2NyaWJlIHRoaXMsIG90aGVyIGNsb2NrIGJpbmRpbmdzIGRvLg0K
PiA+ID4NCj4gPiBTb3JyeSwgSSBzdGlsbCBnZXQgd2hhdCB5b3UgbWVhbi4gVGhlcmUgaXMgbm8g
SU5ERVggYXQgYWxsLg0KPiA+IDAgaXMgZm9yIG9uZSBvdXRwdXQsIDEgZm9yIG11bHRpcGxlIG91
dHB1dC4gSnVzdCBsaWtlIHRoYXQuDQo+ID4gV2hhdCB0aGUgIiBvdGhlciBjbG9jayBiaW5kaW5n
cyIgZGlkIHlvdSByZWZlciB0bz8NCj4gDQo+IFRha2UgYSBsb29rIGF0IERvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXgyMy1jbG9jay50eHQsDQo+IHdoaWNoIHNwZWNp
ZmllcyBlYWNoIGNsb2NrIG91dHB1dCBieSBuYW1lLiBZb3UgY2FuIGFsc28gdGFrZSBhIGxvb2sg
YXQNCj4gdGhlIHRlZ3JhIGNsb2NrIGJpbmRpbmdzLCB3aGljaCBkZWZpbmUgdGhlIHNldCBvZiBj
bG9ja3MgYnkgcmVmZXJlbmNlIHRvDQo+IGEgZGV2aWNlIHRyZWUgaGVhZGVyIGZpbGUuDQo+IA0K
R290IGl0Lg0KDQo+ID4NCj4gPiA+ID4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtSZWNv
bW1lbmRlZCBwcm9wZXJ0aWVzOg0KPiA+ID4gPiA+ID4gKy0gY2xvY2tzOiBTaG91bGQgYmUgdGhl
IHBoYW5kbGUgb2YgaW5wdXQgcGFyZW50IGNsb2NrDQo+ID4gPiA+ID4gPiArLSBjbG9jay1uYW1l
czogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZywgaW5kaWNhdGVzIHRoZSBjbG9jaw0KPiA+ID4g
PiA+ID4gK25hbWUNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoYXQgZGVzY3JpcHRpb24ncyBhIGJp
dCBvcGFxdWUuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBXaGF0J3MgdGhlIG5hbWUgb2YgdGhlIGNs
b2NrIGlucHV0IG9uIHRoZXNlIHVuaXRzPyBUaGF0J3Mgd2hhdA0KPiA+ID4gPiA+IGNsb2NrLSBu
YW1lcyBzaG91bGQgY29udGFpbiwgYW5kIHRoYXQgc2hvdWxkIGJlIGRvY3VtZW50ZWQuDQo+ID4g
PiA+ID4NCj4gPiA+ID4gSXMgaXQgbmVjZXNzYXJ5IHRvIGRvY3VtZW50IHRoZXNlIG5hbWVzIHNp
bmNlIHRoZXkgYXJlIHRvdGFsbHkNCj4gPiA+ID4gdXNlZCBieSBjbG9jayBwcm92aWRlciBhbmQg
Y2xvY2sgY29uc3VtZXIgaGFzIG5vIGlkZWEgYWJvdXQgdGhlbT8NCj4gPiA+DQo+ID4gPiBJJ20g
bm90IHN1cmUgSSBmb2xsb3cgLS0gY2xvY2tzIGFuZCBjbG9jay1uYW1lcyBhcmUgdXNlZCBieSBj
b25zdW1lcnMuDQo+ID4gPiBUaGV5IGRlZmluZSB3aGljaCBjbG9ja3MgYXJlIGlucHV0cyB0byBh
IGNvbnN1bWVyLCBhbmQgdGhlIG5hbWVzIG9mDQo+ID4gPiB0aGUgY2xvY2sgaW5wdXRzIG9uIHRo
ZSBjb25zdW1lcjoNCj4gPiA+DQo+ID4gPiAgIGNvbnN1bWVyQDB4ZmZmZjAwMDAgew0KPiA+ID4g
ICAgICAgICAgIHJlZyA9IDwweGZmZmYwMDAwIDB4MTAwMD47DQo+ID4gPiAgICAgICAgICAgY29t
cGF0aWJsZSA9ICJ2ZW5kb3Isc29tZS1jb25zdW1lciI7DQo+ID4gPiAgICAgICAgICAgY2xvY2tz
ID0gPCZwbDAxMSAwPiwNCj4gPiA+ICAgICAgICAgICAgICAgICAgICA8Jm90aGVyY2xvY2sgNDMg
MjI+LA0KPiA+ID4gICAgICAgICAgICAgICAgICAgIDwmcGwwMTEgMT47DQo+ID4gPiAgICAgICAg
ICAgY2xvY2stbmFtZXMgPSAiYXBiX3BjbGsiLA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAg
ICAgInBpeGVsX2NsayIsDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAic2Nhbm91dF9j
bGsiOw0KPiA+ID4gICB9Ow0KPiA+ID4NCj4gPiA+IEhlcmUgdGhlIHNldCBvZiBjbG9jay1uYW1l
cyB3b3VsZCBiZSBkZWZpbmVkIGluIHRoZSBiaW5kaW5nIG9mIHRoZQ0KPiA+ID4gY29uc3VtZXIs
IGJhc2VkIG9uIHRoZSBjbG9jayBpbnB1dCBuYW1lcyBpbiB0aGUgSVAgZG9jdW1lbnRhdGlvbiAt
LQ0KPiA+ID4gdGhleSB0ZWxsIHRoZSBjb25zdW1lciB3aGljaCBjbG9jayBpbnB1dHMgb24gdGhl
IGNvbnN1bWVyIHRoZSBjbG9ja3MNCj4gPiA+IGRlc2NyaWJlZCBpbiBjbG9ja3MgYXJlIHdpcmVk
IGluIHRvLCBhbmQgZGVzY3JpYmUgbm90aGluZyBhYm91dA0KPiA+ID4gb3V0cHV0IG9mIHRoZSBw
cm92aWRlci4gVXNpbmcgY2xvY2stbmFtZXMgYWxsb3dzIHRoZSBzZXQgb2YgY2xvY2tzDQo+ID4g
PiBvbiBhbiBJUCB0byBjaGFuZ2Ugb3ZlciByZXZpc2lvbnMgYW5kIGZvciBzb21lIGNsb2NrIGlu
cHV0cyB0byBiZQ0KPiBvcHRpb25hbC4NCj4gPiA+DQo+ID4gT0ssIEkgZ2V0IGl0LiBXaWxsIG5h
bWUgdGhlIGNsb2NrLW5hbWVzIGJldHRlciwgYW5kIGFkZCBpdCBpZiBtaXNzZWQuDQo+ID4gVGhh
bmtzLA0KPiANCj4gQ2hlZXJzLg0KPiANCj4gWy4uLl0NCj4gDQo+ID4gPiA+ID4gPiArICAgICAg
ICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAg
ICAgI3NpemUtY2VsbHMgPSA8MT47DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAg
ICAgICAgICAgc3lzY2xrOiBzeXNjbGsgew0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg
ICAgICAgI2Nsb2NrLWNlbGxzID0gPDA+Ow0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg
ICAgICAgY29tcGF0aWJsZSA9ICJmc2wscW9yaXEtc3lzY2xrLTEuMCIsDQo+ID4gPiA+ID4gPiAr
ICJmaXhlZC1jbG9jayI7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBXZSBkaWRuJ3QgbWVudGlvbiBp
biB0aGUgYmluZGluZyB0aGF0ICJmc2wscW9yaXEtc3lzY2xrLTEuMCIgd2FzDQo+ID4gPiA+ID4g
Y29tcGF0aWJsZSB3aXRoICJmaXhlZC1jbG9jayIgYW5kIHNob3VsZCBoYXZlICJmaXhlZC1jbG9j
ayIgaW4NCj4gPiA+ID4gPiB0aGUgY29tcGF0aWJsZSBsaXN0Li4uDQo+ID4gPiA+ID4NCj4gPiA+
ID4gT0ssIHdpbGwgZml4IGl0Lg0KPiA+ID4NCj4gPiA+IENoZWVycy4gQWxzbywgZG9lc24ndCBh
IGZpeGVkLWNsb2NrIHJlcXVpcmUgYSBjbG9jay1mcmVxdWVuY3k/DQo+ID4gPg0KPiA+IFllcywg
aXQgc2hvdWxkIGJlLiBCdXQgd2UgZ290IHRoZSBjbG9jay1mcmVxdWVuY3kgZnJvbSBwYXJlbnQg
bm9kZQ0KPiA+IGJlY2F1c2UgVGhlcmUgaXMgYSBjbG9jay1mcmVxdWVuY3kgYWxyZWFkeSB0aGVy
ZSBiZWZvcmUgdGhpcyBwYXRjaC4NCj4gDQo+IE9LLiBTaG91bGQgd2Ugbm90IHBsYWNlIGl0IHRo
ZXJlIGZvciBmdXR1cmU/IFdlJ3JlIG5vdCBjb21wYXRpYmxlIHdpdGgNCj4gZml4ZWQtY2xvY2sg
aWYgd2UgZG9uJ3QgZnVsZmlsIHRoZSBtaW5pbXVtIHJlcXVpcmVtZW50cyBvZiB0aGUgZml4ZWQt
DQo+IGNsb2NrIGJpbmRpbmcuLi4NCj4gDQo+ID4NCj4gPiA+ID4NCj4gPiA+ID4gPiA+ICsgICAg
ICAgICAgICAgICAgICAgICAgIGNsb2NrLW91dHB1dC1uYW1lcyA9ICJzeXNjbGsiOw0KPiA+ID4g
PiA+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAg
ICAgICAgICAgICBwbGwwOiBwbGwwQDgwMCB7DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg
ICAgICAgICAjY2xvY2stY2VsbHMgPSA8MT47DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg
ICAgICAgICByZWcgPSA8MHg4MDAgMHg0PjsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg
ICAgICAgIGNvbXBhdGlibGUgPSAiZnNsLHFvcmlxLWNvcmUtcGxsLTEuMCI7DQo+ID4gPiA+ID4g
PiArICAgICAgICAgICAgICAgICAgICAgICBjbG9ja3MgPSA8JnN5c2Nsaz47DQo+ID4gPiA+ID4g
PiArICAgICAgICAgICAgICAgICAgICAgICBjbG9jay1vdXRwdXQtbmFtZXMgPSAicGxsMCIsICJw
bGwwLQ0KPiBkaXYyIjsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICB9Ow0KPiA+ID4gPiA+
ID4gKw0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIHBsbDE6IHBsbDFAODIwIHsNCj4gPiA+
ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICNjbG9jay1jZWxscyA9IDwxPjsNCj4gPiA+
ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDgyMCAweDQ+Ow0KPiA+ID4g
PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJmc2wscW9yaXEtY29y
ZS1wbGwtMS4wIjsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrcyA9
IDwmc3lzY2xrPjsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLW91
dHB1dC1uYW1lcyA9ICJwbGwxIiwgInBsbDEtDQo+IGRpdjIiOw0KPiA+ID4gPiA+ID4gKyAgICAg
ICAgICAgICAgIH07DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg
bXV4MDogbXV4MEAwIHsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICNjbG9j
ay1jZWxscyA9IDwwPjsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9
IDwweDAgMHg0PjsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGli
bGUgPSAiZnNsLHFvcmlxLWNvcmUtbXV4LTEuMCI7DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAg
ICAgICAgICAgICBjbG9ja3MgPSA8JnBsbDAgMD4sIDwmcGxsMCAxPiwgPCZwbGwxDQo+ID4gPiA+
ID4gPiArIDA+LA0KPiA+ID4gPiA+IDwmcGxsMSAxPjsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAg
ICAgICAgICAgICAgIGNsb2NrLW5hbWVzID0gInBsbDBfMCIsICJwbGwwXzEiLA0KPiA+ID4gPiA+
ID4gKyAicGxsMV8wIiwNCj4gPiA+ID4gPiAicGxsMV8xIjsNCj4gPiA+ID4gPiA+ICsgICAgICAg
ICAgICAgICAgICAgICAgIGNsb2NrLW91dHB1dC1uYW1lcyA9ICJjbXV4MCI7DQo+ID4gPiA+ID4g
PiArICAgICAgICAgICAgICAgfTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICAg
ICAgICAgICBtdXgxOiBtdXgxQDIwIHsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg
ICAgICNjbG9jay1jZWxscyA9IDwwPjsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg
ICAgIHJlZyA9IDwweDIwIDB4ND47DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg
ICBjb21wYXRpYmxlID0gImZzbCxxb3JpcS1jb3JlLW11eC0xLjAiOw0KPiA+ID4gPiA+ID4gKyAg
ICAgICAgICAgICAgICAgICAgICAgY2xvY2tzID0gPCZwbGwwIDA+LCA8JnBsbDAgMT4sIDwmcGxs
MQ0KPiA+ID4gPiA+ID4gKyAwPiwNCj4gPiA+ID4gPiA8JnBsbDEgMT47DQo+ID4gPiA+ID4gPiAr
ICAgICAgICAgICAgICAgICAgICAgICBjbG9jay1uYW1lcyA9ICJwbGwwXzAiLCAicGxsMF8xIiwN
Cj4gPiA+ID4gPiA+ICsgInBsbDFfMCIsDQo+ID4gPiA+ID4gInBsbDFfMSI7DQo+ID4gPg0KPiA+
ID4gSSBkaWRuJ3Qgc3BvdCB0aGlzIGxhc3QgdGltZSwgYnV0IHRoZSBjbG9jay1uYW1lcyBoZXJl
IHNlZW0gdG8gYmUNCj4gPiA+IHRoZSBuYW1lcyBvZiB0aGUgb3V0cHV0cyBmcm9tIHRoZSBwcm92
aWRlciwgcmF0aGVyIHRoYW4gdGhlIGlucHV0DQo+ID4gPiBuYW1lcyBvZiB0aGUgY29uc3VtZXIu
IFRoaXMgZ29lcyBhZ2FpbnN0IHRoZSBpbnRlbmRlZCBwdXJwb3NlIG9mDQo+IGNsb2NrLW5hbWVz
Lg0KPiA+ID4NCj4gPiBJIGFtIGNvbmZ1c2VkIGhlcmUgd2l0aCBwcm92aWRlci9jb25zdW1lciBi
ZWNhdXNlIHNvbWUgbm9kZXMgY2FuIGJvdGgNCj4gYmUgY29uc3VtZXIgYW5kIHByb3ZpZGVyLg0K
PiA+IFRoZSBjbG9jay1uYW1lcyBhcmUgY29ycmVzcG9uZGluZyB0byBjbG9ja3Mgb25lIGJ5IG9u
ZSwgd2hhdCdzIHdyb25nDQo+IHdpdGggaXQ/DQo+IA0KPiBXZSBoYXZlIGNsb2NrLW5hbWVzIGZv
ciBhIGNvbnN1bWVyJ3MgbmFtZXMgb2YgaXRzIGlucHV0cywgYW5kIGNsb2NrLQ0KPiBvdXRwdXQt
bmFtZXMgZm9yIGEgcHJvdmlkZXIncyBuYW1lcyBvZiBpdCdzIG91dHB1dHMuDQo+IA0KPiBDb25z
aWRlciBhIFBMTCBkZXZpY2Ugd2hpY2ggdGFrZXMgYSBjbG9jayBpbnB1dCAoUkVGQ0xLKSBhbmQg
b3V0cHV0cyBhDQo+IGhpZ2hlciBmcmVxdWVuY3kgY2xvY2sgKE9VVENMSykuIFRoZSBQTEwncyBz
cGVjaWZpY2F0aW9uIG9ubHkgdGFsa3MgaW4NCj4gdGVybXMgb2YgUkVGQ0xLIGFuZCBPVVRDTEss
IGJ1dCB0aGVzZSBhcmUgbm90IHRoZSBuYW1lcyBvZiB0aGUgY2xvY2tzIGFzDQo+IHRoZXkgYXJl
IG91dHB1dCBmcm9tIHRoZSBvcmlnaW5hbCBjbG9jaywgb3IgcHJvdmlkZWQgdG8gdGhlIGZpbmFs
DQo+IGNvbnN1bWVyLg0KPiANCj4gQ29uc2lkZXIgYSBzZXF1ZW5jZSBvZiB0aGVzZSBQTExzIHBs
dWdnZWQgdG9nZXRoZXIuIFRoZSBPVVRDTEsgb2Ygb25lDQo+IGZlZWRzIGludG8gdGhlIFJFRkNM
SyBvZiB0aGUgbmV4dDoNCj4gDQo+IGZpeGVkOiBmaXhlZC1jbG9jayB7DQo+ICAgICAgICAgY29t
cGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7DQo+ICAgICAgICAgY2xvY2stZnJlcXVlbmN5ID0gPDUw
PjsNCj4gfTsNCj4gDQo+IHBsbF8wOiBwbGwgew0KPiAgICAgICAgIGNvbXBhdGlibGUgPSAidmVu
ZG9yLHBsbCI7DQo+ICAgICAgICAgY2xvY2tzID0gPCZmaXhlZD47DQo+ICAgICAgICAgY2xvY2st
bmFtZXMgPSAicmVmY2xrIjsNCj4gICAgICAgICBjbG9jay1vdXRwdXQtbmFtZXMgPSAib3V0Y2xr
IjsNCj4gfTsNCj4gDQo+IHBsbF8xOiBhbm90aGVyLXBsbCB7DQo+ICAgICAgICAgY29tcGF0aWJs
ZSA9ICJ2ZW5kb3IscGxsIjsNCj4gICAgICAgICBjbG9ja3MgPSA8JnBsbF8wPjsNCj4gICAgICAg
ICBjbG9jay1uYW1lcyA9ICJyZWZjbGsiOw0KPiAgICAgICAgIGNsb2NrLW91dHB1dC1uYW1lcyA9
ICJvdXRjbGsiOw0KPiB9Ow0KPiANCj4gY29uc3VtZXIgew0KPiAgICAgICAgIGNvbXBhdGlibGUg
PSAidmVuZG9yLGNsb2NrLWNvbnN1bWVyIjsNCj4gICAgICAgICBjbG9ja3MgPSA8JnBsbF8xPiwN
Cj4gICAgICAgICAgICAgICAgICA8JnBsbF8wPjsNCj4gICAgICAgICBjbG9jay1uYW1lcyA9ICJo
YWxmY2xrIiwgImZ1bGxjbGsiOyB9Ow0KPiANCj4gSW4gZWFjaCBjYXNlLCBjbG9jay1uYW1lcyBk
ZXNjcmliZXMgdGhlIGNsb2NrIGlucHV0cyBmcm9tIHRoZSB2aWV3IG9mIHRoZQ0KPiBQTEwgdGhl
eSBhcmUgaW5wdXQgdG8sIG5vdCBmcm9tIHRoZSBwcm92aWRlciB0aGV5IGNhbWUgZnJvbSwgb3Ig
dGhlDQo+IGNvbnN1bWVyIHNvbWUgb3V0cHV0cyBhcmUgZ29pbmcgdG8uIEdpdmluZyB0aGUgaW5w
dXRzIG5hbWVzIGluIHRoaXMgd2F5DQo+IG1ha2VzIGl0IHBvc3NpYmxlIHRvIGRlc2NyaWJlIHNp
dHVhdGlvbnMgd2hlcmUgb25seWEgc3Vic2V0IG9mIGNsb2NrDQo+IGlucHV0cyBhcmUgd2lyZWQg
dXAgLS0gd2UgY291bGQganVzdCBoYXZlICJmdWxsY2xrIiBvbiB0aGUgZmluYWwgY29uc3VtZXIs
DQo+IHdpdGggb25seSBwbGxfMCBhcyBhbiBpbnB1dCwgYW5kIHRoZSBkcml2ZXIgY291bGQgZmln
dXJlIG91dCB3aGF0IHRvIGRvLg0KPiANCj4gRG9lcyB0aGF0IGhlbHA/DQo+IA0KWWVzLCBpdCBp
cyB2ZXJ5IGhlbHBmdWwuIEkgd2lsbCBuYW1lIGNsb2NrLW5hbWVzIGJldHRlci4NCg0KUmVnYXJk
cywNCll1YW50aWFuDQoNCg==

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-09  6:38 [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree Yuantian.Tang
  2013-10-10 10:03 ` Mark Rutland
  2013-10-11 19:08 ` Scott Wood
@ 2013-10-25 20:11 ` Grant Likely
  2013-10-28  2:20   ` Tang Yuantian-B29983
  2 siblings, 1 reply; 25+ messages in thread
From: Grant Likely @ 2013-10-25 20:11 UTC (permalink / raw)
  To: Yuantian.Tang, galak; +Cc: devicetree, linuxppc-dev, Tang Yuantian

On Wed, 9 Oct 2013 14:38:24 +0800, <Yuantian.Tang@freescale.com> wrote:
> From: Tang Yuantian <yuantian.tang@freescale.com>
> 
> The following SoCs will be affected: p2041, p3041, p4080,
> p5020, p5040, b4420, b4860, t4240
> 
> Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> v5:
> 	- refine the binding document
> 	- update the compatible string
> v4:
> 	- add binding document
> 	- update compatible string
> 	- update the reg property
> v3:
> 	- fix typo
> v2:
> 	- add t4240, b4420, b4860 support
> 	- remove pll/4 clock from p2041, p3041 and p5020 board
> 
>  .../devicetree/bindings/clock/corenet-clock.txt    | 111 ++++++++++++++++++++
>  arch/powerpc/boot/dts/fsl/b4420si-post.dtsi        |  35 +++++++
>  arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi         |   2 +
>  arch/powerpc/boot/dts/fsl/b4860si-post.dtsi        |  35 +++++++
>  arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi         |   4 +
>  arch/powerpc/boot/dts/fsl/p2041si-post.dtsi        |  60 +++++++++++
>  arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi         |   4 +
>  arch/powerpc/boot/dts/fsl/p3041si-post.dtsi        |  60 +++++++++++
>  arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi         |   4 +
>  arch/powerpc/boot/dts/fsl/p4080si-post.dtsi        | 112 +++++++++++++++++++++
>  arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi         |   8 ++
>  arch/powerpc/boot/dts/fsl/p5020si-post.dtsi        |  42 ++++++++
>  arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi         |   2 +
>  arch/powerpc/boot/dts/fsl/p5040si-post.dtsi        |  60 +++++++++++
>  arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi         |   4 +
>  arch/powerpc/boot/dts/fsl/t4240si-post.dtsi        |  85 ++++++++++++++++
>  arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi         |  12 +++
>  17 files changed, 640 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/clock/corenet-clock.txt
> 
> diff --git a/Documentation/devicetree/bindings/clock/corenet-clock.txt b/Documentation/devicetree/bindings/clock/corenet-clock.txt
> new file mode 100644
> index 0000000..8efc62d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/corenet-clock.txt
> @@ -0,0 +1,111 @@
> +* Clock Block on Freescale CoreNet Platforms
> +
> +Freescale CoreNet chips take primary clocking input from the external
> +SYSCLK signal. The SYSCLK input (frequency) is multiplied using
> +multiple phase locked loops (PLL) to create a variety of frequencies
> +which can then be passed to a variety of internal logic, including
> +cores and peripheral IP blocks.
> +Please refer to the Reference Manual for details.
> +
> +1. Clock Block Binding
> +
> +Required properties:
> +- compatible: Should include one or more of the following:
> +	- "fsl,<chip>-clockgen": for chip specific clock block
> +	- "fsl,qoriq-clockgen-[1,2].x": for chassis 1.x and 2.x clock
> +- reg: Offset and length of the clock register set
> +- clock-frequency: Indicates input clock frequency of clock block.
> +	Will be set by u-boot
> +
> +Recommended properties:
> +- #ddress-cells: Specifies the number of cells used to represent

typo

> +	physical base addresses.  Must be present if the device has
> +	sub-nodes and set to 1 if present
> +- #size-cells: Specifies the number of cells used to represent
> +	the size of an address. Must be present if the device has
> +	sub-nodes and set to 1 if present
> +
> +2. Clock Provider/Consumer Binding
> +
> +Most of the binding are from the common clock binding[1].
> + [1] Documentation/devicetree/bindings/clock/clock-bindings.txt
> +
> +Required properties:
> +- compatible : Should include one or more of the following:
> +	- "fsl,qoriq-core-pll-[1,2].x": Indicates a core PLL clock device
> +	- "fsl,qoriq-core-mux-[1,2].x": Indicates a core multiplexer clock
> +		device; divided from the core PLL clock
> +	- "fixed-clock": From common clock binding; indicates output clock
> +		of oscillator
> +	- "fsl,qoriq-sysclk-[1,2].x": Indicates input system clock
> +- #clock-cells: From common clock binding; indicates the number of
> +	output clock. 0 is for one output clock; 1 for more than one clock
> +
> +Recommended properties:
> +- clocks: Should be the phandle of input parent clock
> +- clock-names: From common clock binding, indicates the clock name
> +- clock-output-names: From common clock binding, indicates the names of
> +	output clocks
> +- reg: Should be the offset and length of clock block base address.
> +	The length should be 4.

Binding looks reasonable to me.

g.

> +
> +Example for clock block and clock provider:
> +/ {
> +	clockgen: global-utilities@e1000 {
> +		compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
> +		reg = <0xe1000 0x1000>;
> +		clock-frequency = <0>;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		sysclk: sysclk {
> +			#clock-cells = <0>;
> +			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
> +			clock-output-names = "sysclk";
> +		}
> +
> +		pll0: pll0@800 {
> +			#clock-cells = <1>;
> +			reg = <0x800 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll0", "pll0-div2";
> +		};
> +
> +		pll1: pll1@820 {
> +			#clock-cells = <1>;
> +			reg = <0x820 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll1", "pll1-div2";
> +		};
> +
> +		mux0: mux0@0 {
> +			#clock-cells = <0>;
> +			reg = <0x0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux0";
> +		};
> +
> +		mux1: mux1@20 {
> +			#clock-cells = <0>;
> +			reg = <0x20 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux1";
> +		};
> +	};
> +  }
> +
> +Example for clock consumer:
> +
> +/ {
> +	cpu0: PowerPC,e5500@0 {
> +		...
> +		clocks = <&mux0>;
> +		...
> +	};
> +  }
> diff --git a/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi b/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi
> index 5a6615d..e910e82 100644
> --- a/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi
> @@ -86,6 +86,41 @@
>  
>  	clockgen: global-utilities@e1000 {
>  		compatible = "fsl,b4420-clockgen", "fsl,qoriq-clockgen-2.0";
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		sysclk: sysclk {
> +			#clock-cells = <0>;
> +			compatible = "fsl,qoriq-sysclk-2.0", "fixed-clock";
> +			clock-output-names = "sysclk";
> +		}
> +
> +		pll0: pll0@800 {
> +			#clock-cells = <1>;
> +			reg = <0x800 0x4>;
> +			compatible = "fsl,qoriq-core-pll-2.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll0", "pll0-div2", "pll0-div4";
> +		};
> +
> +		pll1: pll1@820 {
> +			#clock-cells = <1>;
> +			reg = <0x820 0x4>;
> +			compatible = "fsl,qoriq-core-pll-2.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll1", "pll1-div2", "pll1-div4";
> +		};
> +
> +		mux0: mux0@0 {
> +			#clock-cells = <0>;
> +			reg = <0x0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-2.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>,
> +				 <&pll1 0>, <&pll1 1>, <&pll1 2>;
> +			clock-names = "pll0_0", "pll0_1", "pll0_2",
> +				"pll1_0", "pll1_1", "pll1_2";
> +			clock-output-names = "cmux0";
> +		};
>  	};
>  
>  	rcpm: global-utilities@e2000 {
> diff --git a/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi b/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi
> index 7b4426e..a11126b 100644
> --- a/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi
> @@ -62,11 +62,13 @@
>  		cpu0: PowerPC,e6500@0 {
>  			device_type = "cpu";
>  			reg = <0 1>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2>;
>  		};
>  		cpu1: PowerPC,e6500@2 {
>  			device_type = "cpu";
>  			reg = <2 3>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2>;
>  		};
>  	};
> diff --git a/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi b/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi
> index e5cf6c8..5cfcfe4 100644
> --- a/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi
> @@ -130,6 +130,41 @@
>  
>  	clockgen: global-utilities@e1000 {
>  		compatible = "fsl,b4860-clockgen", "fsl,qoriq-clockgen-2.0";
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		sysclk: sysclk {
> +			#clock-cells = <0>;
> +			compatible = "fsl,qoriq-sysclk-2.0", "fixed-clock";
> +			clock-output-names = "sysclk";
> +		}
> +
> +		pll0: pll0@800 {
> +			#clock-cells = <1>;
> +			reg = <0x800 0x4>;
> +			compatible = "fsl,qoriq-core-pll-2.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll0", "pll0-div2", "pll0-div4";
> +		};
> +
> +		pll1: pll1@820 {
> +			#clock-cells = <1>;
> +			reg = <0x820 0x4>;
> +			compatible = "fsl,qoriq-core-pll-2.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll1", "pll1-div2", "pll1-div4";
> +		};
> +
> +		mux0: mux0@0 {
> +			#clock-cells = <0>;
> +			reg = <0x0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-2.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>,
> +				 <&pll1 0>, <&pll1 1>, <&pll1 2>;
> +			clock-names = "pll0_0", "pll0_1", "pll0_2",
> +				"pll1_0", "pll1_1", "pll1_2";
> +			clock-output-names = "cmux0";
> +		};
>  	};
>  
>  	rcpm: global-utilities@e2000 {
> diff --git a/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi b/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi
> index 5263fa4..185a231 100644
> --- a/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi
> @@ -62,21 +62,25 @@
>  		cpu0: PowerPC,e6500@0 {
>  			device_type = "cpu";
>  			reg = <0 1>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2>;
>  		};
>  		cpu1: PowerPC,e6500@2 {
>  			device_type = "cpu";
>  			reg = <2 3>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2>;
>  		};
>  		cpu2: PowerPC,e6500@4 {
>  			device_type = "cpu";
>  			reg = <4 5>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2>;
>  		};
>  		cpu3: PowerPC,e6500@6 {
>  			device_type = "cpu";
>  			reg = <6 7>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2>;
>  		};
>  	};
> diff --git a/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi b/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
> index dc6cc5a..f3f7f65 100644
> --- a/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
> @@ -308,6 +308,66 @@
>  		compatible = "fsl,p2041-clockgen", "fsl,qoriq-clockgen-1.0";
>  		reg = <0xe1000 0x1000>;
>  		clock-frequency = <0>;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		sysclk: sysclk {
> +			#clock-cells = <0>;
> +			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
> +			clock-output-names = "sysclk";
> +		}
> +
> +		pll0: pll0@800 {
> +			#clock-cells = <1>;
> +			reg = <0x800 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll0", "pll0-div2";
> +		};
> +
> +		pll1: pll1@820 {
> +			#clock-cells = <1>;
> +			reg = <0x820 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll1", "pll1-div2";
> +		};
> +
> +		mux0: mux0@0 {
> +			#clock-cells = <0>;
> +			reg = <0x0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux0";
> +		};
> +
> +		mux1: mux1@20 {
> +			#clock-cells = <0>;
> +			reg = <0x20 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux1";
> +		};
> +
> +		mux2: mux2@40 {
> +			#clock-cells = <0>;
> +			reg = <0x40 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux2";
> +		};
> +
> +		mux3: mux3@60 {
> +			#clock-cells = <0>;
> +			reg = <0x60 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux3";
> +		};
>  	};
>  
>  	rcpm: global-utilities@e2000 {
> diff --git a/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi
> index 7a2697d..22f3b14 100644
> --- a/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi
> @@ -81,6 +81,7 @@
>  		cpu0: PowerPC,e500mc@0 {
>  			device_type = "cpu";
>  			reg = <0>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2_0>;
>  			L2_0: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -89,6 +90,7 @@
>  		cpu1: PowerPC,e500mc@1 {
>  			device_type = "cpu";
>  			reg = <1>;
> +			clocks = <&mux1>;
>  			next-level-cache = <&L2_1>;
>  			L2_1: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -97,6 +99,7 @@
>  		cpu2: PowerPC,e500mc@2 {
>  			device_type = "cpu";
>  			reg = <2>;
> +			clocks = <&mux2>;
>  			next-level-cache = <&L2_2>;
>  			L2_2: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -105,6 +108,7 @@
>  		cpu3: PowerPC,e500mc@3 {
>  			device_type = "cpu";
>  			reg = <3>;
> +			clocks = <&mux3>;
>  			next-level-cache = <&L2_3>;
>  			L2_3: l2-cache {
>  				next-level-cache = <&cpc>;
> diff --git a/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi b/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
> index 3fa1e22..9bab9c9 100644
> --- a/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
> @@ -335,6 +335,66 @@
>  		compatible = "fsl,p3041-clockgen", "fsl,qoriq-clockgen-1.0";
>  		reg = <0xe1000 0x1000>;
>  		clock-frequency = <0>;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		sysclk: sysclk {
> +			#clock-cells = <0>;
> +			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
> +			clock-output-names = "sysclk";
> +		}
> +
> +		pll0: pll0@800 {
> +			#clock-cells = <1>;
> +			reg = <0x800 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll0", "pll0-div2";
> +		};
> +
> +		pll1: pll1@820 {
> +			#clock-cells = <1>;
> +			reg = <0x820 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll1", "pll1-div2";
> +		};
> +
> +		mux0: mux0@0 {
> +			#clock-cells = <0>;
> +			reg = <0x0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux0";
> +		};
> +
> +		mux1: mux1@20 {
> +			#clock-cells = <0>;
> +			reg = <0x20 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux1";
> +		};
> +
> +		mux2: mux2@40 {
> +			#clock-cells = <0>;
> +			reg = <0x40 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux2";
> +		};
> +
> +		mux3: mux3@60 {
> +			#clock-cells = <0>;
> +			reg = <0x60 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux3";
> +		};
>  	};
>  
>  	rcpm: global-utilities@e2000 {
> diff --git a/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi
> index c9ca2c3..468e8be 100644
> --- a/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi
> @@ -82,6 +82,7 @@
>  		cpu0: PowerPC,e500mc@0 {
>  			device_type = "cpu";
>  			reg = <0>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2_0>;
>  			L2_0: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -90,6 +91,7 @@
>  		cpu1: PowerPC,e500mc@1 {
>  			device_type = "cpu";
>  			reg = <1>;
> +			clocks = <&mux1>;
>  			next-level-cache = <&L2_1>;
>  			L2_1: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -98,6 +100,7 @@
>  		cpu2: PowerPC,e500mc@2 {
>  			device_type = "cpu";
>  			reg = <2>;
> +			clocks = <&mux2>;
>  			next-level-cache = <&L2_2>;
>  			L2_2: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -106,6 +109,7 @@
>  		cpu3: PowerPC,e500mc@3 {
>  			device_type = "cpu";
>  			reg = <3>;
> +			clocks = <&mux3>;
>  			next-level-cache = <&L2_3>;
>  			L2_3: l2-cache {
>  				next-level-cache = <&cpc>;
> diff --git a/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi b/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
> index 34769a7..2108269 100644
> --- a/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
> @@ -355,6 +355,118 @@
>  		compatible = "fsl,p4080-clockgen", "fsl,qoriq-clockgen-1.0";
>  		reg = <0xe1000 0x1000>;
>  		clock-frequency = <0>;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		sysclk: sysclk {
> +			#clock-cells = <0>;
> +			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
> +			clock-output-names = "sysclk";
> +		}
> +
> +		pll0: pll0@800 {
> +			#clock-cells = <1>;
> +			reg = <0x800 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll0", "pll0-div2";
> +		};
> +
> +		pll1: pll1@820 {
> +			#clock-cells = <1>;
> +			reg = <0x820 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll1", "pll1-div2";
> +		};
> +
> +		pll2: pll2@840 {
> +			#clock-cells = <1>;
> +			reg = <0x840 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll2", "pll2-div2";
> +		};
> +
> +		pll3: pll3@860 {
> +			#clock-cells = <1>;
> +			reg = <0x860 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll3", "pll3-div2";
> +		};
> +
> +		mux0: mux0@0 {
> +			#clock-cells = <0>;
> +			reg = <0x0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux0";
> +		};
> +
> +		mux1: mux1@20 {
> +			#clock-cells = <0>;
> +			reg = <0x20 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux1";
> +		};
> +
> +		mux2: mux2@40 {
> +			#clock-cells = <0>;
> +			reg = <0x40 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux2";
> +		};
> +
> +		mux3: mux3@60 {
> +			#clock-cells = <0>;
> +			reg = <0x60 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux3";
> +		};
> +
> +		mux4: mux4@80 {
> +			#clock-cells = <0>;
> +			reg = <0x80 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
> +			clock-names = "pll2_0", "pll2_1", "pll3_0", "pll3_1";
> +			clock-output-names = "cmux4";
> +		};
> +
> +		mux5: mux5@a0 {
> +			#clock-cells = <0>;
> +			reg = <0xa0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
> +			clock-names = "pll2_0", "pll2_1", "pll3_0", "pll3_1";
> +			clock-output-names = "cmux5";
> +		};
> +
> +		mux6: mux6@c0 {
> +			#clock-cells = <0>;
> +			reg = <0xc0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
> +			clock-names = "pll2_0", "pll2_1", "pll3_0", "pll3_1";
> +			clock-output-names = "cmux6";
> +		};
> +
> +		mux7: mux7@e0 {
> +			#clock-cells = <0>;
> +			reg = <0xe0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
> +			clock-names = "pll2_0", "pll2_1", "pll3_0", "pll3_1";
> +			clock-output-names = "cmux7";
> +		};
>  	};
>  
>  	rcpm: global-utilities@e2000 {
> diff --git a/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi
> index 493d9a0..0040b5a 100644
> --- a/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi
> @@ -81,6 +81,7 @@
>  		cpu0: PowerPC,e500mc@0 {
>  			device_type = "cpu";
>  			reg = <0>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2_0>;
>  			L2_0: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -89,6 +90,7 @@
>  		cpu1: PowerPC,e500mc@1 {
>  			device_type = "cpu";
>  			reg = <1>;
> +			clocks = <&mux1>;
>  			next-level-cache = <&L2_1>;
>  			L2_1: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -97,6 +99,7 @@
>  		cpu2: PowerPC,e500mc@2 {
>  			device_type = "cpu";
>  			reg = <2>;
> +			clocks = <&mux2>;
>  			next-level-cache = <&L2_2>;
>  			L2_2: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -105,6 +108,7 @@
>  		cpu3: PowerPC,e500mc@3 {
>  			device_type = "cpu";
>  			reg = <3>;
> +			clocks = <&mux3>;
>  			next-level-cache = <&L2_3>;
>  			L2_3: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -113,6 +117,7 @@
>  		cpu4: PowerPC,e500mc@4 {
>  			device_type = "cpu";
>  			reg = <4>;
> +			clocks = <&mux4>;
>  			next-level-cache = <&L2_4>;
>  			L2_4: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -121,6 +126,7 @@
>  		cpu5: PowerPC,e500mc@5 {
>  			device_type = "cpu";
>  			reg = <5>;
> +			clocks = <&mux5>;
>  			next-level-cache = <&L2_5>;
>  			L2_5: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -129,6 +135,7 @@
>  		cpu6: PowerPC,e500mc@6 {
>  			device_type = "cpu";
>  			reg = <6>;
> +			clocks = <&mux6>;
>  			next-level-cache = <&L2_6>;
>  			L2_6: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -137,6 +144,7 @@
>  		cpu7: PowerPC,e500mc@7 {
>  			device_type = "cpu";
>  			reg = <7>;
> +			clocks = <&mux7>;
>  			next-level-cache = <&L2_7>;
>  			L2_7: l2-cache {
>  				next-level-cache = <&cpc>;
> diff --git a/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi b/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
> index bc3ae5a..e09f8cd 100644
> --- a/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
> @@ -340,6 +340,48 @@
>  		compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
>  		reg = <0xe1000 0x1000>;
>  		clock-frequency = <0>;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		sysclk: sysclk {
> +			#clock-cells = <0>;
> +			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
> +			clock-output-names = "sysclk";
> +		}
> +
> +		pll0: pll0@800 {
> +			#clock-cells = <1>;
> +			reg = <0x800 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll0", "pll0-div2";
> +		};
> +
> +		pll1: pll1@820 {
> +			#clock-cells = <1>;
> +			reg = <0x820 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll1", "pll1-div2";
> +		};
> +
> +		mux0: mux0@0 {
> +			#clock-cells = <0>;
> +			reg = <0x0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux0";
> +		};
> +
> +		mux1: mux1@20 {
> +			#clock-cells = <0>;
> +			reg = <0x20 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux1";
> +		};
>  	};
>  
>  	rcpm: global-utilities@e2000 {
> diff --git a/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
> index 8df47fc..fe1a2e6 100644
> --- a/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
> @@ -88,6 +88,7 @@
>  		cpu0: PowerPC,e5500@0 {
>  			device_type = "cpu";
>  			reg = <0>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2_0>;
>  			L2_0: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -96,6 +97,7 @@
>  		cpu1: PowerPC,e5500@1 {
>  			device_type = "cpu";
>  			reg = <1>;
> +			clocks = <&mux1>;
>  			next-level-cache = <&L2_1>;
>  			L2_1: l2-cache {
>  				next-level-cache = <&cpc>;
> diff --git a/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi b/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi
> index a91897f..109f132 100644
> --- a/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi
> @@ -300,6 +300,66 @@
>  		compatible = "fsl,p5040-clockgen", "fsl,qoriq-clockgen-1.0";
>  		reg = <0xe1000 0x1000>;
>  		clock-frequency = <0>;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		sysclk: sysclk {
> +			#clock-cells = <0>;
> +			compatible = "fsl,qoriq-sysclk-1.0", "fixed-clock";
> +			clock-output-names = "sysclk";
> +		}
> +
> +		pll0: pll0@800 {
> +			#clock-cells = <1>;
> +			reg = <0x800 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll0", "pll0-div2";
> +		};
> +
> +		pll1: pll1@820 {
> +			#clock-cells = <1>;
> +			reg = <0x820 0x4>;
> +			compatible = "fsl,qoriq-core-pll-1.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll1", "pll1-div2";
> +		};
> +
> +		mux0: mux0@0 {
> +			#clock-cells = <0>;
> +			reg = <0x0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux0";
> +		};
> +
> +		mux1: mux1@20 {
> +			#clock-cells = <0>;
> +			reg = <0x20 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux1";
> +		};
> +
> +		mux2: mux2@40 {
> +			#clock-cells = <0>;
> +			reg = <0x40 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux2";
> +		};
> +
> +		mux3: mux3@60 {
> +			#clock-cells = <0>;
> +			reg = <0x60 0x4>;
> +			compatible = "fsl,qoriq-core-mux-1.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +			clock-names = "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> +			clock-output-names = "cmux3";
> +		};
>  	};
>  
>  	rcpm: global-utilities@e2000 {
> diff --git a/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi
> index 40ca943..3674686 100644
> --- a/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi
> @@ -81,6 +81,7 @@
>  		cpu0: PowerPC,e5500@0 {
>  			device_type = "cpu";
>  			reg = <0>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2_0>;
>  			L2_0: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -89,6 +90,7 @@
>  		cpu1: PowerPC,e5500@1 {
>  			device_type = "cpu";
>  			reg = <1>;
> +			clocks = <&mux1>;
>  			next-level-cache = <&L2_1>;
>  			L2_1: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -97,6 +99,7 @@
>  		cpu2: PowerPC,e5500@2 {
>  			device_type = "cpu";
>  			reg = <2>;
> +			clocks = <&mux2>;
>  			next-level-cache = <&L2_2>;
>  			L2_2: l2-cache {
>  				next-level-cache = <&cpc>;
> @@ -105,6 +108,7 @@
>  		cpu3: PowerPC,e5500@3 {
>  			device_type = "cpu";
>  			reg = <3>;
> +			clocks = <&mux3>;
>  			next-level-cache = <&L2_3>;
>  			L2_3: l2-cache {
>  				next-level-cache = <&cpc>;
> diff --git a/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi b/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi
> index 510afa3..d45434f 100644
> --- a/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi
> @@ -370,6 +370,91 @@
>  	clockgen: global-utilities@e1000 {
>  		compatible = "fsl,t4240-clockgen", "fsl,qoriq-clockgen-2.0";
>  		reg = <0xe1000 0x1000>;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		sysclk: sysclk {
> +			#clock-cells = <0>;
> +			compatible = "fsl,qoriq-sysclk-2.0", "fixed-clock";
> +			clock-output-names = "sysclk";
> +		}
> +
> +		pll0: pll0@800 {
> +			#clock-cells = <1>;
> +			reg = <0x800 0x4>;
> +			compatible = "fsl,qoriq-core-pll-2.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll0", "pll0-div2", "pll0-div4";
> +		};
> +
> +		pll1: pll1@820 {
> +			#clock-cells = <1>;
> +			reg = <0x820 0x4>;
> +			compatible = "fsl,qoriq-core-pll-2.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll1", "pll1-div2", "pll1-div4";
> +		};
> +
> +		pll2: pll2@840 {
> +			#clock-cells = <1>;
> +			reg = <0x840 0x4>;
> +			compatible = "fsl,qoriq-core-pll-2.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll2", "pll2-div2", "pll2-div4";
> +		};
> +
> +		pll3: pll3@860 {
> +			#clock-cells = <1>;
> +			reg = <0x860 0x4>;
> +			compatible = "fsl,qoriq-core-pll-2.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll3", "pll3-div2", "pll3-div4";
> +		};
> +
> +		pll4: pll4@880 {
> +			#clock-cells = <1>;
> +			reg = <0x880 0x4>;
> +			compatible = "fsl,qoriq-core-pll-2.0";
> +			clocks = <&sysclk>;
> +			clock-output-names = "pll4", "pll4-div2", "pll4-div4";
> +		};
> +
> +		mux0: mux0@0 {
> +			#clock-cells = <0>;
> +			reg = <0x0 0x4>;
> +			compatible = "fsl,qoriq-core-mux-2.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>,
> +				 <&pll1 0>, <&pll1 1>, <&pll1 2>,
> +				 <&pll2 0>, <&pll2 1>, <&pll2 2>;
> +			clock-names = "pll0_0", "pll0_1", "pll0_2",
> +				"pll1_0", "pll1_1", "pll1_2",
> +				"pll2_0", "pll2_1", "pll2_2";
> +			clock-output-names = "cmux0";
> +		};
> +
> +		mux1: mux1@20 {
> +			#clock-cells = <0>;
> +			reg = <0x20 0x4>;
> +			compatible = "fsl,qoriq-core-mux-2.0";
> +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>,
> +				 <&pll1 0>, <&pll1 1>, <&pll1 2>,
> +				 <&pll2 0>, <&pll2 1>, <&pll2 2>;
> +			clock-names = "pll0_0", "pll0_1", "pll0_2",
> +				"pll1_0", "pll1_1", "pll1_2",
> +				"pll2_0", "pll2_1", "pll2_2";
> +			clock-output-names = "cmux1";
> +		};
> +
> +		mux2: mux2@40 {
> +			#clock-cells = <0>;
> +			reg = <0x40 0x4>;
> +			compatible = "fsl,qoriq-core-mux-2.0";
> +			clocks = <&pll3 0>, <&pll3 1>, <&pll3 2>,
> +				 <&pll4 0>, <&pll4 1>, <&pll4 2>;
> +			clock-names = "pll3_0", "pll3_1", "pll3_2",
> +				"pll4_0", "pll4_1", "pll4_2";
> +			clock-output-names = "cmux2";
> +		};
>  	};
>  
>  	rcpm: global-utilities@e2000 {
> diff --git a/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi b/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi
> index a93c55a..0b8ccc5 100644
> --- a/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi
> @@ -67,61 +67,73 @@
>  		cpu0: PowerPC,e6500@0 {
>  			device_type = "cpu";
>  			reg = <0 1>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2_1>;
>  		};
>  		cpu1: PowerPC,e6500@2 {
>  			device_type = "cpu";
>  			reg = <2 3>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2_1>;
>  		};
>  		cpu2: PowerPC,e6500@4 {
>  			device_type = "cpu";
>  			reg = <4 5>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2_1>;
>  		};
>  		cpu3: PowerPC,e6500@6 {
>  			device_type = "cpu";
>  			reg = <6 7>;
> +			clocks = <&mux0>;
>  			next-level-cache = <&L2_1>;
>  		};
>  		cpu4: PowerPC,e6500@8 {
>  			device_type = "cpu";
>  			reg = <8 9>;
> +			clocks = <&mux1>;
>  			next-level-cache = <&L2_2>;
>  		};
>  		cpu5: PowerPC,e6500@10 {
>  			device_type = "cpu";
>  			reg = <10 11>;
> +			clocks = <&mux1>;
>  			next-level-cache = <&L2_2>;
>  		};
>  		cpu6: PowerPC,e6500@12 {
>  			device_type = "cpu";
>  			reg = <12 13>;
> +			clocks = <&mux1>;
>  			next-level-cache = <&L2_2>;
>  		};
>  		cpu7: PowerPC,e6500@14 {
>  			device_type = "cpu";
>  			reg = <14 15>;
> +			clocks = <&mux1>;
>  			next-level-cache = <&L2_2>;
>  		};
>  		cpu8: PowerPC,e6500@16 {
>  			device_type = "cpu";
>  			reg = <16 17>;
> +			clocks = <&mux2>;
>  			next-level-cache = <&L2_3>;
>  		};
>  		cpu9: PowerPC,e6500@18 {
>  			device_type = "cpu";
>  			reg = <18 19>;
> +			clocks = <&mux2>;
>  			next-level-cache = <&L2_3>;
>  		};
>  		cpu10: PowerPC,e6500@20 {
>  			device_type = "cpu";
>  			reg = <20 21>;
> +			clocks = <&mux2>;
>  			next-level-cache = <&L2_3>;
>  		};
>  		cpu11: PowerPC,e6500@22 {
>  			device_type = "cpu";
>  			reg = <22 23>;
> +			clocks = <&mux2>;
>  			next-level-cache = <&L2_3>;
>  		};
>  	};
> -- 
> 1.8.0
> 
> 
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-25 20:11 ` Grant Likely
@ 2013-10-28  2:20   ` Tang Yuantian-B29983
  0 siblings, 0 replies; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-28  2:20 UTC (permalink / raw)
  To: Grant Likely, galak; +Cc: devicetree, linuxppc-dev

> > +1. Clock Block Binding
> > +
> > +Required properties:
> > +- compatible: Should include one or more of the following:
> > +	- "fsl,<chip>-clockgen": for chip specific clock block
> > +	- "fsl,qoriq-clockgen-[1,2].x": for chassis 1.x and 2.x clock
> > +- reg: Offset and length of the clock register set
> > +- clock-frequency: Indicates input clock frequency of clock block.
> > +	Will be set by u-boot
> > +
> > +Recommended properties:
> > +- #ddress-cells: Specifies the number of cells used to represent
>=20
> typo
Thanks, someone else already pointed out it. Will fix in next patch.

Regards,
Yuantian

>=20
> > +	physical base addresses.  Must be present if the device has
> > +	sub-nodes and set to 1 if present
> > +- #size-cells: Specifies the number of cells used to represent
> > +	the size of an address. Must be present if the device has
> > +	sub-nodes and set to 1 if present
> > +
> > +2. Clock Provider/Consumer Binding
> > +
> > +Most of the binding are from the common clock binding[1].
> > + [1] Documentation/devicetree/bindings/clock/clock-bindings.txt
> > +
> > +Required properties:
> > +- compatible : Should include one or more of the following:
> > +	- "fsl,qoriq-core-pll-[1,2].x": Indicates a core PLL clock device
> > +	- "fsl,qoriq-core-mux-[1,2].x": Indicates a core multiplexer clock
> > +		device; divided from the core PLL clock
> > +	- "fixed-clock": From common clock binding; indicates output clock
> > +		of oscillator
> > +	- "fsl,qoriq-sysclk-[1,2].x": Indicates input system clock
> > +- #clock-cells: From common clock binding; indicates the number of
> > +	output clock. 0 is for one output clock; 1 for more than one clock
> > +
> > +Recommended properties:
> > +- clocks: Should be the phandle of input parent clock
> > +- clock-names: From common clock binding, indicates the clock name
> > +- clock-output-names: From common clock binding, indicates the names
> of
> > +	output clocks
> > +- reg: Should be the offset and length of clock block base address.
> > +	The length should be 4.
>=20
> Binding looks reasonable to me.
>=20
> g.
>=20
> > +
> > +Example for clock block and clock provider:
> > +/ {
> > +	clockgen: global-utilities@e1000 {
> > +		compatible =3D "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
> > +		reg =3D <0xe1000 0x1000>;
> > +		clock-frequency =3D <0>;
> > +		#address-cells =3D <1>;
> > +		#size-cells =3D <1>;
> > +
> > +		sysclk: sysclk {
> > +			#clock-cells =3D <0>;
> > +			compatible =3D "fsl,qoriq-sysclk-1.0", "fixed-clock";
> > +			clock-output-names =3D "sysclk";
> > +		}
> > +
> > +		pll0: pll0@800 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x800 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll0", "pll0-div2";
> > +		};
> > +
> > +		pll1: pll1@820 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x820 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll1", "pll1-div2";
> > +		};
> > +
> > +		mux0: mux0@0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux0";
> > +		};
> > +
> > +		mux1: mux1@20 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x20 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux1";
> > +		};
> > +	};
> > +  }
> > +
> > +Example for clock consumer:
> > +
> > +/ {
> > +	cpu0: PowerPC,e5500@0 {
> > +		...
> > +		clocks =3D <&mux0>;
> > +		...
> > +	};
> > +  }
> > diff --git a/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi
> > b/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi
> > index 5a6615d..e910e82 100644
> > --- a/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi
> > @@ -86,6 +86,41 @@
> >
> >  	clockgen: global-utilities@e1000 {
> >  		compatible =3D "fsl,b4420-clockgen", "fsl,qoriq-clockgen-2.0";
> > +		#address-cells =3D <1>;
> > +		#size-cells =3D <1>;
> > +
> > +		sysclk: sysclk {
> > +			#clock-cells =3D <0>;
> > +			compatible =3D "fsl,qoriq-sysclk-2.0", "fixed-clock";
> > +			clock-output-names =3D "sysclk";
> > +		}
> > +
> > +		pll0: pll0@800 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x800 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-2.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll0", "pll0-div2", "pll0-div4";
> > +		};
> > +
> > +		pll1: pll1@820 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x820 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-2.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll1", "pll1-div2", "pll1-div4";
> > +		};
> > +
> > +		mux0: mux0@0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-2.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll0 2>,
> > +				 <&pll1 0>, <&pll1 1>, <&pll1 2>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll0_2",
> > +				"pll1_0", "pll1_1", "pll1_2";
> > +			clock-output-names =3D "cmux0";
> > +		};
> >  	};
> >
> >  	rcpm: global-utilities@e2000 {
> > diff --git a/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi
> > b/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi
> > index 7b4426e..a11126b 100644
> > --- a/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi
> > @@ -62,11 +62,13 @@
> >  		cpu0: PowerPC,e6500@0 {
> >  			device_type =3D "cpu";
> >  			reg =3D <0 1>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2>;
> >  		};
> >  		cpu1: PowerPC,e6500@2 {
> >  			device_type =3D "cpu";
> >  			reg =3D <2 3>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2>;
> >  		};
> >  	};
> > diff --git a/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi
> > b/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi
> > index e5cf6c8..5cfcfe4 100644
> > --- a/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi
> > @@ -130,6 +130,41 @@
> >
> >  	clockgen: global-utilities@e1000 {
> >  		compatible =3D "fsl,b4860-clockgen", "fsl,qoriq-clockgen-2.0";
> > +		#address-cells =3D <1>;
> > +		#size-cells =3D <1>;
> > +
> > +		sysclk: sysclk {
> > +			#clock-cells =3D <0>;
> > +			compatible =3D "fsl,qoriq-sysclk-2.0", "fixed-clock";
> > +			clock-output-names =3D "sysclk";
> > +		}
> > +
> > +		pll0: pll0@800 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x800 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-2.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll0", "pll0-div2", "pll0-div4";
> > +		};
> > +
> > +		pll1: pll1@820 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x820 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-2.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll1", "pll1-div2", "pll1-div4";
> > +		};
> > +
> > +		mux0: mux0@0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-2.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll0 2>,
> > +				 <&pll1 0>, <&pll1 1>, <&pll1 2>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll0_2",
> > +				"pll1_0", "pll1_1", "pll1_2";
> > +			clock-output-names =3D "cmux0";
> > +		};
> >  	};
> >
> >  	rcpm: global-utilities@e2000 {
> > diff --git a/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi
> > b/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi
> > index 5263fa4..185a231 100644
> > --- a/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi
> > @@ -62,21 +62,25 @@
> >  		cpu0: PowerPC,e6500@0 {
> >  			device_type =3D "cpu";
> >  			reg =3D <0 1>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2>;
> >  		};
> >  		cpu1: PowerPC,e6500@2 {
> >  			device_type =3D "cpu";
> >  			reg =3D <2 3>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2>;
> >  		};
> >  		cpu2: PowerPC,e6500@4 {
> >  			device_type =3D "cpu";
> >  			reg =3D <4 5>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2>;
> >  		};
> >  		cpu3: PowerPC,e6500@6 {
> >  			device_type =3D "cpu";
> >  			reg =3D <6 7>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2>;
> >  		};
> >  	};
> > diff --git a/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
> > b/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
> > index dc6cc5a..f3f7f65 100644
> > --- a/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
> > @@ -308,6 +308,66 @@
> >  		compatible =3D "fsl,p2041-clockgen", "fsl,qoriq-clockgen-1.0";
> >  		reg =3D <0xe1000 0x1000>;
> >  		clock-frequency =3D <0>;
> > +		#address-cells =3D <1>;
> > +		#size-cells =3D <1>;
> > +
> > +		sysclk: sysclk {
> > +			#clock-cells =3D <0>;
> > +			compatible =3D "fsl,qoriq-sysclk-1.0", "fixed-clock";
> > +			clock-output-names =3D "sysclk";
> > +		}
> > +
> > +		pll0: pll0@800 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x800 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll0", "pll0-div2";
> > +		};
> > +
> > +		pll1: pll1@820 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x820 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll1", "pll1-div2";
> > +		};
> > +
> > +		mux0: mux0@0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux0";
> > +		};
> > +
> > +		mux1: mux1@20 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x20 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux1";
> > +		};
> > +
> > +		mux2: mux2@40 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x40 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux2";
> > +		};
> > +
> > +		mux3: mux3@60 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x60 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux3";
> > +		};
> >  	};
> >
> >  	rcpm: global-utilities@e2000 {
> > diff --git a/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi
> > b/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi
> > index 7a2697d..22f3b14 100644
> > --- a/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi
> > @@ -81,6 +81,7 @@
> >  		cpu0: PowerPC,e500mc@0 {
> >  			device_type =3D "cpu";
> >  			reg =3D <0>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2_0>;
> >  			L2_0: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -89,6 +90,7 @@
> >  		cpu1: PowerPC,e500mc@1 {
> >  			device_type =3D "cpu";
> >  			reg =3D <1>;
> > +			clocks =3D <&mux1>;
> >  			next-level-cache =3D <&L2_1>;
> >  			L2_1: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -97,6 +99,7 @@
> >  		cpu2: PowerPC,e500mc@2 {
> >  			device_type =3D "cpu";
> >  			reg =3D <2>;
> > +			clocks =3D <&mux2>;
> >  			next-level-cache =3D <&L2_2>;
> >  			L2_2: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -105,6 +108,7 @@
> >  		cpu3: PowerPC,e500mc@3 {
> >  			device_type =3D "cpu";
> >  			reg =3D <3>;
> > +			clocks =3D <&mux3>;
> >  			next-level-cache =3D <&L2_3>;
> >  			L2_3: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > diff --git a/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
> > b/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
> > index 3fa1e22..9bab9c9 100644
> > --- a/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
> > @@ -335,6 +335,66 @@
> >  		compatible =3D "fsl,p3041-clockgen", "fsl,qoriq-clockgen-1.0";
> >  		reg =3D <0xe1000 0x1000>;
> >  		clock-frequency =3D <0>;
> > +		#address-cells =3D <1>;
> > +		#size-cells =3D <1>;
> > +
> > +		sysclk: sysclk {
> > +			#clock-cells =3D <0>;
> > +			compatible =3D "fsl,qoriq-sysclk-1.0", "fixed-clock";
> > +			clock-output-names =3D "sysclk";
> > +		}
> > +
> > +		pll0: pll0@800 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x800 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll0", "pll0-div2";
> > +		};
> > +
> > +		pll1: pll1@820 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x820 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll1", "pll1-div2";
> > +		};
> > +
> > +		mux0: mux0@0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux0";
> > +		};
> > +
> > +		mux1: mux1@20 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x20 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux1";
> > +		};
> > +
> > +		mux2: mux2@40 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x40 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux2";
> > +		};
> > +
> > +		mux3: mux3@60 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x60 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux3";
> > +		};
> >  	};
> >
> >  	rcpm: global-utilities@e2000 {
> > diff --git a/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi
> > b/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi
> > index c9ca2c3..468e8be 100644
> > --- a/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi
> > @@ -82,6 +82,7 @@
> >  		cpu0: PowerPC,e500mc@0 {
> >  			device_type =3D "cpu";
> >  			reg =3D <0>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2_0>;
> >  			L2_0: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -90,6 +91,7 @@
> >  		cpu1: PowerPC,e500mc@1 {
> >  			device_type =3D "cpu";
> >  			reg =3D <1>;
> > +			clocks =3D <&mux1>;
> >  			next-level-cache =3D <&L2_1>;
> >  			L2_1: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -98,6 +100,7 @@
> >  		cpu2: PowerPC,e500mc@2 {
> >  			device_type =3D "cpu";
> >  			reg =3D <2>;
> > +			clocks =3D <&mux2>;
> >  			next-level-cache =3D <&L2_2>;
> >  			L2_2: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -106,6 +109,7 @@
> >  		cpu3: PowerPC,e500mc@3 {
> >  			device_type =3D "cpu";
> >  			reg =3D <3>;
> > +			clocks =3D <&mux3>;
> >  			next-level-cache =3D <&L2_3>;
> >  			L2_3: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > diff --git a/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
> > b/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
> > index 34769a7..2108269 100644
> > --- a/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
> > @@ -355,6 +355,118 @@
> >  		compatible =3D "fsl,p4080-clockgen", "fsl,qoriq-clockgen-1.0";
> >  		reg =3D <0xe1000 0x1000>;
> >  		clock-frequency =3D <0>;
> > +		#address-cells =3D <1>;
> > +		#size-cells =3D <1>;
> > +
> > +		sysclk: sysclk {
> > +			#clock-cells =3D <0>;
> > +			compatible =3D "fsl,qoriq-sysclk-1.0", "fixed-clock";
> > +			clock-output-names =3D "sysclk";
> > +		}
> > +
> > +		pll0: pll0@800 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x800 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll0", "pll0-div2";
> > +		};
> > +
> > +		pll1: pll1@820 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x820 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll1", "pll1-div2";
> > +		};
> > +
> > +		pll2: pll2@840 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x840 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll2", "pll2-div2";
> > +		};
> > +
> > +		pll3: pll3@860 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x860 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll3", "pll3-div2";
> > +		};
> > +
> > +		mux0: mux0@0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux0";
> > +		};
> > +
> > +		mux1: mux1@20 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x20 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux1";
> > +		};
> > +
> > +		mux2: mux2@40 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x40 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux2";
> > +		};
> > +
> > +		mux3: mux3@60 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x60 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux3";
> > +		};
> > +
> > +		mux4: mux4@80 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x80 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
> > +			clock-names =3D "pll2_0", "pll2_1", "pll3_0", "pll3_1";
> > +			clock-output-names =3D "cmux4";
> > +		};
> > +
> > +		mux5: mux5@a0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0xa0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
> > +			clock-names =3D "pll2_0", "pll2_1", "pll3_0", "pll3_1";
> > +			clock-output-names =3D "cmux5";
> > +		};
> > +
> > +		mux6: mux6@c0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0xc0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
> > +			clock-names =3D "pll2_0", "pll2_1", "pll3_0", "pll3_1";
> > +			clock-output-names =3D "cmux6";
> > +		};
> > +
> > +		mux7: mux7@e0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0xe0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>;
> > +			clock-names =3D "pll2_0", "pll2_1", "pll3_0", "pll3_1";
> > +			clock-output-names =3D "cmux7";
> > +		};
> >  	};
> >
> >  	rcpm: global-utilities@e2000 {
> > diff --git a/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi
> > b/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi
> > index 493d9a0..0040b5a 100644
> > --- a/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi
> > @@ -81,6 +81,7 @@
> >  		cpu0: PowerPC,e500mc@0 {
> >  			device_type =3D "cpu";
> >  			reg =3D <0>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2_0>;
> >  			L2_0: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -89,6 +90,7 @@
> >  		cpu1: PowerPC,e500mc@1 {
> >  			device_type =3D "cpu";
> >  			reg =3D <1>;
> > +			clocks =3D <&mux1>;
> >  			next-level-cache =3D <&L2_1>;
> >  			L2_1: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -97,6 +99,7 @@
> >  		cpu2: PowerPC,e500mc@2 {
> >  			device_type =3D "cpu";
> >  			reg =3D <2>;
> > +			clocks =3D <&mux2>;
> >  			next-level-cache =3D <&L2_2>;
> >  			L2_2: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -105,6 +108,7 @@
> >  		cpu3: PowerPC,e500mc@3 {
> >  			device_type =3D "cpu";
> >  			reg =3D <3>;
> > +			clocks =3D <&mux3>;
> >  			next-level-cache =3D <&L2_3>;
> >  			L2_3: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -113,6 +117,7 @@
> >  		cpu4: PowerPC,e500mc@4 {
> >  			device_type =3D "cpu";
> >  			reg =3D <4>;
> > +			clocks =3D <&mux4>;
> >  			next-level-cache =3D <&L2_4>;
> >  			L2_4: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -121,6 +126,7 @@
> >  		cpu5: PowerPC,e500mc@5 {
> >  			device_type =3D "cpu";
> >  			reg =3D <5>;
> > +			clocks =3D <&mux5>;
> >  			next-level-cache =3D <&L2_5>;
> >  			L2_5: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -129,6 +135,7 @@
> >  		cpu6: PowerPC,e500mc@6 {
> >  			device_type =3D "cpu";
> >  			reg =3D <6>;
> > +			clocks =3D <&mux6>;
> >  			next-level-cache =3D <&L2_6>;
> >  			L2_6: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -137,6 +144,7 @@
> >  		cpu7: PowerPC,e500mc@7 {
> >  			device_type =3D "cpu";
> >  			reg =3D <7>;
> > +			clocks =3D <&mux7>;
> >  			next-level-cache =3D <&L2_7>;
> >  			L2_7: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > diff --git a/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
> > b/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
> > index bc3ae5a..e09f8cd 100644
> > --- a/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
> > @@ -340,6 +340,48 @@
> >  		compatible =3D "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
> >  		reg =3D <0xe1000 0x1000>;
> >  		clock-frequency =3D <0>;
> > +		#address-cells =3D <1>;
> > +		#size-cells =3D <1>;
> > +
> > +		sysclk: sysclk {
> > +			#clock-cells =3D <0>;
> > +			compatible =3D "fsl,qoriq-sysclk-1.0", "fixed-clock";
> > +			clock-output-names =3D "sysclk";
> > +		}
> > +
> > +		pll0: pll0@800 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x800 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll0", "pll0-div2";
> > +		};
> > +
> > +		pll1: pll1@820 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x820 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll1", "pll1-div2";
> > +		};
> > +
> > +		mux0: mux0@0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux0";
> > +		};
> > +
> > +		mux1: mux1@20 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x20 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux1";
> > +		};
> >  	};
> >
> >  	rcpm: global-utilities@e2000 {
> > diff --git a/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
> > b/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
> > index 8df47fc..fe1a2e6 100644
> > --- a/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
> > @@ -88,6 +88,7 @@
> >  		cpu0: PowerPC,e5500@0 {
> >  			device_type =3D "cpu";
> >  			reg =3D <0>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2_0>;
> >  			L2_0: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -96,6 +97,7 @@
> >  		cpu1: PowerPC,e5500@1 {
> >  			device_type =3D "cpu";
> >  			reg =3D <1>;
> > +			clocks =3D <&mux1>;
> >  			next-level-cache =3D <&L2_1>;
> >  			L2_1: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > diff --git a/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi
> > b/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi
> > index a91897f..109f132 100644
> > --- a/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi
> > @@ -300,6 +300,66 @@
> >  		compatible =3D "fsl,p5040-clockgen", "fsl,qoriq-clockgen-1.0";
> >  		reg =3D <0xe1000 0x1000>;
> >  		clock-frequency =3D <0>;
> > +		#address-cells =3D <1>;
> > +		#size-cells =3D <1>;
> > +
> > +		sysclk: sysclk {
> > +			#clock-cells =3D <0>;
> > +			compatible =3D "fsl,qoriq-sysclk-1.0", "fixed-clock";
> > +			clock-output-names =3D "sysclk";
> > +		}
> > +
> > +		pll0: pll0@800 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x800 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll0", "pll0-div2";
> > +		};
> > +
> > +		pll1: pll1@820 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x820 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-1.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll1", "pll1-div2";
> > +		};
> > +
> > +		mux0: mux0@0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux0";
> > +		};
> > +
> > +		mux1: mux1@20 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x20 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux1";
> > +		};
> > +
> > +		mux2: mux2@40 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x40 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux2";
> > +		};
> > +
> > +		mux3: mux3@60 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x60 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-1.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll1_0", "pll1_1";
> > +			clock-output-names =3D "cmux3";
> > +		};
> >  	};
> >
> >  	rcpm: global-utilities@e2000 {
> > diff --git a/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi
> > b/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi
> > index 40ca943..3674686 100644
> > --- a/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi
> > @@ -81,6 +81,7 @@
> >  		cpu0: PowerPC,e5500@0 {
> >  			device_type =3D "cpu";
> >  			reg =3D <0>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2_0>;
> >  			L2_0: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -89,6 +90,7 @@
> >  		cpu1: PowerPC,e5500@1 {
> >  			device_type =3D "cpu";
> >  			reg =3D <1>;
> > +			clocks =3D <&mux1>;
> >  			next-level-cache =3D <&L2_1>;
> >  			L2_1: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -97,6 +99,7 @@
> >  		cpu2: PowerPC,e5500@2 {
> >  			device_type =3D "cpu";
> >  			reg =3D <2>;
> > +			clocks =3D <&mux2>;
> >  			next-level-cache =3D <&L2_2>;
> >  			L2_2: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > @@ -105,6 +108,7 @@
> >  		cpu3: PowerPC,e5500@3 {
> >  			device_type =3D "cpu";
> >  			reg =3D <3>;
> > +			clocks =3D <&mux3>;
> >  			next-level-cache =3D <&L2_3>;
> >  			L2_3: l2-cache {
> >  				next-level-cache =3D <&cpc>;
> > diff --git a/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi
> > b/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi
> > index 510afa3..d45434f 100644
> > --- a/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi
> > @@ -370,6 +370,91 @@
> >  	clockgen: global-utilities@e1000 {
> >  		compatible =3D "fsl,t4240-clockgen", "fsl,qoriq-clockgen-2.0";
> >  		reg =3D <0xe1000 0x1000>;
> > +		#address-cells =3D <1>;
> > +		#size-cells =3D <1>;
> > +
> > +		sysclk: sysclk {
> > +			#clock-cells =3D <0>;
> > +			compatible =3D "fsl,qoriq-sysclk-2.0", "fixed-clock";
> > +			clock-output-names =3D "sysclk";
> > +		}
> > +
> > +		pll0: pll0@800 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x800 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-2.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll0", "pll0-div2", "pll0-div4";
> > +		};
> > +
> > +		pll1: pll1@820 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x820 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-2.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll1", "pll1-div2", "pll1-div4";
> > +		};
> > +
> > +		pll2: pll2@840 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x840 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-2.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll2", "pll2-div2", "pll2-div4";
> > +		};
> > +
> > +		pll3: pll3@860 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x860 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-2.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll3", "pll3-div2", "pll3-div4";
> > +		};
> > +
> > +		pll4: pll4@880 {
> > +			#clock-cells =3D <1>;
> > +			reg =3D <0x880 0x4>;
> > +			compatible =3D "fsl,qoriq-core-pll-2.0";
> > +			clocks =3D <&sysclk>;
> > +			clock-output-names =3D "pll4", "pll4-div2", "pll4-div4";
> > +		};
> > +
> > +		mux0: mux0@0 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x0 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-2.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll0 2>,
> > +				 <&pll1 0>, <&pll1 1>, <&pll1 2>,
> > +				 <&pll2 0>, <&pll2 1>, <&pll2 2>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll0_2",
> > +				"pll1_0", "pll1_1", "pll1_2",
> > +				"pll2_0", "pll2_1", "pll2_2";
> > +			clock-output-names =3D "cmux0";
> > +		};
> > +
> > +		mux1: mux1@20 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x20 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-2.0";
> > +			clocks =3D <&pll0 0>, <&pll0 1>, <&pll0 2>,
> > +				 <&pll1 0>, <&pll1 1>, <&pll1 2>,
> > +				 <&pll2 0>, <&pll2 1>, <&pll2 2>;
> > +			clock-names =3D "pll0_0", "pll0_1", "pll0_2",
> > +				"pll1_0", "pll1_1", "pll1_2",
> > +				"pll2_0", "pll2_1", "pll2_2";
> > +			clock-output-names =3D "cmux1";
> > +		};
> > +
> > +		mux2: mux2@40 {
> > +			#clock-cells =3D <0>;
> > +			reg =3D <0x40 0x4>;
> > +			compatible =3D "fsl,qoriq-core-mux-2.0";
> > +			clocks =3D <&pll3 0>, <&pll3 1>, <&pll3 2>,
> > +				 <&pll4 0>, <&pll4 1>, <&pll4 2>;
> > +			clock-names =3D "pll3_0", "pll3_1", "pll3_2",
> > +				"pll4_0", "pll4_1", "pll4_2";
> > +			clock-output-names =3D "cmux2";
> > +		};
> >  	};
> >
> >  	rcpm: global-utilities@e2000 {
> > diff --git a/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi
> > b/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi
> > index a93c55a..0b8ccc5 100644
> > --- a/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi
> > @@ -67,61 +67,73 @@
> >  		cpu0: PowerPC,e6500@0 {
> >  			device_type =3D "cpu";
> >  			reg =3D <0 1>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2_1>;
> >  		};
> >  		cpu1: PowerPC,e6500@2 {
> >  			device_type =3D "cpu";
> >  			reg =3D <2 3>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2_1>;
> >  		};
> >  		cpu2: PowerPC,e6500@4 {
> >  			device_type =3D "cpu";
> >  			reg =3D <4 5>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2_1>;
> >  		};
> >  		cpu3: PowerPC,e6500@6 {
> >  			device_type =3D "cpu";
> >  			reg =3D <6 7>;
> > +			clocks =3D <&mux0>;
> >  			next-level-cache =3D <&L2_1>;
> >  		};
> >  		cpu4: PowerPC,e6500@8 {
> >  			device_type =3D "cpu";
> >  			reg =3D <8 9>;
> > +			clocks =3D <&mux1>;
> >  			next-level-cache =3D <&L2_2>;
> >  		};
> >  		cpu5: PowerPC,e6500@10 {
> >  			device_type =3D "cpu";
> >  			reg =3D <10 11>;
> > +			clocks =3D <&mux1>;
> >  			next-level-cache =3D <&L2_2>;
> >  		};
> >  		cpu6: PowerPC,e6500@12 {
> >  			device_type =3D "cpu";
> >  			reg =3D <12 13>;
> > +			clocks =3D <&mux1>;
> >  			next-level-cache =3D <&L2_2>;
> >  		};
> >  		cpu7: PowerPC,e6500@14 {
> >  			device_type =3D "cpu";
> >  			reg =3D <14 15>;
> > +			clocks =3D <&mux1>;
> >  			next-level-cache =3D <&L2_2>;
> >  		};
> >  		cpu8: PowerPC,e6500@16 {
> >  			device_type =3D "cpu";
> >  			reg =3D <16 17>;
> > +			clocks =3D <&mux2>;
> >  			next-level-cache =3D <&L2_3>;
> >  		};
> >  		cpu9: PowerPC,e6500@18 {
> >  			device_type =3D "cpu";
> >  			reg =3D <18 19>;
> > +			clocks =3D <&mux2>;
> >  			next-level-cache =3D <&L2_3>;
> >  		};
> >  		cpu10: PowerPC,e6500@20 {
> >  			device_type =3D "cpu";
> >  			reg =3D <20 21>;
> > +			clocks =3D <&mux2>;
> >  			next-level-cache =3D <&L2_3>;
> >  		};
> >  		cpu11: PowerPC,e6500@22 {
> >  			device_type =3D "cpu";
> >  			reg =3D <22 23>;
> > +			clocks =3D <&mux2>;
> >  			next-level-cache =3D <&L2_3>;
> >  		};
> >  	};
> > --
> > 1.8.0
> >
> >
> > _______________________________________________
> > Linuxppc-dev mailing list
> > Linuxppc-dev@lists.ozlabs.org
> > https://lists.ozlabs.org/listinfo/linuxppc-dev
>=20

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-21  2:55                             ` Tang Yuantian-B29983
@ 2013-10-29  3:26                               ` Scott Wood
  2013-10-29  6:50                                 ` Tang Yuantian-B29983
  0 siblings, 1 reply; 25+ messages in thread
From: Scott Wood @ 2013-10-29  3:26 UTC (permalink / raw)
  To: Tang Yuantian-B29983
  Cc: Mark Rutland, Wood Scott-B07421, linuxppc-dev,
	Li Yang-Leo-R58472, devicetree

On Sun, 2013-10-20 at 21:55 -0500, Tang Yuantian-B29983 wrote:
> I didn't see how your suggestion is a better matching.
> 
>  OSC ----> PLL1 ----> mux ----> CPU
>       |           |
>       |--> PLL2 --| 
>         ........
> As your suggestion, the clock tree looks like the above.
> In this case, the MUX driver will not know the divider
> details(/2, /4, or /3).

When is there ever a /3?

> I think the MUX should act like "switch" which choose one
> of the input clock as a output clock. It should not CREATE
> clock(like PLL1/2, PLL1/4).
> The purpose of clock driver is to establish the clock tree.
> The clock tree will not be established in your suggestion
> because the divider is missing, we don't know where PLL/2 comes from.
> 
> If you really like your proposal, it should be changed to this:
> 
> OSC ------> PLL1 -----> PLL1 /1 ---------> MUX ------->CPU
>      |            |___> PLL1 /2 _______|
>      |                                 |
>      |____> PLL2 -----> PLL2 /2 -------|
>                   |___> PLL2/ 4 _______|
> 
> (it is possible that PLLs have different divider).

Do we actually have (or expect) a situation where the PLLs have
different dividers, or even where the same bit setting in the MUX
register means a different divider from one chip to another (within the
same MUX compatible string)?  If so, then I agree that we should go with
your approach.

The way Freescale documents things in chip manuals rather than in block
manuals, with little bits of information different in each chip manual,
makes it hard to figure out this sort of thing.  From the examples I
looked at, it seemed pretty consistent that the low 2 bits of CLKSEL in
the MUX were the log2 of the divider.  Are there any chips that don't
adhere to this?

-Scott

^ permalink raw reply	[flat|nested] 25+ messages in thread

* RE: [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree
  2013-10-29  3:26                               ` Scott Wood
@ 2013-10-29  6:50                                 ` Tang Yuantian-B29983
  0 siblings, 0 replies; 25+ messages in thread
From: Tang Yuantian-B29983 @ 2013-10-29  6:50 UTC (permalink / raw)
  To: Wood Scott-B07421
  Cc: Mark Rutland, devicetree, linuxppc-dev, Li Yang-Leo-R58472

VGhhbmtzIGZvciB5b3VyIHJldmlldy4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K
PiBGcm9tOiBXb29kIFNjb3R0LUIwNzQyMQ0KPiBTZW50OiAyMDEz5bm0MTDmnIgyOeaXpSDmmJ/m
nJ/kuowgMTE6MjYNCj4gVG86IFRhbmcgWXVhbnRpYW4tQjI5OTgzDQo+IENjOiBXb29kIFNjb3R0
LUIwNzQyMTsgTWFyayBSdXRsYW5kOyBkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZzsNCj4gbGlu
dXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7IExpIFlhbmctTGVvLVI1ODQ3Mg0KPiBTdWJqZWN0
OiBSZTogW1BBVENIIHY1XSBwb3dlcnBjL21wYzg1eHg6IFVwZGF0ZSB0aGUgY2xvY2sgbm9kZXMg
aW4gZGV2aWNlDQo+IHRyZWUNCj4gDQo+IE9uIFN1biwgMjAxMy0xMC0yMCBhdCAyMTo1NSAtMDUw
MCwgVGFuZyBZdWFudGlhbi1CMjk5ODMgd3JvdGU6DQo+ID4gSSBkaWRuJ3Qgc2VlIGhvdyB5b3Vy
IHN1Z2dlc3Rpb24gaXMgYSBiZXR0ZXIgbWF0Y2hpbmcuDQo+ID4NCj4gPiAgT1NDIC0tLS0+IFBM
TDEgLS0tLT4gbXV4IC0tLS0+IENQVQ0KPiA+ICAgICAgIHwgICAgICAgICAgIHwNCj4gPiAgICAg
ICB8LS0+IFBMTDIgLS18DQo+ID4gICAgICAgICAuLi4uLi4uLg0KPiA+IEFzIHlvdXIgc3VnZ2Vz
dGlvbiwgdGhlIGNsb2NrIHRyZWUgbG9va3MgbGlrZSB0aGUgYWJvdmUuDQo+ID4gSW4gdGhpcyBj
YXNlLCB0aGUgTVVYIGRyaXZlciB3aWxsIG5vdCBrbm93IHRoZSBkaXZpZGVyIGRldGFpbHMoLzIs
IC80LA0KPiA+IG9yIC8zKS4NCj4gDQo+IFdoZW4gaXMgdGhlcmUgZXZlciBhIC8zPw0KPiANCkZv
ciBUNCwgdGhlcmUgaXMgYSAvMywgYnV0IGl0IGlzIHVzZWQgYnkgUE1FIG5vdCBDUFUuDQoNCg0K
PiA+IEkgdGhpbmsgdGhlIE1VWCBzaG91bGQgYWN0IGxpa2UgInN3aXRjaCIgd2hpY2ggY2hvb3Nl
IG9uZSBvZiB0aGUgaW5wdXQNCj4gPiBjbG9jayBhcyBhIG91dHB1dCBjbG9jay4gSXQgc2hvdWxk
IG5vdCBDUkVBVEUgY2xvY2sobGlrZSBQTEwxLzIsDQo+ID4gUExMMS80KS4NCj4gPiBUaGUgcHVy
cG9zZSBvZiBjbG9jayBkcml2ZXIgaXMgdG8gZXN0YWJsaXNoIHRoZSBjbG9jayB0cmVlLg0KPiA+
IFRoZSBjbG9jayB0cmVlIHdpbGwgbm90IGJlIGVzdGFibGlzaGVkIGluIHlvdXIgc3VnZ2VzdGlv
biBiZWNhdXNlIHRoZQ0KPiA+IGRpdmlkZXIgaXMgbWlzc2luZywgd2UgZG9uJ3Qga25vdyB3aGVy
ZSBQTEwvMiBjb21lcyBmcm9tLg0KPiA+DQo+ID4gSWYgeW91IHJlYWxseSBsaWtlIHlvdXIgcHJv
cG9zYWwsIGl0IHNob3VsZCBiZSBjaGFuZ2VkIHRvIHRoaXM6DQo+ID4NCj4gPiBPU0MgLS0tLS0t
PiBQTEwxIC0tLS0tPiBQTEwxIC8xIC0tLS0tLS0tLT4gTVVYIC0tLS0tLS0+Q1BVDQo+ID4gICAg
ICB8ICAgICAgICAgICAgfF9fXz4gUExMMSAvMiBfX19fX19ffA0KPiA+ICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPiAgICAgIHxfX19fPiBQTEwyIC0tLS0tPiBQ
TEwyIC8yIC0tLS0tLS18DQo+ID4gICAgICAgICAgICAgICAgICAgfF9fXz4gUExMMi8gNCBfX19f
X19ffA0KPiA+DQo+ID4gKGl0IGlzIHBvc3NpYmxlIHRoYXQgUExMcyBoYXZlIGRpZmZlcmVudCBk
aXZpZGVyKS4NCj4gDQo+IERvIHdlIGFjdHVhbGx5IGhhdmUgKG9yIGV4cGVjdCkgYSBzaXR1YXRp
b24gd2hlcmUgdGhlIFBMTHMgaGF2ZSBkaWZmZXJlbnQNCj4gZGl2aWRlcnMsIG9yIGV2ZW4gd2hl
cmUgdGhlIHNhbWUgYml0IHNldHRpbmcgaW4gdGhlIE1VWCByZWdpc3RlciBtZWFucyBhDQo+IGRp
ZmZlcmVudCBkaXZpZGVyIGZyb20gb25lIGNoaXAgdG8gYW5vdGhlciAod2l0aGluIHRoZSBzYW1l
IE1VWA0KPiBjb21wYXRpYmxlIHN0cmluZyk/ICBJZiBzbywgdGhlbiBJIGFncmVlIHRoYXQgd2Ug
c2hvdWxkIGdvIHdpdGggeW91cg0KPiBhcHByb2FjaC4NCj4gDQpGb3IgYSBzcGVjaWZpYyBjaGlw
LCB0aGUgZGl2aWRlcnMgYXJlIHNhbWUgZm9yIGVhY2ggUExMLg0KQnV0IENQVSBtYXkgdXNlIE9O
TFkgb25lIG9mIHRoZSBkaXZpZGVycyBvZiBhIFBMTC4NCkZvciBleGFtcGxlLCBvbiBwNDA4MCwg
Y29yZTAtMyBtYXkgdXNlIFBMTDMvMSwgYnV0IGRvIG5vdCB1c2UgUExMMy8yLg0KKEkgZGlkbid0
IGRlYWwgd2l0aCB0aGlzIHNpdHVhdGlvbiBpbiBkcml2ZXIgZWl0aGVyIGJlY2F1c2UgdGhlcmUg
YXJlIGxpbWl0YXRpb25zIHRvIHVzZSBpdCkuDQoNCj4gVGhlIHdheSBGcmVlc2NhbGUgZG9jdW1l
bnRzIHRoaW5ncyBpbiBjaGlwIG1hbnVhbHMgcmF0aGVyIHRoYW4gaW4gYmxvY2sNCj4gbWFudWFs
cywgd2l0aCBsaXR0bGUgYml0cyBvZiBpbmZvcm1hdGlvbiBkaWZmZXJlbnQgaW4gZWFjaCBjaGlw
IG1hbnVhbCwNCj4gbWFrZXMgaXQgaGFyZCB0byBmaWd1cmUgb3V0IHRoaXMgc29ydCBvZiB0aGlu
Zy4gIEZyb20gdGhlIGV4YW1wbGVzIEkNCj4gbG9va2VkIGF0LCBpdCBzZWVtZWQgcHJldHR5IGNv
bnNpc3RlbnQgdGhhdCB0aGUgbG93IDIgYml0cyBvZiBDTEtTRUwgaW4NCj4gdGhlIE1VWCB3ZXJl
IHRoZSBsb2cyIG9mIHRoZSBkaXZpZGVyLiAgQXJlIHRoZXJlIGFueSBjaGlwcyB0aGF0IGRvbid0
DQo+IGFkaGVyZSB0byB0aGlzPw0KPiANCllvdXIgb2JzZXJ2YXRpb24gaXMgY29ycmVjdCB1bnRp
bCB0aGVuLiBCdXQgdGhlcmUgaXMgbm8gcnVsZSBvbiB0aGlzIG9mZmljaWFsbHkuDQoNCk5vdyBJ
IHdhbnQgdG8gc3VtbWFyeSB0aGUgcHJvcyBhbmQgY29ucyBvZiB5b3VyIHN1Z2dlc3Rpb246DQpU
aGUgcHJvczoNCjEuIHRoZSBkZXZpY2UgdHJlZSB3b3VsZCBiZSBzaW1wbGVyLg0KDQpUaGUgY29u
czoNCjEuIGNhbm5vdCBnZXQgdGhlIHdob2xlIGNsb2NrIHRyZWUgcGljdHVyZSBiZWNhdXNlIGRp
dmlkZXJzIGFyZSBoaWRkZW4gaW4gZHJpdmVyLg0KMi4gbm8gd2F5IHRvIGRlYWwgd2l0aCB0aGUg
dXNlIGNhc2Ugb24gcDQwODANCjMuIG5lZWQgdG8gZGVhbCB3aXRoIGVhY2ggPGNoaXA+LWNsb2Nr
Z2VuIGNvbXBhdGlibGUgc3RyaW5nIGFuZCBwYXNzIGEgcGFyYW1ldGVyDQogICB0byB0ZWxsIGl0
IHdoYXQgdGhlIGRpdmlkZXIgaXMuIA0KNC4gdGhlICJsb2cyIHJ1bGUiIGNvdWxkIGJlIGluY29y
cmVjdCBpbiBmdXR1cmUsIHNheSwgd2UgaGF2ZSBhIGRpdmlkZXIgb2YgLzUuDQoNCkFueSB0aG91
Z2h0cyBvbiB0aGlzPw0KDQpSZWdhcmRzLA0KWXVhbnRpYW4NCg==

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2013-10-29  6:51 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-09  6:38 [PATCH v5] powerpc/mpc85xx: Update the clock nodes in device tree Yuantian.Tang
2013-10-10 10:03 ` Mark Rutland
2013-10-11  3:18   ` Tang Yuantian-B29983
2013-10-11  9:25     ` Mark Rutland
2013-10-11 19:07       ` Scott Wood
2013-10-12  2:52         ` Tang Yuantian-B29983
2013-10-14 22:13           ` Scott Wood
2013-10-15  1:59             ` Tang Yuantian-B29983
2013-10-15 17:40               ` Scott Wood
2013-10-16  2:57                 ` Tang Yuantian-B29983
2013-10-16 16:46                   ` Scott Wood
2013-10-17  2:08                     ` Tang Yuantian-B29983
2013-10-17 16:24                       ` Scott Wood
2013-10-18  2:06                         ` Tang Yuantian-B29983
2013-10-18 16:31                           ` Scott Wood
2013-10-21  2:55                             ` Tang Yuantian-B29983
2013-10-29  3:26                               ` Scott Wood
2013-10-29  6:50                                 ` Tang Yuantian-B29983
2013-10-12  3:40       ` Tang Yuantian-B29983
2013-10-21  9:14         ` Mark Rutland
2013-10-22  3:19           ` Tang Yuantian-B29983
2013-10-11 19:08 ` Scott Wood
2013-10-12  2:53   ` Tang Yuantian-B29983
2013-10-25 20:11 ` Grant Likely
2013-10-28  2:20   ` Tang Yuantian-B29983

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).