Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: soc: spacemit: define spacemit,k1-ccu resets

There are additional SpacemiT syscon CCUs whose registers control both
clocks and resets: RCPU, RCPU2, and APBC2. Unlike those defined
previously, these will (initially) support only resets. They do not
incorporate power domain functionality.

Previously the clock properties were required for all compatible nodes.
Make that requirement only apply to the three existing CCUs (APBC, APMU,
and MPMU), so that the new reset-only CCUs can go without specifying them.

Define the index values for resets associated with all SpacemiT K1
syscon nodes, including those with clocks already defined, as well as
the new ones (without clocks).

Signed-off-by: Alex Elder <elder@riscstar.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Yixun Lan <dlan@gentoo.org>
Link: https://lore.kernel.org/r/20250702113709.291748-2-elder@riscstar.com
Signed-off-by: Yixun Lan <dlan@gentoo.org>

authored by

Alex Elder and committed by
Yixun Lan
25a59e81 19272b37

+163 -7
+22 -7
Documentation/devicetree/bindings/soc/spacemit/spacemit,k1-syscon.yaml
··· 19 19 - spacemit,k1-syscon-apbc 20 20 - spacemit,k1-syscon-apmu 21 21 - spacemit,k1-syscon-mpmu 22 + - spacemit,k1-syscon-rcpu 23 + - spacemit,k1-syscon-rcpu2 24 + - spacemit,k1-syscon-apbc2 22 25 23 26 reg: 24 27 maxItems: 1 ··· 50 47 required: 51 48 - compatible 52 49 - reg 53 - - clocks 54 - - clock-names 55 - - "#clock-cells" 56 50 - "#reset-cells" 57 51 58 52 allOf: ··· 57 57 properties: 58 58 compatible: 59 59 contains: 60 - const: spacemit,k1-syscon-apbc 60 + enum: 61 + - spacemit,k1-syscon-apmu 62 + - spacemit,k1-syscon-mpmu 61 63 then: 62 - properties: 63 - "#power-domain-cells": false 64 - else: 65 64 required: 66 65 - "#power-domain-cells" 66 + else: 67 + properties: 68 + "#power-domain-cells": false 69 + - if: 70 + properties: 71 + compatible: 72 + contains: 73 + enum: 74 + - spacemit,k1-syscon-apbc 75 + - spacemit,k1-syscon-apmu 76 + - spacemit,k1-syscon-mpmu 77 + then: 78 + required: 79 + - clocks 80 + - clock-names 81 + - "#clock-cells" 67 82 68 83 additionalProperties: false 69 84
+141
include/dt-bindings/clock/spacemit,k1-syscon.h
··· 78 78 #define CLK_APB 31 79 79 #define CLK_WDT_BUS 32 80 80 81 + /* MPMU resets */ 82 + #define RESET_WDT 0 83 + 81 84 /* APBC clocks */ 82 85 #define CLK_UART0 0 83 86 #define CLK_UART2 1 ··· 183 180 #define CLK_TSEN_BUS 98 184 181 #define CLK_IPC_AP2AUD_BUS 99 185 182 183 + /* APBC resets */ 184 + #define RESET_UART0 0 185 + #define RESET_UART2 1 186 + #define RESET_UART3 2 187 + #define RESET_UART4 3 188 + #define RESET_UART5 4 189 + #define RESET_UART6 5 190 + #define RESET_UART7 6 191 + #define RESET_UART8 7 192 + #define RESET_UART9 8 193 + #define RESET_GPIO 9 194 + #define RESET_PWM0 10 195 + #define RESET_PWM1 11 196 + #define RESET_PWM2 12 197 + #define RESET_PWM3 13 198 + #define RESET_PWM4 14 199 + #define RESET_PWM5 15 200 + #define RESET_PWM6 16 201 + #define RESET_PWM7 17 202 + #define RESET_PWM8 18 203 + #define RESET_PWM9 19 204 + #define RESET_PWM10 20 205 + #define RESET_PWM11 21 206 + #define RESET_PWM12 22 207 + #define RESET_PWM13 23 208 + #define RESET_PWM14 24 209 + #define RESET_PWM15 25 210 + #define RESET_PWM16 26 211 + #define RESET_PWM17 27 212 + #define RESET_PWM18 28 213 + #define RESET_PWM19 29 214 + #define RESET_SSP3 30 215 + #define RESET_RTC 31 216 + #define RESET_TWSI0 32 217 + #define RESET_TWSI1 33 218 + #define RESET_TWSI2 34 219 + #define RESET_TWSI4 35 220 + #define RESET_TWSI5 36 221 + #define RESET_TWSI6 37 222 + #define RESET_TWSI7 38 223 + #define RESET_TWSI8 39 224 + #define RESET_TIMERS1 40 225 + #define RESET_TIMERS2 41 226 + #define RESET_AIB 42 227 + #define RESET_ONEWIRE 43 228 + #define RESET_SSPA0 44 229 + #define RESET_SSPA1 45 230 + #define RESET_DRO 46 231 + #define RESET_IR 47 232 + #define RESET_TSEN 48 233 + #define RESET_IPC_AP2AUD 49 234 + #define RESET_CAN0 50 235 + 186 236 /* APMU clocks */ 187 237 #define CLK_CCI550 0 188 238 #define CLK_CPU_C0_HI 1 ··· 299 243 #define CLK_DPU_SPI_ACLK 59 300 244 #define CLK_V2D 60 301 245 #define CLK_EMMC_BUS 61 246 + 247 + /* APMU resets */ 248 + #define RESET_CCIC_4X 0 249 + #define RESET_CCIC1_PHY 1 250 + #define RESET_SDH_AXI 2 251 + #define RESET_SDH0 3 252 + #define RESET_SDH1 4 253 + #define RESET_SDH2 5 254 + #define RESET_USBP1_AXI 6 255 + #define RESET_USB_AXI 7 256 + #define RESET_USB30_AHB 8 257 + #define RESET_USB30_VCC 9 258 + #define RESET_USB30_PHY 10 259 + #define RESET_QSPI 11 260 + #define RESET_QSPI_BUS 12 261 + #define RESET_DMA 13 262 + #define RESET_AES 14 263 + #define RESET_VPU 15 264 + #define RESET_GPU 16 265 + #define RESET_EMMC 17 266 + #define RESET_EMMC_X 18 267 + #define RESET_AUDIO_SYS 19 268 + #define RESET_AUDIO_MCU 20 269 + #define RESET_AUDIO_APMU 21 270 + #define RESET_HDMI 22 271 + #define RESET_PCIE0_MASTER 23 272 + #define RESET_PCIE0_SLAVE 24 273 + #define RESET_PCIE0_DBI 25 274 + #define RESET_PCIE0_GLOBAL 26 275 + #define RESET_PCIE1_MASTER 27 276 + #define RESET_PCIE1_SLAVE 28 277 + #define RESET_PCIE1_DBI 29 278 + #define RESET_PCIE1_GLOBAL 30 279 + #define RESET_PCIE2_MASTER 31 280 + #define RESET_PCIE2_SLAVE 32 281 + #define RESET_PCIE2_DBI 33 282 + #define RESET_PCIE2_GLOBAL 34 283 + #define RESET_EMAC0 35 284 + #define RESET_EMAC1 36 285 + #define RESET_JPG 37 286 + #define RESET_CCIC2PHY 38 287 + #define RESET_CCIC3PHY 39 288 + #define RESET_CSI 40 289 + #define RESET_ISP_CPP 41 290 + #define RESET_ISP_BUS 42 291 + #define RESET_ISP 43 292 + #define RESET_ISP_CI 44 293 + #define RESET_DPU_MCLK 45 294 + #define RESET_DPU_ESC 46 295 + #define RESET_DPU_HCLK 47 296 + #define RESET_DPU_SPIBUS 48 297 + #define RESET_DPU_SPI_HBUS 49 298 + #define RESET_V2D 50 299 + #define RESET_MIPI 51 300 + #define RESET_MC 52 301 + 302 + /* RCPU resets */ 303 + #define RESET_RCPU_SSP0 0 304 + #define RESET_RCPU_I2C0 1 305 + #define RESET_RCPU_UART1 2 306 + #define RESET_RCPU_IR 3 307 + #define RESET_RCPU_CAN 4 308 + #define RESET_RCPU_UART0 5 309 + #define RESET_RCPU_HDMI_AUDIO 6 310 + 311 + /* RCPU2 resets */ 312 + #define RESET_RCPU2_PWM0 0 313 + #define RESET_RCPU2_PWM1 1 314 + #define RESET_RCPU2_PWM2 2 315 + #define RESET_RCPU2_PWM3 3 316 + #define RESET_RCPU2_PWM4 4 317 + #define RESET_RCPU2_PWM5 5 318 + #define RESET_RCPU2_PWM6 6 319 + #define RESET_RCPU2_PWM7 7 320 + #define RESET_RCPU2_PWM8 8 321 + #define RESET_RCPU2_PWM9 9 322 + 323 + /* APBC2 resets */ 324 + #define RESET_APBC2_UART1 0 325 + #define RESET_APBC2_SSP2 1 326 + #define RESET_APBC2_TWSI3 2 327 + #define RESET_APBC2_RTC 3 328 + #define RESET_APBC2_TIMERS0 4 329 + #define RESET_APBC2_KPC 5 330 + #define RESET_APBC2_GPIO 6 302 331 303 332 #endif /* _DT_BINDINGS_SPACEMIT_CCU_H_ */