Linux kernel -stable discussions
 help / color / mirror / Atom feed
* [PATCH] ARM: dts: samsung: exynos4210-universal_c210: fix BCM4330 Bluetooth GPIOs
       [not found] <CGME20261026103612eucas1p10fbe3777394cc604419299509c22a2e7@eucas1p1.samsung.com>
@ 2026-10-26 10:36 ` Marek Szyprowski
  2026-11-02 12:26   ` Krzysztof Kozlowski
  0 siblings, 1 reply; 3+ messages in thread
From: Marek Szyprowski @ 2026-10-26 10:36 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: Marek Szyprowski, Krzysztof Kozlowski, Peter Griffin, Alim Akhtar,
	stable

BT_REG_ON (BT_EN) line of the BCM4330 WLAN/BT combo chip is connected to
the XMMC1CMD pad (GPK1[1]), while the XMDMADDR_4 pad (GPE1[4]) is
connected to BT_RST (BT_nRST). The Bluetooth node however used GPE1[4]
as shutdown-gpios and left the real BT_REG_ON line undriven, so it was
kept low by the default SoC pull-down.

This worked only by accident: the internal regulators of the BCM4330 are
enabled when either WL_REG_ON or BT_REG_ON is high, so the Bluetooth core
was powered via WL_REG_ON driven by the SDIO WLAN power sequence, while
toggling GPE1[4] only released it from reset. Once 'cap-power-off-card'
was added to the SDIO node, the MMC core started to power off the WLAN
part (asserting WL_REG_ON low) whenever it was idle, what cut off the
Bluetooth power as well and resulted in HCI command timeouts.

Fix this by using GPK1[1] as shutdown-gpios and describing GPE1[4] as
active-low reset-gpios. While touching this, move the GPE1[4] pin
configuration to the pinctrl_0 node, as GPE1 bank belongs to that pin
controller, what fixes the following error:

  samsung-pinctrl 11000000.pinctrl: does not have pin group gpe1-4

Fixes: 8929d4a9d204 ("ARM: dts: exynos: Enable BlueTooth support for Universal C210 board")
Cc: stable@vger.kernel.org
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
---
This patch was developed with LLM assistance and have been tested on the
real UniversalC210 board.

Best regards
Marek Szyprowski, PhD
Samsung R&D Institute Poland
---
 .../boot/dts/samsung/exynos4210-universal_c210.dts  | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/arch/arm/boot/dts/samsung/exynos4210-universal_c210.dts b/arch/arm/boot/dts/samsung/exynos4210-universal_c210.dts
index 744039068e8f..79c0c27d9377 100644
--- a/arch/arm/boot/dts/samsung/exynos4210-universal_c210.dts
+++ b/arch/arm/boot/dts/samsung/exynos4210-universal_c210.dts
@@ -537,7 +537,7 @@ &ohci {
 
 &pinctrl_1 {
 	bt_shutdown: bt-shutdown-pins {
-		samsung,pins = "gpe1-4";
+		samsung,pins = "gpk1-1";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
 		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
 	};
@@ -572,6 +572,12 @@ i2c_ddc_bus: i2c-ddc-bus-pins {
 		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
+
+	bt_reset: bt-reset-pins {
+		samsung,pins = "gpe1-4";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+	};
 };
 
 &pwm {
@@ -641,9 +647,10 @@ bluetooth {
 
 		max-speed = <3000000>;
 
-		pinctrl-0 = <&bt_shutdown &bt_device_wakeup &bt_host_wakeup>;
+		pinctrl-0 = <&bt_shutdown &bt_reset &bt_device_wakeup &bt_host_wakeup>;
 		pinctrl-names = "default";
-		shutdown-gpios = <&gpe1 4 GPIO_ACTIVE_HIGH>;
+		shutdown-gpios = <&gpk1 1 GPIO_ACTIVE_HIGH>;
+		reset-gpios = <&gpe1 4 GPIO_ACTIVE_LOW>;
 		device-wakeup-gpios = <&gpx3 1 GPIO_ACTIVE_HIGH>;
 		host-wakeup-gpios = <&gpx2 6 GPIO_ACTIVE_HIGH>;
 	};
-- 
2.43.0


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

* Re: [PATCH] ARM: dts: samsung: exynos4210-universal_c210: fix BCM4330 Bluetooth GPIOs
  2026-10-26 10:36 ` [PATCH] ARM: dts: samsung: exynos4210-universal_c210: fix BCM4330 Bluetooth GPIOs Marek Szyprowski
@ 2026-11-02 12:26   ` Krzysztof Kozlowski
  2026-11-02 12:43     ` Marek Szyprowski
  0 siblings, 1 reply; 3+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-02 12:26 UTC (permalink / raw)
  To: Marek Szyprowski, linux-samsung-soc
  Cc: Krzysztof Kozlowski, Peter Griffin, Alim Akhtar, stable

On 26/10/2026 11:36, Marek Szyprowski wrote:
> BT_REG_ON (BT_EN) line of the BCM4330 WLAN/BT combo chip is connected to
> the XMMC1CMD pad (GPK1[1]), while the XMDMADDR_4 pad (GPE1[4]) is
> connected to BT_RST (BT_nRST). The Bluetooth node however used GPE1[4]
> as shutdown-gpios and left the real BT_REG_ON line undriven, so it was
> kept low by the default SoC pull-down.
> 
> This worked only by accident: the internal regulators of the BCM4330 are
> enabled when either WL_REG_ON or BT_REG_ON is high, so the Bluetooth core
> was powered via WL_REG_ON driven by the SDIO WLAN power sequence, while
> toggling GPE1[4] only released it from reset. Once 'cap-power-off-card'
> was added to the SDIO node, the MMC core started to power off the WLAN
> part (asserting WL_REG_ON low) whenever it was idle, what cut off the
> Bluetooth power as well and resulted in HCI command timeouts.
> 
> Fix this by using GPK1[1] as shutdown-gpios and describing GPE1[4] as
> active-low reset-gpios. While touching this, move the GPE1[4] pin
> configuration to the pinctrl_0 node, as GPE1 bank belongs to that pin
> controller, what fixes the following error:
> 
>   samsung-pinctrl 11000000.pinctrl: does not have pin group gpe1-4
> 
> Fixes: 8929d4a9d204 ("ARM: dts: exynos: Enable BlueTooth support for Universal C210 board")

Unknown SHA.

Best regards,
Krzysztof

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

* Re: [PATCH] ARM: dts: samsung: exynos4210-universal_c210: fix BCM4330 Bluetooth GPIOs
  2026-11-02 12:26   ` Krzysztof Kozlowski
@ 2026-11-02 12:43     ` Marek Szyprowski
  0 siblings, 0 replies; 3+ messages in thread
From: Marek Szyprowski @ 2026-11-02 12:43 UTC (permalink / raw)
  To: Krzysztof Kozlowski, linux-samsung-soc
  Cc: Krzysztof Kozlowski, Peter Griffin, Alim Akhtar, stable

On 02.11.2026 13:26, Krzysztof Kozlowski wrote:
> On 26/10/2026 11:36, Marek Szyprowski wrote:
>> BT_REG_ON (BT_EN) line of the BCM4330 WLAN/BT combo chip is connected to
>> the XMMC1CMD pad (GPK1[1]), while the XMDMADDR_4 pad (GPE1[4]) is
>> connected to BT_RST (BT_nRST). The Bluetooth node however used GPE1[4]
>> as shutdown-gpios and left the real BT_REG_ON line undriven, so it was
>> kept low by the default SoC pull-down.
>>
>> This worked only by accident: the internal regulators of the BCM4330 are
>> enabled when either WL_REG_ON or BT_REG_ON is high, so the Bluetooth core
>> was powered via WL_REG_ON driven by the SDIO WLAN power sequence, while
>> toggling GPE1[4] only released it from reset. Once 'cap-power-off-card'
>> was added to the SDIO node, the MMC core started to power off the WLAN
>> part (asserting WL_REG_ON low) whenever it was idle, what cut off the
>> Bluetooth power as well and resulted in HCI command timeouts.
>>
>> Fix this by using GPK1[1] as shutdown-gpios and describing GPE1[4] as
>> active-low reset-gpios. While touching this, move the GPE1[4] pin
>> configuration to the pinctrl_0 node, as GPE1 bank belongs to that pin
>> controller, what fixes the following error:
>>
>>   samsung-pinctrl 11000000.pinctrl: does not have pin group gpe1-4
>>
>> Fixes: 8929d4a9d204 ("ARM: dts: exynos: Enable BlueTooth support for Universal C210 board")
> Unknown SHA.

Fixes: 4e7787929854 ("ARM: dts: exynos: Enable Bluetooth support for Universal C210 board")

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland


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

end of thread, other threads:[~2026-11-02 12:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CGME20261026103612eucas1p10fbe3777394cc604419299509c22a2e7@eucas1p1.samsung.com>
2026-10-26 10:36 ` [PATCH] ARM: dts: samsung: exynos4210-universal_c210: fix BCM4330 Bluetooth GPIOs Marek Szyprowski
2026-11-02 12:26   ` Krzysztof Kozlowski
2026-11-02 12:43     ` Marek Szyprowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox