Skip to content

Commit 5256baa

Browse files
soc: telink: telink_w9x: Get rid of DLM section
- Introduced auxiliary RAM (zephyr,aux_ram) - Moved all blocking core to ILM Signed-off-by: Andrii Bilynskyi <andrii.bilynskyi@telink-semi.com>
1 parent eff83ae commit 5256baa

File tree

8 files changed

+59
-32
lines changed

8 files changed

+59
-32
lines changed

boards/telink/tlsr9118bdk40d/tlsr9118bdk40d-common.dtsi

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
};
5959

6060
chosen {
61-
/* Note: use RAM_DLM for ".ram_dlm" when a shared SRAM will be used for "zephyr,sram" */
61+
/* zephyr,aux_ram = &sram; */
6262
zephyr,sram = &ram_dlm;
6363
zephyr,flash = &flash;
6464
zephyr,flash-controller = &flash_mspi;

soc/telink/tlsr/telink_w9x/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ zephyr_ld_options(-fuse-ld=bfd)
5858
zephyr_compile_options_ifdef(CONFIG_TELINK_W91_HWDSP -mext-dsp)
5959
zephyr_compile_options_ifndef(CONFIG_RISCV_GP -mno-relax)
6060
zephyr_linker_sources(ROM_START SORT_KEY 0x0 init.ld)
61-
zephyr_linker_sources(RAM_SECTIONS SORT_KEY 0x0 dlm.ld)
61+
zephyr_linker_sources(RAM_SECTIONS SORT_KEY 0x0 ram_aux.ld)
6262
zephyr_linker_sources(RAM_SECTIONS SORT_KEY 0x1 ilm.ld)
6363
set(SOC_LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld CACHE INTERNAL "")
6464

soc/telink/tlsr/telink_w9x/blocking_core/blocking.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ enum {
2828
BLOCKING_CORE_ACTIVE_REQ_STATE,
2929
};
3030

31-
static atomic_t __GENERIC_SECTION(.ram_dlm) blocking_state = BLOCKING_INVALID_STATE;
31+
static atomic_t __GENERIC_SECTION(.ram_code_data) blocking_state = BLOCKING_INVALID_STATE;
3232
static struct ipc_based_driver ipc_data; /* ipc driver data part */
3333

3434
/* API implementation: get Machine Timer value */

soc/telink/tlsr/telink_w9x/dlm.ld

-19
This file was deleted.

soc/telink/tlsr/telink_w9x/ilm.ld

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ SECTION_DATA_PROLOGUE(ram_code,,)
1111
. = ALIGN(4);
1212
*(.ram_code)
1313
*(".ram_code.*")
14+
*(.ram_code_data)
15+
*(".ram_code_data.*")
1416

1517
PROVIDE (_RAM_CODE_VMA_END = .);
1618
PROVIDE (_RAM_CODE_VMA_START = ADDR(ram_code));

soc/telink/tlsr/telink_w9x/linker.ld

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
MEMORY
1515
{
1616
RAM_ILM (rwx) : ORIGIN = DT_REG_ADDR(DT_NODELABEL(ram_ilm)), LENGTH = DT_REG_SIZE(DT_NODELABEL(ram_ilm))
17-
18-
# Note: use RAM_DLM for ".ram_dlm" when a shared SRAM will be used for "zephyr,sram"
19-
# RAM_DLM (rwx) : ORIGIN = DT_REG_ADDR(DT_NODELABEL(ram_dlm)), LENGTH = DT_REG_SIZE(DT_NODELABEL(ram_dlm))
17+
#if DT_HAS_CHOSEN(zephyr_aux_ram)
18+
RAM_AUX (rwx) : ORIGIN = DT_REG_ADDR(DT_CHOSEN(zephyr_aux_ram)), LENGTH = DT_REG_SIZE(DT_CHOSEN(zephyr_aux_ram))
19+
#endif /* DT_HAS_CHOSEN(zephyr_aux_ram) */
2020
}
2121

2222
#include <zephyr/arch/riscv/common/linker.ld>

soc/telink/tlsr/telink_w9x/ram_aux.ld

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Copyright (c) 2024 Telink Semiconductor
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#if DT_HAS_CHOSEN(zephyr_aux_ram)
8+
9+
SECTION_DATA_PROLOGUE(data_aux,,)
10+
{
11+
. = ALIGN(4);
12+
*(.data_aux)
13+
*(".data_aux.*")
14+
15+
PROVIDE (_DATA_AUX_VMA_END = .);
16+
PROVIDE (_DATA_AUX_VMA_START = ADDR(data_aux));
17+
PROVIDE (_DATA_AUX_LMA_START = LOADADDR(data_aux));
18+
} GROUP_DATA_LINK_IN(RAM_AUX, ROMABLE_REGION)
19+
20+
SECTION_DATA_PROLOGUE(bss_aux,(NOLOAD),)
21+
{
22+
. = ALIGN(4);
23+
*(.bss_aux)
24+
*(".bss_aux.*")
25+
26+
PROVIDE (_BSS_AUX_VMA_END = .);
27+
PROVIDE (_BSS_AUX_VMA_START = ADDR(bss_aux));
28+
} GROUP_DATA_LINK_IN(RAM_AUX, RAM_AUX)
29+
30+
#endif /* DT_HAS_CHOSEN(zephyr_aux_ram) */

soc/telink/tlsr/telink_w9x/start.S

+21-7
Original file line numberDiff line numberDiff line change
@@ -99,17 +99,31 @@ _start_n22:
9999
li t0, (1 << 6)
100100
csrs NDS_MMISC_CTL, t0 #/ Enable Misaligned access
101101

102-
_RAM_DLM_INIT:
103-
la t1, _RAM_DLM_LMA_START
104-
la t2, _RAM_DLM_VMA_START
105-
la t3, _RAM_DLM_VMA_END
106-
_RAM_DLM_INIT_BEGIN:
107-
bleu t3, t2, _RAM_CODE_INIT
102+
#if DT_HAS_CHOSEN(zephyr_aux_ram)
103+
104+
_DATA_AUX_INIT:
105+
la t1, _DATA_AUX_LMA_START
106+
la t2, _DATA_AUX_VMA_START
107+
la t3, _DATA_AUX_VMA_END
108+
_DATA_AUX_INIT_BEGIN:
109+
bleu t3, t2, _BSS_AUX_INIT
108110
lw t0, 0(t1)
109111
sw t0, 0(t2)
110112
addi t1, t1, 4
111113
addi t2, t2, 4
112-
j _RAM_DLM_INIT_BEGIN
114+
j _DATA_AUX_INIT_BEGIN
115+
116+
_BSS_AUX_INIT:
117+
lui t0, 0
118+
la t2, _BSS_AUX_VMA_START
119+
la t3, _BSS_AUX_VMA_END
120+
_BSS_AUX_INIT_BEGIN:
121+
bleu t3, t2, _RAM_CODE_INIT
122+
sw t0, 0(t2)
123+
addi t2, t2, 4
124+
j _BSS_AUX_INIT_BEGIN
125+
126+
#endif /* DT_HAS_CHOSEN(zephyr_aux_ram) */
113127

114128
_RAM_CODE_INIT:
115129
la t1, _RAM_CODE_LMA_START

0 commit comments

Comments
 (0)