* [PATCH v3 1/5] riscv: dts: spacemit: k3: move USB3 phy to board level
2026-08-31 4:44 [PATCH v3 0/5] Enable Bluetooth and WiFi on K3 Pico ITX Aurelien Jarno
@ 2026-08-31 4:44 ` Aurelien Jarno
2026-08-31 4:44 ` [PATCH v3 2/5] riscv: dts: spacemit: k3: add USB3 B and C controllers for Pico-ITX board Aurelien Jarno
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Aurelien Jarno @ 2026-08-31 4:44 UTC (permalink / raw)
To: linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti,
Yixun Lan, Inochi Amaoto
Cc: Aurelien Jarno,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:RISC-V SPACEMIT SoC Support,
open list:RISC-V SPACEMIT SoC Support
On the SpacemiT K3 SoC, the combo phy provides 8 lines that can
either be used for PCIe or USB3, depending on its configuration
(spacemit,apmu). This configuration is defined at the board level, and
assigning a phy line to a USB3 controller while it is configured as PCIe
results in an "Invalid PHY mode" error.
Move the USB phy definitions at the board level, as it is done for the
submitted PCIe controller [1].
[1] https://lore.kernel.org/20260727094726.890179-3-inochiama@gmail.com/
Fixes: 46380e4b1534 ("riscv: dts: spacemit: k3: add USB controller and USB phy support")
Cc: Inochi Amaoto <inochiama@gmail.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
arch/riscv/boot/dts/spacemit/k3-pico-itx.dts | 2 ++
arch/riscv/boot/dts/spacemit/k3.dtsi | 3 ---
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
index b084a35aa00e3..0a6f669d509a9 100644
--- a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
+++ b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
@@ -328,5 +328,7 @@ &usb3d_u2phy {
};
&usb3d {
+ phys = <&usb3d_u2phy>, <&combophy 4 PHY_TYPE_USB3>;
+ phy-names = "usb2-phy", "usb3-phy";
status = "okay";
};
diff --git a/arch/riscv/boot/dts/spacemit/k3.dtsi b/arch/riscv/boot/dts/spacemit/k3.dtsi
index c3f2dce0969c0..6f8d55eae6f6b 100644
--- a/arch/riscv/boot/dts/spacemit/k3.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k3.dtsi
@@ -452,9 +452,6 @@ usb3d: usb@81a00000 {
<&syscon_apmu RESET_APMU_USB3_D_VCC>,
<&syscon_apmu RESET_APMU_USB3_D_PHY>;
reset-names = "ahb", "vcc", "phy";
- phys = <&usb3d_u2phy>,
- <&combophy 4 PHY_TYPE_USB3>;
- phy-names = "usb2-phy", "usb3-phy";
phy_type = "utmi";
snps,dis_enblslpm_quirk;
snps,dis_u2_susphy_quirk;
--
2.53.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH v3 2/5] riscv: dts: spacemit: k3: add USB3 B and C controllers for Pico-ITX board
2026-08-31 4:44 [PATCH v3 0/5] Enable Bluetooth and WiFi on K3 Pico ITX Aurelien Jarno
2026-08-31 4:44 ` [PATCH v3 1/5] riscv: dts: spacemit: k3: move USB3 phy to board level Aurelien Jarno
@ 2026-08-31 4:44 ` Aurelien Jarno
2026-08-31 4:44 ` [PATCH v3 3/5] riscv: dts: spacemit: k3: add rfkill node for Bluetooth on " Aurelien Jarno
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Aurelien Jarno @ 2026-08-31 4:44 UTC (permalink / raw)
To: linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Yixun Lan, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti
Cc: Aurelien Jarno, Anirudh Srinivasan,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:RISC-V ARCHITECTURE,
open list:RISC-V SPACEMIT SoC Support
The SpacemiT K3 has 4 USB3 controllers labelled A to D.
On the K3 Pico-ITX board, the controllers B and C are used in USB2 mode
only respectively for the M.2 B-Key slot and for the RTL8852BE Bluetooth
controller.
Add the two controller nodes. On the K3 Pico-ITX board, enable the
controllers nodes and add the two corresponding USB2 PHY nodes.
Tested-by: Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
arch/riscv/boot/dts/spacemit/k3-pico-itx.dts | 22 +++++++
arch/riscv/boot/dts/spacemit/k3.dtsi | 60 ++++++++++++++++++++
2 files changed, 82 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
index 0a6f669d509a9..5aa6fa89cab58 100644
--- a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
+++ b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
@@ -323,6 +323,28 @@ &usb2_phy {
status = "okay";
};
+&usb3b {
+ phys = <&usb3b_u2phy>;
+ phy-names = "usb2-phy";
+ maximum-speed = "high-speed";
+ status = "okay";
+};
+
+&usb3b_u2phy {
+ status = "okay";
+};
+
+&usb3c {
+ phys = <&usb3c_u2phy>;
+ phy-names = "usb2-phy";
+ maximum-speed = "high-speed";
+ status = "okay";
+};
+
+&usb3c_u2phy {
+ status = "okay";
+};
+
&usb3d_u2phy {
status = "okay";
};
diff --git a/arch/riscv/boot/dts/spacemit/k3.dtsi b/arch/riscv/boot/dts/spacemit/k3.dtsi
index 6f8d55eae6f6b..55b00c0f429f7 100644
--- a/arch/riscv/boot/dts/spacemit/k3.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k3.dtsi
@@ -441,6 +441,66 @@ soc: soc {
dma-noncoherent;
ranges;
+ usb3b: usb@81400000 {
+ compatible = "spacemit,k3-dwc3";
+ reg = <0x0 0x81400000 0x0 0x10000>;
+ interrupts = <125 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-parent = <&saplic>;
+ clocks = <&syscon_apmu CLK_APMU_USB3_PORTB_BUS>;
+ clock-names = "usbdrd30";
+ resets = <&syscon_apmu RESET_APMU_USB3_B_AHB>,
+ <&syscon_apmu RESET_APMU_USB3_B_VCC>,
+ <&syscon_apmu RESET_APMU_USB3_B_PHY>;
+ reset-names = "ahb", "vcc", "phy";
+ phy_type = "utmi";
+ snps,dis_enblslpm_quirk;
+ snps,dis_u2_susphy_quirk;
+ snps,dis_u3_susphy_quirk;
+ snps,dis-del-phy-power-chg-quirk;
+ snps,dis-tx-ipgap-linecheck-quirk;
+ snps,parkmode-disable-ss-quirk;
+ dr_mode = "host";
+ status = "disabled";
+ };
+
+ usb3b_u2phy: phy@81500000 {
+ compatible = "spacemit,k3-usb2-phy";
+ reg = <0x0 0x81500000 0x0 0x200>;
+ clocks = <&syscon_apmu CLK_APMU_USB3_PORTB_BUS>;
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+
+ usb3c: usb@81700000 {
+ compatible = "spacemit,k3-dwc3";
+ reg = <0x0 0x81700000 0x0 0x10000>;
+ interrupts = <148 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-parent = <&saplic>;
+ clocks = <&syscon_apmu CLK_APMU_USB3_PORTC_BUS>;
+ clock-names = "usbdrd30";
+ resets = <&syscon_apmu RESET_APMU_USB3_C_AHB>,
+ <&syscon_apmu RESET_APMU_USB3_C_VCC>,
+ <&syscon_apmu RESET_APMU_USB3_C_PHY>;
+ reset-names = "ahb", "vcc", "phy";
+ phy_type = "utmi";
+ snps,dis_enblslpm_quirk;
+ snps,dis_u2_susphy_quirk;
+ snps,dis_u3_susphy_quirk;
+ snps,dis-del-phy-power-chg-quirk;
+ snps,dis-tx-ipgap-linecheck-quirk;
+ snps,parkmode-disable-ss-quirk;
+ dr_mode = "host";
+ status = "disabled";
+ };
+
+ usb3c_u2phy: phy@81800000 {
+ compatible = "spacemit,k3-usb2-phy";
+ reg = <0x0 0x81800000 0x0 0x200>;
+ clocks = <&syscon_apmu CLK_APMU_USB3_PORTC_BUS>;
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+
usb3d: usb@81a00000 {
compatible = "spacemit,k3-dwc3";
reg = <0x0 0x81a00000 0x0 0x10000>;
--
2.53.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH v3 3/5] riscv: dts: spacemit: k3: add rfkill node for Bluetooth on Pico-ITX board
2026-08-31 4:44 [PATCH v3 0/5] Enable Bluetooth and WiFi on K3 Pico ITX Aurelien Jarno
2026-08-31 4:44 ` [PATCH v3 1/5] riscv: dts: spacemit: k3: move USB3 phy to board level Aurelien Jarno
2026-08-31 4:44 ` [PATCH v3 2/5] riscv: dts: spacemit: k3: add USB3 B and C controllers for Pico-ITX board Aurelien Jarno
@ 2026-08-31 4:44 ` Aurelien Jarno
2026-08-31 4:44 ` [PATCH v3 4/5] riscv: dts: spacemit: k3: add rfkill node for WLAN on the K3 " Aurelien Jarno
2026-08-31 4:44 ` [PATCH v3 5/5] riscv64: defconfig: Enable BT and WLAN support for SpacemiT " Aurelien Jarno
4 siblings, 0 replies; 7+ messages in thread
From: Aurelien Jarno @ 2026-08-31 4:44 UTC (permalink / raw)
To: linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti,
Yixun Lan
Cc: Aurelien Jarno, Anirudh Srinivasan,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:RISC-V SPACEMIT SoC Support,
open list:RISC-V SPACEMIT SoC Support
On the K3 Pico-ITX board, by default the GPIO pin that connects to the
RTL8852BE Bluetooth enable signal is driven low, resulting in
impossibility to use Bluetooth. Add a DT node to expose it as an RFKILL
device, which lets the Bluetooth driver or userspace toggle it as
required.
Tested-by: Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
arch/riscv/boot/dts/spacemit/k3-pico-itx.dts | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
index 5aa6fa89cab58..d3f256dffb4fd 100644
--- a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
+++ b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
@@ -43,6 +43,13 @@ reg_aux_vcc5v: regulator-aux-vcc5v {
regulator-max-microvolt = <5000000>;
regulator-always-on;
};
+
+ rfkill-usb-bt {
+ compatible = "rfkill-gpio";
+ label = "rfkill-usb-bt";
+ radio-type = "bluetooth";
+ shutdown-gpios = <&gpio 0 30 GPIO_ACTIVE_HIGH>;
+ };
};
&i2c2 {
--
2.53.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH v3 4/5] riscv: dts: spacemit: k3: add rfkill node for WLAN on the K3 Pico-ITX board
2026-08-31 4:44 [PATCH v3 0/5] Enable Bluetooth and WiFi on K3 Pico ITX Aurelien Jarno
` (2 preceding siblings ...)
2026-08-31 4:44 ` [PATCH v3 3/5] riscv: dts: spacemit: k3: add rfkill node for Bluetooth on " Aurelien Jarno
@ 2026-08-31 4:44 ` Aurelien Jarno
2026-08-31 4:44 ` [PATCH v3 5/5] riscv64: defconfig: Enable BT and WLAN support for SpacemiT " Aurelien Jarno
4 siblings, 0 replies; 7+ messages in thread
From: Aurelien Jarno @ 2026-08-31 4:44 UTC (permalink / raw)
To: linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Yixun Lan, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti
Cc: Aurelien Jarno, Anirudh Srinivasan,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:RISC-V SPACEMIT SoC Support,
open list:RISC-V SPACEMIT SoC Support
On the K3 Pico-ITX board, by default the GPIO pin that connects to the
RTL8852BE WLAN enable signal is driven low, resulting in impossibility
to connect to any network. Add a DT node to expose it as an RFKILL
device, which lets the WLAN driver or userspace toggle it as required.
Tested-by: Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
arch/riscv/boot/dts/spacemit/k3-pico-itx.dts | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
index d3f256dffb4fd..dda420900aa2c 100644
--- a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
+++ b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
@@ -44,6 +44,13 @@ reg_aux_vcc5v: regulator-aux-vcc5v {
regulator-always-on;
};
+ rfkill-pcie-wlan {
+ compatible = "rfkill-gpio";
+ label = "rfkill-pcie-wlan";
+ radio-type = "wlan";
+ shutdown-gpios = <&gpio 1 3 GPIO_ACTIVE_HIGH>;
+ };
+
rfkill-usb-bt {
compatible = "rfkill-gpio";
label = "rfkill-usb-bt";
--
2.53.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH v3 5/5] riscv64: defconfig: Enable BT and WLAN support for SpacemiT K3 Pico-ITX board
2026-08-31 4:44 [PATCH v3 0/5] Enable Bluetooth and WiFi on K3 Pico ITX Aurelien Jarno
` (3 preceding siblings ...)
2026-08-31 4:44 ` [PATCH v3 4/5] riscv: dts: spacemit: k3: add rfkill node for WLAN on the K3 " Aurelien Jarno
@ 2026-08-31 4:44 ` Aurelien Jarno
4 siblings, 0 replies; 7+ messages in thread
From: Aurelien Jarno @ 2026-08-31 4:44 UTC (permalink / raw)
To: linux-kernel, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti
Cc: Aurelien Jarno, open list:RISC-V ARCHITECTURE
The SpacemiT K3 Pico-ITX board has a RTL8852BE Bluetooth and WLAN
controller connected through PCIe and USB. For the WLAN part, enable
CFG80211, MAC80211, RTW89 and RTW89_8852BE as modules. For the
Bluetooth, enable CONFIG_BT and CONFIG_BT_HCIBTUSB as modules.
Both also require RFKILL and RFKILL_GPIO.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
arch/riscv/configs/defconfig | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig
index 04ae305d5511b..1bc79ba2ee649 100644
--- a/arch/riscv/configs/defconfig
+++ b/arch/riscv/configs/defconfig
@@ -100,6 +100,12 @@ CONFIG_NET_CLS_CGROUP=m
CONFIG_NETLINK_DIAG=y
CONFIG_CGROUP_NET_PRIO=y
CONFIG_CAN=m
+CONFIG_BT=m
+CONFIG_BT_HCIBTUSB=m
+CONFIG_CFG80211=m
+CONFIG_MAC80211=m
+CONFIG_RFKILL=m
+CONFIG_RFKILL_GPIO=m
CONFIG_NET_9P=y
CONFIG_NET_9P_VIRTIO=y
CONFIG_PCI=y
@@ -143,6 +149,8 @@ CONFIG_DWMAC_THEAD=m
CONFIG_MICREL_PHY=y
CONFIG_MICROSEMI_PHY=y
CONFIG_MOTORCOMM_PHY=y
+CONFIG_RTW89=m
+CONFIG_RTW89_8852BE=m
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_EVDEV=y
CONFIG_KEYBOARD_GPIO=y
--
2.53.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 7+ messages in thread