This patch adds the Device Tree binding for the clock controller
on Canaan k230. The binding defines the clocks and the required
properties to configure them correctly.
Signed-off-by: Xukai Wang <kingxukai@zohomail.com>
---
.../devicetree/bindings/clock/canaan,k230-clk.yaml | 61 ++++++
include/dt-bindings/clock/canaan,k230-clk.h | 223 +++++++++++++++++++++
2 files changed, 284 insertions(+)
diff --git a/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml b/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f2aa509b12bce1a69679f6d7e2853273233266d5
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml
@@ -0,0 +1,61 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/canaan,k230-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Canaan Kendryte K230 Clock
+
+maintainers:
+ - Xukai Wang <kingxukai@zohomail.com>
+
+description:
+ The Canaan K230 clock controller generates various clocks for SoC
+ peripherals. See include/dt-bindings/clock/canaan,k230-clk.h for
+ valid clock IDs.
+
+properties:
+ compatible:
+ const: canaan,k230-clk
+
+ reg:
+ items:
+ - description: PLL control registers
+ - description: Sysclk control registers
+
+ clocks:
+ minItems: 1
+ items:
+ - description: Main external reference clock
+ - description:
+ External clock which used as the pulse input
+ for the timer to provide timing signals.
+
+ clock-names:
+ minItems: 1
+ items:
+ - const: osc24m
+ - const: timer-pulse-in
+
+ '#clock-cells':
+ const: 1
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - clock-names
+ - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+ - |
+ clock-controller@91102000 {
+ compatible = "canaan,k230-clk";
+ reg = <0x91102000 0x40>,
+ <0x91100000 0x108>;
+ clocks = <&osc24m>;
+ clock-names = "osc24m";
+ #clock-cells = <1>;
+ };
diff --git a/include/dt-bindings/clock/canaan,k230-clk.h b/include/dt-bindings/clock/canaan,k230-clk.h
new file mode 100644
index 0000000000000000000000000000000000000000..9eee9440a4f14583eac845b649e5685d623132e1
--- /dev/null
+++ b/include/dt-bindings/clock/canaan,k230-clk.h
@@ -0,0 +1,223 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Kendryte Canaan K230 Clock Drivers
+ *
+ * Author: Xukai Wang <kingxukai@zohomail.com>
+ */
+
+#ifndef __DT_BINDINGS_CANAAN_K230_CLOCK_H__
+#define __DT_BINDINGS_CANAAN_K230_CLOCK_H__
+
+/* Kendryte K230 SoC clock identifiers (arbitrary values) */
+#define K230_CPU0_SRC_GATE 0
+#define K230_CPU0_PLIC_GATE 1
+#define K230_CPU0_NOC_DDRCP4_GATE 2
+#define K230_CPU0_APB_GATE 3
+#define K230_CPU0_SRC_RATE 4
+#define K230_CPU0_AXI_RATE 5
+#define K230_CPU0_PLIC_RATE 6
+#define K230_CPU0_APB_RATE 7
+#define K230_HS_OSPI_SRC_MUX 8
+#define K230_HS_USB_REF_MUX 9
+#define K230_HS_HCLK_HIGH_GATE 10
+#define K230_HS_HCLK_SRC_GATE 11
+#define K230_HS_SD0_AHB_GATE 12
+#define K230_HS_SD1_AHB_GATE 13
+#define K230_HS_SSI1_AHB_GATE 14
+#define K230_HS_SSI2_AHB_GATE 15
+#define K230_HS_USB0_AHB_GATE 16
+#define K230_HS_USB1_AHB_GATE 17
+#define K230_HS_SSI0_AXI_GATE 18
+#define K230_HS_SSI1_GATE 19
+#define K230_HS_SSI2_GATE 20
+#define K230_HS_QSPI_AXI_SRC_GATE 21
+#define K230_HS_SSI1_AXI_GATE 22
+#define K230_HS_SSI2_AXI_GATE 23
+#define K230_HS_SD_CARD_SRC_GATE 24
+#define K230_HS_SD0_CARD_GATE 25
+#define K230_HS_SD1_CARD_GATE 26
+#define K230_HS_SD_AXI_SRC_GATE 27
+#define K230_HS_SD0_AXI_GATE 28
+#define K230_HS_SD1_AXI_GATE 29
+#define K230_HS_SD0_BASE_GATE 30
+#define K230_HS_SD1_BASE_GATE 31
+#define K230_HS_OSPI_SRC_GATE 32
+#define K230_HS_SD_TIMER_SRC_GATE 33
+#define K230_HS_SD0_TIMER_GATE 34
+#define K230_HS_SD1_TIMER_GATE 35
+#define K230_HS_USB0_REF_GATE 36
+#define K230_HS_USB1_REF_GATE 37
+#define K230_HS_HCLK_HIGH_SRC_RATE 38
+#define K230_HS_HCLK_SRC_RATE 39
+#define K230_HS_SSI0_AXI_RATE 40
+#define K230_HS_SSI1_RATE 41
+#define K230_HS_SSI2_RATE 42
+#define K230_HS_QSPI_AXI_SRC_RATE 43
+#define K230_HS_SD_CARD_SRC_RATE 44
+#define K230_HS_SD_AXI_SRC_RATE 45
+#define K230_HS_USB_REF_50M_RATE 46
+#define K230_HS_SD_TIMER_SRC_RATE 47
+#define K230_TIMER0_MUX 48
+#define K230_TIMER1_MUX 49
+#define K230_TIMER2_MUX 50
+#define K230_TIMER3_MUX 51
+#define K230_TIMER4_MUX 52
+#define K230_TIMER5_MUX 53
+#define K230_SHRM_SRAM_MUX 54
+#define K230_DDRC_SRC_MUX 55
+#define K230_AI_SRC_MUX 56
+#define K230_CAMERA0_MUX 57
+#define K230_CAMERA1_MUX 58
+#define K230_CAMERA2_MUX 59
+#define K230_CPU1_SRC_MUX 60
+#define K230_CPU1_SRC_GATE 61
+#define K230_CPU1_PLIC_GATE 62
+#define K230_CPU1_APB_GATE 63
+#define K230_CPU1_SRC_RATE 64
+#define K230_CPU1_AXI_RATE 65
+#define K230_CPU1_PLIC_RATE 66
+#define K230_CPU1_APB_RATE 67
+#define K230_PMU_APB_GATE 68
+#define K230_LS_APB_SRC_GATE 69
+#define K230_LS_UART0_APB_GATE 70
+#define K230_LS_UART1_APB_GATE 71
+#define K230_LS_UART2_APB_GATE 72
+#define K230_LS_UART3_APB_GATE 73
+#define K230_LS_UART4_APB_GATE 74
+#define K230_LS_I2C0_APB_GATE 75
+#define K230_LS_I2C1_APB_GATE 76
+#define K230_LS_I2C2_APB_GATE 77
+#define K230_LS_I2C3_APB_GATE 78
+#define K230_LS_I2C4_APB_GATE 79
+#define K230_LS_GPIO_APB_GATE 80
+#define K230_LS_PWM_APB_GATE 81
+#define K230_LS_JAMLINK0_APB_GATE 82
+#define K230_LS_JAMLINK1_APB_GATE 83
+#define K230_LS_JAMLINK2_APB_GATE 84
+#define K230_LS_JAMLINK3_APB_GATE 85
+#define K230_LS_AUDIO_APB_GATE 86
+#define K230_LS_ADC_APB_GATE 87
+#define K230_LS_CODEC_APB_GATE 88
+#define K230_LS_I2C0_GATE 89
+#define K230_LS_I2C1_GATE 90
+#define K230_LS_I2C2_GATE 91
+#define K230_LS_I2C3_GATE 92
+#define K230_LS_I2C4_GATE 93
+#define K230_LS_CODEC_ADC_GATE 94
+#define K230_LS_CODEC_DAC_GATE 95
+#define K230_LS_AUDIO_DEV_GATE 96
+#define K230_LS_PDM_GATE 97
+#define K230_LS_ADC_GATE 98
+#define K230_LS_UART0_GATE 99
+#define K230_LS_UART1_GATE 100
+#define K230_LS_UART2_GATE 101
+#define K230_LS_UART3_GATE 102
+#define K230_LS_UART4_GATE 103
+#define K230_LS_JAMLINK0CO_GATE 104
+#define K230_LS_JAMLINK1CO_GATE 105
+#define K230_LS_JAMLINK2CO_GATE 106
+#define K230_LS_JAMLINK3CO_GATE 107
+#define K230_LS_GPIO_DEBOUNCE_GATE 108
+#define K230_SYSCTL_WDT0_APB_GATE 109
+#define K230_SYSCTL_WDT1_APB_GATE 110
+#define K230_SYSCTL_TIMER_APB_GATE 111
+#define K230_SYSCTL_IOMUX_APB_GATE 112
+#define K230_SYSCTL_MAILBOX_APB_GATE 113
+#define K230_SYSCTL_HDI_GATE 114
+#define K230_SYSCTL_TIME_STAMP_GATE 115
+#define K230_SYSCTL_WDT0_GATE 116
+#define K230_SYSCTL_WDT1_GATE 117
+#define K230_TIMER0_GATE 118
+#define K230_TIMER1_GATE 119
+#define K230_TIMER2_GATE 120
+#define K230_TIMER3_GATE 121
+#define K230_TIMER4_GATE 122
+#define K230_TIMER5_GATE 123
+#define K230_SHRM_APB_GATE 124
+#define K230_SHRM_AXI_GATE 125
+#define K230_SHRM_AXI_SLAVE_GATE 126
+#define K230_SHRM_NONAI2D_AXI_GATE 127
+#define K230_SHRM_SRAM_GATE 128
+#define K230_SHRM_DECOMPRESS_AXI_GATE 129
+#define K230_SHRM_SDMA_AXI_GATE 130
+#define K230_SHRM_PDMA_AXI_GATE 131
+#define K230_DDRC_SRC_GATE 132
+#define K230_DDRC_BYPASS_GATE 133
+#define K230_DDRC_APB_GATE 134
+#define K230_DISPLAY_AHB_GATE 135
+#define K230_DISPLAY_AXI_GATE 136
+#define K230_DISPLAY_GPU_GATE 137
+#define K230_DISPLAY_DPIP_GATE 138
+#define K230_DISPLAY_CFG_GATE 139
+#define K230_DISPLAY_REF_GATE 140
+#define K230_USB_480M_GATE 141
+#define K230_USB_100M_GATE 142
+#define K230_DPHY_DFT_GATE 143
+#define K230_SPI2AXI_GATE 144
+#define K230_AI_SRC_GATE 145
+#define K230_AI_AXI_GATE 146
+#define K230_AI_SRC_RATE 147
+#define K230_CAMERA0_GATE 148
+#define K230_CAMERA1_GATE 149
+#define K230_CAMERA2_GATE 150
+#define K230_LS_APB_SRC_RATE 151
+#define K230_LS_I2C0_RATE 152
+#define K230_LS_I2C1_RATE 153
+#define K230_LS_I2C2_RATE 154
+#define K230_LS_I2C3_RATE 155
+#define K230_LS_I2C4_RATE 156
+#define K230_LS_CODEC_ADC_RATE 157
+#define K230_LS_CODEC_DAC_RATE 158
+#define K230_LS_AUDIO_DEV_RATE 159
+#define K230_LS_PDM_RATE 160
+#define K230_LS_ADC_RATE 161
+#define K230_LS_UART0_RATE 162
+#define K230_LS_UART1_RATE 163
+#define K230_LS_UART2_RATE 164
+#define K230_LS_UART3_RATE 165
+#define K230_LS_UART4_RATE 166
+#define K230_LS_JAMLINKCO_SRC_RATE 167
+#define K230_LS_GPIO_DEBOUNCE_RATE 168
+#define K230_SYSCTL_HDI_RATE 169
+#define K230_SYSCTL_TIME_STAMP_RATE 170
+#define K230_SYSCTL_TEMP_SENSOR_RATE 171
+#define K230_SYSCTL_WDT0_RATE 172
+#define K230_SYSCTL_WDT1_RATE 173
+#define K230_TIMER0_SRC_RATE 174
+#define K230_TIMER1_SRC_RATE 175
+#define K230_TIMER2_SRC_RATE 176
+#define K230_TIMER3_SRC_RATE 177
+#define K230_TIMER4_SRC_RATE 178
+#define K230_TIMER5_SRC_RATE 179
+#define K230_SHRM_APB_RATE 180
+#define K230_DDRC_SRC_RATE 181
+#define K230_DDRC_APB_RATE 182
+#define K230_DISPLAY_AHB_RATE 183
+#define K230_DISPLAY_CLKEXT_RATE 184
+#define K230_DISPLAY_GPU_RATE 185
+#define K230_DISPLAY_DPIP_RATE 186
+#define K230_DISPLAY_CFG_RATE 187
+#define K230_VPU_SRC_GATE 188
+#define K230_VPU_AXI_GATE 189
+#define K230_VPU_DDRCP2_GATE 190
+#define K230_VPU_CFG_GATE 191
+#define K230_VPU_SRC_RATE 192
+#define K230_VPU_AXI_SRC_RATE 193
+#define K230_VPU_CFG_RATE 194
+#define K230_SEC_APB_GATE 195
+#define K230_SEC_FIX_GATE 196
+#define K230_SEC_AXI_GATE 197
+#define K230_SEC_APB_RATE 198
+#define K230_SEC_FIX_RATE 199
+#define K230_SEC_AXI_RATE 200
+#define K230_USB_480M_RATE 201
+#define K230_USB_100M_RATE 202
+#define K230_DPHY_DFT_RATE 203
+#define K230_SPI2AXI_RATE 204
+#define K230_CAMERA0_RATE 205
+#define K230_CAMERA1_RATE 206
+#define K230_CAMERA2_RATE 207
+#define K230_SHRM_SRAM_DIV2 208
+
+#endif /* __DT_BINDINGS_CANAAN_K230_CLOCK_H__ */
+
--
2.34.1
On Wed, Jul 30, 2025 at 02:43:51AM +0800, Xukai Wang wrote:
> This patch adds the Device Tree binding for the clock controller
> on Canaan k230. The binding defines the clocks and the required
> properties to configure them correctly.
>
> Signed-off-by: Xukai Wang <kingxukai@zohomail.com>
> ---
> .../devicetree/bindings/clock/canaan,k230-clk.yaml | 61 ++++++
> include/dt-bindings/clock/canaan,k230-clk.h | 223 +++++++++++++++++++++
> 2 files changed, 284 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml b/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..f2aa509b12bce1a69679f6d7e2853273233266d5
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml
> @@ -0,0 +1,61 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/clock/canaan,k230-clk.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Canaan Kendryte K230 Clock
> +
> +maintainers:
> + - Xukai Wang <kingxukai@zohomail.com>
> +
> +description:
> + The Canaan K230 clock controller generates various clocks for SoC
> + peripherals. See include/dt-bindings/clock/canaan,k230-clk.h for
> + valid clock IDs.
> +
> +properties:
> + compatible:
> + const: canaan,k230-clk
> +
> + reg:
> + items:
> + - description: PLL control registers
> + - description: Sysclk control registers
> +
> + clocks:
> + minItems: 1
No, drop. Hardware is not flexible.
> + items:
> + - description: Main external reference clock
> + - description:
> + External clock which used as the pulse input
> + for the timer to provide timing signals.
So what is the difference that you removed my Rb? Only this? I do not
see any differences (and don't tell me, you claim some random indice
numbers as change DT maintainer would need to re-review...)
> +
> + clock-names:
> + minItems: 1
No, drop. Hardware is not flexible.
> + items:
> + - const: osc24m
> + - const: timer-pulse-in
> +
> + '#clock-cells':
> + const: 1
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - clock-names
> + - '#clock-cells'
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + clock-controller@91102000 {
> + compatible = "canaan,k230-clk";
> + reg = <0x91102000 0x40>,
> + <0x91100000 0x108>;
> + clocks = <&osc24m>;
> + clock-names = "osc24m";
Incomplete. Post complete hardware.
> + #clock-cells = <1>;
> + };
> diff --git a/include/dt-bindings/clock/canaan,k230-clk.h b/include/dt-bindings/clock/canaan,k230-clk.h
> new file mode 100644
> index 0000000000000000000000000000000000000000..9eee9440a4f14583eac845b649e5685d623132e1
> --- /dev/null
> +++ b/include/dt-bindings/clock/canaan,k230-clk.h
> @@ -0,0 +1,223 @@
> +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
> +/*
> + * Kendryte Canaan K230 Clock Drivers
> + *
> + * Author: Xukai Wang <kingxukai@zohomail.com>
> + */
> +
> +#ifndef __DT_BINDINGS_CANAAN_K230_CLOCK_H__
> +#define __DT_BINDINGS_CANAAN_K230_CLOCK_H__
> +
> +/* Kendryte K230 SoC clock identifiers (arbitrary values) */
Drop comment, redundant and obvious.
Best regards,
Krzysztof
On 2025/7/30 15:05, Krzysztof Kozlowski wrote:
> On Wed, Jul 30, 2025 at 02:43:51AM +0800, Xukai Wang wrote:
>> This patch adds the Device Tree binding for the clock controller
>> on Canaan k230. The binding defines the clocks and the required
>> properties to configure them correctly.
>>
>> Signed-off-by: Xukai Wang <kingxukai@zohomail.com>
>> ---
>> .../devicetree/bindings/clock/canaan,k230-clk.yaml | 61 ++++++
>> include/dt-bindings/clock/canaan,k230-clk.h | 223 +++++++++++++++++++++
>> 2 files changed, 284 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml b/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..f2aa509b12bce1a69679f6d7e2853273233266d5
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml
>> @@ -0,0 +1,61 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/clock/canaan,k230-clk.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Canaan Kendryte K230 Clock
>> +
>> +maintainers:
>> + - Xukai Wang <kingxukai@zohomail.com>
>> +
>> +description:
>> + The Canaan K230 clock controller generates various clocks for SoC
>> + peripherals. See include/dt-bindings/clock/canaan,k230-clk.h for
>> + valid clock IDs.
>> +
>> +properties:
>> + compatible:
>> + const: canaan,k230-clk
>> +
>> + reg:
>> + items:
>> + - description: PLL control registers
>> + - description: Sysclk control registers
>> +
>> + clocks:
>> + minItems: 1
> No, drop. Hardware is not flexible.
OK.
>
>> + items:
>> + - description: Main external reference clock
>> + - description:
>> + External clock which used as the pulse input
>> + for the timer to provide timing signals.
> So what is the difference that you removed my Rb? Only this? I do not
> see any differences (and don't tell me, you claim some random indice
> numbers as change DT maintainer would need to re-review...)
Sorry about that. Since canaan/k230-clk.yaml was updated with new
clocks, I thought it might require a re-review. I didn't mean to cause
unnecessary noise.
>
>> +
>> + clock-names:
>> + minItems: 1
> No, drop. Hardware is not flexible.
OK.
>
>> + items:
>> + - const: osc24m
>> + - const: timer-pulse-in
>> +
>> + '#clock-cells':
>> + const: 1
>> +
>> +required:
>> + - compatible
>> + - reg
>> + - clocks
>> + - clock-names
>> + - '#clock-cells'
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + clock-controller@91102000 {
>> + compatible = "canaan,k230-clk";
>> + reg = <0x91102000 0x40>,
>> + <0x91100000 0x108>;
>> + clocks = <&osc24m>;
>> + clock-names = "osc24m";
> Incomplete. Post complete hardware.
OK.
>
>> + #clock-cells = <1>;
>> + };
>> diff --git a/include/dt-bindings/clock/canaan,k230-clk.h b/include/dt-bindings/clock/canaan,k230-clk.h
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..9eee9440a4f14583eac845b649e5685d623132e1
>> --- /dev/null
>> +++ b/include/dt-bindings/clock/canaan,k230-clk.h
>> @@ -0,0 +1,223 @@
>> +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
>> +/*
>> + * Kendryte Canaan K230 Clock Drivers
>> + *
>> + * Author: Xukai Wang <kingxukai@zohomail.com>
>> + */
>> +
>> +#ifndef __DT_BINDINGS_CANAAN_K230_CLOCK_H__
>> +#define __DT_BINDINGS_CANAAN_K230_CLOCK_H__
>> +
>> +/* Kendryte K230 SoC clock identifiers (arbitrary values) */
> Drop comment, redundant and obvious.
OK, I'll drop it.
>
> Best regards,
> Krzysztof
>
On 2025/7/30 02:43, Xukai Wang wrote:
> This patch adds the Device Tree binding for the clock controller
> on Canaan k230. The binding defines the clocks and the required
> properties to configure them correctly.
>
> Signed-off-by: Xukai Wang <kingxukai@zohomail.com>
Hi Krzysztof Kozlowski,
As this patch adds many new clocks, which introduced significant
changes, so I just removed your Reviewed-by tag.
Thanks for your patient review and your time.
> ---
> .../devicetree/bindings/clock/canaan,k230-clk.yaml | 61 ++++++
> include/dt-bindings/clock/canaan,k230-clk.h | 223 +++++++++++++++++++++
> 2 files changed, 284 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml b/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..f2aa509b12bce1a69679f6d7e2853273233266d5
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/canaan,k230-clk.yaml
> @@ -0,0 +1,61 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/clock/canaan,k230-clk.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Canaan Kendryte K230 Clock
> +
> +maintainers:
> + - Xukai Wang <kingxukai@zohomail.com>
> +
> +description:
> + The Canaan K230 clock controller generates various clocks for SoC
> + peripherals. See include/dt-bindings/clock/canaan,k230-clk.h for
> + valid clock IDs.
> +
> +properties:
> + compatible:
> + const: canaan,k230-clk
> +
> + reg:
> + items:
> + - description: PLL control registers
> + - description: Sysclk control registers
> +
> + clocks:
> + minItems: 1
> + items:
> + - description: Main external reference clock
> + - description:
> + External clock which used as the pulse input
> + for the timer to provide timing signals.
> +
> + clock-names:
> + minItems: 1
> + items:
> + - const: osc24m
> + - const: timer-pulse-in
> +
> + '#clock-cells':
> + const: 1
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - clock-names
> + - '#clock-cells'
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + clock-controller@91102000 {
> + compatible = "canaan,k230-clk";
> + reg = <0x91102000 0x40>,
> + <0x91100000 0x108>;
> + clocks = <&osc24m>;
> + clock-names = "osc24m";
> + #clock-cells = <1>;
> + };
> diff --git a/include/dt-bindings/clock/canaan,k230-clk.h b/include/dt-bindings/clock/canaan,k230-clk.h
> new file mode 100644
> index 0000000000000000000000000000000000000000..9eee9440a4f14583eac845b649e5685d623132e1
> --- /dev/null
> +++ b/include/dt-bindings/clock/canaan,k230-clk.h
> @@ -0,0 +1,223 @@
> +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
> +/*
> + * Kendryte Canaan K230 Clock Drivers
> + *
> + * Author: Xukai Wang <kingxukai@zohomail.com>
> + */
> +
> +#ifndef __DT_BINDINGS_CANAAN_K230_CLOCK_H__
> +#define __DT_BINDINGS_CANAAN_K230_CLOCK_H__
> +
> +/* Kendryte K230 SoC clock identifiers (arbitrary values) */
> +#define K230_CPU0_SRC_GATE 0
> +#define K230_CPU0_PLIC_GATE 1
> +#define K230_CPU0_NOC_DDRCP4_GATE 2
> +#define K230_CPU0_APB_GATE 3
> +#define K230_CPU0_SRC_RATE 4
> +#define K230_CPU0_AXI_RATE 5
> +#define K230_CPU0_PLIC_RATE 6
> +#define K230_CPU0_APB_RATE 7
> +#define K230_HS_OSPI_SRC_MUX 8
> +#define K230_HS_USB_REF_MUX 9
> +#define K230_HS_HCLK_HIGH_GATE 10
> +#define K230_HS_HCLK_SRC_GATE 11
> +#define K230_HS_SD0_AHB_GATE 12
> +#define K230_HS_SD1_AHB_GATE 13
> +#define K230_HS_SSI1_AHB_GATE 14
> +#define K230_HS_SSI2_AHB_GATE 15
> +#define K230_HS_USB0_AHB_GATE 16
> +#define K230_HS_USB1_AHB_GATE 17
> +#define K230_HS_SSI0_AXI_GATE 18
> +#define K230_HS_SSI1_GATE 19
> +#define K230_HS_SSI2_GATE 20
> +#define K230_HS_QSPI_AXI_SRC_GATE 21
> +#define K230_HS_SSI1_AXI_GATE 22
> +#define K230_HS_SSI2_AXI_GATE 23
> +#define K230_HS_SD_CARD_SRC_GATE 24
> +#define K230_HS_SD0_CARD_GATE 25
> +#define K230_HS_SD1_CARD_GATE 26
> +#define K230_HS_SD_AXI_SRC_GATE 27
> +#define K230_HS_SD0_AXI_GATE 28
> +#define K230_HS_SD1_AXI_GATE 29
> +#define K230_HS_SD0_BASE_GATE 30
> +#define K230_HS_SD1_BASE_GATE 31
> +#define K230_HS_OSPI_SRC_GATE 32
> +#define K230_HS_SD_TIMER_SRC_GATE 33
> +#define K230_HS_SD0_TIMER_GATE 34
> +#define K230_HS_SD1_TIMER_GATE 35
> +#define K230_HS_USB0_REF_GATE 36
> +#define K230_HS_USB1_REF_GATE 37
> +#define K230_HS_HCLK_HIGH_SRC_RATE 38
> +#define K230_HS_HCLK_SRC_RATE 39
> +#define K230_HS_SSI0_AXI_RATE 40
> +#define K230_HS_SSI1_RATE 41
> +#define K230_HS_SSI2_RATE 42
> +#define K230_HS_QSPI_AXI_SRC_RATE 43
> +#define K230_HS_SD_CARD_SRC_RATE 44
> +#define K230_HS_SD_AXI_SRC_RATE 45
> +#define K230_HS_USB_REF_50M_RATE 46
> +#define K230_HS_SD_TIMER_SRC_RATE 47
> +#define K230_TIMER0_MUX 48
> +#define K230_TIMER1_MUX 49
> +#define K230_TIMER2_MUX 50
> +#define K230_TIMER3_MUX 51
> +#define K230_TIMER4_MUX 52
> +#define K230_TIMER5_MUX 53
> +#define K230_SHRM_SRAM_MUX 54
> +#define K230_DDRC_SRC_MUX 55
> +#define K230_AI_SRC_MUX 56
> +#define K230_CAMERA0_MUX 57
> +#define K230_CAMERA1_MUX 58
> +#define K230_CAMERA2_MUX 59
> +#define K230_CPU1_SRC_MUX 60
> +#define K230_CPU1_SRC_GATE 61
> +#define K230_CPU1_PLIC_GATE 62
> +#define K230_CPU1_APB_GATE 63
> +#define K230_CPU1_SRC_RATE 64
> +#define K230_CPU1_AXI_RATE 65
> +#define K230_CPU1_PLIC_RATE 66
> +#define K230_CPU1_APB_RATE 67
> +#define K230_PMU_APB_GATE 68
> +#define K230_LS_APB_SRC_GATE 69
> +#define K230_LS_UART0_APB_GATE 70
> +#define K230_LS_UART1_APB_GATE 71
> +#define K230_LS_UART2_APB_GATE 72
> +#define K230_LS_UART3_APB_GATE 73
> +#define K230_LS_UART4_APB_GATE 74
> +#define K230_LS_I2C0_APB_GATE 75
> +#define K230_LS_I2C1_APB_GATE 76
> +#define K230_LS_I2C2_APB_GATE 77
> +#define K230_LS_I2C3_APB_GATE 78
> +#define K230_LS_I2C4_APB_GATE 79
> +#define K230_LS_GPIO_APB_GATE 80
> +#define K230_LS_PWM_APB_GATE 81
> +#define K230_LS_JAMLINK0_APB_GATE 82
> +#define K230_LS_JAMLINK1_APB_GATE 83
> +#define K230_LS_JAMLINK2_APB_GATE 84
> +#define K230_LS_JAMLINK3_APB_GATE 85
> +#define K230_LS_AUDIO_APB_GATE 86
> +#define K230_LS_ADC_APB_GATE 87
> +#define K230_LS_CODEC_APB_GATE 88
> +#define K230_LS_I2C0_GATE 89
> +#define K230_LS_I2C1_GATE 90
> +#define K230_LS_I2C2_GATE 91
> +#define K230_LS_I2C3_GATE 92
> +#define K230_LS_I2C4_GATE 93
> +#define K230_LS_CODEC_ADC_GATE 94
> +#define K230_LS_CODEC_DAC_GATE 95
> +#define K230_LS_AUDIO_DEV_GATE 96
> +#define K230_LS_PDM_GATE 97
> +#define K230_LS_ADC_GATE 98
> +#define K230_LS_UART0_GATE 99
> +#define K230_LS_UART1_GATE 100
> +#define K230_LS_UART2_GATE 101
> +#define K230_LS_UART3_GATE 102
> +#define K230_LS_UART4_GATE 103
> +#define K230_LS_JAMLINK0CO_GATE 104
> +#define K230_LS_JAMLINK1CO_GATE 105
> +#define K230_LS_JAMLINK2CO_GATE 106
> +#define K230_LS_JAMLINK3CO_GATE 107
> +#define K230_LS_GPIO_DEBOUNCE_GATE 108
> +#define K230_SYSCTL_WDT0_APB_GATE 109
> +#define K230_SYSCTL_WDT1_APB_GATE 110
> +#define K230_SYSCTL_TIMER_APB_GATE 111
> +#define K230_SYSCTL_IOMUX_APB_GATE 112
> +#define K230_SYSCTL_MAILBOX_APB_GATE 113
> +#define K230_SYSCTL_HDI_GATE 114
> +#define K230_SYSCTL_TIME_STAMP_GATE 115
> +#define K230_SYSCTL_WDT0_GATE 116
> +#define K230_SYSCTL_WDT1_GATE 117
> +#define K230_TIMER0_GATE 118
> +#define K230_TIMER1_GATE 119
> +#define K230_TIMER2_GATE 120
> +#define K230_TIMER3_GATE 121
> +#define K230_TIMER4_GATE 122
> +#define K230_TIMER5_GATE 123
> +#define K230_SHRM_APB_GATE 124
> +#define K230_SHRM_AXI_GATE 125
> +#define K230_SHRM_AXI_SLAVE_GATE 126
> +#define K230_SHRM_NONAI2D_AXI_GATE 127
> +#define K230_SHRM_SRAM_GATE 128
> +#define K230_SHRM_DECOMPRESS_AXI_GATE 129
> +#define K230_SHRM_SDMA_AXI_GATE 130
> +#define K230_SHRM_PDMA_AXI_GATE 131
> +#define K230_DDRC_SRC_GATE 132
> +#define K230_DDRC_BYPASS_GATE 133
> +#define K230_DDRC_APB_GATE 134
> +#define K230_DISPLAY_AHB_GATE 135
> +#define K230_DISPLAY_AXI_GATE 136
> +#define K230_DISPLAY_GPU_GATE 137
> +#define K230_DISPLAY_DPIP_GATE 138
> +#define K230_DISPLAY_CFG_GATE 139
> +#define K230_DISPLAY_REF_GATE 140
> +#define K230_USB_480M_GATE 141
> +#define K230_USB_100M_GATE 142
> +#define K230_DPHY_DFT_GATE 143
> +#define K230_SPI2AXI_GATE 144
> +#define K230_AI_SRC_GATE 145
> +#define K230_AI_AXI_GATE 146
> +#define K230_AI_SRC_RATE 147
> +#define K230_CAMERA0_GATE 148
> +#define K230_CAMERA1_GATE 149
> +#define K230_CAMERA2_GATE 150
> +#define K230_LS_APB_SRC_RATE 151
> +#define K230_LS_I2C0_RATE 152
> +#define K230_LS_I2C1_RATE 153
> +#define K230_LS_I2C2_RATE 154
> +#define K230_LS_I2C3_RATE 155
> +#define K230_LS_I2C4_RATE 156
> +#define K230_LS_CODEC_ADC_RATE 157
> +#define K230_LS_CODEC_DAC_RATE 158
> +#define K230_LS_AUDIO_DEV_RATE 159
> +#define K230_LS_PDM_RATE 160
> +#define K230_LS_ADC_RATE 161
> +#define K230_LS_UART0_RATE 162
> +#define K230_LS_UART1_RATE 163
> +#define K230_LS_UART2_RATE 164
> +#define K230_LS_UART3_RATE 165
> +#define K230_LS_UART4_RATE 166
> +#define K230_LS_JAMLINKCO_SRC_RATE 167
> +#define K230_LS_GPIO_DEBOUNCE_RATE 168
> +#define K230_SYSCTL_HDI_RATE 169
> +#define K230_SYSCTL_TIME_STAMP_RATE 170
> +#define K230_SYSCTL_TEMP_SENSOR_RATE 171
> +#define K230_SYSCTL_WDT0_RATE 172
> +#define K230_SYSCTL_WDT1_RATE 173
> +#define K230_TIMER0_SRC_RATE 174
> +#define K230_TIMER1_SRC_RATE 175
> +#define K230_TIMER2_SRC_RATE 176
> +#define K230_TIMER3_SRC_RATE 177
> +#define K230_TIMER4_SRC_RATE 178
> +#define K230_TIMER5_SRC_RATE 179
> +#define K230_SHRM_APB_RATE 180
> +#define K230_DDRC_SRC_RATE 181
> +#define K230_DDRC_APB_RATE 182
> +#define K230_DISPLAY_AHB_RATE 183
> +#define K230_DISPLAY_CLKEXT_RATE 184
> +#define K230_DISPLAY_GPU_RATE 185
> +#define K230_DISPLAY_DPIP_RATE 186
> +#define K230_DISPLAY_CFG_RATE 187
> +#define K230_VPU_SRC_GATE 188
> +#define K230_VPU_AXI_GATE 189
> +#define K230_VPU_DDRCP2_GATE 190
> +#define K230_VPU_CFG_GATE 191
> +#define K230_VPU_SRC_RATE 192
> +#define K230_VPU_AXI_SRC_RATE 193
> +#define K230_VPU_CFG_RATE 194
> +#define K230_SEC_APB_GATE 195
> +#define K230_SEC_FIX_GATE 196
> +#define K230_SEC_AXI_GATE 197
> +#define K230_SEC_APB_RATE 198
> +#define K230_SEC_FIX_RATE 199
> +#define K230_SEC_AXI_RATE 200
> +#define K230_USB_480M_RATE 201
> +#define K230_USB_100M_RATE 202
> +#define K230_DPHY_DFT_RATE 203
> +#define K230_SPI2AXI_RATE 204
> +#define K230_CAMERA0_RATE 205
> +#define K230_CAMERA1_RATE 206
> +#define K230_CAMERA2_RATE 207
> +#define K230_SHRM_SRAM_DIV2 208
> +
> +#endif /* __DT_BINDINGS_CANAAN_K230_CLOCK_H__ */
> +
>
© 2016 - 2026 Red Hat, Inc.