soc: new SoC support for 6.14

Two new SoC families are added here, with devicetree files and
 a little bit of infrastructure to allow booting:
 
  - Blaize BLZP1600 is an AI chip using custom GSP (Graph Streaming
    Processor) cores for computation, and two small Cortex-A53 cores
    that run the operating system.
 
  - SpacemiT K1 is a 64-bit RISC-V chip, using eight custom RVA22
    compatible CPU cores with vector support.
    Also marketed at AI applications, it has a much slower NPU compared
    to BLZP1600, but in turn focuses on the CPU performance
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmeSd7cACgkQYKtH/8kJ
 UienxxAAoUMAWex/k5gWfg3DdvDrleXydjYzIm6DBIad1kxHYy/gvEuQAgV9vxqb
 tQ763NKRLekmwv+CX+S47PjrMHgqqwtch5If8ixd50gYSZPukJmuCTkthMu1qBb9
 /zi0LXg3cViPQBAY0MwCQMzukRHsqmBzaUSle6bM1yDHhHAmcz88Iqs/LttJOnYk
 M/+ybxYoUdVmPI+Nt3e8hxlecfU2oM0S1hoStvdsA0fpuLfEBF8WpF7DnkSphT10
 JqVysB3FTF0PYXyBodcuh37iCCObAFVAUT/ZvKO3+Qo/rI2IseP8lSeAV84JP/5S
 w4MqpGhFecICBEWJ9h0FnbSI2NyON8uz23R+va6YAtTxuPL2Loq4HwvxXh5H5imC
 sxZ0SEnkwFQ7DJ10nV00FXlmKZ7+Ax0WLoboNHWYxdAfqhgcZ8q8gi/+WTETTBog
 jnTnWjscuEA5QTNfOP0AqUtVbWQOj09wLsiceJc8G5jpbe9WaZJy1yzXaCNu2hZV
 2x+2UT31Y6G2Poxee8Ti4u1ljieJh5BmD1Ts81P8EpAC0JsVyJ3HtouYeBHcBPoj
 HXmdGDPN8bS0Ugu7iFu3GO+TPcBzUw1ZND8L3QbBesb/oFK0455ARkVXO2nazP4p
 4s/iGWbGAKIyKPOdYGaiSXmbXurx99pOVY6G8ccqkNf+17MfTgE=
 =clzA
 -----END PGP SIGNATURE-----

Merge tag 'soc-new-6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull new SoC support from Arnd Bergmann:
 "Two new SoC families are added here, with devicetree files and a
  little bit of infrastructure to allow booting:

   - Blaize BLZP1600 is an AI chip using custom GSP (Graph Streaming
     Processor) cores for computation, and two small Cortex-A53 cores
     that run the operating system.

   - SpacemiT K1 is a 64-bit RISC-V chip, using eight custom RVA22
     compatible CPU cores with vector support.

     Also marketed at AI applications, it has a much slower NPU compared
     to BLZP1600, but in turn focuses on the CPU performance"

* tag 'soc-new-6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
  riscv: dts: spacemit: move aliases to board dts
  riscv: dts: spacemit: add pinctrl property to uart0 in BPI-F3
  riscv: defconfig: enable SpacemiT SoC
  riscv: dts: spacemit: add Banana Pi BPI-F3 board device tree
  riscv: dts: add initial SpacemiT K1 SoC device tree
  riscv: add SpacemiT SoC family Kconfig support
  dt-bindings: serial: 8250: Add SpacemiT K1 uart compatible
  dt-bindings: interrupt-controller: Add SpacemiT K1 PLIC
  dt-bindings: timer: Add SpacemiT K1 CLINT
  dt-bindings: riscv: add SpacemiT K1 bindings
  dt-bindings: riscv: Add SpacemiT X60 compatibles
  MAINTAINERS: setup support for SpacemiT SoC tree
  MAINTAINER: Add entry for Blaize SoC
  arm64: defconfig: Enable Blaize BLZP1600 platform
  arm64: dts: Add initial support for Blaize BLZP1600 CB2
  arm64: Add Blaize BLZP1600 SoC family
  dt-bindings: arm: blaize: Add Blaize BLZP1600 SoC
  dt-bindings: Add Blaize vendor prefix
This commit is contained in:
Linus Torvalds 2025-01-24 14:31:06 -08:00
commit 4e517a6acd
22 changed files with 921 additions and 1 deletions

View File

@ -0,0 +1,40 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/blaize.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Blaize Platforms
maintainers:
- James Cowgill <james.cowgill@blaize.com>
- Matt Redfearn <matt.redfearn@blaize.com>
- Neil Jones <neil.jones@blaize.com>
- Nikolaos Pasaloukos <nikolaos.pasaloukos@blaize.com>
description: |
Blaize Platforms using SoCs designed by Blaize Inc.
The products based on the BLZP1600 SoC:
- BLZP1600-SoM: SoM (System on Module)
- BLZP1600-CB2: Development board CB2 based on BLZP1600-SoM
BLZP1600 SoC integrates a dual core ARM Cortex A53 cluster
and a Blaize Graph Streaming Processor for AI and ML workloads,
plus a suite of connectivity and other peripherals.
properties:
$nodename:
const: '/'
compatible:
oneOf:
- description: Blaize BLZP1600 based boards
items:
- enum:
- blaize,blzp1600-cb2
- const: blaize,blzp1600
additionalProperties: true
...

View File

@ -59,6 +59,7 @@ properties:
- enum: - enum:
- canaan,k210-plic - canaan,k210-plic
- sifive,fu540-c000-plic - sifive,fu540-c000-plic
- spacemit,k1-plic
- starfive,jh7100-plic - starfive,jh7100-plic
- starfive,jh7110-plic - starfive,jh7110-plic
- const: sifive,plic-1.0.0 - const: sifive,plic-1.0.0

View File

@ -46,6 +46,7 @@ properties:
- sifive,u7 - sifive,u7
- sifive,u74 - sifive,u74
- sifive,u74-mc - sifive,u74-mc
- spacemit,x60
- thead,c906 - thead,c906
- thead,c908 - thead,c908
- thead,c910 - thead,c910

View File

@ -0,0 +1,28 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/riscv/spacemit.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: SpacemiT SoC-based boards
maintainers:
- Yangyu Chen <cyy@cyyself.name>
- Yixun Lan <dlan@gentoo.org>
description:
SpacemiT SoC-based boards
properties:
$nodename:
const: '/'
compatible:
oneOf:
- items:
- enum:
- bananapi,bpi-f3
- const: spacemit,k1
additionalProperties: true
...

View File

@ -111,7 +111,9 @@ properties:
- mediatek,mt7623-btif - mediatek,mt7623-btif
- const: mediatek,mtk-btif - const: mediatek,mtk-btif
- items: - items:
- const: mrvl,mmp-uart - enum:
- mrvl,mmp-uart
- spacemit,k1-uart
- const: intel,xscale-uart - const: intel,xscale-uart
- items: - items:
- enum: - enum:

View File

@ -31,6 +31,7 @@ properties:
- enum: - enum:
- canaan,k210-clint # Canaan Kendryte K210 - canaan,k210-clint # Canaan Kendryte K210
- sifive,fu540-c000-clint # SiFive FU540 - sifive,fu540-c000-clint # SiFive FU540
- spacemit,k1-clint # SpacemiT K1
- starfive,jh7100-clint # StarFive JH7100 - starfive,jh7100-clint # StarFive JH7100
- starfive,jh7110-clint # StarFive JH7110 - starfive,jh7110-clint # StarFive JH7110
- starfive,jh8100-clint # StarFive JH8100 - starfive,jh8100-clint # StarFive JH8100

View File

@ -218,6 +218,8 @@ patternProperties:
description: Shenzhen BigTree Tech Co., LTD description: Shenzhen BigTree Tech Co., LTD
"^bitmain,.*": "^bitmain,.*":
description: Bitmain Technologies description: Bitmain Technologies
"^blaize,.*":
description: Blaize, Inc.
"^blutek,.*": "^blutek,.*":
description: BluTek Power description: BluTek Power
"^boe,.*": "^boe,.*":

View File

@ -2309,6 +2309,15 @@ F: arch/arm64/boot/dts/bitmain/
F: drivers/clk/clk-bm1880.c F: drivers/clk/clk-bm1880.c
F: drivers/pinctrl/pinctrl-bm1880.c F: drivers/pinctrl/pinctrl-bm1880.c
ARM/BLAIZE ARCHITECTURE
M: James Cowgill <james.cowgill@blaize.com>
M: Matt Redfearn <matt.redfearn@blaize.com>
M: Neil Jones <neil.jones@blaize.com>
M: Nikolaos Pasaloukos <nikolaos.pasaloukos@blaize.com>
S: Maintained
F: Documentation/devicetree/bindings/arm/blaize.yaml
F: arch/arm64/boot/dts/blaize/
ARM/CALXEDA HIGHBANK ARCHITECTURE ARM/CALXEDA HIGHBANK ARCHITECTURE
M: Andre Przywara <andre.przywara@arm.com> M: Andre Przywara <andre.przywara@arm.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@ -20274,6 +20283,15 @@ F: drivers/perf/riscv_pmu.c
F: drivers/perf/riscv_pmu_legacy.c F: drivers/perf/riscv_pmu_legacy.c
F: drivers/perf/riscv_pmu_sbi.c F: drivers/perf/riscv_pmu_sbi.c
RISC-V SPACEMIT SoC Support
M: Yixun Lan <dlan@gentoo.org>
L: linux-riscv@lists.infradead.org
S: Maintained
T: git https://github.com/spacemit-com/linux
F: arch/riscv/boot/dts/spacemit/
N: spacemit
K: spacemit
RISC-V THEAD SoC SUPPORT RISC-V THEAD SoC SUPPORT
M: Drew Fustini <drew@pdp7.com> M: Drew Fustini <drew@pdp7.com>
M: Guo Ren <guoren@kernel.org> M: Guo Ren <guoren@kernel.org>

View File

@ -101,6 +101,11 @@ config ARCH_BITMAIN
help help
This enables support for the Bitmain SoC Family. This enables support for the Bitmain SoC Family.
config ARCH_BLAIZE
bool "Blaize SoC Platforms"
help
This enables support for the Blaize SoC family
config ARCH_EXYNOS config ARCH_EXYNOS
bool "Samsung Exynos SoC family" bool "Samsung Exynos SoC family"
select COMMON_CLK_SAMSUNG select COMMON_CLK_SAMSUNG

View File

@ -10,6 +10,7 @@ subdir-y += apm
subdir-y += apple subdir-y += apple
subdir-y += arm subdir-y += arm
subdir-y += bitmain subdir-y += bitmain
subdir-y += blaize
subdir-y += broadcom subdir-y += broadcom
subdir-y += cavium subdir-y += cavium
subdir-y += exynos subdir-y += exynos

View File

@ -0,0 +1,2 @@
# SPDX-License-Identifier: GPL-2.0+
dtb-$(CONFIG_ARCH_BLAIZE) += blaize-blzp1600-cb2.dtb

View File

@ -0,0 +1,83 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (c) 2024 Blaize, Inc. All rights reserved.
*/
/dts-v1/;
#include "blaize-blzp1600-som.dtsi"
/ {
model = "Blaize BLZP1600 SoM1600P CB2 Development Board";
compatible = "blaize,blzp1600-cb2", "blaize,blzp1600";
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200";
};
};
&i2c0 {
clock-frequency = <100000>;
status = "okay";
};
&i2c1 {
clock-frequency = <100000>;
status = "okay";
};
&i2c3 {
clock-frequency = <100000>;
status = "okay";
gpio_expander: gpio@74 {
compatible = "ti,tca9539";
reg = <0x74>;
gpio-controller;
#gpio-cells = <2>;
gpio-line-names = "RSP_PIN_7", /* GPIO_0 */
"RSP_PIN_11", /* GPIO_1 */
"RSP_PIN_13", /* GPIO_2 */
"RSP_PIN_15", /* GPIO_3 */
"RSP_PIN_27", /* GPIO_4 */
"RSP_PIN_29", /* GPIO_5 */
"RSP_PIN_31", /* GPIO_6 */
"RSP_PIN_33", /* GPIO_7 */
"RSP_PIN_37", /* GPIO_8 */
"RSP_PIN_16", /* GPIO_9 */
"RSP_PIN_18", /* GPIO_10 */
"RSP_PIN_22", /* GPIO_11 */
"RSP_PIN_28", /* GPIO_12 */
"RSP_PIN_32", /* GPIO_13 */
"RSP_PIN_36", /* GPIO_14 */
"TP31"; /* GPIO_15 */
};
gpio_expander_m2: gpio@75 {
compatible = "ti,tca9539";
reg = <0x75>;
gpio-controller;
#gpio-cells = <2>;
gpio-line-names = "M2_W_DIS1_N", /* GPIO_0 */
"M2_W_DIS2_N", /* GPIO_1 */
"M2_UART_WAKE_N", /* GPIO_2 */
"M2_COEX3", /* GPIO_3 */
"M2_COEX_RXD", /* GPIO_4 */
"M2_COEX_TXD", /* GPIO_5 */
"M2_VENDOR_PIN40", /* GPIO_6 */
"M2_VENDOR_PIN42", /* GPIO_7 */
"M2_VENDOR_PIN38", /* GPIO_8 */
"M2_SDIO_RST_N", /* GPIO_9 */
"M2_SDIO_WAKE_N", /* GPIO_10 */
"M2_PETN1", /* GPIO_11 */
"M2_PERP1", /* GPIO_12 */
"M2_PERN1", /* GPIO_13 */
"UIM_SWP", /* GPIO_14 */
"UART1_TO_RSP"; /* GPIO_15 */
};
};

View File

@ -0,0 +1,23 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (c) 2024 Blaize, Inc. All rights reserved.
*/
#include "blaize-blzp1600.dtsi"
/ {
memory@0 {
device_type = "memory";
reg = <0x0 0x0 0x1 0x0>;
};
};
/* i2c4 bus is available only on the SoM, not on the board */
&i2c4 {
clock-frequency = <100000>;
status = "okay";
};
&uart0 {
status = "okay";
};

View File

@ -0,0 +1,205 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (c) 2024 Blaize, Inc. All rights reserved.
*/
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
/ {
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
cpus {
#address-cells = <2>;
#size-cells = <0>;
cpu0: cpu@0 {
compatible = "arm,cortex-a53";
reg = <0x0 0x0>;
device_type = "cpu";
enable-method = "psci";
next-level-cache = <&l2>;
};
cpu1: cpu@1 {
compatible = "arm,cortex-a53";
reg = <0x0 0x1>;
device_type = "cpu";
enable-method = "psci";
next-level-cache = <&l2>;
};
l2: l2-cache0 {
compatible = "cache";
cache-level = <2>;
cache-unified;
};
};
firmware {
scmi {
compatible = "arm,scmi-smc";
arm,smc-id = <0x82002000>;
#address-cells = <1>;
#size-cells = <0>;
shmem = <&scmi0_shm>;
scmi_clk: protocol@14 {
reg = <0x14>;
#clock-cells = <1>;
};
scmi_rst: protocol@16 {
reg = <0x16>;
#reset-cells = <1>;
};
};
};
pmu {
compatible = "arm,cortex-a53-pmu";
interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
interrupt-affinity = <&cpu0>, <&cpu1>;
};
psci {
compatible = "arm,psci-1.0", "arm,psci-0.2";
method = "smc";
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
/* SCMI reserved buffer space on DDR space */
scmi0_shm: scmi-shmem@800 {
compatible = "arm,scmi-shmem";
reg = <0x0 0x800 0x0 0x80>;
};
};
timer {
compatible = "arm,armv8-timer";
interrupts = /* Physical Secure PPI */
<GIC_PPI 13 (GIC_CPU_MASK_RAW(0x3) |
IRQ_TYPE_LEVEL_LOW)>,
/* Physical Non-Secure PPI */
<GIC_PPI 14 (GIC_CPU_MASK_RAW(0x3) |
IRQ_TYPE_LEVEL_LOW)>,
/* Hypervisor PPI */
<GIC_PPI 10 (GIC_CPU_MASK_RAW(0x3) |
IRQ_TYPE_LEVEL_LOW)>,
/* Virtual PPI */
<GIC_PPI 11 (GIC_CPU_MASK_RAW(0x3) |
IRQ_TYPE_LEVEL_LOW)>;
};
soc@200000000 {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x2 0x0 0x850000>;
gic: interrupt-controller@410000 {
compatible = "arm,gic-400";
reg = <0x410000 0x20000>,
<0x420000 0x20000>,
<0x440000 0x20000>,
<0x460000 0x20000>;
#interrupt-cells = <3>;
#address-cells = <0>;
interrupt-controller;
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_RAW(0x3) |
IRQ_TYPE_LEVEL_LOW)>;
};
uart0: serial@4d0000 {
compatible = "ns16550a";
reg = <0x4d0000 0x1000>;
clocks = <&scmi_clk 59>;
resets = <&scmi_rst 59>;
reg-shift = <2>;
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
uart1: serial@4e0000 {
compatible = "ns16550a";
reg = <0x4e0000 0x1000>;
clocks = <&scmi_clk 60>;
resets = <&scmi_rst 60>;
reg-shift = <2>;
interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
i2c0: i2c@4f0000 {
compatible = "snps,designware-i2c";
reg = <0x4f0000 0x1000>;
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&scmi_clk 54>;
resets = <&scmi_rst 54>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
i2c1: i2c@500000 {
compatible = "snps,designware-i2c";
reg = <0x500000 0x1000>;
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&scmi_clk 55>;
resets = <&scmi_rst 55>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
i2c2: i2c@510000 {
compatible = "snps,designware-i2c";
reg = <0x510000 0x1000>;
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&scmi_clk 56>;
resets = <&scmi_rst 56>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
i2c3: i2c@520000 {
compatible = "snps,designware-i2c";
reg = <0x520000 0x1000>;
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&scmi_clk 57>;
resets = <&scmi_rst 57>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
i2c4: i2c@530000 {
compatible = "snps,designware-i2c";
reg = <0x530000 0x1000>;
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&scmi_clk 58>;
resets = <&scmi_rst 58>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
arm_cc712: crypto@550000 {
compatible = "arm,cryptocell-712-ree";
reg = <0x550000 0x1000>;
interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&scmi_clk 7>;
};
};
};

View File

@ -44,6 +44,7 @@ CONFIG_ARCH_BCM_IPROC=y
CONFIG_ARCH_BCMBCA=y CONFIG_ARCH_BCMBCA=y
CONFIG_ARCH_BRCMSTB=y CONFIG_ARCH_BRCMSTB=y
CONFIG_ARCH_BERLIN=y CONFIG_ARCH_BERLIN=y
CONFIG_ARCH_BLAIZE=y
CONFIG_ARCH_EXYNOS=y CONFIG_ARCH_EXYNOS=y
CONFIG_ARCH_SPARX5=y CONFIG_ARCH_SPARX5=y
CONFIG_ARCH_K3=y CONFIG_ARCH_K3=y

View File

@ -24,6 +24,11 @@ config ARCH_SOPHGO
help help
This enables support for Sophgo SoC platform hardware. This enables support for Sophgo SoC platform hardware.
config ARCH_SPACEMIT
bool "SpacemiT SoCs"
help
This enables support for SpacemiT SoC platform hardware.
config ARCH_STARFIVE config ARCH_STARFIVE
def_bool SOC_STARFIVE def_bool SOC_STARFIVE

View File

@ -5,6 +5,7 @@ subdir-y += microchip
subdir-y += renesas subdir-y += renesas
subdir-y += sifive subdir-y += sifive
subdir-y += sophgo subdir-y += sophgo
subdir-y += spacemit
subdir-y += starfive subdir-y += starfive
subdir-y += thead subdir-y += thead

View File

@ -0,0 +1,2 @@
# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_SPACEMIT) += k1-bananapi-f3.dtb

View File

@ -0,0 +1,26 @@
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
* Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name>
*/
#include "k1.dtsi"
#include "k1-pinctrl.dtsi"
/ {
model = "Banana Pi BPI-F3";
compatible = "bananapi,bpi-f3", "spacemit,k1";
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0";
};
};
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_2_cfg>;
status = "okay";
};

View File

@ -0,0 +1,20 @@
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
* Copyright (c) 2024 Yixun Lan <dlan@gentoo.org>
*/
#include <dt-bindings/gpio/gpio.h>
#define K1_PADCONF(pin, func) (((pin) << 16) | (func))
&pinctrl {
uart0_2_cfg: uart0-2-cfg {
uart0-2-pins {
pinmux = <K1_PADCONF(68, 2)>,
<K1_PADCONF(69, 2)>;
bias-pull-up = <0>;
drive-strength = <32>;
};
};
};

View File

@ -0,0 +1,452 @@
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
* Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name>
*/
/dts-v1/;
/ {
#address-cells = <2>;
#size-cells = <2>;
model = "SpacemiT K1";
compatible = "spacemit,k1";
cpus {
#address-cells = <1>;
#size-cells = <0>;
timebase-frequency = <24000000>;
cpu-map {
cluster0 {
core0 {
cpu = <&cpu_0>;
};
core1 {
cpu = <&cpu_1>;
};
core2 {
cpu = <&cpu_2>;
};
core3 {
cpu = <&cpu_3>;
};
};
cluster1 {
core0 {
cpu = <&cpu_4>;
};
core1 {
cpu = <&cpu_5>;
};
core2 {
cpu = <&cpu_6>;
};
core3 {
cpu = <&cpu_7>;
};
};
};
cpu_0: cpu@0 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <0>;
riscv,isa = "rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "v", "zicbom",
"zicbop", "zicboz", "zicntr", "zicond", "zicsr",
"zifencei", "zihintpause", "zihpm", "zfh", "zba",
"zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt",
"sscofpmf", "sstc", "svinval", "svnapot", "svpbmt";
riscv,cbom-block-size = <64>;
riscv,cbop-block-size = <64>;
riscv,cboz-block-size = <64>;
i-cache-block-size = <64>;
i-cache-size = <32768>;
i-cache-sets = <128>;
d-cache-block-size = <64>;
d-cache-size = <32768>;
d-cache-sets = <128>;
next-level-cache = <&cluster0_l2_cache>;
mmu-type = "riscv,sv39";
cpu0_intc: interrupt-controller {
compatible = "riscv,cpu-intc";
interrupt-controller;
#interrupt-cells = <1>;
};
};
cpu_1: cpu@1 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <1>;
riscv,isa = "rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "v", "zicbom",
"zicbop", "zicboz", "zicntr", "zicond", "zicsr",
"zifencei", "zihintpause", "zihpm", "zfh", "zba",
"zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt",
"sscofpmf", "sstc", "svinval", "svnapot", "svpbmt";
riscv,cbom-block-size = <64>;
riscv,cbop-block-size = <64>;
riscv,cboz-block-size = <64>;
i-cache-block-size = <64>;
i-cache-size = <32768>;
i-cache-sets = <128>;
d-cache-block-size = <64>;
d-cache-size = <32768>;
d-cache-sets = <128>;
next-level-cache = <&cluster0_l2_cache>;
mmu-type = "riscv,sv39";
cpu1_intc: interrupt-controller {
compatible = "riscv,cpu-intc";
interrupt-controller;
#interrupt-cells = <1>;
};
};
cpu_2: cpu@2 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <2>;
riscv,isa = "rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "v", "zicbom",
"zicbop", "zicboz", "zicntr", "zicond", "zicsr",
"zifencei", "zihintpause", "zihpm", "zfh", "zba",
"zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt",
"sscofpmf", "sstc", "svinval", "svnapot", "svpbmt";
riscv,cbom-block-size = <64>;
riscv,cbop-block-size = <64>;
riscv,cboz-block-size = <64>;
i-cache-block-size = <64>;
i-cache-size = <32768>;
i-cache-sets = <128>;
d-cache-block-size = <64>;
d-cache-size = <32768>;
d-cache-sets = <128>;
next-level-cache = <&cluster0_l2_cache>;
mmu-type = "riscv,sv39";
cpu2_intc: interrupt-controller {
compatible = "riscv,cpu-intc";
interrupt-controller;
#interrupt-cells = <1>;
};
};
cpu_3: cpu@3 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <3>;
riscv,isa = "rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "v", "zicbom",
"zicbop", "zicboz", "zicntr", "zicond", "zicsr",
"zifencei", "zihintpause", "zihpm", "zfh", "zba",
"zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt",
"sscofpmf", "sstc", "svinval", "svnapot", "svpbmt";
riscv,cbom-block-size = <64>;
riscv,cbop-block-size = <64>;
riscv,cboz-block-size = <64>;
i-cache-block-size = <64>;
i-cache-size = <32768>;
i-cache-sets = <128>;
d-cache-block-size = <64>;
d-cache-size = <32768>;
d-cache-sets = <128>;
next-level-cache = <&cluster0_l2_cache>;
mmu-type = "riscv,sv39";
cpu3_intc: interrupt-controller {
compatible = "riscv,cpu-intc";
interrupt-controller;
#interrupt-cells = <1>;
};
};
cpu_4: cpu@4 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <4>;
riscv,isa = "rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "v", "zicbom",
"zicbop", "zicboz", "zicntr", "zicond", "zicsr",
"zifencei", "zihintpause", "zihpm", "zfh", "zba",
"zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt",
"sscofpmf", "sstc", "svinval", "svnapot", "svpbmt";
riscv,cbom-block-size = <64>;
riscv,cbop-block-size = <64>;
riscv,cboz-block-size = <64>;
i-cache-block-size = <64>;
i-cache-size = <32768>;
i-cache-sets = <128>;
d-cache-block-size = <64>;
d-cache-size = <32768>;
d-cache-sets = <128>;
next-level-cache = <&cluster1_l2_cache>;
mmu-type = "riscv,sv39";
cpu4_intc: interrupt-controller {
compatible = "riscv,cpu-intc";
interrupt-controller;
#interrupt-cells = <1>;
};
};
cpu_5: cpu@5 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <5>;
riscv,isa = "rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "v", "zicbom",
"zicbop", "zicboz", "zicntr", "zicond", "zicsr",
"zifencei", "zihintpause", "zihpm", "zfh", "zba",
"zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt",
"sscofpmf", "sstc", "svinval", "svnapot", "svpbmt";
riscv,cbom-block-size = <64>;
riscv,cbop-block-size = <64>;
riscv,cboz-block-size = <64>;
i-cache-block-size = <64>;
i-cache-size = <32768>;
i-cache-sets = <128>;
d-cache-block-size = <64>;
d-cache-size = <32768>;
d-cache-sets = <128>;
next-level-cache = <&cluster1_l2_cache>;
mmu-type = "riscv,sv39";
cpu5_intc: interrupt-controller {
compatible = "riscv,cpu-intc";
interrupt-controller;
#interrupt-cells = <1>;
};
};
cpu_6: cpu@6 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <6>;
riscv,isa = "rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "v", "zicbom",
"zicbop", "zicboz", "zicntr", "zicond", "zicsr",
"zifencei", "zihintpause", "zihpm", "zfh", "zba",
"zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt",
"sscofpmf", "sstc", "svinval", "svnapot", "svpbmt";
riscv,cbom-block-size = <64>;
riscv,cbop-block-size = <64>;
riscv,cboz-block-size = <64>;
i-cache-block-size = <64>;
i-cache-size = <32768>;
i-cache-sets = <128>;
d-cache-block-size = <64>;
d-cache-size = <32768>;
d-cache-sets = <128>;
next-level-cache = <&cluster1_l2_cache>;
mmu-type = "riscv,sv39";
cpu6_intc: interrupt-controller {
compatible = "riscv,cpu-intc";
interrupt-controller;
#interrupt-cells = <1>;
};
};
cpu_7: cpu@7 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <7>;
riscv,isa = "rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "v", "zicbom",
"zicbop", "zicboz", "zicntr", "zicond", "zicsr",
"zifencei", "zihintpause", "zihpm", "zfh", "zba",
"zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt",
"sscofpmf", "sstc", "svinval", "svnapot", "svpbmt";
riscv,cbom-block-size = <64>;
riscv,cbop-block-size = <64>;
riscv,cboz-block-size = <64>;
i-cache-block-size = <64>;
i-cache-size = <32768>;
i-cache-sets = <128>;
d-cache-block-size = <64>;
d-cache-size = <32768>;
d-cache-sets = <128>;
next-level-cache = <&cluster1_l2_cache>;
mmu-type = "riscv,sv39";
cpu7_intc: interrupt-controller {
compatible = "riscv,cpu-intc";
interrupt-controller;
#interrupt-cells = <1>;
};
};
cluster0_l2_cache: l2-cache0 {
compatible = "cache";
cache-block-size = <64>;
cache-level = <2>;
cache-size = <524288>;
cache-sets = <512>;
cache-unified;
};
cluster1_l2_cache: l2-cache1 {
compatible = "cache";
cache-block-size = <64>;
cache-level = <2>;
cache-size = <524288>;
cache-sets = <512>;
cache-unified;
};
};
soc {
compatible = "simple-bus";
interrupt-parent = <&plic>;
#address-cells = <2>;
#size-cells = <2>;
dma-noncoherent;
ranges;
uart0: serial@d4017000 {
compatible = "spacemit,k1-uart", "intel,xscale-uart";
reg = <0x0 0xd4017000 0x0 0x100>;
interrupts = <42>;
clock-frequency = <14857000>;
reg-shift = <2>;
reg-io-width = <4>;
status = "disabled";
};
uart2: serial@d4017100 {
compatible = "spacemit,k1-uart", "intel,xscale-uart";
reg = <0x0 0xd4017100 0x0 0x100>;
interrupts = <44>;
clock-frequency = <14857000>;
reg-shift = <2>;
reg-io-width = <4>;
status = "disabled";
};
uart3: serial@d4017200 {
compatible = "spacemit,k1-uart", "intel,xscale-uart";
reg = <0x0 0xd4017200 0x0 0x100>;
interrupts = <45>;
clock-frequency = <14857000>;
reg-shift = <2>;
reg-io-width = <4>;
status = "disabled";
};
uart4: serial@d4017300 {
compatible = "spacemit,k1-uart", "intel,xscale-uart";
reg = <0x0 0xd4017300 0x0 0x100>;
interrupts = <46>;
clock-frequency = <14857000>;
reg-shift = <2>;
reg-io-width = <4>;
status = "disabled";
};
uart5: serial@d4017400 {
compatible = "spacemit,k1-uart", "intel,xscale-uart";
reg = <0x0 0xd4017400 0x0 0x100>;
interrupts = <47>;
clock-frequency = <14857000>;
reg-shift = <2>;
reg-io-width = <4>;
status = "disabled";
};
uart6: serial@d4017500 {
compatible = "spacemit,k1-uart", "intel,xscale-uart";
reg = <0x0 0xd4017500 0x0 0x100>;
interrupts = <48>;
clock-frequency = <14857000>;
reg-shift = <2>;
reg-io-width = <4>;
status = "disabled";
};
uart7: serial@d4017600 {
compatible = "spacemit,k1-uart", "intel,xscale-uart";
reg = <0x0 0xd4017600 0x0 0x100>;
interrupts = <49>;
clock-frequency = <14857000>;
reg-shift = <2>;
reg-io-width = <4>;
status = "disabled";
};
uart8: serial@d4017700 {
compatible = "spacemit,k1-uart", "intel,xscale-uart";
reg = <0x0 0xd4017700 0x0 0x100>;
interrupts = <50>;
clock-frequency = <14857000>;
reg-shift = <2>;
reg-io-width = <4>;
status = "disabled";
};
uart9: serial@d4017800 {
compatible = "spacemit,k1-uart", "intel,xscale-uart";
reg = <0x0 0xd4017800 0x0 0x100>;
interrupts = <51>;
clock-frequency = <14857000>;
reg-shift = <2>;
reg-io-width = <4>;
status = "disabled";
};
pinctrl: pinctrl@d401e000 {
compatible = "spacemit,k1-pinctrl";
reg = <0x0 0xd401e000 0x0 0x400>;
};
plic: interrupt-controller@e0000000 {
compatible = "spacemit,k1-plic", "sifive,plic-1.0.0";
reg = <0x0 0xe0000000 0x0 0x4000000>;
interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>,
<&cpu1_intc 11>, <&cpu1_intc 9>,
<&cpu2_intc 11>, <&cpu2_intc 9>,
<&cpu3_intc 11>, <&cpu3_intc 9>,
<&cpu4_intc 11>, <&cpu4_intc 9>,
<&cpu5_intc 11>, <&cpu5_intc 9>,
<&cpu6_intc 11>, <&cpu6_intc 9>,
<&cpu7_intc 11>, <&cpu7_intc 9>;
interrupt-controller;
#address-cells = <0>;
#interrupt-cells = <1>;
riscv,ndev = <159>;
};
clint: timer@e4000000 {
compatible = "spacemit,k1-clint", "sifive,clint0";
reg = <0x0 0xe4000000 0x0 0x10000>;
interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
<&cpu1_intc 3>, <&cpu1_intc 7>,
<&cpu2_intc 3>, <&cpu2_intc 7>,
<&cpu3_intc 3>, <&cpu3_intc 7>,
<&cpu4_intc 3>, <&cpu4_intc 7>,
<&cpu5_intc 3>, <&cpu5_intc 7>,
<&cpu6_intc 3>, <&cpu6_intc 7>,
<&cpu7_intc 3>, <&cpu7_intc 7>;
};
sec_uart1: serial@f0612000 {
compatible = "spacemit,k1-uart", "intel,xscale-uart";
reg = <0x0 0xf0612000 0x0 0x100>;
interrupts = <43>;
clock-frequency = <14857000>;
reg-shift = <2>;
reg-io-width = <4>;
status = "reserved"; /* for TEE usage */
};
};
};

View File

@ -30,6 +30,7 @@ CONFIG_ARCH_MICROCHIP=y
CONFIG_ARCH_RENESAS=y CONFIG_ARCH_RENESAS=y
CONFIG_ARCH_SIFIVE=y CONFIG_ARCH_SIFIVE=y
CONFIG_ARCH_SOPHGO=y CONFIG_ARCH_SOPHGO=y
CONFIG_ARCH_SPACEMIT=y
CONFIG_SOC_STARFIVE=y CONFIG_SOC_STARFIVE=y
CONFIG_ARCH_SUNXI=y CONFIG_ARCH_SUNXI=y
CONFIG_ARCH_THEAD=y CONFIG_ARCH_THEAD=y