* [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