Skip to content

Commit 61e312a

Browse files
Haylen Chudlan17
authored andcommitted
dt-bindings: soc: spacemit: Add spacemit,k1-syscon
Document APMU, MPMU and APBC syscons found on SpacemiT K1 SoC, which are capable of generating clock and reset signals. Additionally, APMU and MPMU manage power domains. Signed-off-by: Haylen Chu <heylenay@4d2.org> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Reviewed-by: Alex Elder <elder@riscstar.com> Reviewed-by: Yixun Lan <dlan@gentoo.org> Link: https://lore.kernel.org/r/20250416135406.16284-2-heylenay@4d2.org Signed-off-by: Yixun Lan <dlan@gentoo.org>
1 parent 0af2f6b commit 61e312a

File tree

2 files changed

+290
-0
lines changed

2 files changed

+290
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/soc/spacemit/spacemit,k1-syscon.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: SpacemiT K1 SoC System Controller
8+
9+
maintainers:
10+
- Haylen Chu <heylenay@4d2.org>
11+
12+
description:
13+
System controllers found on SpacemiT K1 SoC, which are capable of
14+
clock, reset and power-management functions.
15+
16+
properties:
17+
compatible:
18+
enum:
19+
- spacemit,k1-syscon-apbc
20+
- spacemit,k1-syscon-apmu
21+
- spacemit,k1-syscon-mpmu
22+
23+
reg:
24+
maxItems: 1
25+
26+
clocks:
27+
maxItems: 4
28+
29+
clock-names:
30+
items:
31+
- const: osc
32+
- const: vctcxo_1m
33+
- const: vctcxo_3m
34+
- const: vctcxo_24m
35+
36+
"#clock-cells":
37+
const: 1
38+
description:
39+
See <dt-bindings/clock/spacemit,k1-syscon.h> for valid indices.
40+
41+
"#power-domain-cells":
42+
const: 1
43+
44+
"#reset-cells":
45+
const: 1
46+
47+
required:
48+
- compatible
49+
- reg
50+
- clocks
51+
- clock-names
52+
- "#clock-cells"
53+
- "#reset-cells"
54+
55+
allOf:
56+
- if:
57+
properties:
58+
compatible:
59+
contains:
60+
const: spacemit,k1-syscon-apbc
61+
then:
62+
properties:
63+
"#power-domain-cells": false
64+
else:
65+
required:
66+
- "#power-domain-cells"
67+
68+
additionalProperties: false
69+
70+
examples:
71+
- |
72+
system-controller@d4050000 {
73+
compatible = "spacemit,k1-syscon-mpmu";
74+
reg = <0xd4050000 0x209c>;
75+
clocks = <&osc>, <&vctcxo_1m>, <&vctcxo_3m>, <&vctcxo_24m>;
76+
clock-names = "osc", "vctcxo_1m", "vctcxo_3m", "vctcxo_24m";
77+
#clock-cells = <1>;
78+
#power-domain-cells = <1>;
79+
#reset-cells = <1>;
80+
};
Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
2+
/*
3+
* Copyright (C) 2024-2025 Haylen Chu <heylenay@outlook.com>
4+
*/
5+
6+
#ifndef _DT_BINDINGS_SPACEMIT_CCU_H_
7+
#define _DT_BINDINGS_SPACEMIT_CCU_H_
8+
9+
/* MPMU clocks */
10+
#define CLK_PLL1_307P2 0
11+
#define CLK_PLL1_76P8 1
12+
#define CLK_PLL1_61P44 2
13+
#define CLK_PLL1_153P6 3
14+
#define CLK_PLL1_102P4 4
15+
#define CLK_PLL1_51P2 5
16+
#define CLK_PLL1_51P2_AP 6
17+
#define CLK_PLL1_57P6 7
18+
#define CLK_PLL1_25P6 8
19+
#define CLK_PLL1_12P8 9
20+
#define CLK_PLL1_12P8_WDT 10
21+
#define CLK_PLL1_6P4 11
22+
#define CLK_PLL1_3P2 12
23+
#define CLK_PLL1_1P6 13
24+
#define CLK_PLL1_0P8 14
25+
#define CLK_PLL1_409P6 15
26+
#define CLK_PLL1_204P8 16
27+
#define CLK_PLL1_491 17
28+
#define CLK_PLL1_245P76 18
29+
#define CLK_PLL1_614 19
30+
#define CLK_PLL1_47P26 20
31+
#define CLK_PLL1_31P5 21
32+
#define CLK_PLL1_819 22
33+
#define CLK_PLL1_1228 23
34+
#define CLK_SLOW_UART 24
35+
#define CLK_SLOW_UART1 25
36+
#define CLK_SLOW_UART2 26
37+
#define CLK_WDT 27
38+
#define CLK_RIPC 28
39+
#define CLK_I2S_SYSCLK 29
40+
#define CLK_I2S_BCLK 30
41+
#define CLK_APB 31
42+
#define CLK_WDT_BUS 32
43+
44+
/* APBC clocks */
45+
#define CLK_UART0 0
46+
#define CLK_UART2 1
47+
#define CLK_UART3 2
48+
#define CLK_UART4 3
49+
#define CLK_UART5 4
50+
#define CLK_UART6 5
51+
#define CLK_UART7 6
52+
#define CLK_UART8 7
53+
#define CLK_UART9 8
54+
#define CLK_GPIO 9
55+
#define CLK_PWM0 10
56+
#define CLK_PWM1 11
57+
#define CLK_PWM2 12
58+
#define CLK_PWM3 13
59+
#define CLK_PWM4 14
60+
#define CLK_PWM5 15
61+
#define CLK_PWM6 16
62+
#define CLK_PWM7 17
63+
#define CLK_PWM8 18
64+
#define CLK_PWM9 19
65+
#define CLK_PWM10 20
66+
#define CLK_PWM11 21
67+
#define CLK_PWM12 22
68+
#define CLK_PWM13 23
69+
#define CLK_PWM14 24
70+
#define CLK_PWM15 25
71+
#define CLK_PWM16 26
72+
#define CLK_PWM17 27
73+
#define CLK_PWM18 28
74+
#define CLK_PWM19 29
75+
#define CLK_SSP3 30
76+
#define CLK_RTC 31
77+
#define CLK_TWSI0 32
78+
#define CLK_TWSI1 33
79+
#define CLK_TWSI2 34
80+
#define CLK_TWSI4 35
81+
#define CLK_TWSI5 36
82+
#define CLK_TWSI6 37
83+
#define CLK_TWSI7 38
84+
#define CLK_TWSI8 39
85+
#define CLK_TIMERS1 40
86+
#define CLK_TIMERS2 41
87+
#define CLK_AIB 42
88+
#define CLK_ONEWIRE 43
89+
#define CLK_SSPA0 44
90+
#define CLK_SSPA1 45
91+
#define CLK_DRO 46
92+
#define CLK_IR 47
93+
#define CLK_TSEN 48
94+
#define CLK_IPC_AP2AUD 49
95+
#define CLK_CAN0 50
96+
#define CLK_CAN0_BUS 51
97+
#define CLK_UART0_BUS 52
98+
#define CLK_UART2_BUS 53
99+
#define CLK_UART3_BUS 54
100+
#define CLK_UART4_BUS 55
101+
#define CLK_UART5_BUS 56
102+
#define CLK_UART6_BUS 57
103+
#define CLK_UART7_BUS 58
104+
#define CLK_UART8_BUS 59
105+
#define CLK_UART9_BUS 60
106+
#define CLK_GPIO_BUS 61
107+
#define CLK_PWM0_BUS 62
108+
#define CLK_PWM1_BUS 63
109+
#define CLK_PWM2_BUS 64
110+
#define CLK_PWM3_BUS 65
111+
#define CLK_PWM4_BUS 66
112+
#define CLK_PWM5_BUS 67
113+
#define CLK_PWM6_BUS 68
114+
#define CLK_PWM7_BUS 69
115+
#define CLK_PWM8_BUS 70
116+
#define CLK_PWM9_BUS 71
117+
#define CLK_PWM10_BUS 72
118+
#define CLK_PWM11_BUS 73
119+
#define CLK_PWM12_BUS 74
120+
#define CLK_PWM13_BUS 75
121+
#define CLK_PWM14_BUS 76
122+
#define CLK_PWM15_BUS 77
123+
#define CLK_PWM16_BUS 78
124+
#define CLK_PWM17_BUS 79
125+
#define CLK_PWM18_BUS 80
126+
#define CLK_PWM19_BUS 81
127+
#define CLK_SSP3_BUS 82
128+
#define CLK_RTC_BUS 83
129+
#define CLK_TWSI0_BUS 84
130+
#define CLK_TWSI1_BUS 85
131+
#define CLK_TWSI2_BUS 86
132+
#define CLK_TWSI4_BUS 87
133+
#define CLK_TWSI5_BUS 88
134+
#define CLK_TWSI6_BUS 89
135+
#define CLK_TWSI7_BUS 90
136+
#define CLK_TWSI8_BUS 91
137+
#define CLK_TIMERS1_BUS 92
138+
#define CLK_TIMERS2_BUS 93
139+
#define CLK_AIB_BUS 94
140+
#define CLK_ONEWIRE_BUS 95
141+
#define CLK_SSPA0_BUS 96
142+
#define CLK_SSPA1_BUS 97
143+
#define CLK_TSEN_BUS 98
144+
#define CLK_IPC_AP2AUD_BUS 99
145+
146+
/* APMU clocks */
147+
#define CLK_CCI550 0
148+
#define CLK_CPU_C0_HI 1
149+
#define CLK_CPU_C0_CORE 2
150+
#define CLK_CPU_C0_ACE 3
151+
#define CLK_CPU_C0_TCM 4
152+
#define CLK_CPU_C1_HI 5
153+
#define CLK_CPU_C1_CORE 6
154+
#define CLK_CPU_C1_ACE 7
155+
#define CLK_CCIC_4X 8
156+
#define CLK_CCIC1PHY 9
157+
#define CLK_SDH_AXI 10
158+
#define CLK_SDH0 11
159+
#define CLK_SDH1 12
160+
#define CLK_SDH2 13
161+
#define CLK_USB_P1 14
162+
#define CLK_USB_AXI 15
163+
#define CLK_USB30 16
164+
#define CLK_QSPI 17
165+
#define CLK_QSPI_BUS 18
166+
#define CLK_DMA 19
167+
#define CLK_AES 20
168+
#define CLK_VPU 21
169+
#define CLK_GPU 22
170+
#define CLK_EMMC 23
171+
#define CLK_EMMC_X 24
172+
#define CLK_AUDIO 25
173+
#define CLK_HDMI 26
174+
#define CLK_PMUA_ACLK 27
175+
#define CLK_PCIE0_MASTER 28
176+
#define CLK_PCIE0_SLAVE 29
177+
#define CLK_PCIE0_DBI 30
178+
#define CLK_PCIE1_MASTER 31
179+
#define CLK_PCIE1_SLAVE 32
180+
#define CLK_PCIE1_DBI 33
181+
#define CLK_PCIE2_MASTER 34
182+
#define CLK_PCIE2_SLAVE 35
183+
#define CLK_PCIE2_DBI 36
184+
#define CLK_EMAC0_BUS 37
185+
#define CLK_EMAC0_PTP 38
186+
#define CLK_EMAC1_BUS 39
187+
#define CLK_EMAC1_PTP 40
188+
#define CLK_JPG 41
189+
#define CLK_CCIC2PHY 42
190+
#define CLK_CCIC3PHY 43
191+
#define CLK_CSI 44
192+
#define CLK_CAMM0 45
193+
#define CLK_CAMM1 46
194+
#define CLK_CAMM2 47
195+
#define CLK_ISP_CPP 48
196+
#define CLK_ISP_BUS 49
197+
#define CLK_ISP 50
198+
#define CLK_DPU_MCLK 51
199+
#define CLK_DPU_ESC 52
200+
#define CLK_DPU_BIT 53
201+
#define CLK_DPU_PXCLK 54
202+
#define CLK_DPU_HCLK 55
203+
#define CLK_DPU_SPI 56
204+
#define CLK_DPU_SPI_HBUS 57
205+
#define CLK_DPU_SPIBUS 58
206+
#define CLK_DPU_SPI_ACLK 59
207+
#define CLK_V2D 60
208+
#define CLK_EMMC_BUS 61
209+
210+
#endif /* _DT_BINDINGS_SPACEMIT_CCU_H_ */

0 commit comments

Comments
 (0)