linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4] ARM: dts: ux500: Fix BT+WLAN on Janice
@ 2021-03-20  1:10 Linus Walleij
  2021-03-20 15:28 ` Stephan Gerhold
  0 siblings, 1 reply; 2+ messages in thread
From: Linus Walleij @ 2021-03-20  1:10 UTC (permalink / raw)
  To: linux-arm-kernel; +Cc: Linus Walleij, Stephan Gerhold

GPIO215 has a rail named WLAN_RST_N but it is actually connected
to the pin WLAN_REG_ON on the BCM4330 chip, so this should be
the WLAN regulator GPIO rather than GPIO222. The misunderstanding
comes from the erroneous naming of the rail on the schematic.

GPIO222 is indeed connected to the rail BT_VREG_EN and the pin
BT_REG_ON, and can be handled by the driver as usual.

This corrects misunderstandings and makes Janice's WLAN and BT
setup look like that of Golden and Skomer.

Add explicit BCM4330 compatible to the WLAN chip.

Cc: Stephan Gerhold <stephan@gerhold.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
ChangeLog v3->v4:
- Resolve the confusion around WLAN_RST_N
ChangeLog v2->v3:
- Break out patch, Janice has BCM4330 and is different
  from Golden and Skomer.
ChangeLog v1->v2:
- Change compatible strings on the WLAN chips to be
  specific-to-generic indicating the exact model.
---
 .../arm/boot/dts/ste-ux500-samsung-janice.dts | 48 +++++++------------
 1 file changed, 18 insertions(+), 30 deletions(-)

diff --git a/arch/arm/boot/dts/ste-ux500-samsung-janice.dts b/arch/arm/boot/dts/ste-ux500-samsung-janice.dts
index 7411bfeda285..f24369873ce2 100644
--- a/arch/arm/boot/dts/ste-ux500-samsung-janice.dts
+++ b/arch/arm/boot/dts/ste-ux500-samsung-janice.dts
@@ -135,21 +135,22 @@ lcd_1v8_reg: regulator-gpio-lcd-1v8 {
 
 	/*
 	 * This regulator is a GPIO line that drives the Broadcom WLAN
-	 * line BT_VREG_EN high and enables the internal regulators
-	 * inside the chip.
+	 * line WL_REG_ON high and enables the internal regulators
+	 * inside the chip. Unfortunatley it is erroneously named
+	 * WLAN_RST_N on the schematic but it is not a reset line.
 	 *
 	 * The voltage specified here is only used to determine the OCR mask,
 	 * the for the SDIO connector, the chip is actually connected
 	 * directly to VBAT.
 	 */
-	wl_bt_reg: regulator-gpio-wlan {
+	wl_reg: regulator-gpio-wlan {
 		compatible = "regulator-fixed";
-		regulator-name = "BT_VREG_EN";
+		regulator-name = "WL_REG_ON";
 		regulator-min-microvolt = <3000000>;
 		regulator-max-microvolt = <3000000>;
 		startup-delay-us = <100000>;
-		/* GPIO222 (BT_VREG_EN) */
-		gpio = <&gpio6 30 GPIO_ACTIVE_HIGH>;
+		/* GPIO215 (WLAN_RST_N to WL_REG_ON) */
+		gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 		pinctrl-names = "default";
 		pinctrl-0 = <&wlan_ldo_en_default>;
@@ -390,11 +391,10 @@ mmc@80118000 {
 			pinctrl-1 = <&mc1_a_2_sleep>;
 			/*
 			 * GPIO-controlled voltage enablement: this drives
-			 * the BT_VREG_EN line high when we use this device.
-			 * Represented as regulator to fill OCR mask and to
-			 * be usable in parallel with the Bluetooth chip.
+			 * the WL_REG_ON line high when we use this device.
+			 * Represented as regulator to fill OCR mask.
 			 */
-			vmmc-supply = <&wl_bt_reg>;
+			vmmc-supply = <&wl_reg>;
 
 			#address-cells = <1>;
 			#size-cells = <0>;
@@ -408,9 +408,6 @@ wifi@1 {
 				interrupt-parent = <&gpio6>;
 				interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
 				interrupt-names = "host-wake";
-				/* GPIO215  WLAN_RST_N */
-				/* FIXME: kernel does not use this assert/deassert */
-				reset-gpios = <&gpio6 23 GPIO_ACTIVE_LOW>;
 				pinctrl-names = "default";
 				pinctrl-0 = <&wlan_default_mode>;
 			};
@@ -440,15 +437,8 @@ uart@80120000 {
 
 			bluetooth {
 				compatible = "brcm,bcm4330-bt";
-				/*
-				 * We actually have shutdown-gpios, BT_VREG_EN on GPIO222,
-				 * but since this GPIO is shared with the WLAN chip, we need
-				 * to reference the regulator instead. The regulator
-				 * framework will reference count the GPIO usage and
-				 * make sure we can use the same GPIO for several supplies.
-				 */
-				// shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
-				vbat-supply = <&wl_bt_reg>;
+				/* GPIO222 rail BT_VREG_EN to BT_REG_ON */
+				shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
 				/* BT_WAKE on GPIO199 */
 				device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
 				/* BT_HOST_WAKE on GPIO97 */
@@ -759,9 +749,9 @@ janice_cfg1 {
 	/* GPIO that enables the WLAN internal LDO regulators */
 	wlan-ldo {
 		wlan_ldo_en_default: wlan_ldo_default {
-			/* GPIO222 BT_VREG_ON */
+			/* GPIO215 named WLAN_RST_N */
 			janice_cfg1 {
-				pins = "GPIO222_AJ9";
+				pins = "GPIO215_AH13";
 				ste,config = <&gpio_out_lo>;
 			};
 		};
@@ -875,11 +865,6 @@ janice_cfg2 {
 	};
 	wlan {
 		wlan_default_mode: wlan_default {
-			/* GPIO215 used for RESET_N */
-			janice_cfg1 {
-				pins = "GPIO215_AH13";
-				ste,config = <&gpio_out_lo>;
-			};
 			/* GPIO216 for WL_HOST_WAKE */
 			janice_cfg2 {
 				pins = "GPIO216_AG12";
@@ -889,14 +874,17 @@ janice_cfg2 {
 	};
 	bluetooth {
 		bluetooth_default_mode: bluetooth_default {
+			/* GPIO199 BT_WAKE and GPIO222 BT_VREG_ON */
 			janice_cfg1 {
-				pins = "GPIO199_AH23";
+				pins = "GPIO199_AH23", "GPIO222_AJ9";
 				ste,config = <&gpio_out_lo>;
 			};
+			/* GPIO97 BT_HOST_WAKE */
 			janice_cfg2 {
 				pins = "GPIO97_D9";
 				ste,config = <&gpio_in_nopull>;
 			};
+			/* GPIO209 BT_RST_N */
 			janice_cfg3 {
 				pins = "GPIO209_AG15";
 				ste,config = <&gpio_out_hi>;
-- 
2.29.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v4] ARM: dts: ux500: Fix BT+WLAN on Janice
  2021-03-20  1:10 [PATCH v4] ARM: dts: ux500: Fix BT+WLAN on Janice Linus Walleij
@ 2021-03-20 15:28 ` Stephan Gerhold
  0 siblings, 0 replies; 2+ messages in thread
From: Stephan Gerhold @ 2021-03-20 15:28 UTC (permalink / raw)
  To: Linus Walleij; +Cc: linux-arm-kernel

On Sat, Mar 20, 2021 at 02:10:35AM +0100, Linus Walleij wrote:
> GPIO215 has a rail named WLAN_RST_N but it is actually connected
> to the pin WLAN_REG_ON on the BCM4330 chip, so this should be
> the WLAN regulator GPIO rather than GPIO222. The misunderstanding
> comes from the erroneous naming of the rail on the schematic.
> 
> GPIO222 is indeed connected to the rail BT_VREG_EN and the pin
> BT_REG_ON, and can be handled by the driver as usual.
> 
> This corrects misunderstandings and makes Janice's WLAN and BT
> setup look like that of Golden and Skomer.
> 
> Add explicit BCM4330 compatible to the WLAN chip.
> 
> Cc: Stephan Gerhold <stephan@gerhold.net>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

This looks great, thanks for your patience to resolve the confusion! :)

Reviewed-by: Stephan Gerhold <stephan@gerhold.net>

Consider fixing the typo below when you apply this.

Thanks!
Stephan

> ---
> ChangeLog v3->v4:
> - Resolve the confusion around WLAN_RST_N
> ChangeLog v2->v3:
> - Break out patch, Janice has BCM4330 and is different
>   from Golden and Skomer.
> ChangeLog v1->v2:
> - Change compatible strings on the WLAN chips to be
>   specific-to-generic indicating the exact model.
> ---
>  .../arm/boot/dts/ste-ux500-samsung-janice.dts | 48 +++++++------------
>  1 file changed, 18 insertions(+), 30 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/ste-ux500-samsung-janice.dts b/arch/arm/boot/dts/ste-ux500-samsung-janice.dts
> index 7411bfeda285..f24369873ce2 100644
> --- a/arch/arm/boot/dts/ste-ux500-samsung-janice.dts
> +++ b/arch/arm/boot/dts/ste-ux500-samsung-janice.dts
> @@ -135,21 +135,22 @@ lcd_1v8_reg: regulator-gpio-lcd-1v8 {
>  
>  	/*
>  	 * This regulator is a GPIO line that drives the Broadcom WLAN
> -	 * line BT_VREG_EN high and enables the internal regulators
> -	 * inside the chip.
> +	 * line WL_REG_ON high and enables the internal regulators
> +	 * inside the chip. Unfortunatley it is erroneously named

Typo: Unfortunatley -> Unfortunately.

> +	 * WLAN_RST_N on the schematic but it is not a reset line.
>  	 *
>  	 * The voltage specified here is only used to determine the OCR mask,
>  	 * the for the SDIO connector, the chip is actually connected
>  	 * directly to VBAT.
>  	 */
> -	wl_bt_reg: regulator-gpio-wlan {
> +	wl_reg: regulator-gpio-wlan {
>  		compatible = "regulator-fixed";
> -		regulator-name = "BT_VREG_EN";
> +		regulator-name = "WL_REG_ON";
>  		regulator-min-microvolt = <3000000>;
>  		regulator-max-microvolt = <3000000>;
>  		startup-delay-us = <100000>;
> -		/* GPIO222 (BT_VREG_EN) */
> -		gpio = <&gpio6 30 GPIO_ACTIVE_HIGH>;
> +		/* GPIO215 (WLAN_RST_N to WL_REG_ON) */
> +		gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
>  		enable-active-high;
>  		pinctrl-names = "default";
>  		pinctrl-0 = <&wlan_ldo_en_default>;
> @@ -390,11 +391,10 @@ mmc@80118000 {
>  			pinctrl-1 = <&mc1_a_2_sleep>;
>  			/*
>  			 * GPIO-controlled voltage enablement: this drives
> -			 * the BT_VREG_EN line high when we use this device.
> -			 * Represented as regulator to fill OCR mask and to
> -			 * be usable in parallel with the Bluetooth chip.
> +			 * the WL_REG_ON line high when we use this device.
> +			 * Represented as regulator to fill OCR mask.
>  			 */
> -			vmmc-supply = <&wl_bt_reg>;
> +			vmmc-supply = <&wl_reg>;
>  
>  			#address-cells = <1>;
>  			#size-cells = <0>;
> @@ -408,9 +408,6 @@ wifi@1 {
>  				interrupt-parent = <&gpio6>;
>  				interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
>  				interrupt-names = "host-wake";
> -				/* GPIO215  WLAN_RST_N */
> -				/* FIXME: kernel does not use this assert/deassert */
> -				reset-gpios = <&gpio6 23 GPIO_ACTIVE_LOW>;
>  				pinctrl-names = "default";
>  				pinctrl-0 = <&wlan_default_mode>;
>  			};
> @@ -440,15 +437,8 @@ uart@80120000 {
>  
>  			bluetooth {
>  				compatible = "brcm,bcm4330-bt";
> -				/*
> -				 * We actually have shutdown-gpios, BT_VREG_EN on GPIO222,
> -				 * but since this GPIO is shared with the WLAN chip, we need
> -				 * to reference the regulator instead. The regulator
> -				 * framework will reference count the GPIO usage and
> -				 * make sure we can use the same GPIO for several supplies.
> -				 */
> -				// shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
> -				vbat-supply = <&wl_bt_reg>;
> +				/* GPIO222 rail BT_VREG_EN to BT_REG_ON */
> +				shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
>  				/* BT_WAKE on GPIO199 */
>  				device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
>  				/* BT_HOST_WAKE on GPIO97 */
> @@ -759,9 +749,9 @@ janice_cfg1 {
>  	/* GPIO that enables the WLAN internal LDO regulators */
>  	wlan-ldo {
>  		wlan_ldo_en_default: wlan_ldo_default {
> -			/* GPIO222 BT_VREG_ON */
> +			/* GPIO215 named WLAN_RST_N */
>  			janice_cfg1 {
> -				pins = "GPIO222_AJ9";
> +				pins = "GPIO215_AH13";
>  				ste,config = <&gpio_out_lo>;
>  			};
>  		};
> @@ -875,11 +865,6 @@ janice_cfg2 {
>  	};
>  	wlan {
>  		wlan_default_mode: wlan_default {
> -			/* GPIO215 used for RESET_N */
> -			janice_cfg1 {
> -				pins = "GPIO215_AH13";
> -				ste,config = <&gpio_out_lo>;
> -			};
>  			/* GPIO216 for WL_HOST_WAKE */
>  			janice_cfg2 {
>  				pins = "GPIO216_AG12";
> @@ -889,14 +874,17 @@ janice_cfg2 {
>  	};
>  	bluetooth {
>  		bluetooth_default_mode: bluetooth_default {
> +			/* GPIO199 BT_WAKE and GPIO222 BT_VREG_ON */
>  			janice_cfg1 {
> -				pins = "GPIO199_AH23";
> +				pins = "GPIO199_AH23", "GPIO222_AJ9";
>  				ste,config = <&gpio_out_lo>;
>  			};
> +			/* GPIO97 BT_HOST_WAKE */
>  			janice_cfg2 {
>  				pins = "GPIO97_D9";
>  				ste,config = <&gpio_in_nopull>;
>  			};
> +			/* GPIO209 BT_RST_N */
>  			janice_cfg3 {
>  				pins = "GPIO209_AG15";
>  				ste,config = <&gpio_out_hi>;
> -- 
> 2.29.2
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-03-20 15:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-03-20  1:10 [PATCH v4] ARM: dts: ux500: Fix BT+WLAN on Janice Linus Walleij
2021-03-20 15:28 ` Stephan Gerhold

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).