ARM: dts: Add fake CTS signal to pi3-miniuart-bt
authorPhil Elwell <phil@raspberrypi.org>
Wed, 1 Nov 2017 12:24:28 +0000 (12:24 +0000)
committerRaspbian kernel package updater <root@raspbian.org>
Sat, 31 Mar 2018 14:57:24 +0000 (15:57 +0100)
The Pi 3B rev 1.3 and the Pi Zero W have flow control signals to the
BT modem, which work well using UART0 (a.k.a. ttyAMA0). Because of
this, the pin wired to the modem's CTS line has to be held low in
order for it to transmit data.

Unfortunately the mini-UART (or its driver) appears to have a flow
control issue, causing hciattach to stall during modem initialisation.

As a workaround (potentially short-term), configure GPIO 31 as an
output driving low (the default state for an output).

See: https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=138223&start=100#p1228339

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts

index 18f77453c38dbbf33f3726a5b4cce15b9f20f390..98381656945f5b84d96b9e496366b99109b4fbe7 100644 (file)
@@ -31,7 +31,7 @@
                target = <&uart1>;
                __overlay__ {
                        pinctrl-names = "default";
-                       pinctrl-0 = <&uart1_pins &bt_pins>;
+                       pinctrl-0 = <&uart1_pins &bt_pins &fake_bt_cts>;
                        status = "okay";
                };
        };
        };
 
        fragment@4 {
+               target = <&gpio>;
+               __overlay__ {
+                       fake_bt_cts: fake_bt_cts {
+                               brcm,pins = <31>;
+                               brcm,function = <1>; /* output */
+                       };
+               };
+       };
+
+       fragment@5 {
                target-path = "/aliases";
                __overlay__ {
                        serial0 = "/soc/serial@7e201000";