* [PATCH] Enable wifi on the BeagleV-Ahead
@ 2026-05-11 14:11 Thomas Gerner
2026-05-12 17:33 ` Thomas Gerner
0 siblings, 1 reply; 7+ messages in thread
From: Thomas Gerner @ 2026-05-11 14:11 UTC (permalink / raw)
To: Drew Fustini, Guo Ren, Fu Wei, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti, linux-riscv, devicetree, linux-kernel
Cc: Thomas Gerner
The BeagleV-Ahead board uses an AP6203BM WiFi chip from AMPAK Technology
Inc. connected to SDIO1. The chip is compatible to the broadcom wireless
driver.
Enable wifi on the BeagleV-Ahead.
Signed-off-by: Thomas Gerner <thomas.gerner@muenchen-mail.de>
---
.../boot/dts/thead/th1520-beaglev-ahead.dts | 50 +++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
index 91f3f9b987bc..5e0dc47d263c 100644
--- a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
+++ b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
@@ -86,6 +86,11 @@ hdmi_con_in: endpoint {
};
};
};
+
+ brcmf_pwrseq: brcmf_pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ reset-gpios = <&gpio2 31 GPIO_ACTIVE_LOW>; /* WL-REG-ON */
+ };
};
&osc {
@@ -239,6 +244,28 @@ rx-pins {
slew-rate = <0>;
};
};
+
+ wifi_pins: wifi-pins {
+ host-wake-wl {
+ pins = "GPIO2_25";
+ function = "gpio";
+ bias-pull-up;
+ drive-strength = <1>;
+ input-enable;
+ input-schmitt-disable;
+ slew-rate = <0>;
+ };
+
+ reg-on-wl {
+ pins = "GPIO2_31";
+ function = "gpio";
+ bias-pull-up;
+ drive-strength = <3>;
+ input-disable;
+ input-schmitt-disable;
+ slew-rate = <0>;
+ };
+ };
};
&sdio0 {
@@ -247,6 +274,29 @@ &sdio0 {
status = "okay";
};
+&sdio1 {
+ bus-width = <4>;
+ max-frequency = <198000000>;
+ status = "okay";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ non-removable;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wifi_pins>;
+ mmc-pwrseq = <&brcmf_pwrseq>;
+
+ wifi@1 {
+ compatible = "cypress,cyw43012-fmac", "brcm,bcm4329-fmac";
+ reg = <1>;
+ brcm,sd_head_align = <4>;
+ brcm,sd_sgentry_align = <512>;
+ interrupt-parent = <&gpio2>;
+ interrupts = <25 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "host-wake";
+ };
+};
+
&dpu {
status = "okay";
};
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH] Enable wifi on the BeagleV-Ahead
2026-05-11 14:11 [PATCH] Enable wifi on the BeagleV-Ahead Thomas Gerner
@ 2026-05-12 17:33 ` Thomas Gerner
2026-05-12 18:39 ` Shengyu Qu
2026-05-14 14:47 ` [PATCH v3] " Thomas Gerner
0 siblings, 2 replies; 7+ messages in thread
From: Thomas Gerner @ 2026-05-12 17:33 UTC (permalink / raw)
To: Drew Fustini, Guo Ren, Fu Wei, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti, linux-riscv, devicetree, linux-kernel
Cc: Thomas Gerner
The BeagleV-Ahead board uses an AP6203BM WiFi chip from AMPAK Technology
Inc. connected to SDIO1. The chip is compatible to the broadcom wireless
driver.
The AP6203BM is a dual-band 2.4GHz/5GHz Wi-Fi 4 (802.11a/b/g/n) and
Bluetooth 5.4 module. Bluetooth is not enabled by this patch.
Change in v2:
- consider issues found by sashiko AI review
Signed-off-by: Thomas Gerner <thomas.gerner@muenchen-mail.de>
---
.../boot/dts/thead/th1520-beaglev-ahead.dts | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
index 91f3f9b987bc..86da4bd8ceaf 100644
--- a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
+++ b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
@@ -86,6 +86,11 @@ hdmi_con_in: endpoint {
};
};
};
+
+ brcmf_pwrseq: brcmf-pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ reset-gpios = <&gpio2 31 GPIO_ACTIVE_LOW>; /* WL-REG-ON */
+ };
};
&osc {
@@ -239,6 +244,28 @@ rx-pins {
slew-rate = <0>;
};
};
+
+ wifi_pins: wifi-pins {
+ host-wake-wl {
+ pins = "GPIO2_25";
+ function = "gpio";
+ bias-disable;
+ drive-strength = <1>;
+ input-enable;
+ input-schmitt-disable;
+ slew-rate = <0>;
+ };
+
+ reg-on-wl {
+ pins = "GPIO2_31";
+ function = "gpio";
+ bias-disable;
+ drive-strength = <3>;
+ input-disable;
+ input-schmitt-disable;
+ slew-rate = <0>;
+ };
+ };
};
&sdio0 {
@@ -247,6 +274,28 @@ &sdio0 {
status = "okay";
};
+&sdio1 {
+ bus-width = <4>;
+ max-frequency = <198000000>;
+ status = "okay";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ non-removable;
+ keep-power-in-suspend;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wifi_pins>;
+ mmc-pwrseq = <&brcmf_pwrseq>;
+
+ wifi@1 {
+ compatible = "cypress,cyw43012-fmac";
+ reg = <1>;
+ interrupt-parent = <&gpio2>;
+ interrupts = <25 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "host-wake";
+ };
+};
+
&dpu {
status = "okay";
};
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] Enable wifi on the BeagleV-Ahead
2026-05-12 17:33 ` Thomas Gerner
@ 2026-05-12 18:39 ` Shengyu Qu
2026-05-13 17:38 ` Thomas Gerner
2026-05-14 14:47 ` [PATCH v3] " Thomas Gerner
1 sibling, 1 reply; 7+ messages in thread
From: Shengyu Qu @ 2026-05-12 18:39 UTC (permalink / raw)
To: Thomas Gerner, Drew Fustini, Guo Ren, Fu Wei, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Paul Walmsley, Palmer Dabbelt,
Albert Ou, Alexandre Ghiti, linux-riscv, devicetree, linux-kernel
> +
> + brcmf_pwrseq: brcmf-pwrseq {
> + compatible = "mmc-pwrseq-simple";
> + reset-gpios = <&gpio2 31 GPIO_ACTIVE_LOW>; /* WL-REG-ON */
> + };
> };
I think such pwrseq won't work? Need to set timing parameter, for example:
https://github.com/torvalds/linux/blob/1d5dcaa3bd65f2e8c9baa14a393d3a2dc5db7524/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts#L71
Best regards,
Shengyu
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Enable wifi on the BeagleV-Ahead
2026-05-12 18:39 ` Shengyu Qu
@ 2026-05-13 17:38 ` Thomas Gerner
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Gerner @ 2026-05-13 17:38 UTC (permalink / raw)
To: Shengyu Qu, Drew Fustini, Guo Ren, Fu Wei, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Paul Walmsley, Palmer Dabbelt,
Albert Ou, Alexandre Ghiti, linux-riscv, devicetree, linux-kernel
Am 12.05.26 um 20:39 schrieb Shengyu Qu:
>> +
>> + brcmf_pwrseq: brcmf-pwrseq {
>> + compatible = "mmc-pwrseq-simple";
>> + reset-gpios = <&gpio2 31 GPIO_ACTIVE_LOW>; /* WL-REG-ON */
>> + };
>> };
>
> I think such pwrseq won't work? Need to set timing parameter, for
> example:
> https://github.com/torvalds/linux/blob/1d5dcaa3bd65f2e8c9baa14a393d3a2dc5db7524/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts#L71
>
I think this is not necessary. The WiFi chip gets powerd up with the
board power and the power cannot be disabled. The only job for this
pwrseq is to release gpio2 pin 31 when the kernel initialize the chip.
According to the data sheet the release of the pin should happen not
earlier than 2 cycles of the 32.768kHz clock after powered up. As the
kernel start takes much longer than this 2 cycles and I think there is
no extra timing necessary.
The broadcom driver has a also a property "reset-gpios", but this does
not work. It does not configure the pin as output, it configure it as
input. Then the driver does not initialize the chip. May be this is a
bug in the broadcom driver, don't know.
Best regards
Thomas
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3] Enable wifi on the BeagleV-Ahead
2026-05-12 17:33 ` Thomas Gerner
2026-05-12 18:39 ` Shengyu Qu
@ 2026-05-14 14:47 ` Thomas Gerner
2026-05-14 14:55 ` Krzysztof Kozlowski
1 sibling, 1 reply; 7+ messages in thread
From: Thomas Gerner @ 2026-05-14 14:47 UTC (permalink / raw)
To: Drew Fustini, Guo Ren, Fu Wei, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti, linux-riscv, devicetree, linux-kernel
Cc: Thomas Gerner
The BeagleV-Ahead board uses an AP6203BM WiFi chip from AMPAK Technology
Inc. connected to SDIO1. The chip is compatible to the broadcom wireless
driver.
The AP6203BM is a dual-band 2.4GHz/5GHz Wi-Fi 4 (802.11a/b/g/n) and
Bluetooth 5.4 module. Bluetooth is not enabled by this patch.
Change in v3:
- consider further issues found by sashiko AI review
Change in v2:
- consider issues found by sashiko AI review
Signed-off-by: Thomas Gerner <thomas.gerner@muenchen-mail.de>
---
.../boot/dts/thead/th1520-beaglev-ahead.dts | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
index 91f3f9b987bc..f13a2d1deefa 100644
--- a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
+++ b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
@@ -86,6 +86,11 @@ hdmi_con_in: endpoint {
};
};
};
+
+ brcmf_pwrseq: brcmf-pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ reset-gpios = <&gpio2 31 GPIO_ACTIVE_LOW>; /* WL-REG-ON */
+ };
};
&osc {
@@ -239,6 +244,28 @@ rx-pins {
slew-rate = <0>;
};
};
+
+ wifi_pins: wifi-0 {
+ host-wake-pins {
+ pins = "GPIO2_25";
+ function = "gpio";
+ bias-disable;
+ drive-strength = <1>;
+ input-enable;
+ input-schmitt-disable;
+ slew-rate = <0>;
+ };
+
+ reg-on-pins {
+ pins = "GPIO2_31";
+ function = "gpio";
+ bias-disable;
+ drive-strength = <3>;
+ input-disable;
+ input-schmitt-disable;
+ slew-rate = <0>;
+ };
+ };
};
&sdio0 {
@@ -247,6 +274,28 @@ &sdio0 {
status = "okay";
};
+&sdio1 {
+ bus-width = <4>;
+ max-frequency = <198000000>;
+ status = "okay";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ non-removable;
+ keep-power-in-suspend;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wifi_pins>;
+ mmc-pwrseq = <&brcmf_pwrseq>;
+
+ wifi@1 {
+ compatible = "cypress,cyw43012-fmac", "brcm,bcm4329-fmac";
+ reg = <1>;
+ interrupt-parent = <&gpio2>;
+ interrupts = <25 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "host-wake";
+ };
+};
+
&dpu {
status = "okay";
};
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3] Enable wifi on the BeagleV-Ahead
2026-05-14 14:47 ` [PATCH v3] " Thomas Gerner
@ 2026-05-14 14:55 ` Krzysztof Kozlowski
2026-05-14 18:16 ` Thomas Gerner
0 siblings, 1 reply; 7+ messages in thread
From: Krzysztof Kozlowski @ 2026-05-14 14:55 UTC (permalink / raw)
To: Thomas Gerner, Drew Fustini, Guo Ren, Fu Wei, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Paul Walmsley, Palmer Dabbelt,
Albert Ou, Alexandre Ghiti, linux-riscv, devicetree, linux-kernel
On 14/05/2026 16:47, Thomas Gerner wrote:
> The BeagleV-Ahead board uses an AP6203BM WiFi chip from AMPAK Technology
> Inc. connected to SDIO1. The chip is compatible to the broadcom wireless
> driver.
>
Please use subject prefixes matching the subsystem. You can get them for
example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory
your patch is touching. For bindings, the preferred subjects are
explained here:
https://www.kernel.org/doc/html/latest/devicetree/bindings/submitting-patches.html#i-for-patch-submitters
> The AP6203BM is a dual-band 2.4GHz/5GHz Wi-Fi 4 (802.11a/b/g/n) and
> Bluetooth 5.4 module. Bluetooth is not enabled by this patch.
>
> Change in v3:
This goes to changelog part, so after ---
> - consider further issues found by sashiko AI review
>
> Change in v2:
> - consider issues found by sashiko AI review
Do not attach (thread) your patchsets to some other threads (unrelated
or older versions). This buries them deep in the mailbox and might
interfere with applying entire sets. See also:
https://elixir.bootlin.com/linux/v6.16-rc2/source/Documentation/process/submitting-patches.rst#L830
>
> Signed-off-by: Thomas Gerner <thomas.gerner@muenchen-mail.de>
> ---
> .../boot/dts/thead/th1520-beaglev-ahead.dts | 49 +++++++++++++++++++
> 1 file changed, 49 insertions(+)
>
> diff --git a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
> index 91f3f9b987bc..f13a2d1deefa 100644
> --- a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
> +++ b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
> @@ -86,6 +86,11 @@ hdmi_con_in: endpoint {
> };
> };
> };
> +
> + brcmf_pwrseq: brcmf-pwrseq {
Node names should be generic. See also an explanation and list of
examples (not exhaustive) in DT specification:
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
If you cannot find a name matching your device, please check in kernel
sources for similar cases or you can grow the spec (via pull request to
DT spec repo).
pwrseq?
> + compatible = "mmc-pwrseq-simple";
> + reset-gpios = <&gpio2 31 GPIO_ACTIVE_LOW>; /* WL-REG-ON */
> + };
> };
>
> &osc {
> @@ -239,6 +244,28 @@ rx-pins {
> slew-rate = <0>;
> };
> };
> +
> + wifi_pins: wifi-0 {
> + host-wake-pins {
> + pins = "GPIO2_25";
> + function = "gpio";
> + bias-disable;
> + drive-strength = <1>;
> + input-enable;
> + input-schmitt-disable;
> + slew-rate = <0>;
> + };
> +
> + reg-on-pins {
> + pins = "GPIO2_31";
> + function = "gpio";
> + bias-disable;
> + drive-strength = <3>;
> + input-disable;
> + input-schmitt-disable;
> + slew-rate = <0>;
> + };
> + };
> };
>
> &sdio0 {
> @@ -247,6 +274,28 @@ &sdio0 {
> status = "okay";
> };
>
> +&sdio1 {
> + bus-width = <4>;
> + max-frequency = <198000000>;
> + status = "okay";
Please follow DTS coding style in way of organizing properties.
> + #address-cells = <1>;
> + #size-cells = <0>;
> + non-removable;
> + keep-power-in-suspend;
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3] Enable wifi on the BeagleV-Ahead
2026-05-14 14:55 ` Krzysztof Kozlowski
@ 2026-05-14 18:16 ` Thomas Gerner
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Gerner @ 2026-05-14 18:16 UTC (permalink / raw)
To: Krzysztof Kozlowski, Drew Fustini, Guo Ren, Fu Wei, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Paul Walmsley, Palmer Dabbelt,
Albert Ou, Alexandre Ghiti, linux-riscv, devicetree, linux-kernel
Am 14.05.26 um 16:55 schrieb Krzysztof Kozlowski:
> On 14/05/2026 16:47, Thomas Gerner wrote:
>> The BeagleV-Ahead board uses an AP6203BM WiFi chip from AMPAK Technology
>> Inc. connected to SDIO1. The chip is compatible to the broadcom wireless
>> driver.
>>
> Please use subject prefixes matching the subsystem. You can get them for
> example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory
> your patch is touching. For bindings, the preferred subjects are
> explained here:
> https://www.kernel.org/doc/html/latest/devicetree/bindings/submitting-patches.html#i-for-patch-submitters
I read some more docs and will hopefully make things right with my next
patch version. And I start a new thread with every new version and the
recommended subject.
>> The AP6203BM is a dual-band 2.4GHz/5GHz Wi-Fi 4 (802.11a/b/g/n) and
>> Bluetooth 5.4 module. Bluetooth is not enabled by this patch.
>>
>> Change in v3:
> This goes to changelog part, so after ---
Okay.
>> - consider further issues found by sashiko AI review
>>
>> Change in v2:
>> - consider issues found by sashiko AI review
> Do not attach (thread) your patchsets to some other threads (unrelated
> or older versions). This buries them deep in the mailbox and might
> interfere with applying entire sets. See also:
> https://elixir.bootlin.com/linux/v6.16-rc2/source/Documentation/process/submitting-patches.rst#L830
Okay, I start new threads with new versions.
>> Signed-off-by: Thomas Gerner <thomas.gerner@muenchen-mail.de>
>> ---
>> .../boot/dts/thead/th1520-beaglev-ahead.dts | 49 +++++++++++++++++++
>> 1 file changed, 49 insertions(+)
>>
>> diff --git a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
>> index 91f3f9b987bc..f13a2d1deefa 100644
>> --- a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
>> +++ b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
>> @@ -86,6 +86,11 @@ hdmi_con_in: endpoint {
>> };
>> };
>> };
>> +
>> + brcmf_pwrseq: brcmf-pwrseq {
> Node names should be generic. See also an explanation and list of
> examples (not exhaustive) in DT specification:
> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
> If you cannot find a name matching your device, please check in kernel
> sources for similar cases or you can grow the spec (via pull request to
> DT spec repo).
>
> pwrseq?
Other device trees with wifi connected to mmc controller use wifi-pwrseq
as node name. Wifi is one of the generic names. I use this node name in
the next patch version.
>> + compatible = "mmc-pwrseq-simple";
>> + reset-gpios = <&gpio2 31 GPIO_ACTIVE_LOW>; /* WL-REG-ON */
>> + };
>> };
>>
>> &osc {
>> @@ -239,6 +244,28 @@ rx-pins {
>> slew-rate = <0>;
>> };
>> };
>> +
>> + wifi_pins: wifi-0 {
>> + host-wake-pins {
>> + pins = "GPIO2_25";
>> + function = "gpio";
>> + bias-disable;
>> + drive-strength = <1>;
>> + input-enable;
>> + input-schmitt-disable;
>> + slew-rate = <0>;
>> + };
>> +
>> + reg-on-pins {
>> + pins = "GPIO2_31";
>> + function = "gpio";
>> + bias-disable;
>> + drive-strength = <3>;
>> + input-disable;
>> + input-schmitt-disable;
>> + slew-rate = <0>;
>> + };
>> + };
>> };
>>
>> &sdio0 {
>> @@ -247,6 +274,28 @@ &sdio0 {
>> status = "okay";
>> };
>>
>> +&sdio1 {
>> + bus-width = <4>;
>> + max-frequency = <198000000>;
>> + status = "okay";
> Please follow DTS coding style in way of organizing properties.
My next patch will contain the properies order according to DTS coding
style.
>
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + non-removable;
>> + keep-power-in-suspend;
Best regards
Thomas
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-05-14 18:16 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-11 14:11 [PATCH] Enable wifi on the BeagleV-Ahead Thomas Gerner
2026-05-12 17:33 ` Thomas Gerner
2026-05-12 18:39 ` Shengyu Qu
2026-05-13 17:38 ` Thomas Gerner
2026-05-14 14:47 ` [PATCH v3] " Thomas Gerner
2026-05-14 14:55 ` Krzysztof Kozlowski
2026-05-14 18:16 ` Thomas Gerner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox