* [PATCH v2 1/4] riscv: defconfig: enable RFKILL and RFKILL_GPIO
2026-07-29 17:20 [PATCH v2 0/4] Enable Bluetooth and WiFi rfkill on K3 Pico ITX Aurelien Jarno
@ 2026-07-29 17:20 ` Aurelien Jarno
2026-07-29 17:30 ` Anirudh Srinivasan
2026-07-29 17:20 ` [PATCH v2 2/4] riscv: dts: spacemit: k3: add rfkill node for Bluetooth on Pico-ITX board Aurelien Jarno
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Aurelien Jarno @ 2026-07-29 17:20 UTC (permalink / raw)
To: linux-kernel, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti
Cc: Aurelien Jarno, Anirudh Srinivasan, open list:RISC-V ARCHITECTURE
The SpacemiT K3 Pico-ITX requires RFKILL_GPIO to enable bluetooth and
wlan.
Tested-by: Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
arch/riscv/configs/defconfig | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig
index 74ba5acc12a40..8668aa31e79aa 100644
--- a/arch/riscv/configs/defconfig
+++ b/arch/riscv/configs/defconfig
@@ -99,6 +99,8 @@ CONFIG_NET_CLS_CGROUP=m
CONFIG_NETLINK_DIAG=y
CONFIG_CGROUP_NET_PRIO=y
CONFIG_CAN=m
+CONFIG_RFKILL=m
+CONFIG_RFKILL_GPIO=m
CONFIG_NET_9P=y
CONFIG_NET_9P_VIRTIO=y
CONFIG_PCI=y
--
2.53.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v2 1/4] riscv: defconfig: enable RFKILL and RFKILL_GPIO
2026-07-29 17:20 ` [PATCH v2 1/4] riscv: defconfig: enable RFKILL and RFKILL_GPIO Aurelien Jarno
@ 2026-07-29 17:30 ` Anirudh Srinivasan
2026-07-30 10:29 ` Aurelien Jarno
0 siblings, 1 reply; 8+ messages in thread
From: Anirudh Srinivasan @ 2026-07-29 17:30 UTC (permalink / raw)
To: Aurelien Jarno
Cc: linux-kernel, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti, open list:RISC-V ARCHITECTURE
Hi Aurelien,
On Wed, Jul 29, 2026 at 12:24 PM Aurelien Jarno <aurelien@aurel32.net> wrote:
>
> The SpacemiT K3 Pico-ITX requires RFKILL_GPIO to enable bluetooth and
> wlan.
>
> Tested-by: Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>
> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
> ---
> arch/riscv/configs/defconfig | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig
> index 74ba5acc12a40..8668aa31e79aa 100644
> --- a/arch/riscv/configs/defconfig
> +++ b/arch/riscv/configs/defconfig
> @@ -99,6 +99,8 @@ CONFIG_NET_CLS_CGROUP=m
> CONFIG_NETLINK_DIAG=y
> CONFIG_CGROUP_NET_PRIO=y
> CONFIG_CAN=m
> +CONFIG_RFKILL=m
> +CONFIG_RFKILL_GPIO=m
> CONFIG_NET_9P=y
> CONFIG_NET_9P_VIRTIO=y
> CONFIG_PCI=y
The riscv defconfig doesn't have CONFIG_RTW89=m and
CONFIG_RTW89_8852BE in it. Do we need to add it?
I was testing with a distro defconfig, so didn't need to add it
manually. I should have realized this sooner.
> --
> 2.53.0
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/4] riscv: defconfig: enable RFKILL and RFKILL_GPIO
2026-07-29 17:30 ` Anirudh Srinivasan
@ 2026-07-30 10:29 ` Aurelien Jarno
0 siblings, 0 replies; 8+ messages in thread
From: Aurelien Jarno @ 2026-07-30 10:29 UTC (permalink / raw)
To: Anirudh Srinivasan, Paul Walmsley
Cc: linux-kernel, Palmer Dabbelt, Albert Ou, Alexandre Ghiti,
open list:RISC-V ARCHITECTURE
Hi, Anirudh,
On 2026-07-29 12:30, Anirudh Srinivasan wrote:
> Hi Aurelien,
>
> On Wed, Jul 29, 2026 at 12:24 PM Aurelien Jarno <aurelien@aurel32.net> wrote:
> >
> > The SpacemiT K3 Pico-ITX requires RFKILL_GPIO to enable bluetooth and
> > wlan.
> >
> > Tested-by: Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>
> > Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
> > ---
> > arch/riscv/configs/defconfig | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig
> > index 74ba5acc12a40..8668aa31e79aa 100644
> > --- a/arch/riscv/configs/defconfig
> > +++ b/arch/riscv/configs/defconfig
> > @@ -99,6 +99,8 @@ CONFIG_NET_CLS_CGROUP=m
> > CONFIG_NETLINK_DIAG=y
> > CONFIG_CGROUP_NET_PRIO=y
> > CONFIG_CAN=m
> > +CONFIG_RFKILL=m
> > +CONFIG_RFKILL_GPIO=m
> > CONFIG_NET_9P=y
> > CONFIG_NET_9P_VIRTIO=y
> > CONFIG_PCI=y
>
> The riscv defconfig doesn't have CONFIG_RTW89=m and
> CONFIG_RTW89_8852BE in it. Do we need to add it?
That's a good point, not sure to which level we need to enable all
modules of supported hardware. I added RFKILL and RFKILL_GPIO as it was
not obvious to me that those need to be enabled to get proper WiFi
support. Also those are tiny drivers compared to the RTW89 driver.
OTOH, I see that this driver is enabled for the loongarch architecture,
so maybe we can do the same for riscv..
Paul, any idea about that, any policy?
> I was testing with a distro defconfig, so didn't need to add it
> manually. I should have realized this sooner.
Yes same, so I also didn't notice.
Regards
Aurelien
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien@aurel32.net http://aurel32.net
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/4] riscv: dts: spacemit: k3: add rfkill node for Bluetooth on Pico-ITX board
2026-07-29 17:20 [PATCH v2 0/4] Enable Bluetooth and WiFi rfkill on K3 Pico ITX Aurelien Jarno
2026-07-29 17:20 ` [PATCH v2 1/4] riscv: defconfig: enable RFKILL and RFKILL_GPIO Aurelien Jarno
@ 2026-07-29 17:20 ` Aurelien Jarno
2026-07-29 17:20 ` [PATCH v2 3/4] riscv: dts: spacemit: k3: add USB3 B and C controllers for " Aurelien Jarno
2026-07-29 17:20 ` [PATCH v2 4/4] riscv: dts: spacemit: k3: add rfkill node for WLAN Aurelien Jarno
3 siblings, 0 replies; 8+ messages in thread
From: Aurelien Jarno @ 2026-07-29 17:20 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 ARCHITECTURE,
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 b084a35aa00e3..6a60fae1f8b50 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
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v2 3/4] riscv: dts: spacemit: k3: add USB3 B and C controllers for Pico-ITX board
2026-07-29 17:20 [PATCH v2 0/4] Enable Bluetooth and WiFi rfkill on K3 Pico ITX Aurelien Jarno
2026-07-29 17:20 ` [PATCH v2 1/4] riscv: defconfig: enable RFKILL and RFKILL_GPIO Aurelien Jarno
2026-07-29 17:20 ` [PATCH v2 2/4] riscv: dts: spacemit: k3: add rfkill node for Bluetooth on Pico-ITX board Aurelien Jarno
@ 2026-07-29 17:20 ` Aurelien Jarno
[not found] ` <20260729173332.51D661F000E9@smtp.kernel.org>
2026-07-29 17:20 ` [PATCH v2 4/4] riscv: dts: spacemit: k3: add rfkill node for WLAN Aurelien Jarno
3 siblings, 1 reply; 8+ messages in thread
From: Aurelien Jarno @ 2026-07-29 17:20 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 USB 2 mode
only respectively for the M.2 B-Key slot and for the RTL8852BE Bluetooth
controller.
Add the two controller nodes, the two corresponding USB2 PHY nodes and
the two corresponding USB3 PHY nodes, and enable them on the K3 Pico-ITX
board.
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 | 18 ++++++
arch/riscv/boot/dts/spacemit/k3.dtsi | 66 ++++++++++++++++++++
2 files changed, 84 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
index 6a60fae1f8b50..37d3422af32ac 100644
--- a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
+++ b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
@@ -330,6 +330,24 @@ &usb2_phy {
status = "okay";
};
+&usb3b {
+ maximum-speed = "high-speed";
+ status = "okay";
+};
+
+&usb3b_u2phy {
+ status = "okay";
+};
+
+&usb3c {
+ 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 0eb24fac4733e..b786f119d4f95 100644
--- a/arch/riscv/boot/dts/spacemit/k3.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k3.dtsi
@@ -441,6 +441,72 @@ 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";
+ phys = <&usb3b_u2phy>,
+ <&combophy 2 PHY_TYPE_USB3>;
+ phy-names = "usb2-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";
+ phys = <&usb3c_u2phy>,
+ <&combophy 3 PHY_TYPE_USB3>;
+ phy-names = "usb2-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
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v2 4/4] riscv: dts: spacemit: k3: add rfkill node for WLAN
2026-07-29 17:20 [PATCH v2 0/4] Enable Bluetooth and WiFi rfkill on K3 Pico ITX Aurelien Jarno
` (2 preceding siblings ...)
2026-07-29 17:20 ` [PATCH v2 3/4] riscv: dts: spacemit: k3: add USB3 B and C controllers for " Aurelien Jarno
@ 2026-07-29 17:20 ` Aurelien Jarno
3 siblings, 0 replies; 8+ messages in thread
From: Aurelien Jarno @ 2026-07-29 17:20 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
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
WiFi 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 37d3422af32ac..d1e53cfbc9030 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
^ permalink raw reply related [flat|nested] 8+ messages in thread