Skip to content
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ if(CONFIG_HAS_TELINK_DRIVERS)
# SOC configuration for Telink RISC-V series
string(REGEX REPLACE "^telink_" "" SOC_FAMILY ${CONFIG_SOC_SERIES})



if(CONFIG_SOC_RISCV_TELINK_B91 OR CONFIG_SOC_RISCV_TELINK_B92 OR
CONFIG_SOC_RISCV_TELINK_TL321X OR CONFIG_SOC_RISCV_TELINK_TL721X)
add_subdirectory(hal_v1)
elseif(CONFIG_SOC_RISCV_TELINK_TL322X OR CONFIG_SOC_RISCV_TELINK_TL323X)
elseif(CONFIG_SOC_RISCV_TELINK_TL322X OR CONFIG_SOC_RISCV_TELINK_TL323X OR CONFIG_SOC_RISCV_TELINK_TL523X)
add_subdirectory(hal_v2)
else()
message(FATAL_ERROR "Not supported SOC")
Expand Down
2 changes: 1 addition & 1 deletion Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ config HAL_TELINK_V1

config HAL_TELINK_V2
bool "Telink HAL V2"
depends on SOC_RISCV_TELINK_TL322X || SOC_RISCV_TELINK_TL323X
depends on SOC_RISCV_TELINK_TL322X || SOC_RISCV_TELINK_TL323X || SOC_RISCV_TELINK_TL523X
default y

if HAL_TELINK_V1
Expand Down
2 changes: 0 additions & 2 deletions hal_v1/tlsr9/crypto/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ if TELINK_B9X_MBEDTLS_HW_ACCELERATION || TELINK_B9X_TINYCRYPT_HW_ACCELERATION ||
choice
prompt "Telink crypto back-ends log level"
default TELINK_CRYPTO_BACKEND_LOG_LEVEL_INFO
help
This option selects log level for Telink crypto back-ends.
config TELINK_CRYPTO_BACKEND_LOG_LEVEL_CRIT
bool "Critical"
config TELINK_CRYPTO_BACKEND_LOG_LEVEL_WARN
Expand Down
6 changes: 5 additions & 1 deletion hal_v2/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# SOC configuration for Telink RISC-V series
string(REGEX REPLACE "^telink_" "" SOC_FAMILY ${CONFIG_SOC_SERIES})

elseif(CONFIG_SOC_RISCV_TELINK_TL321X)
if(CONFIG_SOC_RISCV_TELINK_TL321X)
set(SOC "TL321X")
set(LIB_SOC_NAME "tl321x")
message(STATUS "Configuring for SOC: TELINK_TL321X")
Expand All @@ -23,6 +23,10 @@ elseif(CONFIG_SOC_RISCV_TELINK_TL323X)
set(SOC "TL323X")
set(LIB_SOC_NAME "tl323x")
message(STATUS "Configuring for SOC: TELINK_TL323X")
elseif(CONFIG_SOC_RISCV_TELINK_TL523X)
set(SOC "TL523X")
set(LIB_SOC_NAME "tl523x")
message(STATUS "Configuring for SOC: TELINK_TL523X")
else()
message(FATAL_ERROR "Not supported SOC")
endif()
Expand Down
156 changes: 140 additions & 16 deletions hal_v2/fetch_sdk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,157 @@
#
# Downloading Telink BLE SDK.
#
# Usage: ./fetch_sdk.sh
# Usage: ./fetch_sdk.sh [repo_url] [target]
# Copyright (c) 2026 Telink Semiconductor
# SPDX-License-Identifier: Apache-2.0

SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)

REPO_URL="https://github.com/telink-semi/tl_ble_sdk.git"
TARGET_COMMIT="bf886feb6cb78dac40b4fc34c8cc1cec1316bf14"
# default values
DEFAULT_REPO_URL="https://github.com/telink-semi/tl_ble_sdk_zephyr.git"
DEFAULT_TARGET="b1ba6612464d56c8fac1382b1ada36d1e83532da"

# parse parameters
REPO_URL="${1:-$DEFAULT_REPO_URL}"
TARGET="${2:-$DEFAULT_TARGET}"
DEST_DIR="$SCRIPT_DIR/tl_ble_sdk"

echo "dest dir: $DEST_DIR"
# show help message
show_help() {
echo "Usage: $0 [repo_url] [target]"
echo ""
echo "Parameters:"
echo " repo_url - Git repository URL (default: $DEFAULT_REPO_URL)"
echo " target - Commit hash, branch name, or tag (default: $DEFAULT_TARGET)"
echo ""
echo "Examples:"
echo " $0 # Use default values"
echo " $0 https://github.com/xxx/sdk.git main # Clone main branch"
echo " $0 https://github.com/xxx/sdk.git v1.2.3 # Clone tag v1.2.3"
echo " $0 https://github.com/xxx/sdk.git abc123 # Clone specific commit"
echo ""
}

if [ ! -d "$DEST_DIR/.git" ]; then
echo "cloning repo..."
git clone $REPO_URL "$DEST_DIR"
else
echo "repo already exists, updating..."
# check parameters
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
show_help
exit 0
fi

cd "$DEST_DIR" || exit
echo "=========================================="
echo "Fetching Telink BLE SDK"
echo "=========================================="
echo "Repository: $REPO_URL"
echo "Target: $TARGET"
echo "Destination: $DEST_DIR"
echo "=========================================="

echo "fetching latest data and checking out Commit: $TARGET_COMMIT"
git fetch origin
git checkout $TARGET_COMMIT
# check if target repo exists
if [ -d "$DEST_DIR/.git" ]; then
echo "Repository already exists, updating..."
cd "$DEST_DIR" || exit 1

# acquire latest data
git fetch --all --tags --prune

# check if target commit exists in current remote
TARGET_EXISTS=false

if git rev-parse --quiet --verify "$TARGET^{commit}" >/dev/null 2>&1; then
TARGET_EXISTS=true
else
# Try to fetch from other remotes
echo "Target not found in current remote, trying to add alternative remote..."

# Check if we need to switch to different repository
CURRENT_REMOTE=$(git remote get-url origin 2>/dev/null)
if [ "$CURRENT_REMOTE" != "$REPO_URL" ]; then
echo "Current remote: $CURRENT_REMOTE"
echo "Target remote: $REPO_URL"
echo "Switching remote to target repository..."

# Add new remote
git remote add target_repo "$REPO_URL" 2>/dev/null || git remote set-url target_repo "$REPO_URL"

# Fetch from target remote
git fetch target_repo --tags --prune

# Check if target exists in target remote
if git rev-parse --quiet --verify "target_repo/$TARGET^{commit}" >/dev/null 2>&1; then
TARGET_EXISTS=true
# Create a local branch tracking the target remote
git checkout -b "target_$TARGET" "target_repo/$TARGET" 2>/dev/null || git checkout "$TARGET"
fi
fi
fi

CURRENT_COMMIT=$(git rev-parse HEAD)

# try to checkout target as commit, branch, or tag
if [ "$TARGET_EXISTS" = true ] || git rev-parse --quiet --verify "$TARGET^{commit}" >/dev/null 2>&1; then
# TARGET is valid commit hash
if [ "$CURRENT_COMMIT" = "$TARGET" ]; then
echo "Already at target commit: $TARGET"
exit 0
fi
git checkout "$TARGET"
elif git show-ref --quiet --verify "refs/heads/$TARGET"; then
# TARGET is local branch
echo "Switching to branch: $TARGET"
git checkout "$TARGET"
git pull origin "$TARGET"
elif git ls-remote --exit-code --heads origin "$TARGET" >/dev/null 2>&1; then
# TARGET is remote branch
echo "Switching to remote branch: $TARGET"
git checkout -B "$TARGET" "origin/$TARGET"
elif git ls-remote --exit-code --tags origin "$TARGET" >/dev/null 2>&1; then
# TARGET is tag
echo "Switching to tag: $TARGET"
git checkout "tags/$TARGET" -b "tag-$TARGET"
elif git ls-remote --exit-code --heads target_repo "$TARGET" >/dev/null 2>&1; then
# TARGET is branch in target remote
echo "Switching to branch from target remote: $TARGET"
git checkout -B "$TARGET" "target_repo/$TARGET"
elif git ls-remote --exit-code --tags target_repo "$TARGET" >/dev/null 2>&1; then
# TARGET is tag in target remote
echo "Switching to tag from target remote: $TARGET"
git checkout "tags/$TARGET" -b "tag-$TARGET"
else
echo "Error: Cannot find target '$TARGET'"
echo "Available commits in current repository:"
git log --oneline -10
exit 1
fi
else
echo "Cloning repository..."
git clone "$REPO_URL" "$DEST_DIR"
cd "$DEST_DIR" || exit 1

# switch to specific target
if git rev-parse --quiet --verify "$TARGET^{commit}" >/dev/null 2>&1; then
git checkout "$TARGET"
elif git ls-remote --exit-code origin "$TARGET" >/dev/null 2>&1; then
git checkout -B "$TARGET" "origin/$TARGET"
elif git ls-remote --exit-code --tags origin "$TARGET" >/dev/null 2>&1; then
git checkout "tags/$TARGET" -b "tag-$TARGET"
else
echo "Warning: Target '$TARGET' not found, using default branch"
fi
fi

CURRENT_COMMIT=$(git rev-parse HEAD)
echo "------------------------------------------"
# show final status
FINAL_COMMIT=$(git rev-parse HEAD)
FINAL_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "detached HEAD")

echo "=========================================="
echo "Sync complete!"
echo "Current directory: $(pwd)"
echo "Current Commit: $CURRENT_COMMIT"
echo "Current branch: $FINAL_BRANCH"
echo "Current commit: $FINAL_COMMIT"
echo "=========================================="

# show recent commits
echo "Recent commits:"
git log --oneline -3
echo "=========================================="

2 changes: 1 addition & 1 deletion hal_v2/fetch_src.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)

REPO_URL="http://192.168.48.36/src/ble/telink_b91m_ble_multi_connection_src.git"
TARGET_COMMIT="d8b779b1ed138c0579b548d3164cb255955e6f09"
TARGET_COMMIT="7ccf4bfd53099c67ac1dad4047e9144fb6ead41e"
DEST_DIR="$SCRIPT_DIR/tl_ble_src"

echo "dest dir: $DEST_DIR"
Expand Down
7 changes: 5 additions & 2 deletions hal_v2/wrapper/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ zephyr_library_sources(${ZIGBEE_SOURCES})

zephyr_compile_options(
-DCHIP_TYPE=CHIP_TYPE_TL322X
-DTLK_MESSAGE_D25F=1
-DTLK_MESSAGE_N22=0
# -DTLK_MESSAGE_D25F=1
# -DTLK_MESSAGE_N22=0
-DMAILBOX_D25F=1
-DMAILBOX_FALSH_WR_NOTIFY=1
-DSHM_MBOX_TYPE_TPSLL_EN=1
Expand Down Expand Up @@ -69,6 +69,9 @@ if(CONFIG_BT OR CONFIG_IEEE802154)
endif()

zephyr_library_sources(common/tl_flash.c)
if(CONFIG_SOC_RISCV_TELINK_TL323X)
zephyr_library_sources(common/tl_sd_adc.c)
endif()

if(CONFIG_PM)
zephyr_sources(common/tl_sleep.c)
Expand Down
8 changes: 6 additions & 2 deletions hal_v2/wrapper/common/tl_flash.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include "flash.h"
#include "flash_prot.h"

#ifndef CONFIG_SOC_RISCV_TELINK_TL523X
/*******************************************************************************************************************
* This function serves to 1m area flash protection
******************************************************************************************************************/
Expand All @@ -33,9 +34,11 @@

uint16_t flash_protection_lock_select(uint32_t addr)
{
unsigned int flash_lockBlock_cmd;
/* FLASH_LOCK_NONE_MID156085 or FLASH_LOCK_NONE_MID1560C8 is 0x0*/
unsigned int flash_lockBlock_cmd = 0x0;
unsigned int app_lockBlock = FLASH_LOCK_FW_LOW_1M;
unsigned int blc_flash_mid;

if(addr == FLASH_1M_ADR_OFFSET) {
app_lockBlock = FLASH_LOCK_FW_LOW_1M;
flash_lockBlock_cmd = flash_change_app_lock_block_to_flash_lock_block(app_lockBlock);
Expand Down Expand Up @@ -76,4 +79,5 @@ void flash_protection_unlock_operation(unsigned int offset)
if(offset < FLASH_ADR_OFFSET_SELECT){
flash_unlock();
}
}
}
#endif
Loading