summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2026-04-01 23:59:28 +0300
committerArnd Bergmann <arnd@arndb.de>2026-04-01 23:59:40 +0300
commitd2be897ff93117cc71adec3deeab73961db049ad (patch)
treedeaf97e11a103dd481be859a42ba64cfc96c03a0
parentcce3c4db864438b2a5565e69a48c2660e24320cd (diff)
parent64b00da69ef6e2cb113868c3ecdccd9bbc1fc91d (diff)
downloadlinux-d2be897ff93117cc71adec3deeab73961db049ad.tar.xz
Merge tag 'cix-dt-v7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/cix into soc/dt
- Add power domain and reset for SoC - Add GPIO for both SoC and Radxa Orion O6 board * tag 'cix-dt-v7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/cix: arm64: dts: cix: add FCH(S0)/S5 GPIO controllers for sky1 arm64: dts: cix: Add scmi powerdomain nodes for sky1 arm64: dts: cix: add support for cix sky1 resets Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r--arch/arm64/boot/dts/cix/sky1-orion-o6.dts28
-rw-r--r--arch/arm64/boot/dts/cix/sky1-power.h33
-rw-r--r--arch/arm64/boot/dts/cix/sky1.dtsi152
3 files changed, 213 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/cix/sky1-orion-o6.dts b/arch/arm64/boot/dts/cix/sky1-orion-o6.dts
index 4dee8cd0b86d..e39c87774c12 100644
--- a/arch/arm64/boot/dts/cix/sky1-orion-o6.dts
+++ b/arch/arm64/boot/dts/cix/sky1-orion-o6.dts
@@ -36,6 +36,22 @@
};
+&fch_gpio0 {
+ status = "okay";
+};
+
+&fch_gpio1 {
+ status = "okay";
+};
+
+&fch_gpio2 {
+ status = "okay";
+};
+
+&fch_gpio3 {
+ status = "okay";
+};
+
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
@@ -86,6 +102,18 @@
status = "okay";
};
+&s5_gpio0 {
+ status = "okay";
+};
+
+&s5_gpio1 {
+ status = "okay";
+};
+
+&s5_gpio2 {
+ status = "okay";
+};
+
&uart2 {
status = "okay";
};
diff --git a/arch/arm64/boot/dts/cix/sky1-power.h b/arch/arm64/boot/dts/cix/sky1-power.h
new file mode 100644
index 000000000000..53f4a3af36b3
--- /dev/null
+++ b/arch/arm64/boot/dts/cix/sky1-power.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright 2026 Cix Technology Group Co., Ltd.
+ */
+
+#ifndef __SKY1_POWER_H__
+#define __SKY1_POWER_H__
+
+/* The Rich OS need flow the macro */
+#define SKY1_PD_AUDIO 0
+#define SKY1_PD_PCIE_CTRL0 1
+#define SKY1_PD_PCIE_DUMMY 2
+#define SKY1_PD_PCIEHUB 3
+#define SKY1_PD_MMHUB 4
+#define SKY1_PD_MMHUB_SMMU 5
+#define SKY1_PD_DPU0 6
+#define SKY1_PD_DPU1 7
+#define SKY1_PD_DPU2 8
+#define SKY1_PD_DPU3 9
+#define SKY1_PD_DPU4 10
+#define SKY1_PD_VPU_TOP 11
+#define SKY1_PD_VPU_CORE0 12
+#define SKY1_PD_VPU_CORE1 13
+#define SKY1_PD_VPU_CORE2 14
+#define SKY1_PD_VPU_CORE3 15
+#define SKY1_PD_NPU_CORE0 16
+#define SKY1_PD_NPU_CORE1 17
+#define SKY1_PD_NPU_CORE2 18
+#define SKY1_PD_NPU_TOP 19
+#define SKY1_PD_ISP0 20
+#define SKY1_PD_GPU 21
+
+#endif
diff --git a/arch/arm64/boot/dts/cix/sky1.dtsi b/arch/arm64/boot/dts/cix/sky1.dtsi
index fb8c826bbc97..bb5cfb1f2113 100644
--- a/arch/arm64/boot/dts/cix/sky1.dtsi
+++ b/arch/arm64/boot/dts/cix/sky1.dtsi
@@ -6,6 +6,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/cix,sky1.h>
+#include "sky1-power.h"
/ {
interrupt-parent = <&gic>;
@@ -168,6 +169,19 @@
#clock-cells = <1>;
};
};
+
+ ap_to_tfa_scmi: scmi-1 {
+ compatible = "arm,scmi-smc";
+ arm,smc-id = <0xc2000001>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ shmem = <&ap_tfa_scmi_mem>;
+
+ smc_devpd: protocol@11 {
+ reg = <0x11>;
+ #power-domain-cells = <1>;
+ };
+ };
};
pmu-a520 {
@@ -185,6 +199,13 @@
method = "smc";
};
+ s5_gpio_apb_clk: clock-100000000 {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <100000000>;
+ clock-output-names = "s5_gpio_apb_clk";
+ };
+
soc@0 {
compatible = "simple-bus";
ranges = <0 0 0 0 0x20 0>;
@@ -348,6 +369,76 @@
status = "disabled";
};
+ fch_gpio0: gpio-controller@4120000 {
+ compatible = "cdns,gpio-r1p02";
+ reg = <0x0 0x4120000 0x0 0x1000>;
+ clocks = <&scmi_clk CLK_TREE_FCH_GPIO_APB>;
+
+ interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH 0>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ ngpios = <32>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ status = "disabled";
+ };
+
+ fch_gpio1: gpio-controller@4130000 {
+ compatible = "cdns,gpio-r1p02";
+ reg = <0x0 0x4130000 0x0 0x1000>;
+ clocks = <&scmi_clk CLK_TREE_FCH_GPIO_APB>;
+
+ interrupts = <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH 0>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ ngpios = <32>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ status = "disabled";
+ };
+
+ fch_gpio2: gpio-controller@4140000 {
+ compatible = "cdns,gpio-r1p02";
+ reg = <0x0 0x4140000 0x0 0x1000>;
+ clocks = <&scmi_clk CLK_TREE_FCH_GPIO_APB>;
+
+ interrupts = <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH 0>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ ngpios = <32>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ status = "disabled";
+ };
+
+ fch_gpio3: gpio-controller@4150000 {
+ compatible = "cdns,gpio-r1p02";
+ reg = <0x0 0x4150000 0x0 0x1000>;
+ clocks = <&scmi_clk CLK_TREE_FCH_GPIO_APB>;
+
+ interrupts = <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH 0>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ ngpios = <17>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ status = "disabled";
+ };
+
+ syscon: syscon@4160000 {
+ compatible = "cix,sky1-system-control", "syscon";
+ reg = <0x0 0x4160000 0x0 0x100>;
+ #reset-cells = <1>;
+ };
+
iomuxc: pinctrl@4170000 {
compatible = "cix,sky1-pinctrl";
reg = <0x0 0x04170000 0x0 0x1000>;
@@ -428,6 +519,7 @@
#size-cells = <2>;
bus-range = <0xc0 0xff>;
device_type = "pci";
+ power-domains = <&smc_devpd SKY1_PD_PCIE_CTRL0>;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 0x7>;
interrupt-map = <0 0 0 1 &gic 0 0 GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH 0>,
@@ -568,10 +660,70 @@
};
};
+ s5_syscon: syscon@16000000 {
+ compatible = "cix,sky1-s5-system-control", "syscon";
+ reg = <0x0 0x16000000 0x0 0x1000>;
+ #reset-cells = <1>;
+ };
+
+ s5_gpio0: gpio-controller@16004000 {
+ compatible = "cdns,gpio-r1p02";
+ reg = <0x0 0x16004000 0x0 0x1000>;
+ clocks = <&s5_gpio_apb_clk>;
+
+ interrupts = <GIC_SPI 372 IRQ_TYPE_LEVEL_HIGH 0>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ ngpios = <32>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ status = "disabled";
+ };
+
+ s5_gpio1: gpio-controller@16005000 {
+ compatible = "cdns,gpio-r1p02";
+ reg = <0x0 0x16005000 0x0 0x1000>;
+ clocks = <&s5_gpio_apb_clk>;
+
+ interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH 0>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ ngpios = <10>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ status = "disabled";
+ };
+
+ s5_gpio2: gpio-controller@16006000 {
+ compatible = "cdns,gpio-r1p02";
+ reg = <0x0 0x16006000 0x0 0x1000>;
+ clocks = <&s5_gpio_apb_clk>;
+
+ interrupts = <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH 0>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ ngpios = <10>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ status = "disabled";
+ };
+
iomuxc_s5: pinctrl@16007000 {
compatible = "cix,sky1-pinctrl-s5";
reg = <0x0 0x16007000 0x0 0x1000>;
};
+
+ ap_tfa_scmi_mem: shmem@84380000 {
+ compatible = "arm,scmi-shmem";
+ reg = <0x0 0x84380000 0x0 0x80>;
+ reg-io-width = <4>;
+ };
};
timer {