* [PATCH 1/6] dt-bindings: arm: add CIX P1 (SKY1) SoC
2025-02-20 8:40 [PATCH 0/6] arm64: Introduce CIX P1 (SKY1) SoC Peter Chen
@ 2025-02-20 8:40 ` Peter Chen
2025-02-20 12:18 ` Krzysztof Kozlowski
2025-02-20 8:40 ` [PATCH 2/6] dt-bindings: vendor-prefixes: Add CIX Technology Group Co., Ltd Peter Chen
` (5 subsequent siblings)
6 siblings, 1 reply; 30+ messages in thread
From: Peter Chen @ 2025-02-20 8:40 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, catalin.marinas, will, arnd
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Peter Chen, Fugang Duan
Add device tree bindings for CIX P1 (Internal name sky1) Arm SoC,
it consists several SoC models like CP8180, CD8180, etc.
Acked-by: Fugang Duan <fugang.duan@cixtech.com>
Signed-off-by: Peter Chen <peter.chen@cixtech.com>
---
.../devicetree/bindings/arm/cix.yaml | 26 +++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 Documentation/devicetree/bindings/arm/cix.yaml
diff --git a/Documentation/devicetree/bindings/arm/cix.yaml b/Documentation/devicetree/bindings/arm/cix.yaml
new file mode 100644
index 000000000000..114dab4bc4d2
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/cix.yaml
@@ -0,0 +1,26 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/cix.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: CIX platforms
+
+maintainers:
+ - Peter Chen <peter.chen@cixtech.com>
+ - Fugang Duan <fugang.duan@cixtech.com>
+
+properties:
+ $nodename:
+ const: '/'
+ compatible:
+ oneOf:
+
+ - description: Radxa Orion O6
+ items:
+ - const: radxa,orion-o6
+ - const: cix,sky1
+
+additionalProperties: true
+
+...
--
2.25.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH 1/6] dt-bindings: arm: add CIX P1 (SKY1) SoC
2025-02-20 8:40 ` [PATCH 1/6] dt-bindings: arm: add " Peter Chen
@ 2025-02-20 12:18 ` Krzysztof Kozlowski
0 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2025-02-20 12:18 UTC (permalink / raw)
To: Peter Chen, robh, krzk+dt, conor+dt, catalin.marinas, will, arnd
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang Duan
On 20/02/2025 09:40, Peter Chen wrote:
> Add device tree bindings for CIX P1 (Internal name sky1) Arm SoC,
> it consists several SoC models like CP8180, CD8180, etc.
>
> Acked-by: Fugang Duan <fugang.duan@cixtech.com>
> Signed-off-by: Peter Chen <peter.chen@cixtech.com>
> ---
> .../devicetree/bindings/arm/cix.yaml | 26 +++++++++++++++++++
> 1 file changed, 26 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/arm/cix.yaml
>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 2/6] dt-bindings: vendor-prefixes: Add CIX Technology Group Co., Ltd.
2025-02-20 8:40 [PATCH 0/6] arm64: Introduce CIX P1 (SKY1) SoC Peter Chen
2025-02-20 8:40 ` [PATCH 1/6] dt-bindings: arm: add " Peter Chen
@ 2025-02-20 8:40 ` Peter Chen
2025-02-20 12:18 ` Krzysztof Kozlowski
2025-02-20 8:40 ` [PATCH 3/6] MAINTAINERS: Add CIX SoC maintainer entry Peter Chen
` (4 subsequent siblings)
6 siblings, 1 reply; 30+ messages in thread
From: Peter Chen @ 2025-02-20 8:40 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, catalin.marinas, will, arnd
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Peter Chen, Fugang Duan
CIX Technology Group Co., Ltd. is a high performance Arm SoC design
company. Link: https://www.cixtech.com/.
Acked-by: Fugang Duan <fugang.duan@cixtech.com>
Signed-off-by: Peter Chen <peter.chen@cixtech.com>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 5079ca6ce1d1..5e76223e4570 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -302,6 +302,8 @@ patternProperties:
description: Cirrus Logic, Inc.
"^cisco,.*":
description: Cisco Systems, Inc.
+ "^cix,.*":
+ description: CIX Technology Group Co., Ltd.
"^clockwork,.*":
description: Clockwork Tech LLC
"^cloos,.*":
--
2.25.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH 2/6] dt-bindings: vendor-prefixes: Add CIX Technology Group Co., Ltd.
2025-02-20 8:40 ` [PATCH 2/6] dt-bindings: vendor-prefixes: Add CIX Technology Group Co., Ltd Peter Chen
@ 2025-02-20 12:18 ` Krzysztof Kozlowski
2025-02-20 13:04 ` Peter Chen
0 siblings, 1 reply; 30+ messages in thread
From: Krzysztof Kozlowski @ 2025-02-20 12:18 UTC (permalink / raw)
To: Peter Chen, robh, krzk+dt, conor+dt, catalin.marinas, will, arnd
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang Duan
On 20/02/2025 09:40, Peter Chen wrote:
> CIX Technology Group Co., Ltd. is a high performance Arm SoC design
> company. Link: https://www.cixtech.com/.
>
> Acked-by: Fugang Duan <fugang.duan@cixtech.com>
> Signed-off-by: Peter Chen <peter.chen@cixtech.com>
> ---
> Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
> 1 file changed, 2 insertions(+)
Please re-order the patches, because your previous patch uses
undocumented prefix.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 2/6] dt-bindings: vendor-prefixes: Add CIX Technology Group Co., Ltd.
2025-02-20 12:18 ` Krzysztof Kozlowski
@ 2025-02-20 13:04 ` Peter Chen
0 siblings, 0 replies; 30+ messages in thread
From: Peter Chen @ 2025-02-20 13:04 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: robh, krzk+dt, conor+dt, catalin.marinas, will, arnd,
linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang Duan
On 25-02-20 13:18:07, Krzysztof Kozlowski wrote:
> EXTERNAL EMAIL
>
> On 20/02/2025 09:40, Peter Chen wrote:
> > CIX Technology Group Co., Ltd. is a high performance Arm SoC design
> > company. Link: https://www.cixtech.com/.
> >
> > Acked-by: Fugang Duan <fugang.duan@cixtech.com>
> > Signed-off-by: Peter Chen <peter.chen@cixtech.com>
> > ---
> > Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
> > 1 file changed, 2 insertions(+)
>
>
> Please re-order the patches, because your previous patch uses
> undocumented prefix.
Will do, thanks.
Regards,
Peter
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 3/6] MAINTAINERS: Add CIX SoC maintainer entry
2025-02-20 8:40 [PATCH 0/6] arm64: Introduce CIX P1 (SKY1) SoC Peter Chen
2025-02-20 8:40 ` [PATCH 1/6] dt-bindings: arm: add " Peter Chen
2025-02-20 8:40 ` [PATCH 2/6] dt-bindings: vendor-prefixes: Add CIX Technology Group Co., Ltd Peter Chen
@ 2025-02-20 8:40 ` Peter Chen
2025-02-20 8:40 ` [PATCH 4/6] arm64: Kconfig: add ARCH_CIX for cix silicons Peter Chen
` (3 subsequent siblings)
6 siblings, 0 replies; 30+ messages in thread
From: Peter Chen @ 2025-02-20 8:40 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, catalin.marinas, will, arnd
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Peter Chen, Fugang Duan
Using this entry as the maintainers information for CIX SKY series SoCs.
Acked-by: Fugang Duan <fugang.duan@cixtech.com>
Signed-off-by: Peter Chen <peter.chen@cixtech.com>
---
MAINTAINERS | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index efee40ea589f..200d2529c8e5 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2354,6 +2354,14 @@ F: arch/arm/boot/compressed/misc-ep93xx.h
F: arch/arm/mach-ep93xx/
F: drivers/iio/adc/ep93xx_adc.c
+ARM/CIX SKY ARM ARCHITECTURE
+M: Peter Chen <peter.chen@cixtech.com>
+M: Fugang Duan <fugang.duan@cixtech.com>
+R: CIX Linux Kernel Upstream Group <cix-kernel-upstream@cixtech.com>
+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+S: Maintained
+F: Documentation/devicetree/bindings/arm/cix.yaml
+
ARM/CLKDEV SUPPORT
M: Russell King <linux@armlinux.org.uk>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
--
2.25.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* [PATCH 4/6] arm64: Kconfig: add ARCH_CIX for cix silicons
2025-02-20 8:40 [PATCH 0/6] arm64: Introduce CIX P1 (SKY1) SoC Peter Chen
` (2 preceding siblings ...)
2025-02-20 8:40 ` [PATCH 3/6] MAINTAINERS: Add CIX SoC maintainer entry Peter Chen
@ 2025-02-20 8:40 ` Peter Chen
2025-02-20 12:18 ` Krzysztof Kozlowski
2025-02-20 8:40 ` [PATCH 5/6] arm64: defconfig: Enable CIX SoC Peter Chen
` (2 subsequent siblings)
6 siblings, 1 reply; 30+ messages in thread
From: Peter Chen @ 2025-02-20 8:40 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, catalin.marinas, will, arnd
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang Duan, Peter Chen
From: Fugang Duan <fugang.duan@cixtech.com>
Add ARCH_CIX for CIX SoC series support.
Signed-off-by: Fugang Duan <fugang.duan@cixtech.com>
Signed-off-by: Peter Chen <peter.chen@cixtech.com>
---
arch/arm64/Kconfig.platforms | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
index 02f9248f7c84..977b61894cbc 100644
--- a/arch/arm64/Kconfig.platforms
+++ b/arch/arm64/Kconfig.platforms
@@ -399,4 +399,10 @@ config ARCH_ZYNQMP
help
This enables support for Xilinx ZynqMP Family
+config ARCH_CIX
+ bool "Cixtech SoC family"
+ help
+ This enables support for the Cixtech SoC family,
+ like P1(sky1).
+
endmenu # "Platform selection"
--
2.25.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH 4/6] arm64: Kconfig: add ARCH_CIX for cix silicons
2025-02-20 8:40 ` [PATCH 4/6] arm64: Kconfig: add ARCH_CIX for cix silicons Peter Chen
@ 2025-02-20 12:18 ` Krzysztof Kozlowski
2025-02-20 13:03 ` Peter Chen
0 siblings, 1 reply; 30+ messages in thread
From: Krzysztof Kozlowski @ 2025-02-20 12:18 UTC (permalink / raw)
To: Peter Chen, robh, krzk+dt, conor+dt, catalin.marinas, will, arnd
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang Duan
On 20/02/2025 09:40, Peter Chen wrote:
> From: Fugang Duan <fugang.duan@cixtech.com>
>
> Add ARCH_CIX for CIX SoC series support.
>
> Signed-off-by: Fugang Duan <fugang.duan@cixtech.com>
> Signed-off-by: Peter Chen <peter.chen@cixtech.com>
> ---
> arch/arm64/Kconfig.platforms | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
> index 02f9248f7c84..977b61894cbc 100644
> --- a/arch/arm64/Kconfig.platforms
> +++ b/arch/arm64/Kconfig.platforms
> @@ -399,4 +399,10 @@ config ARCH_ZYNQMP
> help
> This enables support for Xilinx ZynqMP Family
>
> +config ARCH_CIX
C is not after Z... keep sane order.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 4/6] arm64: Kconfig: add ARCH_CIX for cix silicons
2025-02-20 12:18 ` Krzysztof Kozlowski
@ 2025-02-20 13:03 ` Peter Chen
0 siblings, 0 replies; 30+ messages in thread
From: Peter Chen @ 2025-02-20 13:03 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: robh, krzk+dt, conor+dt, catalin.marinas, will, arnd,
linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang Duan
On 25-02-20 13:18:38, Krzysztof Kozlowski wrote:
> On 20/02/2025 09:40, Peter Chen wrote:
> > From: Fugang Duan <fugang.duan@cixtech.com>
> >
> > Add ARCH_CIX for CIX SoC series support.
> >
> > Signed-off-by: Fugang Duan <fugang.duan@cixtech.com>
> > Signed-off-by: Peter Chen <peter.chen@cixtech.com>
> > ---
> > arch/arm64/Kconfig.platforms | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> > diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
> > index 02f9248f7c84..977b61894cbc 100644
> > --- a/arch/arm64/Kconfig.platforms
> > +++ b/arch/arm64/Kconfig.platforms
> > @@ -399,4 +399,10 @@ config ARCH_ZYNQMP
> > help
> > This enables support for Xilinx ZynqMP Family
> >
> > +config ARCH_CIX
> C is not after Z... keep sane order.
>
Will change, thanks.
Regards,
Peter
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 5/6] arm64: defconfig: Enable CIX SoC
2025-02-20 8:40 [PATCH 0/6] arm64: Introduce CIX P1 (SKY1) SoC Peter Chen
` (3 preceding siblings ...)
2025-02-20 8:40 ` [PATCH 4/6] arm64: Kconfig: add ARCH_CIX for cix silicons Peter Chen
@ 2025-02-20 8:40 ` Peter Chen
2025-02-20 12:19 ` Krzysztof Kozlowski
2025-02-20 8:40 ` [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support Peter Chen
2025-02-20 21:29 ` [PATCH 0/6] arm64: Introduce CIX P1 (SKY1) SoC Rob Herring (Arm)
6 siblings, 1 reply; 30+ messages in thread
From: Peter Chen @ 2025-02-20 8:40 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, catalin.marinas, will, arnd
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Peter Chen, Fugang . duan
Enable CIX SoC support at ARM64 defconfig
Acked-by: Fugang.duan <fugang.duan@cixtech.com>
Signed-off-by: Peter Chen <peter.chen@cixtech.com>
---
arch/arm64/configs/defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index cb7da4415599..1dd46d200401 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -45,6 +45,7 @@ CONFIG_ARCH_BCMBCA=y
CONFIG_ARCH_BRCMSTB=y
CONFIG_ARCH_BERLIN=y
CONFIG_ARCH_BLAIZE=y
+CONFIG_ARCH_CIX=y
CONFIG_ARCH_EXYNOS=y
CONFIG_ARCH_SPARX5=y
CONFIG_ARCH_K3=y
--
2.25.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH 5/6] arm64: defconfig: Enable CIX SoC
2025-02-20 8:40 ` [PATCH 5/6] arm64: defconfig: Enable CIX SoC Peter Chen
@ 2025-02-20 12:19 ` Krzysztof Kozlowski
2025-02-20 13:02 ` Peter Chen
0 siblings, 1 reply; 30+ messages in thread
From: Krzysztof Kozlowski @ 2025-02-20 12:19 UTC (permalink / raw)
To: Peter Chen, robh, krzk+dt, conor+dt, catalin.marinas, will, arnd
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang . duan
On 20/02/2025 09:40, Peter Chen wrote:
> Enable CIX SoC support at ARM64 defconfig
>
> Acked-by: Fugang.duan <fugang.duan@cixtech.com>
You keep using different names in different patches.
> Signed-off-by: Peter Chen <peter.chen@cixtech.com>
> ---
> arch/arm64/configs/defconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
> index cb7da4415599..1dd46d200401 100644
> --- a/arch/arm64/configs/defconfig
> +++ b/arch/arm64/configs/defconfig
> @@ -45,6 +45,7 @@ CONFIG_ARCH_BCMBCA=y
> CONFIG_ARCH_BRCMSTB=y
> CONFIG_ARCH_BERLIN=y
> CONFIG_ARCH_BLAIZE=y
> +CONFIG_ARCH_CIX=y
And this is not in order with savedefconfig...
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 5/6] arm64: defconfig: Enable CIX SoC
2025-02-20 12:19 ` Krzysztof Kozlowski
@ 2025-02-20 13:02 ` Peter Chen
0 siblings, 0 replies; 30+ messages in thread
From: Peter Chen @ 2025-02-20 13:02 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: robh, krzk+dt, conor+dt, catalin.marinas, will, arnd,
linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang . duan
On 25-02-20 13:19:13, Krzysztof Kozlowski wrote:
>
> On 20/02/2025 09:40, Peter Chen wrote:
> > Enable CIX SoC support at ARM64 defconfig
> >
> > Acked-by: Fugang.duan <fugang.duan@cixtech.com>
>
> You keep using different names in different patches.
Sorry, I just copy-to-paste. Will change them.
>
> > Signed-off-by: Peter Chen <peter.chen@cixtech.com>
> > ---
> > arch/arm64/configs/defconfig | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
> > index cb7da4415599..1dd46d200401 100644
> > --- a/arch/arm64/configs/defconfig
> > +++ b/arch/arm64/configs/defconfig
> > @@ -45,6 +45,7 @@ CONFIG_ARCH_BCMBCA=y
> > CONFIG_ARCH_BRCMSTB=y
> > CONFIG_ARCH_BERLIN=y
> > CONFIG_ARCH_BLAIZE=y
> > +CONFIG_ARCH_CIX=y
>
>
> And this is not in order with savedefconfig...
This probably due to I have not added entry in order for
arch/arm64/Kconfig.platforms, after I keep Kconfig.platforms
in order, the defconfig will be in order after running
savedefconfig.
So, I still keep the patch content un-modified, just change
the ACKed-by tag for correct name "Fugang Duan" at v2?
Regards,
Peter
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-20 8:40 [PATCH 0/6] arm64: Introduce CIX P1 (SKY1) SoC Peter Chen
` (4 preceding siblings ...)
2025-02-20 8:40 ` [PATCH 5/6] arm64: defconfig: Enable CIX SoC Peter Chen
@ 2025-02-20 8:40 ` Peter Chen
2025-02-20 10:58 ` Arnd Bergmann
` (3 more replies)
2025-02-20 21:29 ` [PATCH 0/6] arm64: Introduce CIX P1 (SKY1) SoC Rob Herring (Arm)
6 siblings, 4 replies; 30+ messages in thread
From: Peter Chen @ 2025-02-20 8:40 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, catalin.marinas, will, arnd
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Peter Chen, Fugang . duan
CIX SKY1 SoC is high performance Armv9 SoC designed by Cixtech,
and Orion O6 is open source motherboard launched by Radxa.
See below for detail:
https://docs.radxa.com/en/orion/o6/getting-started/introduction
In this commit, it only adds limited components for running initramfs
at Orion O6.
Acked-by: Fugang.duan <fugang.duan@cixtech.com>
Signed-off-by: Peter Chen <peter.chen@cixtech.com>
---
arch/arm64/boot/dts/Makefile | 1 +
arch/arm64/boot/dts/cix/Makefile | 2 +
arch/arm64/boot/dts/cix/sky1-orion-o6.dts | 21 ++
arch/arm64/boot/dts/cix/sky1.dtsi | 264 ++++++++++++++++++++++
4 files changed, 288 insertions(+)
create mode 100644 arch/arm64/boot/dts/cix/Makefile
create mode 100644 arch/arm64/boot/dts/cix/sky1-orion-o6.dts
create mode 100644 arch/arm64/boot/dts/cix/sky1.dtsi
diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile
index 79b73a21ddc2..8e7ccd0027bd 100644
--- a/arch/arm64/boot/dts/Makefile
+++ b/arch/arm64/boot/dts/Makefile
@@ -13,6 +13,7 @@ subdir-y += bitmain
subdir-y += blaize
subdir-y += broadcom
subdir-y += cavium
+subdir-y += cix
subdir-y += exynos
subdir-y += freescale
subdir-y += hisilicon
diff --git a/arch/arm64/boot/dts/cix/Makefile b/arch/arm64/boot/dts/cix/Makefile
new file mode 100644
index 000000000000..ed3713982012
--- /dev/null
+++ b/arch/arm64/boot/dts/cix/Makefile
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
+dtb-$(CONFIG_ARCH_CIX) += sky1-orion-o6.dtb
diff --git a/arch/arm64/boot/dts/cix/sky1-orion-o6.dts b/arch/arm64/boot/dts/cix/sky1-orion-o6.dts
new file mode 100644
index 000000000000..dbee1616076d
--- /dev/null
+++ b/arch/arm64/boot/dts/cix/sky1-orion-o6.dts
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright 2025 Cix Technology Group Co., Ltd.
+ *
+ */
+
+/dts-v1/;
+
+#include "sky1.dtsi"
+/ {
+ model = "Radxa Orion O6";
+ compatible = "radxa,orion-o6";
+
+ chosen {
+ stdout-path = &uart2;
+ };
+};
+
+&uart2 {
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/cix/sky1.dtsi b/arch/arm64/boot/dts/cix/sky1.dtsi
new file mode 100644
index 000000000000..d98735f782e0
--- /dev/null
+++ b/arch/arm64/boot/dts/cix/sky1.dtsi
@@ -0,0 +1,264 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright 2025 Cix Technology Group Co., Ltd.
+ *
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ aliases {
+ serial2 = &uart2;
+ };
+
+ cpus {
+ #address-cells = <2>;
+ #size-cells = <0>;
+
+ cpu-map {
+ cluster0 {
+ core0 {
+ cpu = <&CPU0>;
+ };
+ core1 {
+ cpu = <&CPU1>;
+ };
+ core2 {
+ cpu = <&CPU2>;
+ };
+ core3 {
+ cpu = <&CPU3>;
+ };
+ core4 {
+ cpu = <&CPU4>;
+ };
+ core5 {
+ cpu = <&CPU5>;
+ };
+ core6 {
+ cpu = <&CPU6>;
+ };
+ core7 {
+ cpu = <&CPU7>;
+ };
+ core8 {
+ cpu = <&CPU8>;
+ };
+ core9 {
+ cpu = <&CPU9>;
+ };
+ core10 {
+ cpu = <&CPU10>;
+ };
+ core11 {
+ cpu = <&CPU11>;
+ };
+ };
+ };
+
+ CPU0: cpu0@0 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0x0>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <403>;
+ };
+
+ CPU1: cpu1@100 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0x100>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <403>;
+ };
+
+ CPU2: cpu2@200 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0x200>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <403>;
+ };
+
+ CPU3: cpu3@300 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0x300>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <403>;
+ };
+
+ CPU4: cpu4@400 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0x400>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <1024>;
+ };
+
+ CPU5: cpu5@500 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0x500>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <1024>;
+ };
+
+ CPU6: cpu6@600 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0x600>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <1024>;
+ };
+
+ CPU7: cpu7@700 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0x700>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <1024>;
+ };
+
+ CPU8: cpu8@800 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0x800>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <1024>;
+ };
+
+ CPU9: cpu9@900 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0x900>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <1024>;
+ };
+
+ CPU10: cpu10@a00 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0xa00>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <1024>;
+ };
+
+ CPU11: cpu11@b00 {
+ compatible = "arm,armv8";
+ enable-method = "psci";
+ reg = <0x0 0xb00>;
+ device_type = "cpu";
+ capacity-dmips-mhz = <1024>;
+ };
+ };
+
+ arch_timer: timer {
+ compatible = "arm,armv8-timer";
+ interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
+ <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
+ <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
+ <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
+ clock-frequency = <1000000000>;
+ interrupt-parent = <&gic>;
+ arm,no-tick-in-suspend;
+ };
+
+ memory@80000000 {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ device_type = "memory";
+ reg = <0x00000000 0x80000000 0x1 0x00000000>;
+ };
+
+ psci {
+ compatible = "arm,psci-1.0";
+ method = "smc";
+ };
+
+ pmu: pmu {
+ compatible = "arm,armv8-pmuv3";
+ interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
+ interrupt-parent = <&gic>;
+ status = "okay";
+ };
+
+ pmu_spe: pmu_spe {
+ compatible = "arm,statistical-profiling-extension-v1";
+ interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_LOW>;
+ interrupt-parent = <&gic>;
+ status = "okay";
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ linux,cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0 0x28000000>;
+ linux,cma-default;
+ };
+
+ };
+
+ sky1_fixed_clocks: fixed-clocks {
+ uartclk: uartclk {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <100000000>;
+ clock-output-names = "uartclk";
+ };
+
+ uart_apb_pclk: uart_apb_pclk {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <200000000>;
+ clock-output-names = "apb_pclk";
+ };
+ };
+
+ soc@0 {
+ compatible = "simple-bus";
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+ dma-ranges;
+
+ uart2: uart@040d0000 {
+ compatible = "arm,pl011", "arm,primecell";
+ reg = <0x0 0x040d0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>;
+ clock-names = "uartclk", "apb_pclk";
+ clocks = <&uartclk>, <&uart_apb_pclk>;
+ status = "disabled";
+ };
+
+ gic: interrupt-controller@0e001000 {
+ compatible = "arm,gic-v3";
+ #address-cells = <2>;
+ #interrupt-cells = <3>;
+ #size-cells = <2>;
+ ranges;
+ interrupt-controller;
+ #redistributor-regions = <1>;
+ reg = <0x0 0x0e010000 0 0x10000>, /* GICD */
+ <0x0 0x0e090000 0 0x300000>; /* GICR * 12 */
+ redistributor-stride = <0x40000>;
+ interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
+ interrupt-parent = <&gic>;
+
+ its_pcie: its@e050000 {
+ compatible = "arm,gic-v3-its";
+ msi-controller;
+ reg = <0x0 0x0e050000 0x0 0x30000>;
+ };
+ };
+ };
+};
--
2.25.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-20 8:40 ` [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support Peter Chen
@ 2025-02-20 10:58 ` Arnd Bergmann
2025-02-20 12:30 ` Peter Chen
2025-02-20 12:23 ` Krzysztof Kozlowski
` (2 subsequent siblings)
3 siblings, 1 reply; 30+ messages in thread
From: Arnd Bergmann @ 2025-02-20 10:58 UTC (permalink / raw)
To: Peter Chen, Rob Herring, krzk+dt, Conor Dooley, Catalin Marinas,
Will Deacon
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang . duan
On Thu, Feb 20, 2025, at 09:40, Peter Chen wrote:
> +#include "sky1.dtsi"
> +/ {
> + model = "Radxa Orion O6";
> + compatible = "radxa,orion-o6";
This should list both the compatible string for the board and
the one for the SoC.
> +
> + aliases {
> + serial2 = &uart2;
> + };
Please put the aliases in the .dts file, not the chip specific
.dtsi file, as each board typically wires these up differently.
Note that the 'serial2' alias names are meant to correspond
to whatever label you find on the board, not the internal
numbering inside of the chip they are wired up to. Usually
these start with 'serial0' for the first one that is enabled.
> + CPU0: cpu0@0 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
This should list the actual identifier of the CPU core, not
just "arm,armv8" which is the generic string used in the
models for emulators that don't try to model a particular
core.
> + memory@80000000 {
> + #address-cells = <2>;
> + #size-cells = <2>;
> + device_type = "memory";
> + reg = <0x00000000 0x80000000 0x1 0x00000000>;
> + };
The memory size is not part of the SoC either, unless the only
way to use this SoC is with on-chip eDRAM or similar.
Normally this gets filled by the bootloader based on how
much RAM gets detected.
> + linux,cma {
> + compatible = "shared-dma-pool";
> + reusable;
> + size = <0x0 0x28000000>;
> + linux,cma-default;
> + };
Same here, this is a setting from the firmware, not the
SoC.
> + sky1_fixed_clocks: fixed-clocks {
> + uartclk: uartclk {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <100000000>;
> + clock-output-names = "uartclk";
> + uart_apb_pclk: uart_apb_pclk {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <200000000>;
> + clock-output-names = "apb_pclk";
Clock names don't need "clk" in them, and there should
be no underscore -- use '-' instead of '_' when separating
strings in DT.
> + soc@0 {
> + compatible = "simple-bus";
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> + dma-ranges;
> +
> + uart2: uart@040d0000 {
> + compatible = "arm,pl011", "arm,primecell";
> + reg = <0x0 0x040d0000 0x0 0x1000>;
> + interrupts = <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>;
> + clock-names = "uartclk", "apb_pclk";
> + clocks = <&uartclk>, <&uart_apb_pclk>;
> + status = "disabled";
> + };
It seems strange to list only "uart2" -- usually the dtsi file contains
all of the instances that are present on the chip and leave it
up to the .dts file to enable the ones that are used.
Arnd
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-20 10:58 ` Arnd Bergmann
@ 2025-02-20 12:30 ` Peter Chen
2025-02-21 11:42 ` Krzysztof Kozlowski
0 siblings, 1 reply; 30+ messages in thread
From: Peter Chen @ 2025-02-20 12:30 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Rob Herring, krzk+dt, Conor Dooley, Catalin Marinas, Will Deacon,
linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang . duan
On 25-02-20 11:58:21, Arnd Bergmann wrote:
>
Arnd, thanks for your review.
> On Thu, Feb 20, 2025, at 09:40, Peter Chen wrote:
>
> > +#include "sky1.dtsi"
> > +/ {
> > + model = "Radxa Orion O6";
> > + compatible = "radxa,orion-o6";
>
> This should list both the compatible string for the board and
> the one for the SoC.
Will change to compatible = "radxa,orion-o6", "cix,sky1";
>
> > +
> > + aliases {
> > + serial2 = &uart2;
> > + };
>
> Please put the aliases in the .dts file, not the chip specific
> .dtsi file, as each board typically wires these up differently.
>
> Note that the 'serial2' alias names are meant to correspond
> to whatever label you find on the board, not the internal
> numbering inside of the chip they are wired up to. Usually
> these start with 'serial0' for the first one that is enabled.
In fact, we would like to alias the SoC UART controller index here,
and amba-pl011.c will try to get it, see function pl011_probe_dt_alias.
It is initial dtsi file, so I only add console one which needs
to align the bootargs passed by UEFI.
>
> > + CPU0: cpu0@0 {
> > + compatible = "arm,armv8";
> > + enable-method = "psci";
>
> This should list the actual identifier of the CPU core, not
> just "arm,armv8" which is the generic string used in the
> models for emulators that don't try to model a particular
> core.
Will change big core to 'compatible = "arm,cortex-a720";'
and LITTLE core to 'compatible = "arm,cortex-a520";'
>
> > + memory@80000000 {
> > + #address-cells = <2>;
> > + #size-cells = <2>;
> > + device_type = "memory";
> > + reg = <0x00000000 0x80000000 0x1 0x00000000>;
> > + };
>
> The memory size is not part of the SoC either, unless the only
> way to use this SoC is with on-chip eDRAM or similar.
>
> Normally this gets filled by the bootloader based on how
> much RAM gets detected.
Will move it to dts file.
>
> > + linux,cma {
> > + compatible = "shared-dma-pool";
> > + reusable;
> > + size = <0x0 0x28000000>;
> > + linux,cma-default;
> > + };
>
> Same here, this is a setting from the firmware, not the
> SoC.
Will move it to dts file since our firmware has already released,
and it needs to support different kernels.
>
> > + sky1_fixed_clocks: fixed-clocks {
> > + uartclk: uartclk {
> > + compatible = "fixed-clock";
> > + #clock-cells = <0>;
> > + clock-frequency = <100000000>;
> > + clock-output-names = "uartclk";
>
> > + uart_apb_pclk: uart_apb_pclk {
> > + compatible = "fixed-clock";
> > + #clock-cells = <0>;
> > + clock-frequency = <200000000>;
> > + clock-output-names = "apb_pclk";
>
>
> Clock names don't need "clk" in them, and there should
> be no underscore -- use '-' instead of '_' when separating
> strings in DT.
Will change to:
uart_apb: clock-uart-apb {
...
clock-output-names = "uart_apb";
};
>
> > + soc@0 {
> > + compatible = "simple-bus";
> > + #address-cells = <2>;
> > + #size-cells = <2>;
> > + ranges;
> > + dma-ranges;
> > +
> > + uart2: uart@040d0000 {
> > + compatible = "arm,pl011", "arm,primecell";
> > + reg = <0x0 0x040d0000 0x0 0x1000>;
> > + interrupts = <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>;
> > + clock-names = "uartclk", "apb_pclk";
> > + clocks = <&uartclk>, <&uart_apb_pclk>;
> > + status = "disabled";
> > + };
>
> It seems strange to list only "uart2" -- usually the dtsi file contains
> all of the instances that are present on the chip and leave it
> up to the .dts file to enable the ones that are used.
Since it is the first CIX SoC support patch series, I only added basic
Kconfig build for booting minimum system for easy review. For device
node, it relates to clock/reset/power domain binding which will add later.
Regards,
Peter
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-20 12:30 ` Peter Chen
@ 2025-02-21 11:42 ` Krzysztof Kozlowski
2025-02-24 2:26 ` Peter Chen
0 siblings, 1 reply; 30+ messages in thread
From: Krzysztof Kozlowski @ 2025-02-21 11:42 UTC (permalink / raw)
To: Peter Chen, Arnd Bergmann
Cc: Rob Herring, krzk+dt, Conor Dooley, Catalin Marinas, Will Deacon,
linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang . duan
On 20/02/2025 13:30, Peter Chen wrote:
>>
>>> +
>>> + aliases {
>>> + serial2 = &uart2;
>>> + };
>>
>> Please put the aliases in the .dts file, not the chip specific
>> .dtsi file, as each board typically wires these up differently.
>>
>> Note that the 'serial2' alias names are meant to correspond
>> to whatever label you find on the board, not the internal
>> numbering inside of the chip they are wired up to. Usually
>> these start with 'serial0' for the first one that is enabled.
>
> In fact, we would like to alias the SoC UART controller index here,
> and amba-pl011.c will try to get it, see function pl011_probe_dt_alias.
> It is initial dtsi file, so I only add console one which needs
> to align the bootargs passed by UEFI.
Your "in fact" is not really related to the problem described. If you
put it in the correct place, drivers will work just as fine.
>
>>
>>> + CPU0: cpu0@0 {
>>> + compatible = "arm,armv8";
>>> + enable-method = "psci";
>>
>> This should list the actual identifier of the CPU core, not
>> just "arm,armv8" which is the generic string used in the
>> models for emulators that don't try to model a particular
>> core.
>
> Will change big core to 'compatible = "arm,cortex-a720";'
> and LITTLE core to 'compatible = "arm,cortex-a520";'
>
>>
>>> + memory@80000000 {
>>> + #address-cells = <2>;
>>> + #size-cells = <2>;
>>> + device_type = "memory";
>>> + reg = <0x00000000 0x80000000 0x1 0x00000000>;
>>> + };
>>
>> The memory size is not part of the SoC either, unless the only
>> way to use this SoC is with on-chip eDRAM or similar.
>>
>> Normally this gets filled by the bootloader based on how
>> much RAM gets detected.
>
> Will move it to dts file.
>
>>
>>> + linux,cma {
>>> + compatible = "shared-dma-pool";
>>> + reusable;
>>> + size = <0x0 0x28000000>;
>>> + linux,cma-default;
>>> + };
>>
>> Same here, this is a setting from the firmware, not the
>> SoC.
>
> Will move it to dts file since our firmware has already released,
> and it needs to support different kernels.
>
>>
>>> + sky1_fixed_clocks: fixed-clocks {
>>> + uartclk: uartclk {
>>> + compatible = "fixed-clock";
>>> + #clock-cells = <0>;
>>> + clock-frequency = <100000000>;
>>> + clock-output-names = "uartclk";
>>
>>> + uart_apb_pclk: uart_apb_pclk {
>>> + compatible = "fixed-clock";
>>> + #clock-cells = <0>;
>>> + clock-frequency = <200000000>;
>>> + clock-output-names = "apb_pclk";
>>
>>
>> Clock names don't need "clk" in them, and there should
>> be no underscore -- use '-' instead of '_' when separating
>> strings in DT.
>
> Will change to:
> uart_apb: clock-uart-apb {
No, instead explain why this is part of SoC - or what are you missing
here - and use preferred naming.
Please use name for all fixed clocks which matches current format
recommendation: 'clock-<freq>' (see also the pattern in the binding for
any other options).
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/clock/fixed-clock.yaml?h=v6.11-rc1
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-21 11:42 ` Krzysztof Kozlowski
@ 2025-02-24 2:26 ` Peter Chen
2025-02-24 8:06 ` Krzysztof Kozlowski
0 siblings, 1 reply; 30+ messages in thread
From: Peter Chen @ 2025-02-24 2:26 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Arnd Bergmann, Rob Herring, krzk+dt, Conor Dooley,
Catalin Marinas, Will Deacon, linux-arm-kernel, devicetree,
linux-kernel, cix-kernel-upstream, Fugang . duan
On 25-02-21 12:42:23, Krzysztof Kozlowski wrote:
Hi Krysztof,
Thanks for your detail reviewing. I am afraid my email client did not
receive your email for comment for this patch, I reply at this one.
>> +#include "sky1.dtsi"
>> +/ {
>> + model = "Radxa Orion O6";
>> + compatible = "radxa,orion-o6";
> Never tested.
> It does not look like you tested the DTS against bindings. Please run
> `make dtbs_check W=1` (see
> Documentation/devicetree/bindings/writing-schema.rst or
> https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
> for instructions).
> Maybe you need to update your dtschema and yamllint. Don't rely on
> distro packages for dtschema and be sure you are using the latest
> released dtschema.
I am sorry for that. I just reviewed device driver patch in recent 3-4 years,
forget doing additional check for dts patch.
>
> On 20/02/2025 13:30, Peter Chen wrote:
> >>
> >>> +
> >>> + aliases {
> >>> + serial2 = &uart2;
> >>> + };
> >>
> >> Please put the aliases in the .dts file, not the chip specific
> >> .dtsi file, as each board typically wires these up differently.
> >>
> >> Note that the 'serial2' alias names are meant to correspond
> >> to whatever label you find on the board, not the internal
> >> numbering inside of the chip they are wired up to. Usually
> >> these start with 'serial0' for the first one that is enabled.
> >
> > In fact, we would like to alias the SoC UART controller index here,
> > and amba-pl011.c will try to get it, see function pl011_probe_dt_alias.
> > It is initial dtsi file, so I only add console one which needs
> > to align the bootargs passed by UEFI.
>
>
> Your "in fact" is not really related to the problem described. If you
> put it in the correct place, drivers will work just as fine.
You also mentioned that in your comments. Yes, indeed the board dts file
could remap physical controller index as different board serial number,
but it is not what we would like to do (at least for CIX platforms).
In our both HW and SW documents, we have fixed our uart usage cases,
for example, UART2 as AP serial ports. UART0-UART1 as uart application,eg
bluetooth. Customer will do their design to follow above rules, and
it avoids each customer writing this alias at their board file.
Meanwhile, fixed uart alias as its physical index is better to
understand SW/HW relationship. Imaging you are debugging one UART
bluetooth use case, your application passes "/dev/ttyAMA0" as its
communication port due to board dts alias, but in board schematic,
it is connects to SoC uart 1, the person to debug may confuse the
different mapping at first.
Also, in kernel device driver, it also uses alias id to its uart
port index, it could better understand device driver hardware
behaviours, esp you may dump hardware register to debug, you could
easy to find related registers if the mapping is the same.
>
> >
> >>
> >>> + CPU0: cpu0@0 {
> >>> + compatible = "arm,armv8";
> >>> + enable-method = "psci";
Will change Label "CPU0" as "cpu0", and name "cpu0" as "cpu"
> >>
> >> This should list the actual identifier of the CPU core, not
> >> just "arm,armv8" which is the generic string used in the
> >> models for emulators that don't try to model a particular
> >> core.
> >
> > Will change big core to 'compatible = "arm,cortex-a720";'
> > and LITTLE core to 'compatible = "arm,cortex-a520";'
> >
> >>
> >>> + memory@80000000 {
> >>> + #address-cells = <2>;
> >>> + #size-cells = <2>;
> >>> + device_type = "memory";
> >>> + reg = <0x00000000 0x80000000 0x1 0x00000000>;
> >>> + };
> >>
> >> The memory size is not part of the SoC either, unless the only
> >> way to use this SoC is with on-chip eDRAM or similar.
> >>
> >> Normally this gets filled by the bootloader based on how
> >> much RAM gets detected.
> >
> > Will move it to dts file.
> >
> >>
> >>> + linux,cma {
> >>> + compatible = "shared-dma-pool";
> >>> + reusable;
> >>> + size = <0x0 0x28000000>;
> >>> + linux,cma-default;
> >>> + };
> >>
> >> Same here, this is a setting from the firmware, not the
> >> SoC.
> >
> > Will move it to dts file since our firmware has already released,
> > and it needs to support different kernels.
> >
> >>
> >>> + sky1_fixed_clocks: fixed-clocks {
> >>> + uartclk: uartclk {
> >>> + compatible = "fixed-clock";
> >>> + #clock-cells = <0>;
> >>> + clock-frequency = <100000000>;
> >>> + clock-output-names = "uartclk";
> >>
> >>> + uart_apb_pclk: uart_apb_pclk {
> >>> + compatible = "fixed-clock";
> >>> + #clock-cells = <0>;
> >>> + clock-frequency = <200000000>;
> >>> + clock-output-names = "apb_pclk";
> >>
> >>
> >> Clock names don't need "clk" in them, and there should
> >> be no underscore -- use '-' instead of '_' when separating
> >> strings in DT.
> >
> > Will change to:
> > uart_apb: clock-uart-apb {
>
> No, instead explain why this is part of SoC - or what are you missing
> here - and use preferred naming.
It is in SoC part, APB clock uses to visit register, and the function
amba_get_enable_pclk at file drivers/amba/bus.c needs it during uart
device probes. It uses common Arm uart pl011 IP, the binding doc
described at: Documentation/devicetree/bindings/serial/pl011.yaml
Since it is the initial dts support patch, I do not want to add
more to avoid reviewing efforts, eg, clock gate, reset, etc.
That's the reason I use fixed clock here to let basic system
work, and boots to console.
>
> Please use name for all fixed clocks which matches current format
> recommendation: 'clock-<freq>' (see also the pattern in the binding for
> any other options).
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/clock/fixed-clock.yaml?h=v6.11-rc1
>
Will change to "uart_apb: clock-1000000"
>> + pmu: pmu {
> Keep some sort of order. See DTS coding style.
I will follow: Documentation/devicetree/bindings/dts-coding-style.rst
to fix coding sytle issue at v2 patch set.
>> + compatible = "arm,armv8-pmuv3";
>> + interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
>> + interrupt-parent = <&gic>;
>> + status = "okay";
> Where did you disable it? Why only this has status=okay but other do not?
I will remove this one at v2 patch set.
--
Best regards,
Peter
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-24 2:26 ` Peter Chen
@ 2025-02-24 8:06 ` Krzysztof Kozlowski
2025-02-24 10:39 ` Peter Chen
0 siblings, 1 reply; 30+ messages in thread
From: Krzysztof Kozlowski @ 2025-02-24 8:06 UTC (permalink / raw)
To: Peter Chen
Cc: Arnd Bergmann, Rob Herring, krzk+dt, Conor Dooley,
Catalin Marinas, Will Deacon, linux-arm-kernel, devicetree,
linux-kernel, cix-kernel-upstream, Fugang . duan
On 24/02/2025 03:26, Peter Chen wrote:
> On 25-02-21 12:42:23, Krzysztof Kozlowski wrote:
>
> Hi Krysztof,
>
> Thanks for your detail reviewing. I am afraid my email client did not
> receive your email for comment for this patch, I reply at this one.
>
>>> +#include "sky1.dtsi"
>>> +/ {
>>> + model = "Radxa Orion O6";
>>> + compatible = "radxa,orion-o6";
>
>> Never tested.
>
>> It does not look like you tested the DTS against bindings. Please run
>> `make dtbs_check W=1` (see
>> Documentation/devicetree/bindings/writing-schema.rst or
>> https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
>> for instructions).
>> Maybe you need to update your dtschema and yamllint. Don't rely on
>> distro packages for dtschema and be sure you are using the latest
>> released dtschema.
>
> I am sorry for that. I just reviewed device driver patch in recent 3-4 years,
> forget doing additional check for dts patch.
>
>>
>> On 20/02/2025 13:30, Peter Chen wrote:
>>>>
>>>>> +
>>>>> + aliases {
>>>>> + serial2 = &uart2;
>>>>> + };
>>>>
>>>> Please put the aliases in the .dts file, not the chip specific
>>>> .dtsi file, as each board typically wires these up differently.
>>>>
>>>> Note that the 'serial2' alias names are meant to correspond
>>>> to whatever label you find on the board, not the internal
>>>> numbering inside of the chip they are wired up to. Usually
>>>> these start with 'serial0' for the first one that is enabled.
>>>
>>> In fact, we would like to alias the SoC UART controller index here,
>>> and amba-pl011.c will try to get it, see function pl011_probe_dt_alias.
>>> It is initial dtsi file, so I only add console one which needs
>>> to align the bootargs passed by UEFI.
>>
>>
>> Your "in fact" is not really related to the problem described. If you
>> put it in the correct place, drivers will work just as fine.
>
> You also mentioned that in your comments. Yes, indeed the board dts file
> could remap physical controller index as different board serial number,
> but it is not what we would like to do (at least for CIX platforms).
> In our both HW and SW documents, we have fixed our uart usage cases,
> for example, UART2 as AP serial ports. UART0-UART1 as uart application,eg
> bluetooth. Customer will do their design to follow above rules, and
> it avoids each customer writing this alias at their board file.
Follow standard rules, you don't get an exception. That's not a property
of the SoC.
>
> Meanwhile, fixed uart alias as its physical index is better to
This is not being discussed.
> understand SW/HW relationship. Imaging you are debugging one UART
> bluetooth use case, your application passes "/dev/ttyAMA0" as its
> communication port due to board dts alias, but in board schematic,
> it is connects to SoC uart 1, the person to debug may confuse the
> different mapping at first.
>
> Also, in kernel device driver, it also uses alias id to its uart
> port index, it could better understand device driver hardware
> behaviours, esp you may dump hardware register to debug, you could
> easy to find related registers if the mapping is the same.
Not related to topic at all.
>
>>
>>>
>>>>
>>>>> + CPU0: cpu0@0 {
>>>>> + compatible = "arm,armv8";
>>>>> + enable-method = "psci";
>
> Will change Label "CPU0" as "cpu0", and name "cpu0" as "cpu"
>
>>>>
>>>> This should list the actual identifier of the CPU core, not
>>>> just "arm,armv8" which is the generic string used in the
>>>> models for emulators that don't try to model a particular
>>>> core.
>>>
>>> Will change big core to 'compatible = "arm,cortex-a720";'
>>> and LITTLE core to 'compatible = "arm,cortex-a520";'
>>>
>>>>
>>>>> + memory@80000000 {
>>>>> + #address-cells = <2>;
>>>>> + #size-cells = <2>;
>>>>> + device_type = "memory";
>>>>> + reg = <0x00000000 0x80000000 0x1 0x00000000>;
>>>>> + };
>>>>
>>>> The memory size is not part of the SoC either, unless the only
>>>> way to use this SoC is with on-chip eDRAM or similar.
>>>>
>>>> Normally this gets filled by the bootloader based on how
>>>> much RAM gets detected.
>>>
>>> Will move it to dts file.
>>>
>>>>
>>>>> + linux,cma {
>>>>> + compatible = "shared-dma-pool";
>>>>> + reusable;
>>>>> + size = <0x0 0x28000000>;
>>>>> + linux,cma-default;
>>>>> + };
>>>>
>>>> Same here, this is a setting from the firmware, not the
>>>> SoC.
>>>
>>> Will move it to dts file since our firmware has already released,
>>> and it needs to support different kernels.
>>>
>>>>
>>>>> + sky1_fixed_clocks: fixed-clocks {
>>>>> + uartclk: uartclk {
>>>>> + compatible = "fixed-clock";
>>>>> + #clock-cells = <0>;
>>>>> + clock-frequency = <100000000>;
>>>>> + clock-output-names = "uartclk";
>>>>
>>>>> + uart_apb_pclk: uart_apb_pclk {
>>>>> + compatible = "fixed-clock";
>>>>> + #clock-cells = <0>;
>>>>> + clock-frequency = <200000000>;
>>>>> + clock-output-names = "apb_pclk";
>>>>
>>>>
>>>> Clock names don't need "clk" in them, and there should
>>>> be no underscore -- use '-' instead of '_' when separating
>>>> strings in DT.
>>>
>>> Will change to:
>>> uart_apb: clock-uart-apb {
>>
>> No, instead explain why this is part of SoC - or what are you missing
>> here - and use preferred naming.
>
> It is in SoC part, APB clock uses to visit register, and the function
> amba_get_enable_pclk at file drivers/amba/bus.c needs it during uart
> device probes. It uses common Arm uart pl011 IP, the binding doc
> described at: Documentation/devicetree/bindings/serial/pl011.yaml
So you added fake clock? Everything you wrote is not the reason to add
such clock.
DTS describes hardware, not what your drivers expect.
Drop the clock or add proper hardware description.
>
> Since it is the initial dts support patch, I do not want to add
> more to avoid reviewing efforts, eg, clock gate, reset, etc.
> That's the reason I use fixed clock here to let basic system
> work, and boots to console.
>
>>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-24 8:06 ` Krzysztof Kozlowski
@ 2025-02-24 10:39 ` Peter Chen
2025-02-24 12:07 ` Krzysztof Kozlowski
0 siblings, 1 reply; 30+ messages in thread
From: Peter Chen @ 2025-02-24 10:39 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Arnd Bergmann, Rob Herring, krzk+dt, Conor Dooley,
Catalin Marinas, Will Deacon, linux-arm-kernel, devicetree,
linux-kernel, cix-kernel-upstream, Fugang . duan
On 25-02-24 09:06:23, Krzysztof Kozlowski wrote:
> >> Your "in fact" is not really related to the problem described. If you
> >> put it in the correct place, drivers will work just as fine.
> >
> > You also mentioned that in your comments. Yes, indeed the board dts file
> > could remap physical controller index as different board serial number,
> > but it is not what we would like to do (at least for CIX platforms).
> > In our both HW and SW documents, we have fixed our uart usage cases,
> > for example, UART2 as AP serial ports. UART0-UART1 as uart application,eg
> > bluetooth. Customer will do their design to follow above rules, and
> > it avoids each customer writing this alias at their board file.
>
> Follow standard rules, you don't get an exception. That's not a property
> of the SoC.
Okay. I see below documents describes it:
Documentation/devicetree/bindings/serial/qcom,msm-uartdm.yaml:23: serialN aliases should be
in a .dts file instead of in a .dtsi file.
Documentation/devicetree/usage-model.rst:327:at all. The /chosen, /aliases, and /memory nodes are
informational
> >>>
> >>>>
> >>>>> + sky1_fixed_clocks: fixed-clocks {
> >>>>> + uartclk: uartclk {
> >>>>> + compatible = "fixed-clock";
> >>>>> + #clock-cells = <0>;
> >>>>> + clock-frequency = <100000000>;
> >>>>> + clock-output-names = "uartclk";
> >>>>
> >>>>> + uart_apb_pclk: uart_apb_pclk {
> >>>>> + compatible = "fixed-clock";
> >>>>> + #clock-cells = <0>;
> >>>>> + clock-frequency = <200000000>;
> >>>>> + clock-output-names = "apb_pclk";
> >>>>
> >>>>
> >>>> Clock names don't need "clk" in them, and there should
> >>>> be no underscore -- use '-' instead of '_' when separating
> >>>> strings in DT.
> >>>
> >>> Will change to:
> >>> uart_apb: clock-uart-apb {
> >>
> >> No, instead explain why this is part of SoC - or what are you missing
> >> here - and use preferred naming.
> >
> > It is in SoC part, APB clock uses to visit register, and the function
> > amba_get_enable_pclk at file drivers/amba/bus.c needs it during uart
> > device probes. It uses common Arm uart pl011 IP, the binding doc
> > described at: Documentation/devicetree/bindings/serial/pl011.yaml
>
> So you added fake clock? Everything you wrote is not the reason to add
> such clock.
Not a fake clock, it is the real clocks, but depends on firmware open
their parents and configure their rate. It could let others do their
upstream work based on workable console.
Which option you would like to accept?
- Option-1: use fixed clock in this initial version, and will be
replaced later.
uart_apb: clock-200000000 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <200000000>;
clock-output-names = "apb_pclk";
};
uart_clk: clock-200000000 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <100000000>;
clock-output-names = "uart_clk";
};
uart2: uart@040d0000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0x0 0x040d0000 0x0 0x1000>;
interrupts = <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>;
clock-names = "uartclk", "apb_pclk";
clocks = <&uart_clk>, <&uart_apb>;
status = "disabled";
};
- Option-2: delete the console uart node and its fixed clock.
In that way, the user could boot the kernel at orion-o6 board,
but could not use its console.
--
Best regards,
Peter
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-24 10:39 ` Peter Chen
@ 2025-02-24 12:07 ` Krzysztof Kozlowski
2025-02-25 1:24 ` Peter Chen
0 siblings, 1 reply; 30+ messages in thread
From: Krzysztof Kozlowski @ 2025-02-24 12:07 UTC (permalink / raw)
To: Peter Chen
Cc: Arnd Bergmann, Rob Herring, krzk+dt, Conor Dooley,
Catalin Marinas, Will Deacon, linux-arm-kernel, devicetree,
linux-kernel, cix-kernel-upstream, Fugang . duan
On 24/02/2025 11:39, Peter Chen wrote:
>>>>>>
>>>>>>> + sky1_fixed_clocks: fixed-clocks {
>>>>>>> + uartclk: uartclk {
>>>>>>> + compatible = "fixed-clock";
>>>>>>> + #clock-cells = <0>;
>>>>>>> + clock-frequency = <100000000>;
>>>>>>> + clock-output-names = "uartclk";
>>>>>>
>>>>>>> + uart_apb_pclk: uart_apb_pclk {
>>>>>>> + compatible = "fixed-clock";
>>>>>>> + #clock-cells = <0>;
>>>>>>> + clock-frequency = <200000000>;
>>>>>>> + clock-output-names = "apb_pclk";
>>>>>>
>>>>>>
>>>>>> Clock names don't need "clk" in them, and there should
>>>>>> be no underscore -- use '-' instead of '_' when separating
>>>>>> strings in DT.
>>>>>
>>>>> Will change to:
>>>>> uart_apb: clock-uart-apb {
>>>>
>>>> No, instead explain why this is part of SoC - or what are you missing
>>>> here - and use preferred naming.
>>>
>>> It is in SoC part, APB clock uses to visit register, and the function
>>> amba_get_enable_pclk at file drivers/amba/bus.c needs it during uart
>>> device probes. It uses common Arm uart pl011 IP, the binding doc
>>> described at: Documentation/devicetree/bindings/serial/pl011.yaml
>>
>> So you added fake clock? Everything you wrote is not the reason to add
>> such clock.
>
> Not a fake clock, it is the real clocks, but depends on firmware open
> their parents and configure their rate. It could let others do their
In one place you speak about UART, which is the consumer and not
relevant. Here you mention it is real clock. That's all confusing, so to
clarify:
We talk about clock which is generated/output by something. Something
which controls way it is generated is clock controller. Either you have
here crystal or have here clock controller. If first, fixed clock is for
that. If second, you need proper clock controller binding. You can add
stubs for missing pieces, but this requires explanation and TODO/FIXME
comment.
> upstream work based on workable console.
>
> Which option you would like to accept?
You did not describe the hardware, so I have no clue what is there.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-24 12:07 ` Krzysztof Kozlowski
@ 2025-02-25 1:24 ` Peter Chen
0 siblings, 0 replies; 30+ messages in thread
From: Peter Chen @ 2025-02-25 1:24 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Arnd Bergmann, Rob Herring, krzk+dt, Conor Dooley,
Catalin Marinas, Will Deacon, linux-arm-kernel, devicetree,
linux-kernel, cix-kernel-upstream, Fugang . duan
On 25-02-24 13:07:45, Krzysztof Kozlowski wrote:
> EXTERNAL EMAIL
>
> On 24/02/2025 11:39, Peter Chen wrote:
> >>>>>>
> >>>>>>> + sky1_fixed_clocks: fixed-clocks {
> >>>>>>> + uartclk: uartclk {
> >>>>>>> + compatible = "fixed-clock";
> >>>>>>> + #clock-cells = <0>;
> >>>>>>> + clock-frequency = <100000000>;
> >>>>>>> + clock-output-names = "uartclk";
> >>>>>>
> >>>>>>> + uart_apb_pclk: uart_apb_pclk {
> >>>>>>> + compatible = "fixed-clock";
> >>>>>>> + #clock-cells = <0>;
> >>>>>>> + clock-frequency = <200000000>;
> >>>>>>> + clock-output-names = "apb_pclk";
> >>>>>>
> >>>>>>
> >>>>>> Clock names don't need "clk" in them, and there should
> >>>>>> be no underscore -- use '-' instead of '_' when separating
> >>>>>> strings in DT.
> >>>>>
> >>>>> Will change to:
> >>>>> uart_apb: clock-uart-apb {
> >>>>
> >>>> No, instead explain why this is part of SoC - or what are you missing
> >>>> here - and use preferred naming.
> >>>
> >>> It is in SoC part, APB clock uses to visit register, and the function
> >>> amba_get_enable_pclk at file drivers/amba/bus.c needs it during uart
> >>> device probes. It uses common Arm uart pl011 IP, the binding doc
> >>> described at: Documentation/devicetree/bindings/serial/pl011.yaml
> >>
> >> So you added fake clock? Everything you wrote is not the reason to add
> >> such clock.
> >
> > Not a fake clock, it is the real clocks, but depends on firmware open
> > their parents and configure their rate. It could let others do their
>
> In one place you speak about UART, which is the consumer and not
> relevant. Here you mention it is real clock. That's all confusing, so to
> clarify:
>
> We talk about clock which is generated/output by something. Something
> which controls way it is generated is clock controller. Either you have
> here crystal or have here clock controller. If first, fixed clock is for
> that. If second, you need proper clock controller binding. You can add
> stubs for missing pieces, but this requires explanation and TODO/FIXME
> comment.
>
Thanks for clarify, it is the second case, we have clock controller for
that, but now it is not ready to upstream due to some dependency, like
mailbox device driver, I will drop UART node at v2 patch set.
--
Best regards,
Peter
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-20 8:40 ` [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support Peter Chen
2025-02-20 10:58 ` Arnd Bergmann
@ 2025-02-20 12:23 ` Krzysztof Kozlowski
2025-02-21 22:46 ` Rob Herring
2025-02-22 20:05 ` Marcin Juszkiewicz
3 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2025-02-20 12:23 UTC (permalink / raw)
To: Peter Chen, robh, krzk+dt, conor+dt, catalin.marinas, will, arnd
Cc: linux-arm-kernel, devicetree, linux-kernel, cix-kernel-upstream,
Fugang . duan
On 20/02/2025 09:40, Peter Chen wrote:
> CIX SKY1 SoC is high performance Armv9 SoC designed by Cixtech,
> and Orion O6 is open source motherboard launched by Radxa.
> See below for detail:
> https://docs.radxa.com/en/orion/o6/getting-started/introduction
>
> In this commit, it only adds limited components for running initramfs
> at Orion O6.
>
Test the patches before posting.
> Acked-by: Fugang.duan <fugang.duan@cixtech.com>
Again, difference in names...
> Signed-off-by: Peter Chen <peter.chen@cixtech.com>
> ---
> arch/arm64/boot/dts/Makefile | 1 +
> arch/arm64/boot/dts/cix/Makefile | 2 +
> arch/arm64/boot/dts/cix/sky1-orion-o6.dts | 21 ++
> arch/arm64/boot/dts/cix/sky1.dtsi | 264 ++++++++++++++++++++++
> 4 files changed, 288 insertions(+)
> create mode 100644 arch/arm64/boot/dts/cix/Makefile
> create mode 100644 arch/arm64/boot/dts/cix/sky1-orion-o6.dts
> create mode 100644 arch/arm64/boot/dts/cix/sky1.dtsi
>
> diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile
> index 79b73a21ddc2..8e7ccd0027bd 100644
> --- a/arch/arm64/boot/dts/Makefile
> +++ b/arch/arm64/boot/dts/Makefile
> @@ -13,6 +13,7 @@ subdir-y += bitmain
> subdir-y += blaize
> subdir-y += broadcom
> subdir-y += cavium
> +subdir-y += cix
> subdir-y += exynos
> subdir-y += freescale
> subdir-y += hisilicon
> diff --git a/arch/arm64/boot/dts/cix/Makefile b/arch/arm64/boot/dts/cix/Makefile
> new file mode 100644
> index 000000000000..ed3713982012
> --- /dev/null
> +++ b/arch/arm64/boot/dts/cix/Makefile
> @@ -0,0 +1,2 @@
> +# SPDX-License-Identifier: GPL-2.0
> +dtb-$(CONFIG_ARCH_CIX) += sky1-orion-o6.dtb
> diff --git a/arch/arm64/boot/dts/cix/sky1-orion-o6.dts b/arch/arm64/boot/dts/cix/sky1-orion-o6.dts
> new file mode 100644
> index 000000000000..dbee1616076d
> --- /dev/null
> +++ b/arch/arm64/boot/dts/cix/sky1-orion-o6.dts
> @@ -0,0 +1,21 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright 2025 Cix Technology Group Co., Ltd.
> + *
> + */
> +
> +/dts-v1/;
> +
> +#include "sky1.dtsi"
> +/ {
> + model = "Radxa Orion O6";
> + compatible = "radxa,orion-o6";
Never tested.
It does not look like you tested the DTS against bindings. Please run
`make dtbs_check W=1` (see
Documentation/devicetree/bindings/writing-schema.rst or
https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
for instructions).
Maybe you need to update your dtschema and yamllint. Don't rely on
distro packages for dtschema and be sure you are using the latest
released dtschema.
> +
> + chosen {
> + stdout-path = &uart2;
> + };
> +};
> +
> +&uart2 {
> + status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/cix/sky1.dtsi b/arch/arm64/boot/dts/cix/sky1.dtsi
> new file mode 100644
> index 000000000000..d98735f782e0
> --- /dev/null
> +++ b/arch/arm64/boot/dts/cix/sky1.dtsi
> @@ -0,0 +1,264 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright 2025 Cix Technology Group Co., Ltd.
> + *
> + */
> +
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +/ {
> + interrupt-parent = <&gic>;
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + aliases {
> + serial2 = &uart2;
This is not part of the SoC, but board.
> + };
> +
> + cpus {
> + #address-cells = <2>;
> + #size-cells = <0>;
> +
> + cpu-map {
> + cluster0 {
> + core0 {
> + cpu = <&CPU0>;
Labels are lowercase.
> + };
> + core1 {
> + cpu = <&CPU1>;
> + };
> + core2 {
> + cpu = <&CPU2>;
> + };
> + core3 {
> + cpu = <&CPU3>;
> + };
> + core4 {
> + cpu = <&CPU4>;
> + };
> + core5 {
> + cpu = <&CPU5>;
> + };
> + core6 {
> + cpu = <&CPU6>;
> + };
> + core7 {
> + cpu = <&CPU7>;
> + };
> + core8 {
> + cpu = <&CPU8>;
> + };
> + core9 {
> + cpu = <&CPU9>;
> + };
> + core10 {
> + cpu = <&CPU10>;
> + };
> + core11 {
> + cpu = <&CPU11>;
> + };
> + };
> + };
> +
> + CPU0: cpu0@0 {
Node names should be generic. See also an explanation and list of
examples (not exhaustive) in DT specification:
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
cpu@
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x0>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <403>;
> + };
> +
> + CPU1: cpu1@100 {
cpu@
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x100>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <403>;
> + };
> +
> + CPU2: cpu2@200 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x200>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <403>;
> + };
> +
> + CPU3: cpu3@300 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x300>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <403>;
> + };
> +
> + CPU4: cpu4@400 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x400>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU5: cpu5@500 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x500>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU6: cpu6@600 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x600>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU7: cpu7@700 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x700>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU8: cpu8@800 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x800>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU9: cpu9@900 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x900>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU10: cpu10@a00 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0xa00>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU11: cpu11@b00 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0xb00>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> + };
> +
> + arch_timer: timer {
> + compatible = "arm,armv8-timer";
> + interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
> + <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
> + <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
> + <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
> + clock-frequency = <1000000000>;
> + interrupt-parent = <&gic>;
> + arm,no-tick-in-suspend;
> + };
> +
> + memory@80000000 {
This does not look like part of SoC.
> + #address-cells = <2>;
> + #size-cells = <2>;
> + device_type = "memory";
> + reg = <0x00000000 0x80000000 0x1 0x00000000>;
Order properties according to DTS coding style.
> + };
> +
> + psci {
> + compatible = "arm,psci-1.0";
> + method = "smc";
> + };
> +
> + pmu: pmu {
Keep some sort of order. See DTS coding style.
> + compatible = "arm,armv8-pmuv3";
> + interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
> + interrupt-parent = <&gic>;
> + status = "okay";
Where did you disable it? Why only this has status=okay but other do not?
> + };
> +
> + pmu_spe: pmu_spe {
DTS coding style. No underscores.
> + compatible = "arm,statistical-profiling-extension-v1";
> + interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_LOW>;
> + interrupt-parent = <&gic>;
> + status = "okay";
> + };
> +
> + reserved-memory {
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> +
> + linux,cma {
This does not look like part of SoC.
> + compatible = "shared-dma-pool";
> + reusable;
> + size = <0x0 0x28000000>;
> + linux,cma-default;
> + };
> +
> + };
> +
> + sky1_fixed_clocks: fixed-clocks {
> + uartclk: uartclk {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <100000000>;
> + clock-output-names = "uartclk";
> + };
> +
> + uart_apb_pclk: uart_apb_pclk {
This code is not getting better...
Where are these clocks physically?
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <200000000>;
> + clock-output-names = "apb_pclk";
> + };
> + };
> +
> + soc@0 {
> + compatible = "simple-bus";
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> + dma-ranges;
> +
> + uart2: uart@040d0000 {
> + compatible = "arm,pl011", "arm,primecell";
> + reg = <0x0 0x040d0000 0x0 0x1000>;
> + interrupts = <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>;
> + clock-names = "uartclk", "apb_pclk";
> + clocks = <&uartclk>, <&uart_apb_pclk>;
> + status = "disabled";
> + };
> +
> + gic: interrupt-controller@0e001000 {
> + compatible = "arm,gic-v3";
> + #address-cells = <2>;
> + #interrupt-cells = <3>;
> + #size-cells = <2>;
> + ranges;
> + interrupt-controller;
> + #redistributor-regions = <1>;
> + reg = <0x0 0x0e010000 0 0x10000>, /* GICD */
> + <0x0 0x0e090000 0 0x300000>; /* GICR * 12 */
> + redistributor-stride = <0x40000>;
DTS coding style.
> + interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
> + interrupt-parent = <&gic>;
> +
> + its_pcie: its@e050000 {
> + compatible = "arm,gic-v3-its";
> + msi-controller;
> + reg = <0x0 0x0e050000 0x0 0x30000>;
> + };
> + };
> + };
> +};
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-20 8:40 ` [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support Peter Chen
2025-02-20 10:58 ` Arnd Bergmann
2025-02-20 12:23 ` Krzysztof Kozlowski
@ 2025-02-21 22:46 ` Rob Herring
2025-02-24 6:09 ` Peter Chen
2025-02-22 20:05 ` Marcin Juszkiewicz
3 siblings, 1 reply; 30+ messages in thread
From: Rob Herring @ 2025-02-21 22:46 UTC (permalink / raw)
To: Peter Chen
Cc: krzk+dt, conor+dt, catalin.marinas, will, arnd, linux-arm-kernel,
devicetree, linux-kernel, cix-kernel-upstream, Fugang . duan
On Thu, Feb 20, 2025 at 04:40:20PM +0800, Peter Chen wrote:
> CIX SKY1 SoC is high performance Armv9 SoC designed by Cixtech,
> and Orion O6 is open source motherboard launched by Radxa.
> See below for detail:
> https://docs.radxa.com/en/orion/o6/getting-started/introduction
>
> In this commit, it only adds limited components for running initramfs
> at Orion O6.
>
> Acked-by: Fugang.duan <fugang.duan@cixtech.com>
> Signed-off-by: Peter Chen <peter.chen@cixtech.com>
> ---
> arch/arm64/boot/dts/Makefile | 1 +
> arch/arm64/boot/dts/cix/Makefile | 2 +
> arch/arm64/boot/dts/cix/sky1-orion-o6.dts | 21 ++
> arch/arm64/boot/dts/cix/sky1.dtsi | 264 ++++++++++++++++++++++
> 4 files changed, 288 insertions(+)
> create mode 100644 arch/arm64/boot/dts/cix/Makefile
> create mode 100644 arch/arm64/boot/dts/cix/sky1-orion-o6.dts
> create mode 100644 arch/arm64/boot/dts/cix/sky1.dtsi
>
> diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile
> index 79b73a21ddc2..8e7ccd0027bd 100644
> --- a/arch/arm64/boot/dts/Makefile
> +++ b/arch/arm64/boot/dts/Makefile
> @@ -13,6 +13,7 @@ subdir-y += bitmain
> subdir-y += blaize
> subdir-y += broadcom
> subdir-y += cavium
> +subdir-y += cix
> subdir-y += exynos
> subdir-y += freescale
> subdir-y += hisilicon
> diff --git a/arch/arm64/boot/dts/cix/Makefile b/arch/arm64/boot/dts/cix/Makefile
> new file mode 100644
> index 000000000000..ed3713982012
> --- /dev/null
> +++ b/arch/arm64/boot/dts/cix/Makefile
> @@ -0,0 +1,2 @@
> +# SPDX-License-Identifier: GPL-2.0
> +dtb-$(CONFIG_ARCH_CIX) += sky1-orion-o6.dtb
> diff --git a/arch/arm64/boot/dts/cix/sky1-orion-o6.dts b/arch/arm64/boot/dts/cix/sky1-orion-o6.dts
> new file mode 100644
> index 000000000000..dbee1616076d
> --- /dev/null
> +++ b/arch/arm64/boot/dts/cix/sky1-orion-o6.dts
> @@ -0,0 +1,21 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright 2025 Cix Technology Group Co., Ltd.
> + *
> + */
> +
> +/dts-v1/;
> +
> +#include "sky1.dtsi"
> +/ {
> + model = "Radxa Orion O6";
> + compatible = "radxa,orion-o6";
> +
> + chosen {
> + stdout-path = &uart2;
> + };
> +};
> +
> +&uart2 {
> + status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/cix/sky1.dtsi b/arch/arm64/boot/dts/cix/sky1.dtsi
> new file mode 100644
> index 000000000000..d98735f782e0
> --- /dev/null
> +++ b/arch/arm64/boot/dts/cix/sky1.dtsi
> @@ -0,0 +1,264 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright 2025 Cix Technology Group Co., Ltd.
> + *
> + */
> +
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +/ {
> + interrupt-parent = <&gic>;
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + aliases {
> + serial2 = &uart2;
> + };
> +
> + cpus {
> + #address-cells = <2>;
> + #size-cells = <0>;
> +
> + cpu-map {
> + cluster0 {
> + core0 {
> + cpu = <&CPU0>;
> + };
> + core1 {
> + cpu = <&CPU1>;
> + };
> + core2 {
> + cpu = <&CPU2>;
> + };
> + core3 {
> + cpu = <&CPU3>;
> + };
> + core4 {
> + cpu = <&CPU4>;
> + };
> + core5 {
> + cpu = <&CPU5>;
> + };
> + core6 {
> + cpu = <&CPU6>;
> + };
> + core7 {
> + cpu = <&CPU7>;
> + };
> + core8 {
> + cpu = <&CPU8>;
> + };
> + core9 {
> + cpu = <&CPU9>;
> + };
> + core10 {
> + cpu = <&CPU10>;
> + };
> + core11 {
> + cpu = <&CPU11>;
> + };
> + };
> + };
> +
> + CPU0: cpu0@0 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x0>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <403>;
> + };
> +
> + CPU1: cpu1@100 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x100>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <403>;
> + };
> +
> + CPU2: cpu2@200 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x200>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <403>;
> + };
> +
> + CPU3: cpu3@300 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x300>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <403>;
> + };
> +
> + CPU4: cpu4@400 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x400>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU5: cpu5@500 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x500>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU6: cpu6@600 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x600>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU7: cpu7@700 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x700>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU8: cpu8@800 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x800>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU9: cpu9@900 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0x900>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU10: cpu10@a00 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0xa00>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> +
> + CPU11: cpu11@b00 {
> + compatible = "arm,armv8";
> + enable-method = "psci";
> + reg = <0x0 0xb00>;
> + device_type = "cpu";
> + capacity-dmips-mhz = <1024>;
> + };
> + };
> +
> + arch_timer: timer {
> + compatible = "arm,armv8-timer";
> + interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
> + <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
> + <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
> + <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
> + clock-frequency = <1000000000>;
> + interrupt-parent = <&gic>;
> + arm,no-tick-in-suspend;
> + };
> +
> + memory@80000000 {
> + #address-cells = <2>;
> + #size-cells = <2>;
> + device_type = "memory";
> + reg = <0x00000000 0x80000000 0x1 0x00000000>;
> + };
> +
> + psci {
> + compatible = "arm,psci-1.0";
> + method = "smc";
> + };
> +
> + pmu: pmu {
> + compatible = "arm,armv8-pmuv3";
Also needs the CPU model specific compatible string.
> + interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
> + interrupt-parent = <&gic>;
> + status = "okay";
okay is the default, don't need status.
> + };
> +
> + pmu_spe: pmu_spe {
> + compatible = "arm,statistical-profiling-extension-v1";
> + interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_LOW>;
> + interrupt-parent = <&gic>;
> + status = "okay";
> + };
> +
> + reserved-memory {
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> +
> + linux,cma {
> + compatible = "shared-dma-pool";
> + reusable;
> + size = <0x0 0x28000000>;
> + linux,cma-default;
> + };
> +
> + };
> +
> + sky1_fixed_clocks: fixed-clocks {
Drop this container node.
> + uartclk: uartclk {
clock-100000000 for the node name.
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <100000000>;
> + clock-output-names = "uartclk";
> + };
> +
> + uart_apb_pclk: uart_apb_pclk {
Similar here.
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <200000000>;
> + clock-output-names = "apb_pclk";
> + };
> + };
> +
> + soc@0 {
> + compatible = "simple-bus";
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> + dma-ranges;
> +
> + uart2: uart@040d0000 {
serial@...
> + compatible = "arm,pl011", "arm,primecell";
> + reg = <0x0 0x040d0000 0x0 0x1000>;
> + interrupts = <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>;
> + clock-names = "uartclk", "apb_pclk";
> + clocks = <&uartclk>, <&uart_apb_pclk>;
> + status = "disabled";
> + };
> +
> + gic: interrupt-controller@0e001000 {
> + compatible = "arm,gic-v3";
> + #address-cells = <2>;
> + #interrupt-cells = <3>;
> + #size-cells = <2>;
> + ranges;
> + interrupt-controller;
> + #redistributor-regions = <1>;
> + reg = <0x0 0x0e010000 0 0x10000>, /* GICD */
> + <0x0 0x0e090000 0 0x300000>; /* GICR * 12 */
> + redistributor-stride = <0x40000>;
> + interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
> + interrupt-parent = <&gic>;
> +
> + its_pcie: its@e050000 {
msi-controller@...
> + compatible = "arm,gic-v3-its";
> + msi-controller;
> + reg = <0x0 0x0e050000 0x0 0x30000>;
> + };
> + };
> + };
> +};
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-21 22:46 ` Rob Herring
@ 2025-02-24 6:09 ` Peter Chen
0 siblings, 0 replies; 30+ messages in thread
From: Peter Chen @ 2025-02-24 6:09 UTC (permalink / raw)
To: Rob Herring
Cc: krzk+dt@kernel.org, conor+dt@kernel.org, catalin.marinas@arm.com,
will@kernel.org, arnd@arndb.de,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, cix-kernel-upstream, Fugang Duan
On 25-02-22 06:46:51, Rob Herring wrote:
Hi Rob,
Thanks for your reviewing.
>
> > +
> > + pmu: pmu {
> > + compatible = "arm,armv8-pmuv3";
>
> Also needs the CPU model specific compatible string.
For CIX Sky1 SoC, it is Armv9 big-LITTLE architecture, if we
add two compatibles for both A720 and A520, there will be two
Arm PMU devices, could it work well for user tool like perf?
>
> > + interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
> > + interrupt-parent = <&gic>;
> > + status = "okay";
>
> okay is the default, don't need status.
Will change.
>
> > + };
> > +
> > + pmu_spe: pmu_spe {
> > + compatible = "arm,statistical-profiling-extension-v1";
> > + interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_LOW>;
> > + interrupt-parent = <&gic>;
> > + status = "okay";
> > + };
> > +
> > + reserved-memory {
> > + #address-cells = <2>;
> > + #size-cells = <2>;
> > + ranges;
> > +
> > + linux,cma {
> > + compatible = "shared-dma-pool";
> > + reusable;
> > + size = <0x0 0x28000000>;
> > + linux,cma-default;
> > + };
> > +
> > + };
> > +
> > + sky1_fixed_clocks: fixed-clocks {
>
> Drop this container node.
Okay, I will delete above line.
>
> > + uartclk: uartclk {
>
> clock-100000000 for the node name.
Will change.
>
> > + compatible = "fixed-clock";
> > + #clock-cells = <0>;
> > + clock-frequency = <100000000>;
> > + clock-output-names = "uartclk";
> > + };
> > +
> > + uart_apb_pclk: uart_apb_pclk {
>
> Similar here.
>
> > + compatible = "fixed-clock";
> > + #clock-cells = <0>;
> > + clock-frequency = <200000000>;
> > + clock-output-names = "apb_pclk";
> > + };
> > + };
> > +
> > + soc@0 {
> > + compatible = "simple-bus";
> > + #address-cells = <2>;
> > + #size-cells = <2>;
> > + ranges;
> > + dma-ranges;
> > +
> > + uart2: uart@040d0000 {
>
> serial@...
Will change
>
> > + compatible = "arm,pl011", "arm,primecell";
> > + reg = <0x0 0x040d0000 0x0 0x1000>;
> > + interrupts = <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>;
> > + clock-names = "uartclk", "apb_pclk";
> > + clocks = <&uartclk>, <&uart_apb_pclk>;
> > + status = "disabled";
> > + };
> > +
> > + gic: interrupt-controller@0e001000 {
> > + compatible = "arm,gic-v3";
> > + #address-cells = <2>;
> > + #interrupt-cells = <3>;
> > + #size-cells = <2>;
> > + ranges;
> > + interrupt-controller;
> > + #redistributor-regions = <1>;
> > + reg = <0x0 0x0e010000 0 0x10000>, /* GICD */
> > + <0x0 0x0e090000 0 0x300000>; /* GICR * 12 */
> > + redistributor-stride = <0x40000>;
> > + interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
> > + interrupt-parent = <&gic>;
> > +
> > + its_pcie: its@e050000 {
>
> msi-controller@...
Will change
--
Best regards,
Peter
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-20 8:40 ` [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support Peter Chen
` (2 preceding siblings ...)
2025-02-21 22:46 ` Rob Herring
@ 2025-02-22 20:05 ` Marcin Juszkiewicz
2025-02-24 11:36 ` Peter Chen
3 siblings, 1 reply; 30+ messages in thread
From: Marcin Juszkiewicz @ 2025-02-22 20:05 UTC (permalink / raw)
To: peter.chen
Cc: arnd, catalin.marinas, cix-kernel-upstream, conor+dt, devicetree,
fugang.duan, krzk+dt, linux-arm-kernel, linux-kernel, robh, will
> diff --git a/arch/arm64/boot/dts/cix/sky1.dtsi b/arch/arm64/boot/dts/cix/sky1.dtsi
> new file mode 100644
> index 000000000000..d98735f782e0
> --- /dev/null
> +++ b/arch/arm64/boot/dts/cix/sky1.dtsi
> @@ -0,0 +1,264 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright 2025 Cix Technology Group Co., Ltd.
> + *
> + */
> +
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
[..]
> + arch_timer: timer {
> + compatible = "arm,armv8-timer";
> + interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
> + <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
> + <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
> + <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
> + clock-frequency = <1000000000>;
> + interrupt-parent = <&gic>;
> + arm,no-tick-in-suspend;
> + };
This is not Arm v8.0 SoC so where is non-secure EL2 virtual timer?
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-22 20:05 ` Marcin Juszkiewicz
@ 2025-02-24 11:36 ` Peter Chen
2025-02-24 14:06 ` Marcin Juszkiewicz
0 siblings, 1 reply; 30+ messages in thread
From: Peter Chen @ 2025-02-24 11:36 UTC (permalink / raw)
To: Marcin Juszkiewicz
Cc: arnd@arndb.de, catalin.marinas@arm.com, cix-kernel-upstream,
conor+dt@kernel.org, devicetree@vger.kernel.org, Fugang Duan,
krzk+dt@kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, robh@kernel.org, will@kernel.org
On 25-02-23 04:05:10, Marcin Juszkiewicz wrote:
>
> > diff --git a/arch/arm64/boot/dts/cix/sky1.dtsi b/arch/arm64/boot/dts/cix/sky1.dtsi
> > new file mode 100644
> > index 000000000000..d98735f782e0
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/cix/sky1.dtsi
> > @@ -0,0 +1,264 @@
> > +// SPDX-License-Identifier: BSD-3-Clause
> > +/*
> > + * Copyright 2025 Cix Technology Group Co., Ltd.
> > + *
> > + */
> > +
> > +#include <dt-bindings/interrupt-controller/arm-gic.h>
>
> [..]
>
> > + arch_timer: timer {
> > + compatible = "arm,armv8-timer";
> > + interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
> > + <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
> > + <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
> > + <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
> > + clock-frequency = <1000000000>;
> > + interrupt-parent = <&gic>;
> > + arm,no-tick-in-suspend;
> > + };
>
> This is not Arm v8.0 SoC so where is non-secure EL2 virtual timer?
It is the Arm v9 SoC and back compatible with Arm v8.
--
Best regards,
Peter
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-24 11:36 ` Peter Chen
@ 2025-02-24 14:06 ` Marcin Juszkiewicz
2025-02-25 3:21 ` Peter Chen
0 siblings, 1 reply; 30+ messages in thread
From: Marcin Juszkiewicz @ 2025-02-24 14:06 UTC (permalink / raw)
To: Peter Chen
Cc: arnd@arndb.de, catalin.marinas@arm.com, cix-kernel-upstream,
conor+dt@kernel.org, devicetree@vger.kernel.org, Fugang Duan,
krzk+dt@kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, robh@kernel.org, will@kernel.org
W dniu 24.02.2025 o 12:36, Peter Chen pisze:
> On 25-02-23 04:05:10, Marcin Juszkiewicz wrote:
>>
>>> diff --git a/arch/arm64/boot/dts/cix/sky1.dtsi b/arch/arm64/boot/dts/cix/sky1.dtsi
>>> new file mode 100644
>>> index 000000000000..d98735f782e0
>>> --- /dev/null
>>> +++ b/arch/arm64/boot/dts/cix/sky1.dtsi
>>> @@ -0,0 +1,264 @@
>>> +// SPDX-License-Identifier: BSD-3-Clause
>>> +/*
>>> + * Copyright 2025 Cix Technology Group Co., Ltd.
>>> + *
>>> + */
>>> +
>>> +#include <dt-bindings/interrupt-controller/arm-gic.h>
>>
>> [..]
>>
>>> + arch_timer: timer {
>>> + compatible = "arm,armv8-timer";
>>> + interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
>>> + <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
>>> + <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
>>> + <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
>>> + clock-frequency = <1000000000>;
>>> + interrupt-parent = <&gic>;
>>> + arm,no-tick-in-suspend;
>>> + };
>>
>> This is not Arm v8.0 SoC so where is non-secure EL2 virtual timer?
>
> It is the Arm v9 SoC and back compatible with Arm v8.
Arm SoC has several timer interrupts:
PPI 10: Non-secure EL2 physical timer interrupt
PPI 11: Virtual timer interrupt
PPI 12: Non-secure EL2 virtual timer
PPI 13: Secure physical timer interrupt
PPI 14: Non-secure physical timer interrupt
You mention 10, 11, 13, 14 only like your SoC would be plain old Arm
v8.0 one (Cortex-A53/A72).
Sky1 (CP/CA/CS8180) is Arm v9 so should also list PPI 12 which came with
VHE (Virtualization host extensions) which is mandatory for each Arm cpu
v8.1 or above (and is implemented in A520/A720 cores).
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support
2025-02-24 14:06 ` Marcin Juszkiewicz
@ 2025-02-25 3:21 ` Peter Chen
0 siblings, 0 replies; 30+ messages in thread
From: Peter Chen @ 2025-02-25 3:21 UTC (permalink / raw)
To: Marcin Juszkiewicz
Cc: arnd@arndb.de, catalin.marinas@arm.com, cix-kernel-upstream,
conor+dt@kernel.org, devicetree@vger.kernel.org, Fugang Duan,
krzk+dt@kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, robh@kernel.org, will@kernel.org
On 25-02-24 15:06:19, Marcin Juszkiewicz wrote:
> > > > diff --git a/arch/arm64/boot/dts/cix/sky1.dtsi b/arch/arm64/boot/dts/cix/sky1.dtsi
> > > > new file mode 100644
> > > > index 000000000000..d98735f782e0
> > > > --- /dev/null
> > > > +++ b/arch/arm64/boot/dts/cix/sky1.dtsi
> > > > @@ -0,0 +1,264 @@
> > > > +// SPDX-License-Identifier: BSD-3-Clause
> > > > +/*
> > > > + * Copyright 2025 Cix Technology Group Co., Ltd.
> > > > + *
> > > > + */
> > > > +
> > > > +#include <dt-bindings/interrupt-controller/arm-gic.h>
> > >
> > > [..]
> > >
> > > > + arch_timer: timer {
> > > > + compatible = "arm,armv8-timer";
> > > > + interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
> > > > + <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
> > > > + <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
> > > > + <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
> > > > + clock-frequency = <1000000000>;
> > > > + interrupt-parent = <&gic>;
> > > > + arm,no-tick-in-suspend;
> > > > + };
> > >
> > > This is not Arm v8.0 SoC so where is non-secure EL2 virtual timer?
> >
> > It is the Arm v9 SoC and back compatible with Arm v8.
>
> Arm SoC has several timer interrupts:
>
> PPI 10: Non-secure EL2 physical timer interrupt
> PPI 11: Virtual timer interrupt
> PPI 12: Non-secure EL2 virtual timer
> PPI 13: Secure physical timer interrupt
> PPI 14: Non-secure physical timer interrupt
>
> You mention 10, 11, 13, 14 only like your SoC would be plain old Arm
> v8.0 one (Cortex-A53/A72).
>
> Sky1 (CP/CA/CS8180) is Arm v9 so should also list PPI 12 which came with
> VHE (Virtualization host extensions) which is mandatory for each Arm cpu
> v8.1 or above (and is implemented in A520/A720 cores).
Thanks for mentioning it. I will add PPI 12 for v2 patch set.
--
Best regards,
Peter
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 0/6] arm64: Introduce CIX P1 (SKY1) SoC
2025-02-20 8:40 [PATCH 0/6] arm64: Introduce CIX P1 (SKY1) SoC Peter Chen
` (5 preceding siblings ...)
2025-02-20 8:40 ` [PATCH 6/6] arm64: dts: cix: add initial CIX P1(SKY1) dts support Peter Chen
@ 2025-02-20 21:29 ` Rob Herring (Arm)
6 siblings, 0 replies; 30+ messages in thread
From: Rob Herring (Arm) @ 2025-02-20 21:29 UTC (permalink / raw)
To: Peter Chen
Cc: catalin.marinas, devicetree, krzk+dt, linux-kernel,
cix-kernel-upstream, conor+dt, will, linux-arm-kernel, arnd
On Thu, 20 Feb 2025 16:40:14 +0800, Peter Chen wrote:
> Cixtech P1 (internal name sky1) is high performance generic Armv9 SoC.
> Orion O6 is the world's first open source Arm V9 Motherboard built by
> Radxa. You could find brief introduction for SoC and related boards at:
> https://radxa.com/products/orion/o6#overview
>
> In this series, we add initial SoC and board support for Kernel building.
> Patch 1-2: Add dt-binding doc for CIX and its sky1 SoC
> Patch 3: add related maintainter entry
> Patch 4-5: add Arm64 build support
> Patch 6: add initial dts support for SoC and Orion O6 board
>
> To run upstream kernel at Orion O6 board, you need to use BIOS
> released by Radxa:
> https://docs.radxa.com/en/orion/o6/bios/install-bios
>
> Fugang Duan (1):
> arm64: Kconfig: add ARCH_CIX for cix silicons
>
> Peter Chen (5):
> dt-bindings: arm: add CIX P1 (SKY1) SoC
> dt-bindings: vendor-prefixes: Add CIX Technology Group Co., Ltd.
> MAINTAINERS: Add CIX SoC maintainer entry
> arm64: defconfig: Enable CIX SoC
> arm64: dts: cix: add initial CIX P1(SKY1) dts support
>
> .../devicetree/bindings/arm/cix.yaml | 26 ++
> .../devicetree/bindings/vendor-prefixes.yaml | 2 +
> MAINTAINERS | 8 +
> arch/arm64/Kconfig.platforms | 6 +
> arch/arm64/boot/dts/Makefile | 1 +
> arch/arm64/boot/dts/cix/Makefile | 2 +
> arch/arm64/boot/dts/cix/sky1-orion-o6.dts | 21 ++
> arch/arm64/boot/dts/cix/sky1.dtsi | 264 ++++++++++++++++++
> arch/arm64/configs/defconfig | 1 +
> 9 files changed, 331 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/arm/cix.yaml
> create mode 100644 arch/arm64/boot/dts/cix/Makefile
> create mode 100644 arch/arm64/boot/dts/cix/sky1-orion-o6.dts
> create mode 100644 arch/arm64/boot/dts/cix/sky1.dtsi
>
> --
> 2.25.1
>
>
>
My bot found new DTB warnings on the .dts files added or changed in this
series.
Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.
If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:
pip3 install dtschema --upgrade
New warnings running 'make CHECK_DTBS=y for arch/arm64/boot/dts/cix/' for 20250220084020.628704-1-peter.chen@cixtech.com:
redistributor-stride: size (4) error for type uint64
arch/arm64/boot/dts/cix/sky1-orion-o6.dtb: /: compatible: ['radxa,orion-o6'] is too short
from schema $id: http://devicetree.org/schemas/arm/cix.yaml#
arch/arm64/boot/dts/cix/sky1-orion-o6.dtb: /: memory@80000000: '#address-cells', '#size-cells' do not match any of the regexes: 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/memory.yaml#
arch/arm64/boot/dts/cix/sky1-orion-o6.dtb: soc@0: uart@040d0000: 'ranges' is a required property
from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
arch/arm64/boot/dts/cix/sky1-orion-o6.dtb: uart@040d0000: $nodename:0: 'uart@040d0000' does not match '^serial(@.*)?$'
from schema $id: http://devicetree.org/schemas/serial/pl011.yaml#
arch/arm64/boot/dts/cix/sky1-orion-o6.dtb: interrupt-controller@0e001000: redistributor-stride: 262144 is not a 'uint64'
from schema $id: http://devicetree.org/schemas/interrupt-controller/arm,gic-v3.yaml#
arch/arm64/boot/dts/cix/sky1-orion-o6.dtb: interrupt-controller@0e001000: 'its@e050000' does not match any of the regexes: '^(msi-controller|gic-its|interrupt-controller)@[0-9a-f]+$', '^gic-its@', '^interrupt-controller@[0-9a-f]+$', 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/interrupt-controller/arm,gic-v3.yaml#
^ permalink raw reply [flat|nested] 30+ messages in thread