summaryrefslogtreecommitdiffstats
path: root/bcm2835-fix-bluetooth.patch
diff options
context:
space:
mode:
Diffstat (limited to 'bcm2835-fix-bluetooth.patch')
-rw-r--r--bcm2835-fix-bluetooth.patch109
1 files changed, 109 insertions, 0 deletions
diff --git a/bcm2835-fix-bluetooth.patch b/bcm2835-fix-bluetooth.patch
new file mode 100644
index 000000000..fd11078fe
--- /dev/null
+++ b/bcm2835-fix-bluetooth.patch
@@ -0,0 +1,109 @@
+From patchwork Sun Feb 25 14:10:52 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [1/4] Bluetooth: hci_bcm: Make shutdown and device wake GPIO optional
+From: Stefan Wahren <stefan.wahren@i2se.com>
+X-Patchwork-Id: 10240917
+Message-Id: <1519567855-26105-2-git-send-email-stefan.wahren@i2se.com>
+To: Loic Poulain <loic.poulain@gmail.com>,
+ =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Danis?= <frederic.danis.oss@gmail.com>,
+ Marcel Holtmann <marcel@holtmann.org>,
+ Johan Hedberg <johan.hedberg@gmail.com>, Eric Anholt <eric@anholt.net>,
+ Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>
+Cc: Stefan Wahren <stefan.wahren@i2se.com>, devicetree@vger.kernel.org,
+ Florian Fainelli <f.fainelli@gmail.com>,
+ Phil Elwell <phil@raspberrypi.org>,
+ linux-bluetooth@vger.kernel.org, Lukas Wunner <lukas@wunner.de>,
+ linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org
+Date: Sun, 25 Feb 2018 15:10:52 +0100
+
+According to the devicetree binding the shutdown and device wake
+GPIOs are optional. Since commit 3e81a4ca51a1 ("Bluetooth: hci_bcm:
+Mandate presence of shutdown and device wake GPIO") this driver
+won't probe anymore on Raspberry Pi 3 and Zero W (no device wake GPIO
+connected). So fix this regression by reverting this commit partially.
+
+Cc: Lukas Wunner <lukas@wunner.de>
+Fixes: 3e81a4ca51a1 ("Bluetooth: hci_bcm: Mandate presence of shutdown and device wake GPIO")
+Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
+---
+ drivers/bluetooth/hci_bcm.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
+index 0438a64..f8728eb 100644
+--- a/drivers/bluetooth/hci_bcm.c
++++ b/drivers/bluetooth/hci_bcm.c
+@@ -922,12 +922,14 @@ static int bcm_get_resources(struct bcm_device *dev)
+
+ dev->clk = devm_clk_get(dev->dev, NULL);
+
+- dev->device_wakeup = devm_gpiod_get(dev->dev, "device-wakeup",
+- GPIOD_OUT_LOW);
++ dev->device_wakeup = devm_gpiod_get_optional(dev->dev,
++ "device-wakeup",
++ GPIOD_OUT_LOW);
+ if (IS_ERR(dev->device_wakeup))
+ return PTR_ERR(dev->device_wakeup);
+
+- dev->shutdown = devm_gpiod_get(dev->dev, "shutdown", GPIOD_OUT_LOW);
++ dev->shutdown = devm_gpiod_get_optional(dev->dev, "shutdown",
++ GPIOD_OUT_LOW);
+ if (IS_ERR(dev->shutdown))
+ return PTR_ERR(dev->shutdown);
+
+From patchwork Sun Feb 25 14:10:53 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [2/4] ARM: dts: bcm283x: Apply pull settings to Zero W relevant groups
+From: Stefan Wahren <stefan.wahren@i2se.com>
+X-Patchwork-Id: 10240919
+Message-Id: <1519567855-26105-3-git-send-email-stefan.wahren@i2se.com>
+To: Loic Poulain <loic.poulain@gmail.com>,
+ =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Danis?= <frederic.danis.oss@gmail.com>,
+ Marcel Holtmann <marcel@holtmann.org>,
+ Johan Hedberg <johan.hedberg@gmail.com>, Eric Anholt <eric@anholt.net>,
+ Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>
+Cc: Stefan Wahren <stefan.wahren@i2se.com>, devicetree@vger.kernel.org,
+ Florian Fainelli <f.fainelli@gmail.com>,
+ Phil Elwell <phil@raspberrypi.org>,
+ linux-bluetooth@vger.kernel.org, Lukas Wunner <lukas@wunner.de>,
+ linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org
+Date: Sun, 25 Feb 2018 15:10:53 +0100
+
+Instead of keeping the firmware's pull settings, we better apply
+them via the devicetree pin control. Start with the RPi Zero W relevant
+first to keep the effort low.
+
+Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
+---
+ arch/arm/boot/dts/bcm283x.dtsi | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
+index 8d9a0df..1a50b67 100644
+--- a/arch/arm/boot/dts/bcm283x.dtsi
++++ b/arch/arm/boot/dts/bcm283x.dtsi
+@@ -223,6 +223,7 @@
+ gpclk2_gpio43: gpclk2_gpio43 {
+ brcm,pins = <43>;
+ brcm,function = <BCM2835_FSEL_ALT0>;
++ brcm,pull = <BCM2835_PUD_OFF>;
+ };
+
+ i2c0_gpio0: i2c0_gpio0 {
+@@ -335,10 +336,12 @@
+ uart0_ctsrts_gpio30: uart0_ctsrts_gpio30 {
+ brcm,pins = <30 31>;
+ brcm,function = <BCM2835_FSEL_ALT3>;
++ brcm,pull = <BCM2835_PUD_UP BCM2835_PUD_OFF>;
+ };
+ uart0_gpio32: uart0_gpio32 {
+ brcm,pins = <32 33>;
+ brcm,function = <BCM2835_FSEL_ALT3>;
++ brcm,pull = <BCM2835_PUD_OFF BCM2835_PUD_UP>;
+ };
+ uart0_gpio36: uart0_gpio36 {
+ brcm,pins = <36 37>;