Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions config/boards/kickpi-k3b.csc
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Rockchip RK3562 DDR3 eMMC GBE SWT6621S WLAN/BT
BOARD_NAME="KICKPI K3B"
BOARD_VENDOR="kickpi"
BOARDFAMILY="rk35xx"
BOARD_MAINTAINER="retro98boy"
INTRODUCED="2026"
BOOTCONFIG="kickpi-k3b-rk3562_defconfig"
KERNEL_TARGET="vendor"
KERNEL_TEST_TARGET="vendor"
FULL_DESKTOP="yes"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="rockchip/rk3562-kickpi-k3b.dtb"
BOOT_SCENARIO="spl-blobs"
BOOT_SOC="rk3562"
IMAGE_PARTITION_TABLE="gpt"
enable_extension "seekwave-swt6621s-dkms"
SWT6621S_TYPE="SDIO"
PACKAGE_LIST_BOARD="alsa-ucm-conf"

function post_family_config__kickpi-k3b() {
declare -g OVERLAY_PREFIX="rk3562-kickpi-k3b"
# Default DSI panel overlay.
declare -g DEFAULT_OVERLAYS="sq101p-x4ei451-84h501"
}

function post_family_tweaks_bsp__kickpi-k3b() {
display_alert "${BOARD}" "Installing ALSA UCM configuration files" "info"

install -Dm644 "${SRC}/packages/bsp/kickpi-k3b/kickpi-k3b-HiFi.conf" \
"${destination}/usr/share/alsa/ucm2/Rockchip/kickpi-k3b/kickpi-k3b-HiFi.conf"
install -Dm644 "${SRC}/packages/bsp/kickpi-k3b/kickpi-k3b.conf" \
"${destination}/usr/share/alsa/ucm2/Rockchip/kickpi-k3b/kickpi-k3b.conf"

mkdir -p "${destination}/usr/share/alsa/ucm2/conf.d/kickpi-k3b"
ln -sfv ../../Rockchip/kickpi-k3b/kickpi-k3b.conf \
"${destination}/usr/share/alsa/ucm2/conf.d/kickpi-k3b/kickpi-k3b.conf"
}

function post_family_tweaks__kickpi-k3b() {
echo -e "panel_simple\njadard_touch" > "${SDCARD}/etc/modules-load.d/panel.conf"
# The JD9366 touch driver must be probed after the display driver.
# Otherwise, I2C communication will fail.
echo "softdep jadard_touch pre: panel_simple" > "${SDCARD}/etc/modprobe.d/jadard_touch-dependencies.conf"
}
5 changes: 5 additions & 0 deletions config/kernel/linux-rk35xx-vendor.config
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,7 @@ CONFIG_STMMAC_ETH=y
CONFIG_BROADCOM_PHY=m
CONFIG_MOTORCOMM_PHY=y
CONFIG_REALTEK_PHY=y
CONFIG_MAXIO_PHY=y
CONFIG_ROCKCHIP_PHY=y
CONFIG_CAN_VCAN=m
CONFIG_CAN_GRCAN=m
Expand Down Expand Up @@ -1067,6 +1068,9 @@ CONFIG_TOUCHSCREEN_MTOUCH=m
CONFIG_TOUCHSCREEN_IMAGIS=m
CONFIG_TOUCHSCREEN_IMX6UL_TSC=m
CONFIG_TOUCHSCREEN_INEXIO=m
CONFIG_TOUCHSCREEN_JADARD_CHIPSET=m
CONFIG_TOUCHSCREEN_JADARD_MODULE=m
CONFIG_TOUCHSCREEN_JADARD_IC_JD9366T=m
CONFIG_TOUCHSCREEN_MK712=m
CONFIG_TOUCHSCREEN_PENMOUNT=m
CONFIG_TOUCHSCREEN_EDT_FT5X06=m
Expand Down Expand Up @@ -2398,6 +2402,7 @@ CONFIG_CPU_RK1808=y
CONFIG_CPU_RK3328=y
CONFIG_CPU_RK3399=y
CONFIG_CPU_RK3528=y
CONFIG_CPU_RK3562=y
CONFIG_CPU_RK3568=y
CONFIG_CPU_RK3576=y
CONFIG_CPU_RK3588=y
Expand Down
9 changes: 9 additions & 0 deletions config/sources/families/include/rockchip64_common.inc
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,15 @@ case "$BOOT_SOC" in
ROCKUSB_BLOB="rk35/rk3528_spl_loader_v1.07.104.bin"
;;

rk3562)
CPUMAX=${CPUMAX:="2000000"}
BOOT_SCENARIO="${BOOT_SCENARIO:=spl-blobs}"
DDR_BLOB="${DDR_BLOB:-"rk35/rk3562_ddr_1056MHz_v1.07.bin"}"
BL31_BLOB="${BL31_BLOB:-"rk35/rk3562_bl31_v1.21.elf"}"
BOOT_SOC_MKIMAGE="rk3562"
BOOTENV_FILE='rk35xx.txt'
;;

rk3566)
CPUMAX=${CPUMAX:="1800000"}
BOOT_SCENARIO="${BOOT_SCENARIO:=spl-blobs}"
Expand Down
94 changes: 94 additions & 0 deletions extensions/seekwave-swt6621s-dkms.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# SPDX-License-Identifier: GPL-2.0
#
# SeekWave SWT6621S DKMS driver
#
# For SWT6621S_TYPE=SDIO, this extension downloads a pinned commit from:
# retro98boy/seekwave-swt6621s.git
#
# For SWT6621S_TYPE=USB, it currently skips with an informational message.

# Branch: kickpi-k3b-sdio-uart, Commit date: Jul 16, 2026
readonly SEEKWAVE_SWT6621S_COMMIT="b1b15016119cb21965fc64dd374e42f46f011bb4"

function extension_finish_config__install_seekwave_swt6621s_dkms() {
if [[ "${SWT6621S_TYPE}" == "USB" ]]; then
display_alert "SWT6621S_TYPE=USB is not supported yet" "skipping seekwave-swt6621s dkms" "info"
return 0
fi

if [[ "${SWT6621S_TYPE}" != "SDIO" ]]; then
display_alert "Unknown SWT6621S_TYPE='${SWT6621S_TYPE}'" "skipping seekwave-swt6621s dkms" "warn"
return 0
fi

if [[ "${KERNEL_HAS_WORKING_HEADERS}" != "yes" ]]; then
display_alert "Kernel version has no working headers package" "skipping seekwave-swt6621s dkms for kernel v${KERNEL_MAJOR_MINOR}" "warn"
return 0
fi

declare -g INSTALL_HEADERS="yes"
display_alert "Forcing INSTALL_HEADERS=yes; for use with seekwave-swt6621s dkms" "${EXTENSION}" "debug"

local seekwave_cache_dir="${SRC}/cache/seekwave-swt6621s-dkms"
local seekwave_tarball_url="${GITHUB_SOURCE}/retro98boy/seekwave-swt6621s/archive/${SEEKWAVE_SWT6621S_COMMIT}.tar.gz"

display_alert "Downloading SeekWave SWT6621S SDIO source" "${seekwave_tarball_url}" "info"
run_host_command_logged mkdir -p "${seekwave_cache_dir}"
run_host_command_logged curl -fsSL --progress-bar "${seekwave_tarball_url}" -o "${seekwave_cache_dir}/source.tar.gz"
Comment thread
retro98boy marked this conversation as resolved.
}

function post_install_kernel_debs__install_seekwave_swt6621s_dkms_package() {
if [[ "${SWT6621S_TYPE}" == "USB" ]]; then
return 0
fi

if [[ "${SWT6621S_TYPE}" != "SDIO" ]]; then
return 0
fi

if [[ "${INSTALL_HEADERS}" != "yes" || "${KERNEL_HAS_WORKING_HEADERS}" != "yes" ]]; then
return 0
fi

display_alert "Installing SeekWave SWT6621S DKMS driver" "${EXTENSION}" "info"

use_clean_environment="yes" chroot_sdcard_apt_get_install "dkms"

local seekwave_cache_dir="${SRC}/cache/seekwave-swt6621s-dkms"
cp "${seekwave_cache_dir}/source.tar.gz" "${SDCARD}/tmp/seekwave-swt6621s.tar.gz"

use_clean_environment="yes" chroot_sdcard "mkdir -p /usr/src/seekwave-swt6621s-1.0.0"
use_clean_environment="yes" chroot_sdcard "tar -xzf /tmp/seekwave-swt6621s.tar.gz -C /tmp/"
use_clean_environment="yes" chroot_sdcard "cp -a /tmp/seekwave-swt6621s-${SEEKWAVE_SWT6621S_COMMIT}/. /usr/src/seekwave-swt6621s-1.0.0/"
use_clean_environment="yes" chroot_sdcard "rm -rf /tmp/seekwave-swt6621s.tar.gz /tmp/seekwave-swt6621s-${SEEKWAVE_SWT6621S_COMMIT}"

declare -ag if_error_find_files_sdcard=("/var/lib/dkms/seekwave-swt6621s*/*/build/*.log")
display_alert "Building SeekWave SWT6621S kernel modules via DKMS" "${EXTENSION}" "info"

if [[ -z "${IMAGE_INSTALLED_KERNEL_VERSION}" ]]; then
display_alert "Cannot determine target kernel version" "SeekWave SWT6621S DKMS build skipped" "warn"
return 0
fi
local target_kver="${IMAGE_INSTALLED_KERNEL_VERSION}-${BRANCH}-${LINUXFAMILY}"
display_alert "Target kernel version for DKMS" "${target_kver}" "debug"

use_clean_environment="yes" chroot_sdcard "dkms add -m seekwave-swt6621s -v 1.0.0"
use_clean_environment="yes" chroot_sdcard "dkms build -m seekwave-swt6621s -v 1.0.0 -k ${target_kver}"
use_clean_environment="yes" chroot_sdcard "dkms install -m seekwave-swt6621s -v 1.0.0 -k ${target_kver}"

cat > "${SDCARD}/etc/modules-load.d/swt6621s-sdio-uart.conf" <<- 'EOF'
skw_sdio_lite
swt6621s_wifi
skwbt
EOF

cat > "${SDCARD}/etc/modprobe.d/swt6621s-sdio-uart.conf" <<- 'EOF'
options skw_sdio_lite firmware_dir=seekwave
options swt6621s_wifi firmware_dir=seekwave
options skwbt firmware_dir=seekwave
softdep swt6621s_wifi pre: skw_sdio_lite
softdep skwbt pre: swt6621s_wifi
EOF

display_alert "SeekWave SWT6621S DKMS driver installed" "${EXTENSION}" "info"
}
42 changes: 42 additions & 0 deletions packages/bsp/kickpi-k3b/kickpi-k3b-HiFi.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
SectionVerb {
Value {
TQ "HiFi"
}
}

SectionDevice."Speaker" {
Comment "Speaker"

ConflictingDevice [
"Headphones"
]

Value {
PlaybackPriority 100
PlaybackPCM "hw:${CardId},0"
PlaybackMixerElem "DAC"
}

EnableSequence [
cset "name='Playback Path' 'SPK'"
]
}

SectionDevice."Headphones" {
Comment "Headphones"

ConflictingDevice [
"Speaker"
]

Value {
PlaybackPriority 200
PlaybackPCM "hw:${CardId},0"
PlaybackMixerElem "DAC"
JackControl "Headphone Jack"
}

EnableSequence [
cset "name='Playback Path' 'HP'"
]
}
13 changes: 13 additions & 0 deletions packages/bsp/kickpi-k3b/kickpi-k3b.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Syntax 4

Comment "KICKPI K3B Sound"

SectionUseCase."HiFi" {
File "/Rockchip/kickpi-k3b/kickpi-k3b-HiFi.conf"
Comment "Play HiFi quality music"
}

BootSequence [
cset "name='DAC Playback Volume' 252"
cset "name='Playback Path' 'HP'"
]
Loading
Loading