Skip to content

Commit 92eb6c5

Browse files
committed
wip
1 parent 20333bd commit 92eb6c5

11 files changed

Lines changed: 1033 additions & 0 deletions

File tree

arch/riscv/Kconfig.socs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,19 @@ config BOARD_ERIZO_GENERIC
1515
depends on SOC_ERIZO
1616
def_bool y
1717

18+
config SOC_SPACEMIT_K1
19+
bool "Spacemit K1 SoC"
20+
depends on ARCH_RV64I
21+
select HAS_DEBUG_LL
22+
select HAS_NMON
23+
select USE_COMPRESSED_DTB
24+
select RISCV_M_MODE
25+
select RISCV_TIMER
26+
27+
config BOARD_SPACEMIT_K1
28+
depends on SOC_SPACEMIT_K1
29+
def_bool y
30+
1831
config SOC_VIRT
1932
bool "QEMU Virt Machine"
2033
select RISCV_S_MODE

arch/riscv/boards/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ obj-$(CONFIG_BOARD_HIFIVE) += hifive/
55
obj-$(CONFIG_BOARD_BEAGLEV) += beaglev/
66
obj-$(CONFIG_BOARD_LITEX_LINUX) += litex-linux/
77
obj-$(CONFIG_BOARD_RISCVEMU) += riscvemu/
8+
obj-$(CONFIG_BOARD_SPACEMIT_K1) += spacemit_k1/
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# SPDX-License-Identifier: GPL-2.0
2+
3+
pbl-y += lowlevel.o
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// SPDX-License-Identifier: GPL-2.0-only
2+
3+
#include <common.h>
4+
#include <asm/barebox-riscv.h>
5+
#include <debug_ll.h>
6+
#include <asm/riscv_nmon.h>
7+
8+
ENTRY_FUNCTION(start_spacemit_k1, a0, a1, a2)
9+
{
10+
extern char __dtb_z_spacemit_k1_start[];
11+
void *fdt;
12+
13+
/* On POR, we are running from read-only memory here. */
14+
15+
fdt = __dtb_z_spacemit_k1_start + get_runtime_offset();
16+
17+
barebox_riscv_supervisor_entry(0x80000000, SZ_128M, a0, fdt);
18+
19+
}

arch/riscv/configs/rv64i_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ CONFIG_ARCH_RV64I=y
22
CONFIG_SOC_VIRT=y
33
CONFIG_SOC_SIFIVE=y
44
CONFIG_BOARD_HIFIVE=y
5+
CONFIG_BOARD_SPACEMIT_K1=y
56
CONFIG_SOC_STARFIVE=y
67
CONFIG_BOARD_BEAGLEV=y
78
CONFIG_BOARD_BEAGLEV_BETA=y

arch/riscv/dts/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ pbl-$(CONFIG_BOARD_HIFIVE) += hifive-unmatched-a00.dtb.o \
99
hifive-unleashed-a00.dtb.o
1010
pbl-$(CONFIG_BOARD_BEAGLEV) += jh7100-beaglev-starlight.dtb.o
1111
pbl-$(CONFIG_BOARD_LITEX_LINUX) += litex-linux.dtb.o
12+
pbl-$(CONFIG_BOARD_SPACEMIT_K1) += spacemit_k1.dtb.o
1213

1314
clean-files := *.dtb *.dtb.S .*.dtc .*.pre .*.dts *.dtb.z
1415
clean-files += *.dtbo *.dtbo.S .*.dtso

arch/riscv/dts/k1-pinctrl.dtsi

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
// SPDX-License-Identifier: GPL-2.0 OR MIT
2+
/*
3+
* Copyright (c) 2024 Yixun Lan <dlan@gentoo.org>
4+
*/
5+
6+
#include <dt-bindings/gpio/gpio.h>
7+
8+
#define K1_PADCONF(pin, func) (((pin) << 16) | (func))
9+
10+
/* Map GPIO pin to each bank's <index, offset> */
11+
#define K1_GPIO(x) (x / 32) (x % 32)
12+
13+
&pinctrl {
14+
gmac0_cfg: gmac0-cfg {
15+
gmac0-pins {
16+
pinmux = <K1_PADCONF(0, 1)>, /* gmac0_rxdv */
17+
<K1_PADCONF(1, 1)>, /* gmac0_rx_d0 */
18+
<K1_PADCONF(2, 1)>, /* gmac0_rx_d1 */
19+
<K1_PADCONF(3, 1)>, /* gmac0_rx_clk */
20+
<K1_PADCONF(4, 1)>, /* gmac0_rx_d2 */
21+
<K1_PADCONF(5, 1)>, /* gmac0_rx_d3 */
22+
<K1_PADCONF(6, 1)>, /* gmac0_tx_d0 */
23+
<K1_PADCONF(7, 1)>, /* gmac0_tx_d1 */
24+
<K1_PADCONF(8, 1)>, /* gmac0_tx */
25+
<K1_PADCONF(9, 1)>, /* gmac0_tx_d2 */
26+
<K1_PADCONF(10, 1)>, /* gmac0_tx_d3 */
27+
<K1_PADCONF(11, 1)>, /* gmac0_tx_en */
28+
<K1_PADCONF(12, 1)>, /* gmac0_mdc */
29+
<K1_PADCONF(13, 1)>, /* gmac0_mdio */
30+
<K1_PADCONF(14, 1)>, /* gmac0_int_n */
31+
<K1_PADCONF(45, 1)>; /* gmac0_clk_ref */
32+
33+
bias-pull-up = <0>;
34+
drive-strength = <21>;
35+
};
36+
};
37+
38+
gmac1_cfg: gmac1-cfg {
39+
gmac1-pins {
40+
pinmux = <K1_PADCONF(29, 1)>, /* gmac1_rxdv */
41+
<K1_PADCONF(30, 1)>, /* gmac1_rx_d0 */
42+
<K1_PADCONF(31, 1)>, /* gmac1_rx_d1 */
43+
<K1_PADCONF(32, 1)>, /* gmac1_rx_clk */
44+
<K1_PADCONF(33, 1)>, /* gmac1_rx_d2 */
45+
<K1_PADCONF(34, 1)>, /* gmac1_rx_d3 */
46+
<K1_PADCONF(35, 1)>, /* gmac1_tx_d0 */
47+
<K1_PADCONF(36, 1)>, /* gmac1_tx_d1 */
48+
<K1_PADCONF(37, 1)>, /* gmac1_tx */
49+
<K1_PADCONF(38, 1)>, /* gmac1_tx_d2 */
50+
<K1_PADCONF(39, 1)>, /* gmac1_tx_d3 */
51+
<K1_PADCONF(40, 1)>, /* gmac1_tx_en */
52+
<K1_PADCONF(41, 1)>, /* gmac1_mdc */
53+
<K1_PADCONF(42, 1)>, /* gmac1_mdio */
54+
<K1_PADCONF(43, 1)>, /* gmac1_int_n */
55+
<K1_PADCONF(46, 1)>; /* gmac1_clk_ref */
56+
57+
bias-pull-up = <0>;
58+
drive-strength = <21>;
59+
};
60+
};
61+
62+
uart0_2_cfg: uart0-2-cfg {
63+
uart0-2-pins {
64+
pinmux = <K1_PADCONF(68, 2)>,
65+
<K1_PADCONF(69, 2)>;
66+
67+
bias-pull-up = <0>;
68+
drive-strength = <32>;
69+
};
70+
};
71+
72+
pwm14_1_cfg: pwm14-1-cfg {
73+
pwm14-1-pins {
74+
pinmux = <K1_PADCONF(44, 4)>;
75+
bias-pull-up = <0>;
76+
drive-strength = <32>;
77+
};
78+
};
79+
};

0 commit comments

Comments
 (0)