lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251203092643.219600-1-q691800735@163.com>
Date: Wed,  3 Dec 2025 17:26:43 +0800
From: q691800735@....com
To: linux-riscv@...ts.infradead.org,
	devicetree@...r.kernel.org
Cc: conor@...nel.org,
	robh@...nel.org,
	krzk+dt@...nel.org,
	pjw@...nel.org,
	palmer@...belt.com,
	aou@...s.berkeley.edu,
	alex@...ti.fr,
	linux-kernel@...r.kernel.org,
	jybruceupup <q691800735@....com>
Subject: [PATCH] riscv: dts: canaan: Add K230 clock provider DTSI

From: jybruceupup <q691800735@....com>

Add clock provider DTSI for Kendryte K230 SoC, required for subsystem
clock management and boot.

Signed-off-by: jybruceupup <q691800735@....com>
---
 .../boot/dts/canaan/k230_clock_provider.dtsi  | 2724 +++++++++++++++++
 1 file changed, 2724 insertions(+)
 create mode 100644 arch/riscv/boot/dts/canaan/k230_clock_provider.dtsi

diff --git a/arch/riscv/boot/dts/canaan/k230_clock_provider.dtsi b/arch/riscv/boot/dts/canaan/k230_clock_provider.dtsi
new file mode 100644
index 000000000..9d193ca22
--- /dev/null
+++ b/arch/riscv/boot/dts/canaan/k230_clock_provider.dtsi
@@ -0,0 +1,2724 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+/*
+ * Copyright (c) 2023, Canaan Bright Sight Co., Ltd
+ * Copyright (c) 2025 jybruceupup <q691800735@....com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+&sysctl_boot {
+/* osc24m clock */
+	osc24m: osc24m {
+		#clock-cells		= <0>;	/* only one clock output */
+		compatible		= "fixed-clock";/* It's clock source, no parent */
+		clock-frequency		= <24000000>;	/* clock freqence is 24MHz */
+		clock-accuracy		= <0>;	/* software assume clock no jitter/wander.*/
+		status				= "okay";
+		read-only			= <0>;
+	};
+
+	/* pll clock */
+	pll0: pll0 {
+		#clock-cells		= <0>;			/* only one output */
+		compatible		= "canaan,k230-pll";
+		/* pll0/1/2/3 match same clk driver, comptible is k230-pll(not k230-pll0,1,2,3)*/
+		clocks			 = <&osc24m>;		/* clk parent is osc24m */
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* PLL0_CFG0 */
+		clk-divide-reg-offset			 = <0x0>;/* pll divider register offset */
+		clk-divide-out-reg-value-shift		  = <24>;	/* start bit is 24 */
+		clk-divide-out-reg-value-mask		   = <0xF>;
+			/* bitmask, 0xf means b'1111(4bits), bit24(start bit) to bit27 */
+		clk-divide-ref-reg-value-shift		  = <16>;
+		clk-divide-ref-reg-value-mask		   = <0x3F>;
+		clk-divide-fb-reg-value-shift		   = <0>;
+		clk-divide-fb-reg-value-mask			= <0x1FFF>;
+
+		/* PLL0_CFG1: bypass */
+		clk-divide-bypass-reg-offset			= <0x4>;
+		clk-divide-bypass-reg-enable-bit		= <19>;
+
+		/* PLL0_CTL: gate */
+		clk-gate-reg-offset					 = <0x8>;
+		clk-gate-reg-enable-bit				 = <2>;
+		clk-gate-reg-write-enable-bit		   = <18>;
+
+		/* PLL0_STAT: pll0 lock status */
+		clk-lock-reg-offset					 = <0xC>;
+		clk-lock-reg-status_bit				 = <0>;
+	};
+
+	pll0_div2: pll0_div2 {
+		#clock-cells			= <0>;
+		compatible			  = "fixed-factor-clock";
+		clocks				  = <&pll0>;
+		clock-div			   = <2>;
+		clock-mult			  = <1>;
+		status				  = "okay";
+		read-only			   = <0>;
+	};
+
+	pll0_div3: pll0_div3 {
+		#clock-cells			= <0>;
+		compatible			  = "fixed-factor-clock";
+		clocks				  = <&pll0>;
+		clock-div			   = <3>;
+		clock-mult			  = <1>;
+		status				  = "okay";
+		read-only			   = <0>;
+	};
+
+	pll0_div4: pll0_div4 {
+		#clock-cells			= <0>;
+		compatible			  = "fixed-factor-clock";
+		clocks				  = <&pll0>;
+		clock-div			   = <4>;
+		clock-mult			  = <1>;
+		status				  = "okay";
+		read-only			   = <0>;
+	};
+
+	pll1: pll1 {
+		#clock-cells				= <0>;		/* only one output */
+		compatible				  = "canaan,k230-pll";
+	/* pll0/1/2/3 match same clk driver, so comptible is k230-pll(not k230-pll0,1,2,3)*/
+		clocks					  = <&osc24m>;	/* clk parent is osc24m */
+		status					  = "okay";
+		read-only				   = <0>;
+
+		/* PLL1_CFG0 */
+		clk-divide-reg-offset			= <0x10>;
+		clk-divide-out-reg-value-shift		  = <24>;
+		clk-divide-out-reg-value-mask		   = <0xF>;
+		clk-divide-ref-reg-value-shift		  = <16>;
+		clk-divide-ref-reg-value-mask		   = <0x3F>;
+		clk-divide-fb-reg-value-shift		   = <0>;
+		clk-divide-fb-reg-value-mask			= <0x1FFF>;
+
+		/* PLL1_CFG1: bypass */
+		clk-divide-bypass-reg-offset			= <0x14>;
+		clk-divide-bypass-reg-enable-bit		= <19>;
+
+		/* PLL1_CTL: gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-enable-bit				 = <2>;
+		clk-gate-reg-write-enable-bit		   = <18>;
+
+		/* PLL1_STAT: pll1 lock status */
+		clk-lock-reg-offset					 = <0x1C>;
+		clk-lock-reg-status_bit				 = <0>;
+	};
+
+	pll1_div2: pll1_div2 {
+		#clock-cells			= <0>;
+		compatible			  = "fixed-factor-clock";
+		clocks				  = <&pll1>;
+		clock-div			   = <2>;
+		clock-mult			  = <1>;
+		status				  = "okay";
+		read-only			   = <0>;
+	};
+
+	pll1_div3: pll1_div3 {
+		#clock-cells			= <0>;
+		compatible			  = "fixed-factor-clock";
+		clocks				  = <&pll1>;
+		clock-div			   = <3>;
+		clock-mult			  = <1>;
+		status				  = "okay";
+		read-only			   = <0>;
+	};
+
+	pll1_div4: pll1_div4 {
+		#clock-cells				= <0>;
+		compatible				  = "fixed-factor-clock";
+		clocks					  = <&pll1>;
+		clock-div				   = <4>;
+		clock-mult				  = <1>;
+		status					  = "okay";
+		read-only				   = <0>;
+	};
+
+	pll2: pll2 {
+		#clock-cells		= <0>;				/* only one output */
+		compatible		  = "canaan,k230-pll";
+	/* pll0/1/2/3 match same clk driver, so comptible is k230-pll(not k230-pll0,1,2,3)*/
+		clocks			  = <&osc24m>;		/* clk parent is osc24m */
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* PLL2_CFG0 */
+		clk-divide-reg-offset				   = <0x20>;
+		clk-divide-out-reg-value-shift		  = <24>;
+		clk-divide-out-reg-value-mask		   = <0xF>;
+		clk-divide-ref-reg-value-shift		  = <16>;
+		clk-divide-ref-reg-value-mask		   = <0x3F>;
+		clk-divide-fb-reg-value-shift		   = <0>;
+		clk-divide-fb-reg-value-mask			= <0x1FFF>;
+
+		/* PLL2_CFG1: bypass */
+		clk-divide-bypass-reg-offset			= <0x24>;
+		clk-divide-bypass-reg-enable-bit		= <19>;
+
+		/* PLL2_CTL: gate */
+		clk-gate-reg-offset					 = <0x28>;
+		clk-gate-reg-enable-bit				 = <2>;
+		clk-gate-reg-write-enable-bit		   = <18>;
+
+		/* PLL_STAT: pll2 lock status */
+		clk-lock-reg-offset					 = <0x2C>;
+		clk-lock-reg-status_bit				 = <0>;
+	};
+
+	pll2_div2: pll2_div2 {
+		#clock-cells				= <0>;
+		compatible				  = "fixed-factor-clock";
+		clocks					  = <&pll2>;
+		clock-div				   = <2>;
+		clock-mult				  = <1>;
+		status					  = "okay";
+		read-only				   = <0>;
+	};
+
+	pll2_div3: pll2_div3 {
+		#clock-cells			= <0>;
+		compatible			  = "fixed-factor-clock";
+		clocks				  = <&pll2>;
+		clock-div			   = <3>;
+		clock-mult			  = <1>;
+		status				  = "okay";
+		read-only			   = <0>;
+	};
+
+	pll2_div4: pll2_div4 {
+		#clock-cells				= <0>;
+		compatible				  = "fixed-factor-clock";
+		clocks					  = <&pll2>;
+		clock-div				   = <4>;
+		clock-mult				  = <1>;
+		status					  = "okay";
+		read-only				   = <0>;
+	};
+
+	pll3: pll3 {
+		#clock-cells				= <0>;		/* only one output */
+		compatible					  = "canaan,k230-pll";
+	/* pll0/1/2/3 match same clk driver, so comptible is k230-pll(not k230-pll0,1,2,3)*/
+		clocks				  = <&osc24m>;		/* clk parent is osc24m */
+		status				  = "okay";
+		read-only			   = <0>;
+
+		/* PLL3_CFG0 */
+		clk-divide-reg-offset				   = <0x30>;
+		clk-divide-out-reg-value-shift		  = <24>;
+		clk-divide-out-reg-value-mask		   = <0xF>;
+		clk-divide-ref-reg-value-shift		  = <16>;
+		clk-divide-ref-reg-value-mask		   = <0x3F>;
+		clk-divide-fb-reg-value-shift		   = <0>;
+		clk-divide-fb-reg-value-mask			= <0x1FFF>;
+
+		/* PLL3_CFG1: bypass */
+		clk-divide-bypass-reg-offset			= <0x34>;
+		clk-divide-bypass-reg-enable-bit		= <19>;
+
+		/* PLL3_CTL: gate */
+		clk-gate-reg-offset					 = <0x38>;
+		clk-gate-reg-enable-bit				 = <2>;
+		clk-gate-reg-write-enable-bit		   = <18>;
+
+		/* PLL3_STAT: pll3 lock status */
+		clk-lock-reg-offset					 = <0x3C>;
+		clk-lock-reg-status_bit				 = <0>;
+	};
+
+	pll3_div2: pll3_div2 {
+		#clock-cells			= <0>;
+		compatible			  = "fixed-factor-clock";
+		clocks				  = <&pll3>;
+		clock-div			   = <2>;
+		clock-mult			  = <1>;
+		status				  = "okay";
+		read-only			   = <0>;
+	};
+
+	pll3_div3: pll3_div3 {
+		#clock-cells			= <0>;
+		compatible			  = "fixed-factor-clock";
+		clocks				  = <&pll3>;
+		clock-div			   = <3>;
+		clock-mult			  = <1>;
+		status				  = "okay";
+		read-only			   = <0>;
+	};
+
+	pll3_div4: pll3_div4 {
+		#clock-cells			= <0>;
+		compatible			  = "fixed-factor-clock";
+		clocks				  = <&pll3>;
+		clock-div			   = <4>;
+		clock-mult			  = <1>;
+		status				  = "okay";
+		read-only			   = <0>;
+	};
+};
+
+&sysctl_clock {
+	cpu0_src: cpu0_src {
+		#clock-cells	= <0>;				/* only one output */
+		compatible	  = "canaan,k230-clk-composite";
+		clocks		  = <&pll0_div2>;			/* only one parent */
+		status		  = "okay";
+		read-only	   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <16>;
+		clk-rate-conf-div-min				   = <16>;
+		clk-rate-conf-div-max				   = <16>;
+		clk-rate-calc-method					= <0>;
+		clk-rate-reg-offset					 = <0x0>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <1>;
+		clk-rate-reg-div-value-mask			 = <0xF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x0>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+		/* if set to 0(clk-gate-reg-bit-enable set 1 to enable clcok),
+		 *if set to 1(clk-gate-reg-bit-enable set 0 to enable clcok)
+		 */
+	};
+
+	cpu0_plic: cpu0_plic {
+		#clock-cells		= <0>;		/* only one output */
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&cpu0_src>;	/* only one parent */
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+
+		clk-rate-reg-offset					 = <0x0>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <10>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x0>;
+		clk-gate-reg-bit-enable				 = <9>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	cpu0_aclk: cpu0_aclk {
+		#clock-cells		= <0>;			/* only one output */
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&cpu0_src>;	/* only one parent */
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+
+		clk-rate-reg-offset					 = <0x0>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <6>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+
+	cpu0_noc_ddrcp4: cpu0_noc_ddrcp4 {
+		#clock-cells			= <0>;	/* only one output */
+		compatible			  = "canaan,k230-clk-composite";
+		clocks				  = <&cpu0_src>;/* only one parent */
+		status				  = "okay";
+		read-only			   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x60>;
+		clk-gate-reg-bit-enable				 = <7>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	cpu0_pclk: cpu0_pclk {
+		#clock-cells		= <0>;		/* only one output */
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&pll0_div4>;		 /* only one parent */
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+
+		clk-rate-reg-offset					 = <0x0>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <15>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x0>;
+		clk-gate-reg-bit-enable				 = <13>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	pmu_pclk: pmu_pclk {
+		#clock-cells		= <0>;
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&osc24m>;
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x10>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	hs_hclk_high_src: hs_hclk_high_src {
+		#clock-cells			= <0>;
+		compatible			  = "canaan,k230-clk-composite";
+		clocks				  = <&pll0_div4>;
+		status				  = "okay";
+		read-only			   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x1C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <0>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+	hs_hclk_high: hs_hclk_high {
+		#clock-cells		= <0>;
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&hs_hclk_high_src>;
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <1>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	hs_hclk_src: hs_hclk_src {
+		#clock-cells			= <0>;
+		compatible			  = "canaan,k230-clk-composite";
+		clocks				  = <&hs_hclk_high_src>;
+		status				  = "okay";
+		read-only			   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+
+		clk-rate-reg-offset					 = <0x1C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <3>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	sd0_hclk_gate: sd0_hclk_gate {
+		#clock-cells		= <0>;
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&hs_hclk_src>;
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <2>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	sd1_hclk_gate: sd1_hclk_gate {
+		#clock-cells		= <0>;
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&hs_hclk_src>;
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <3>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	usb0_hclk_gate: usb0_hclk_gate {
+		#clock-cells			= <0>;
+		compatible			  = "canaan,k230-clk-composite";
+		clocks				  = <&hs_hclk_src>;
+		status				  = "okay";
+		read-only			   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <4>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	usb1_hclk_gate: usb1_hclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			 = <&hs_hclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <5>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	ssi1_hclk_gate: ssi1_hclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			 = <&hs_hclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <7>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	ssi2_hclk_gate: ssi2_hclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			 = <&hs_hclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <8>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	ssi0_aclk: ssi0_aclk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+
+		clk-rate-reg-offset					 = <0x20>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <9>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <27>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	ssi1_clk: ssi1_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x20>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <3>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <25>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	ssi2_clk: ssi2_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x20>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <6>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <26>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	qspi_aclk_src: qspi_aclk_src {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x20>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <12>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <28>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	ssi1_aclk_gate: ssi1_aclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			 = <&qspi_aclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <29>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	ssi2_aclk_gate: ssi2_aclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			 = <&qspi_aclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <30>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	ssi0_clk: ssi0_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* parent */
+		clocks			 = <&pll0_div2>, <&pll2_div4>;	  /* mux parent */
+		clk-parent-reg-offset		  = <0x20>;
+		clk-parent-reg-value-shift	 = <18>;
+		clk-parent-reg-value-mask	  = <0x1>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <24>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	sd_aclk: sd_aclk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll2_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x1C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <6>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <9>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	sd0_aclk_gate: sd0_aclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sd_aclk>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <13>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	sd1_aclk_gate: sd1_aclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sd_aclk>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <17>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	sd0_bclk_gate: sd0_bclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sd_aclk>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <14>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	sd1_bclk_gate: sd1_bclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sd_aclk>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <18>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	sd_cclk_src: sd_cclk_src {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min	 = <2>;	/* maxinum = 1/2, 1/2, 1/3 --- 1/8 */
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x1C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <12>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <11>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	sd0_cclk_gate: sd0_cclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sd_cclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <15>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	sd1_cclk_gate: sd1_cclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sd_cclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <19>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	pll0_div16: pll0_div16 {
+		#clock-cells							= <0>;
+		compatible	 = "fixed-factor-clock";
+		clocks								  = <&pll0>;
+		clock-div							   = <16>;
+		clock-mult							  = <1>;
+		status								  = "okay";
+		read-only							   = <0>;
+	};
+	usb_ref_50m: usb_ref_50m {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x20>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <15>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+	usb0_ref_clk: usb0_ref_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* parent */
+		clocks				= <&osc24m>, <&usb_ref_50m>;	/* mux parent */
+		clk-parent-reg-offset				   = <0x18>;
+		clk-parent-reg-value-shift			  = <23>;
+		clk-parent-reg-value-mask			   = <0x1>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <21>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	usb1_ref_clk: usb1_ref_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* parent */
+		clocks				= <&osc24m>, <&usb_ref_50m>;	 /* mux parent */
+		clk-parent-reg-offset				   = <0x18>;
+		clk-parent-reg-value-shift			  = <23>;
+		clk-parent-reg-value-mask			   = <0x1>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <22>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	sd_tmclk_src: sd_tmclk_src {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&osc24m>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <24>;
+		clk-rate-conf-div-max				   = <32>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x1C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <15>;
+		clk-rate-reg-div-value-mask			 = <0x1F>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <12>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	sd0_tmclk_gate: sd0_tmclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sd_tmclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <16>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	sd1_tmclk_gate: sd1_tmclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sd_tmclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x18>;
+		clk-gate-reg-bit-enable				 = <20>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	ls_pclk_src: ls_pclk_src {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x30>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <0>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	uart0_pclk_gate: uart0_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <1>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	uart1_pclk_gate: uart1_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <2>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	uart2_pclk_gate: uart2_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <3>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	uart3_pclk_gate: uart3_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <4>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	uart4_pclk_gate: uart4_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <5>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	i2c0_pclk_gate: i2c0_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <6>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	i2c1_pclk_gate: i2c1_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <7>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	i2c2_pclk_gate: i2c2_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <8>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	i2c3_pclk_gate: i2c3_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <9>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	i2c4_pclk_gate: i2c4_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <10>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	gpio_pclk_gate: gpio_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <11>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	pwm_pclk_gate: pwm_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <12>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	jamlink0_pclk_gate: jamlink0_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x28>;
+		clk-gate-reg-bit-enable				 = <4>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	jamlink1_pclk_gate: jamlink1_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x28>;
+		clk-gate-reg-bit-enable				 = <5>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	jamlink2_pclk_gate: jamlink2_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x28>;
+		clk-gate-reg-bit-enable				 = <6>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	jamlink3_pclk_gate: jamlink3_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x28>;
+		clk-gate-reg-bit-enable				 = <7>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	audio_pclk_gate: audio_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <13>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	adc_pclk_gate: adc_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <15>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	codec_pclk_gate: codec_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&ls_pclk_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <14>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	uart0_clk: uart0_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x2C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <0>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <16>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	uart1_clk: uart1_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x2C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <3>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <17>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	uart2_clk: uart2_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x2C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <6>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <18>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	uart3_clk: uart3_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x2C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <9>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <19>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	uart4_clk: uart4_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x2C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <12>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <20>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	jamlinkCO_div: jamlinkCO_div {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <2>;
+		clk-rate-conf-div-max				   = <512>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x30>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <23>;
+		clk-rate-reg-div-value-mask			 = <0xFF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+	jamlink0CO_gate: jamlink0CO_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			= <&jamlinkCO_div>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x28>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	jamlink1CO_gate: jamlink1CO_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			 = <&jamlinkCO_div>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x28>;
+		clk-gate-reg-bit-enable				 = <1>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	jamlink2CO_gate: jamlink2CO_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			 = <&jamlinkCO_div>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x28>;
+		clk-gate-reg-bit-enable				 = <2>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	jamlink3CO_gate: jamlink3CO_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			= <&jamlinkCO_div>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x28>;
+		clk-gate-reg-bit-enable				 = <3>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	i2c0_clk: i2c0_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x2C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <15>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <21>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	i2c1_clk: i2c1_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x2C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <18>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <22>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	i2c2_clk: i2c2_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x2C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <21>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <23>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	i2c3_clk: i2c3_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x2C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <24>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <24>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	i2c4_clk: i2c4_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x2C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <27>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <25>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	codec_adc_mclk: codec_adc_mclk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <0x10>;
+		clk-rate-conf-mul-max				   = <0x1B9>;
+		clk-rate-conf-div-min				   = <0xC35>;
+		clk-rate-conf-div-max				   = <0x3D09>;
+		clk-rate-calc-method					= <2>;
+		clk-rate-reg-offset					 = <0x38>;
+		clk-rate-reg-mul-value-shift			= <14>;
+		clk-rate-reg-mul-value-mask			 = <0x1FFF>;
+			/* multiple field mask.  It's valid when clk-rate-calc-method = 2*/
+		clk-rate-reg-div-value-shift			= <0>;
+		clk-rate-reg-div-value-mask			 = <0x3FFF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <29>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	codec_dac_mclk: codec_dac_mclk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <0x10>;
+		clk-rate-conf-mul-max				   = <0x1B9>;
+		clk-rate-conf-div-min				   = <0xC35>;
+		clk-rate-conf-div-max				   = <0x3D09>;
+		clk-rate-calc-method					= <2>;
+		clk-rate-reg-offset					 = <0x3C>;
+		clk-rate-reg-mul-value-shift			= <14>;
+		clk-rate-reg-mul-value-mask			 = <0x1FFF>;
+		clk-rate-reg-div-value-shift			= <0>;
+		clk-rate-reg-div-value-mask			 = <0x3FFF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <30>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	audio_dev_clk: audio_dev_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <0x4>;
+		clk-rate-conf-mul-max				   = <0x1B9>;
+		clk-rate-conf-div-min				   = <0xC35>;
+		clk-rate-conf-div-max				   = <0xF424>;
+		clk-rate-calc-method					= <2>;
+		clk-rate-reg-offset					 = <0x34>;
+		clk-rate-reg-mul-value-shift			= <16>;
+		clk-rate-reg-mul-value-mask			 = <0x7FFF>;
+		clk-rate-reg-div-value-shift			= <0>;
+		clk-rate-reg-div-value-mask			 = <0xFFFF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <28>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	pdm_clk: pdm_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-div-min				   = <0xC35>;
+		clk-rate-conf-div-max				   = <0x1E848>;
+		clk-rate-reg-offset					 = <0x40>;
+		clk-rate-reg-div-value-shift			= <0>;
+		clk-rate-reg-div-value-mask			 = <0x1FFFF>;
+		clk-rate-calc-method					= <2>;
+
+		/* rate1 */
+		clk-rate-conf-mul-min_1				   = <0x2>;
+		clk-rate-conf-mul-max_1				   = <0x1B9>;
+		clk-rate-reg-offset_1					 = <0x44>;
+		clk-rate-reg-mul-value-shift_1			= <0>;
+		clk-rate-reg-mul-value-mask_1			 = <0xFFFF>;
+		clk-rate-reg-write-enable-bit_1		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <31>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	adc_clk: adc_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <1024>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x30>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <3>;
+		clk-rate-reg-div-value-mask			 = <0x3FF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <26>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	gpio_dbclk: gpio_dbclk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&osc24m>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <1024>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x30>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <13>;
+		clk-rate-reg-div-value-mask			 = <0x3FF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x24>;
+		clk-gate-reg-bit-enable				 = <27>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	sysctl_pclk: sysctl_pclk {
+		#clock-cells							= <0>;
+		compatible							  = "fixed-clock";
+		clock-frequency						 = <100000000>;
+		clock-accuracy						  = <0>;
+		status								  = "okay";
+		read-only							   = <0>;
+	};
+	wdt0_pclk_gate: wdt0_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sysctl_pclk>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <1>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	wdt1_pclk_gate: wdt1_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sysctl_pclk>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <2>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	timer_pclk_gate: timer_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sysctl_pclk>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <3>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	iomux_pclk_gate: iomux_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sysctl_pclk>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <20>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	mailbox_pclk_gate: mailbox_pclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&sysctl_pclk>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <4>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	hdi_clk: hdi_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x58>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <28>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <21>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	stc_clk: stc_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll1_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <32>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x58>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <15>;
+		clk-rate-reg-div-value-mask			 = <0x1F>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <19>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	ts_clk: ts_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&osc24m>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <256>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x58>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <20>;
+		clk-rate-reg-div-value-mask			 = <0xFF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+
+	wdt0: wdt0 {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&osc24m>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <64>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x58>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <3>;
+		clk-rate-reg-div-value-mask			 = <0x3F>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <5>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	wdt1: wdt1 {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&osc24m>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <64>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x58>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <9>;
+		clk-rate-reg-div-value-mask			 = <0x3F>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <6>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	timerx_pulse_in: timerx_pulse_in {
+		#clock-cells							= <0>;
+		compatible							  = "fixed-clock";
+		clock-frequency						 = <50000000>;
+		clock-accuracy						  = <0>;
+		status								  = "okay";
+		read-only							   = <0>;
+	};
+	timer0_clk_src: timer0_clk_src {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x54>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <0>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+	timer0_clk: timer0_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* parents */
+		clocks			= <&timer0_clk_src>, <&timerx_pulse_in>;
+		clk-parent-reg-offset				   = <0x50>;
+		clk-parent-reg-value-shift			  = <7>;
+		clk-parent-reg-value-mask			   = <0x1>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <13>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	timer1_clk_src: timer1_clk_src {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x54>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <3>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+	timer1_clk: timer1_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* parents */
+		clocks				= <&timer1_clk_src>, <&timerx_pulse_in>;
+		clk-parent-reg-offset				   = <0x50>;
+		clk-parent-reg-value-shift			  = <8>;
+		clk-parent-reg-value-mask			   = <0x1>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <14>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	timer2_clk_src: timer2_clk_src {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x54>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <6>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+	timer2_clk: timer2_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* parents */
+		clocks				= <&timer2_clk_src>, <&timerx_pulse_in>;
+		clk-parent-reg-offset				   = <0x50>;
+		clk-parent-reg-value-shift			  = <9>;
+		clk-parent-reg-value-mask			   = <0x1>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <15>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	timer3_clk_src: timer3_clk_src {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x54>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <9>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+	timer3_clk: timer3_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* parents */
+		clocks				 = <&timer3_clk_src>, <&timerx_pulse_in>;
+		clk-parent-reg-offset				   = <0x50>;
+		clk-parent-reg-value-shift			  = <10>;
+		clk-parent-reg-value-mask			   = <0x1>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <16>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	timer4_clk_src: timer4_clk_src {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x54>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <12>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+	timer4_clk: timer4_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* parents */
+		clocks					= <&timer4_clk_src>, <&timerx_pulse_in>;
+		clk-parent-reg-offset				   = <0x50>;
+		clk-parent-reg-value-shift			  = <11>;
+		clk-parent-reg-value-mask			   = <0x1>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <17>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	timer5_clk_src: timer5_clk_src {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div16>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x54>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <15>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+	timer5_clk: timer5_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* parents */
+		clocks					= <&timer5_clk_src>, <&timerx_pulse_in>;
+		clk-parent-reg-offset				   = <0x50>;
+		clk-parent-reg-value-shift			  = <12>;
+		clk-parent-reg-value-mask			   = <0x1>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x50>;
+		clk-gate-reg-bit-enable				 = <18>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	shrm_src: shrm_src {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* parents */
+		clocks				= <&pll0_div2>, <&pll3_div2>;
+		clk-parent-reg-offset				   = <0x5C>;
+		clk-parent-reg-value-shift			  = <14>;
+		clk-parent-reg-value-mask			   = <0x1>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x5C>;
+		clk-gate-reg-bit-enable				 = <10>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	shrm_div2: shrm_div2 {
+		#clock-cells							= <0>;
+		compatible	 = "fixed-factor-clock";
+		clocks								  = <&shrm_src>;
+		clock-div							   = <2>;
+		clock-mult							  = <1>;
+		status								  = "okay";
+		read-only							   = <0>;
+	};
+	shrm_axis_clk_gate: shrm_axis_clk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&shrm_div2>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x5C>;
+		clk-gate-reg-bit-enable				 = <11>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	decompress_aclk_gate: decompress_aclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&shrm_src>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x5C>;
+		clk-gate-reg-bit-enable				 = <7>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	shrm_pclk: shrm_pclk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x5C>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <18>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x5C>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	shrm_axim_clk_gate: shrm_axim_clk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x5C>;
+		clk-gate-reg-bit-enable				 = <12>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	gsdma_aclk_gate: gsdma_aclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks						= <&shrm_axim_clk_gate>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x5C>;
+		clk-gate-reg-bit-enable				 = <5>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	nonai2d_aclk_gate: nonai2d_aclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks							= <&shrm_axim_clk_gate>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x5C>;
+		clk-gate-reg-bit-enable				 = <9>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	pdma_aclk_gate: pdma_aclk_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks							= <&shrm_axim_clk_gate>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x5C>;
+		clk-gate-reg-bit-enable				 = <3>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	ddrc_core_clk: ddrc_core_clk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* parents */
+		clocks					= <&pll0_div2>, <&pll0_div3>, <&pll2_div4>;
+		clk-parent-reg-offset				   = <0x60>;
+		clk-parent-reg-value-shift			  = <0>;
+		clk-parent-reg-value-mask			   = <0x3>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <16>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x60>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <10>;
+		clk-rate-reg-div-value-mask			 = <0xF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x60>;
+		clk-gate-reg-bit-enable				 = <2>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	ddrc_bypass_gate: ddrc_bypass_gate {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll2_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x60>;
+		clk-gate-reg-bit-enable				 = <8>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	ddrc_pclk: ddrc_pclk {
+		#clock-cells							= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks								  = <&pll0_div4>;
+		status								  = "okay";
+		read-only							   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <16>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x60>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <14>;
+		clk-rate-reg-div-value-mask			 = <0xF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x60>;
+		clk-gate-reg-bit-enable				 = <9>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	disp_hclk: disp_hclk {
+		#clock-cells	= <0>;
+		compatible	  = "canaan,k230-clk-composite";
+		clocks		  = <&pll0_div4>;
+		status		  = "okay";
+		read-only	   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x78>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <0>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x74>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	disp_aclk_gate: disp_aclk_gate {
+		#clock-cells			= <0>;
+		compatible			  = "canaan,k230-clk-composite";
+		clocks				  = <&pll0_div4>;
+		status				  = "okay";
+		read-only			   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x74>;
+		clk-gate-reg-bit-enable				 = <1>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	disp_clkext: disp_clkext {
+		#clock-cells			= <0>;
+		compatible			  = "canaan,k230-clk-composite";
+		clocks				  = <&pll0_div3>;
+		status				  = "okay";
+		read-only			   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <16>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x78>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <16>;
+		clk-rate-reg-div-value-mask			 = <0xF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x74>;
+		clk-gate-reg-bit-enable				 = <5>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	disp_gpu: disp_gpu {
+		#clock-cells			= <0>;
+		compatible			  = "canaan,k230-clk-composite";
+		clocks				  = <&pll0_div3>;
+		status				  = "okay";
+		read-only			   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <16>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x78>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <20>;
+		clk-rate-reg-div-value-mask			 = <0xF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x74>;
+		clk-gate-reg-bit-enable				 = <6>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	dpipclk: dpipclk {
+		#clock-cells			= <0>;
+		compatible			  = "canaan,k230-clk-composite";
+		clocks				  = <&pll1_div4>;
+		status				  = "okay";
+		read-only			   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <256>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset					 = <0x78>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <3>;
+		clk-rate-reg-div-value-mask			 = <0xFF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x74>;
+		clk-gate-reg-bit-enable				 = <2>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	disp_cfgclk: disp_cfgclk {
+		#clock-cells		= <0>;
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&pll1_div4>;
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <32>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset		 = <0x78>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <11>;
+		clk-rate-reg-div-value-mask			 = <0x1F>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x74>;
+		clk-gate-reg-bit-enable				 = <4>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	disp_refclk_gate: disp_refclk_gate {
+		#clock-cells		= <0>;
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&osc24m>;
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x74>;
+		clk-gate-reg-bit-enable				 = <3>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	vpu_src: vpu_src {
+		#clock-cells		= <0>;
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&pll0_div2>;
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <16>;
+		clk-rate-conf-div-min				   = <16>;
+		clk-rate-conf-div-max				   = <16>;
+		clk-rate-calc-method					= <0>;
+		clk-rate-reg-offset		 = <0xC>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <1>;
+		clk-rate-reg-div-value-mask			 = <0xF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0xC>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	vpu_aclk_src: vpu_aclk_src {
+		#clock-cells		= <0>;
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&vpu_src>;
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <16>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset	 = <0xC>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <6>;
+		clk-rate-reg-div-value-mask			 = <0xF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+	};
+
+	vpu_aclk: vpu_aclk {
+		#clock-cells		= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			= <&vpu_aclk_src>;
+		status			= "okay";
+		read-only		= <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0xc>;
+		clk-gate-reg-bit-enable				 = <5>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	vpu_ddrcp2: vpu_ddrcp2 {
+		#clock-cells		= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			= <&vpu_aclk_src>;
+		status			= "okay";
+		read-only		= <0>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x60>;
+		clk-gate-reg-bit-enable				 = <5>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	vpu_cfg: vpu_cfg {
+		#clock-cells			= <0>;
+		compatible			= "canaan,k230-clk-composite";
+		clocks				= <&pll0_div4>;
+		status				= "okay";
+		read-only			= <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <16>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset		= <0xC>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift		= <11>;
+		clk-rate-reg-div-value-mask			 = <0xF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0xC>;
+		clk-gate-reg-bit-enable				 = <10>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	sec_pclk: sec_pclk {
+		#clock-cells		= <0>;
+		compatible		= "canaan,k230-clk-composite";
+		clocks			= <&pll0_div4>;
+		status			= "okay";
+		read-only		= <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset	        = <0x80>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <1>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x80>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+	sec_fixclk: sec_fixclk {
+		#clock-cells		= <0>;
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&pll1_div4>;
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <32>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset		= <0x80>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <6>;
+		clk-rate-reg-div-value-mask			 = <0x1F>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x80>;
+		clk-gate-reg-bit-enable				 = <5>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	sec_aclk_gate: sec_aclk_gate {
+		#clock-cells		= <0>;
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&pll1_div4>;
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset		 = <0x80>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <11>;
+		clk-rate-reg-div-value-mask			 = <0x3>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x80>;
+		clk-gate-reg-bit-enable				 = <4>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	usb_clk480: usb_clk480 {
+		#clock-cells		= <0>;
+		compatible		  = "canaan,k230-clk-composite";
+		clocks			  = <&pll1>;
+		status			  = "okay";
+		read-only		   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset		 = <0x100>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <1>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x100>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	usb_clk100: usb_clk100 {
+		#clock-cells			= <0>;
+		compatible			  = "canaan,k230-clk-composite";
+		clocks				  = <&pll0_div4>;
+		status				  = "okay";
+		read-only			   = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <8>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset		 = <0x100>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <4>;
+		clk-rate-reg-div-value-mask			 = <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x100>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	dphy_test_clk: dphy_test_clk {
+		#clock-cells	        = <0>;
+		compatible	        = "canaan,k230-clk-composite";
+		clocks		        = <&pll0>;
+		status		        = "okay";
+		read-only	        = <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min				   = <1>;
+		clk-rate-conf-mul-max				   = <1>;
+		clk-rate-conf-div-min				   = <1>;
+		clk-rate-conf-div-max				   = <16>;
+		clk-rate-calc-method					= <1>;
+		clk-rate-reg-offset	 = <0x104>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift			= <1>;
+		clk-rate-reg-div-value-mask			 = <0xF>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x104>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+
+	spi2axi_aclk: spi2axi_aclk {
+		#clock-cells			= <0>;
+		compatible			= "canaan,k230-clk-composite";
+		clocks				= <&pll0_div4>;
+		status				= "okay";
+		read-only			= <0>;
+
+		/* rate */
+		clk-rate-conf-mul-min	        = <1>;
+		clk-rate-conf-mul-max	        = <1>;
+		clk-rate-conf-div-min	        = <1>;
+		clk-rate-conf-div-max	        = <8>;
+		clk-rate-calc-method	        = <1>;
+		clk-rate-reg-offset	 = <0x108>;
+		clk-rate-reg-mul-value-shift			= <0>;
+		clk-rate-reg-mul-value-mask			 = <0>;
+		clk-rate-reg-div-value-shift	= <1>;
+		clk-rate-reg-div-value-mask	= <0x7>;
+		clk-rate-reg-write-enable-bit		   = <31>;
+
+		/* gate */
+		clk-gate-reg-offset					 = <0x108>;
+		clk-gate-reg-bit-enable				 = <0>;
+		clk-gate-reg-bit-reverse				= <0>;
+	};
+};
-- 
2.52.0


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ