* [PATCH] Enable wifi on the BeagleV-Ahead
@ 2026-05-11 14:11 Thomas Gerner
2026-05-12 5:28 ` sashiko-bot
2026-05-12 17:33 ` Thomas Gerner
0 siblings, 2 replies; 10+ 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] 10+ messages in thread* Re: [PATCH] Enable wifi on the BeagleV-Ahead
2026-05-11 14:11 [PATCH] Enable wifi on the BeagleV-Ahead Thomas Gerner
@ 2026-05-12 5:28 ` sashiko-bot
2026-05-12 17:33 ` Thomas Gerner
1 sibling, 0 replies; 10+ messages in thread
From: sashiko-bot @ 2026-05-12 5:28 UTC (permalink / raw)
To: Thomas Gerner; +Cc: krzk+dt, robh, devicetree, conor+dt
Thank you for your contribution! Sashiko AI review found 6 potential issue(s) to consider:
- [High] Missing `keep-power-in-suspend` property breaks WoWLAN functionality.
- [Medium] Contradictory pull-up configuration on WiFi GPIOs causes power leakage.
- [Medium] Incorrect hardware-specific compatible string misrepresents the device.
- [Low] The `brcm,sd_head_align` and `brcm,sd_sgentry_align` properties are undocumented and ignored.
- [Low] The devicetree node name `brcmf_pwrseq` uses an underscore instead of a hyphen.
- [Low] Mixed space and tab indentation within the `wifi_pins` node.
--
commit 927889c06368228ec05bf0df849cea905cfb5d42
Author: Thomas Gerner <thomas.gerner@muenchen-mail.de>
Enable wifi on the BeagleV-Ahead
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.
> diff --git a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
> index 91f3f9b987bc3..5e0dc47d263c9 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 {
This isn't a bug, but does the node name violate the devicetree specification?
Section 2.2.1 and kernel conventions dictate using hyphens to separate words.
Using an underscore here will trigger a node_name_chars_strict warning from
the dtc compiler. Should it be renamed to brcmf-pwrseq or wifi-pwrseq?
> + compatible = "mmc-pwrseq-simple";
> + reset-gpios = <&gpio2 31 GPIO_ACTIVE_LOW>; /* WL-REG-ON */
> + };
> };
[ ... ]
> @@ -239,6 +244,28 @@ rx-pins {
> slew-rate = <0>;
> };
> };
> +
> + wifi_pins: wifi-pins {
> + host-wake-wl {
This isn't a bug, but are these lines indented with 4 spaces? The Linux
kernel coding style requires the exclusive use of tabs for indentation in
device tree sources.
> + pins = "GPIO2_25";
> + function = "gpio";
> + bias-pull-up;
Since the host-wake interrupt is configured below as IRQ_TYPE_EDGE_RISING,
it implies the signal idles low. Does pulling up a signal that idles low
cause continuous power leakage? Should this be configured with bias-disable
or bias-pull-down instead?
> + drive-strength = <1>;
> + input-enable;
> + input-schmitt-disable;
> + slew-rate = <0>;
> + };
> +
> + reg-on-wl {
> + pins = "GPIO2_31";
> + function = "gpio";
> + bias-pull-up;
The mmc-pwrseq-simple configuration uses this pin as an active-low reset
and actively drives it low to power off the WiFi chip during sleep or
suspend. Could pulling up this pin while it is driven low cause continuous
current leakage to ground?
> + drive-strength = <3>;
> + input-disable;
> + input-schmitt-disable;
> + slew-rate = <0>;
> + };
> + };
> };
[ ... ]
> +&sdio1 {
> + bus-width = <4>;
> + max-frequency = <198000000>;
> + status = "okay";
> + #address-cells = <1>;
> + #size-cells = <0>;
> + non-removable;
Will Wake-on-WLAN (WoWLAN) fail to function without the
keep-power-in-suspend property here?
The wifi@1 node below configures an Out-Of-Band host-wake interrupt to
support WoWLAN. However, without keep-power-in-suspend on the sdio1 node,
the MMC core will not set the MMC_PM_KEEP_POWER flag and will assert the
reset GPIO to cut power to the WiFi chip during system suspend.
This would cause the WiFi module to lose its firmware state, rendering the
configured OOB interrupt useless.
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&wifi_pins>;
> + mmc-pwrseq = <&brcmf_pwrseq>;
> +
> + wifi@1 {
> + compatible = "cypress,cyw43012-fmac", "brcm,bcm4329-fmac";
Does this compatible string misrepresent the underlying hardware?
The commit message states the board uses an AMPAK AP6203BM WiFi chip,
which is based on Broadcom BCM43436 silicon. However, this compatible
string corresponds to a dual-band Cypress chip architecture. Should it use
an appropriate BCM4343x compatible string (e.g., brcm,bcm43430-fmac)
instead?
> + reg = <1>;
> + brcm,sd_head_align = <4>;
> + brcm,sd_sgentry_align = <512>;
Are these properties used by the kernel?
They do not appear to be defined in the brcm,bcm4329-fmac.yaml binding
schema, which strictly enforces unevaluatedProperties: false, and their
presence will cause make dtbs_check validation to fail.
A review of the brcmfmac driver also shows these properties are only used
for legacy C platform data structs and are never parsed from the device
tree.
> + interrupt-parent = <&gpio2>;
> + interrupts = <25 IRQ_TYPE_EDGE_RISING>;
> + interrupt-names = "host-wake";
> + };
> +};
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260511141119.155369-1-thomas.gerner@muenchen-mail.de?part=1
^ permalink raw reply [flat|nested] 10+ 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 5:28 ` sashiko-bot
@ 2026-05-12 17:33 ` Thomas Gerner
2026-05-12 18:39 ` Shengyu Qu
` (2 more replies)
1 sibling, 3 replies; 10+ 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] 10+ 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-13 23:43 ` sashiko-bot
2026-05-14 14:47 ` [PATCH v3] " Thomas Gerner
2 siblings, 1 reply; 10+ 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] 10+ 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; 10+ 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] 10+ 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 23:43 ` sashiko-bot
2026-05-14 14:47 ` [PATCH v3] " Thomas Gerner
2 siblings, 0 replies; 10+ messages in thread
From: sashiko-bot @ 2026-05-13 23:43 UTC (permalink / raw)
To: Thomas Gerner; +Cc: conor+dt, krzk+dt, devicetree, robh
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Missing mandatory fallback compatible string `brcm,bcm4329-fmac` silently breaks driver interrupt parsing.
- [Low] Pinctrl node names violate the `thead,th1520-pinctrl` schema constraints.
--
commit 36b13556394c8110c85a42dc09295453444c2a36
Author: Thomas Gerner <thomas.gerner@muenchen-mail.de>
Enable wifi on the BeagleV-Ahead
The BeagleV-Ahead board uses an AP6203BM WiFi chip from AMPAK Technology
Inc. connected to SDIO1.
> diff --git a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
> index 91f3f9b987bc3..86da4bd8ceaf9 100644
> --- a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
> +++ b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
[ ... ]
> @@ -239,6 +244,28 @@ rx-pins {
> slew-rate = <0>;
> };
> };
> +
> + wifi_pins: wifi-pins {
> + host-wake-wl {
Does this naming follow the thead,th1520-pinctrl schema constraints?
The schema requires pad group nodes to match the regex -[0-9]+$ (for
example, wifi-0) and inner pin-mux child nodes to match -pins$ (for
example, host-wake-pins).
Using wifi-pins and host-wake-wl / reg-on-wl will trigger dtbs_check
validation errors.
> + pins = "GPIO2_25";
> + function = "gpio";
> + bias-disable;
> + drive-strength = <1>;
> + input-enable;
> + input-schmitt-disable;
> + slew-rate = <0>;
> + };
> +
> + reg-on-wl {
[ ... ]
> + wifi@1 {
> + compatible = "cypress,cyw43012-fmac";
Does this compatible string need the brcm,bcm4329-fmac fallback?
In drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c, brcmf_of_probe()
explicitly checks for this fallback:
if (!of_device_is_compatible(np, "brcm,bcm4329-fmac"))
return;
Without the fallback string, the driver skips parsing the interrupts
property, which breaks the wake-on-WLAN functionality intended by
configuring the host-wake pin.
> + reg = <1>;
> + interrupt-parent = <&gpio2>;
> + interrupts = <25 IRQ_TYPE_EDGE_RISING>;
> + interrupt-names = "host-wake";
> + };
> +};
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260512173440.163179-1-thomas.gerner@muenchen-mail.de?part=1
^ permalink raw reply [flat|nested] 10+ 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-13 23:43 ` sashiko-bot
@ 2026-05-14 14:47 ` Thomas Gerner
2026-05-14 14:55 ` Krzysztof Kozlowski
2026-05-14 19:42 ` sashiko-bot
2 siblings, 2 replies; 10+ 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] 10+ 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
2026-05-14 19:42 ` sashiko-bot
1 sibling, 1 reply; 10+ 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] 10+ 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; 10+ 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] 10+ 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 19:42 ` sashiko-bot
1 sibling, 0 replies; 10+ messages in thread
From: sashiko-bot @ 2026-05-14 19:42 UTC (permalink / raw)
To: Thomas Gerner; +Cc: robh, krzk+dt, conor+dt, devicetree
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [Medium] The `host-wake` interrupt pin is configured with `input-schmitt-disable`, which makes it susceptible to noise and false interrupts.
- [Medium] The pinctrl for the Wi-Fi `reg-on` GPIO is incorrectly assigned to the SDIO host (`&sdio1`) instead of the power sequence provider (`brcmf_pwrseq`).
- [Low] The power sequence node uses a non-generic name (`brcmf-pwrseq`), violating Devicetree naming guidelines.
--
commit aef7ec6dc80f633bb4abb51e59f66c088fa8d55f
Author: Thomas Gerner <thomas.gerner@muenchen-mail.de>
Enable wifi on the BeagleV-Ahead
This commit enables the AP6203BM WiFi chip on the BeagleV-Ahead board by
adding the necessary device tree nodes. It sets up the SDIO interface,
pin configurations, and power sequence for the wireless module.
> diff --git a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
> --- 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 {
This isn't a bug, but should this node use a generic name like wifi-pwrseq
instead of the vendor-specific brcmf-pwrseq? Section 2.2.2 of the Devicetree
Specification suggests node names should reflect the function of the device.
> + compatible = "mmc-pwrseq-simple";
> + reset-gpios = <&gpio2 31 GPIO_ACTIVE_LOW>; /* WL-REG-ON */
> + };
> };
[ ... ]
> @@ -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;
Could disabling the Schmitt trigger here cause issues with false interrupts?
The host-wake pin is configured later in this patch as an external,
asynchronous signal triggering on a rising edge (IRQ_TYPE_EDGE_RISING).
Disabling hysteresis removes protection against signal noise and slow
transitions, which might lead to multiple false triggers or interrupt storms
on a single edge.
> + slew-rate = <0>;
> + };
> +
> + reg-on-pins {
> + pins = "GPIO2_31";
> + function = "gpio";
> + bias-disable;
> + drive-strength = <3>;
> + input-disable;
> + input-schmitt-disable;
> + slew-rate = <0>;
> + };
> + };
> };
[ ... ]
> +&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>;
Does the reg-on-pins pinctrl configuration need to be assigned to the
brcmf_pwrseq node rather than the sdio1 node?
The mmc-pwrseq-simple device is an independent platform device that
requests and drives the reset-gpios (GPIO2_31) during its own probe
sequence.
By keeping the pinctrl assignment here in the sdio1 node, the power
sequencer might attempt to drive the GPIO before the SDIO host has
multiplexed the pin correctly.
> + 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";
> + };
> +};
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260514144836.50101-1-thomas.gerner@muenchen-mail.de?part=1
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-05-14 19:42 UTC | newest]
Thread overview: 10+ 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 5:28 ` sashiko-bot
2026-05-12 17:33 ` Thomas Gerner
2026-05-12 18:39 ` Shengyu Qu
2026-05-13 17:38 ` Thomas Gerner
2026-05-13 23:43 ` sashiko-bot
2026-05-14 14:47 ` [PATCH v3] " Thomas Gerner
2026-05-14 14:55 ` Krzysztof Kozlowski
2026-05-14 18:16 ` Thomas Gerner
2026-05-14 19:42 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox