[PATCH] Enable wifi on the BeagleV-Ahead

Thomas Gerner posted 1 patch 1 month ago
There is a newer version of this series
.../boot/dts/thead/th1520-beaglev-ahead.dts   | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
[PATCH] Enable wifi on the BeagleV-Ahead
Posted by Thomas Gerner 1 month ago
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
[PATCH v3] Enable wifi on the BeagleV-Ahead
Posted by Thomas Gerner 4 weeks, 1 day ago
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
Re: [PATCH v3] Enable wifi on the BeagleV-Ahead
Posted by Krzysztof Kozlowski 4 weeks, 1 day ago
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
Re: [PATCH v3] Enable wifi on the BeagleV-Ahead
Posted by Thomas Gerner 4 weeks, 1 day ago
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