Improvements for the Raspberry Pi 3+, Fixes and minor improvements to Raspberry Pi 2/3
This commit is contained in:
parent
8b84f3eb40
commit
494688df84
31
bcm2837-enable-pmu.patch
Normal file
31
bcm2837-enable-pmu.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From 69e52712002cb6768b894cde9620fb426fd8728d Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Date: Fri, 16 Mar 2018 21:49:37 +0100
|
||||
Subject: [PATCH] ARM: dts: bcm2837: Enable PMU on Raspberry Pi 3
|
||||
|
||||
This enables the PMU (performance monitoring unit) on Raspberry Pi 3.
|
||||
In order to make it work on ARM and ARM64, we need to specify two
|
||||
compatible strings.
|
||||
|
||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
---
|
||||
arch/arm/boot/dts/bcm2837.dtsi | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi
|
||||
index 7704bb029605..1f5e5c782835 100644
|
||||
--- a/arch/arm/boot/dts/bcm2837.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm2837.dtsi
|
||||
@@ -17,6 +17,12 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ arm-pmu {
|
||||
+ compatible = "arm,cortex-a53-pmu", "arm,cortex-a7-pmu";
|
||||
+ interrupt-parent = <&local_intc>;
|
||||
+ interrupts = <9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ };
|
||||
+
|
||||
timer {
|
||||
compatible = "arm,armv7-timer";
|
||||
interrupt-parent = <&local_intc>;
|
@ -636,3 +636,72 @@ index 3e4ed7c5b0b3..0b31d995a066 100644
|
||||
/* uart0 communicates with the BT module */
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
From 257f497bb3e58f88500971145761ed55428618eb Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Date: Wed, 7 Mar 2018 15:56:20 +0100
|
||||
Subject: [PATCH] ARM: dts: bcm2837: Add missing GPIOs of Expander
|
||||
|
||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
---
|
||||
arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 20 +++++++++++++++++++-
|
||||
1 file changed, 19 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
|
||||
index 0b31d995a066..3e87ed05918e 100644
|
||||
--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
|
||||
@@ -20,9 +20,14 @@
|
||||
|
||||
leds {
|
||||
act {
|
||||
- gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
+ gpios = <&expgpio 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ wifi_pwrseq: wifi-pwrseq {
|
||||
+ compatible = "mmc-pwrseq-simple";
|
||||
+ reset-gpios = <&expgpio 1 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
};
|
||||
|
||||
&firmware {
|
||||
@@ -42,6 +47,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&hdmi {
|
||||
+ hpd-gpios = <&expgpio 4 GPIO_ACTIVE_LOW>;
|
||||
+};
|
||||
+
|
||||
/* uart0 communicates with the BT module */
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
@@ -51,6 +60,7 @@
|
||||
bluetooth {
|
||||
compatible = "brcm,bcm43438-bt";
|
||||
max-speed = <2000000>;
|
||||
+ shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -63,11 +73,19 @@
|
||||
|
||||
/* SDHCI is used to control the SDIO for wireless */
|
||||
&sdhci {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_gpio34>;
|
||||
status = "okay";
|
||||
bus-width = <4>;
|
||||
non-removable;
|
||||
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||
+
|
||||
+ brcmf: wifi@1 {
|
||||
+ reg = <1>;
|
||||
+ compatible = "brcm,bcm4329-fmac";
|
||||
+ };
|
||||
};
|
||||
|
||||
/* SDHOST is used to drive the SD card */
|
108
bcm2837-lan78xx-fixes.patch
Normal file
108
bcm2837-lan78xx-fixes.patch
Normal file
@ -0,0 +1,108 @@
|
||||
From 6ed88d188a8240ba44da6578eab7d17e036d0e61 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Tue, 17 Oct 2017 15:04:29 +0100
|
||||
Subject: [PATCH] lan78xx: Enable LEDs if no valid EEPROM or OTP
|
||||
|
||||
For applications of the LAN78xx that don't have valid programmed
|
||||
EEPROMs or OTPs, enabling both LEDs by default seems reasonable.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/net/usb/lan78xx.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
|
||||
index a21039852f8d..cd20ce4ed87d 100644
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2414,6 +2414,12 @@ static int lan78xx_reset(struct lan78xx_net *dev)
|
||||
|
||||
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
|
||||
buf |= HW_CFG_MEF_;
|
||||
+
|
||||
+ /* If no valid EEPROM and no valid OTP, enable the LEDs by default */
|
||||
+ if (lan78xx_read_eeprom(dev, 0, 0, NULL) &&
|
||||
+ lan78xx_read_otp(dev, 0, 0, NULL))
|
||||
+ buf |= HW_CFG_LED0_EN_ | HW_CFG_LED1_EN_;
|
||||
+
|
||||
ret = lan78xx_write_reg(dev, HW_CFG, buf);
|
||||
|
||||
ret = lan78xx_read_reg(dev, USB_CFG0, &buf);
|
||||
From f8a798bb45ae15cbec980c8e921eb377fd1a3df6 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Tue, 28 Nov 2017 12:02:37 +0000
|
||||
Subject: [PATCH] lan78xx: Correctly indicate invalid OTP
|
||||
|
||||
lan78xx_read_otp tries to return -EINVAL in the event of invalid OTP
|
||||
content, but the value gets overwritten before it is returned and the
|
||||
read goes ahead anyway. Make the read conditional as it should be
|
||||
and preserve the error code.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/net/usb/lan78xx.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
|
||||
index cd20ce4ed87d..b270935f3f8d 100644
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -929,7 +929,8 @@ static int lan78xx_read_otp(struct lan78xx_net *dev, u32 offset,
|
||||
offset += 0x100;
|
||||
else
|
||||
ret = -EINVAL;
|
||||
- ret = lan78xx_read_raw_otp(dev, offset, length, data);
|
||||
+ if (!ret)
|
||||
+ ret = lan78xx_read_raw_otp(dev, offset, length, data);
|
||||
}
|
||||
|
||||
return ret;
|
||||
From 4a4710f3847cd087e150f83382dffd92e09d9914 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Sat, 17 Mar 2018 00:10:02 +0100
|
||||
Subject: [PATCH] lan78xx: Read MAC address from DT if present
|
||||
|
||||
There is a standard mechanism for locating and using a MAC address from
|
||||
the Device Tree. Use this facility in the lan78xx driver to support
|
||||
applications without programmed EEPROM or OTP.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/net/usb/lan78xx.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
|
||||
index 60a604cc7647..a21039852f8d 100644
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <linux/irq.h>
|
||||
#include <linux/irqchip/chained_irq.h>
|
||||
#include <linux/microchipphy.h>
|
||||
+#include <linux/of_net.h>
|
||||
#include <linux/phy.h>
|
||||
#include "lan78xx.h"
|
||||
|
||||
@@ -1639,6 +1640,14 @@ static void lan78xx_init_mac_address(struct lan78xx_net *dev)
|
||||
u32 addr_lo, addr_hi;
|
||||
int ret;
|
||||
u8 addr[6];
|
||||
+ const u8 *mac_addr;
|
||||
+
|
||||
+ /* maybe the boot loader passed the MAC address in devicetree */
|
||||
+ mac_addr = of_get_mac_address(dev->udev->dev.of_node);
|
||||
+ if (mac_addr) {
|
||||
+ ether_addr_copy(addr, mac_addr);
|
||||
+ goto set_mac_addr;
|
||||
+ }
|
||||
|
||||
ret = lan78xx_read_reg(dev, RX_ADDRL, &addr_lo);
|
||||
ret = lan78xx_read_reg(dev, RX_ADDRH, &addr_hi);
|
||||
@@ -1667,6 +1676,7 @@ static void lan78xx_init_mac_address(struct lan78xx_net *dev)
|
||||
"MAC address set to random addr");
|
||||
}
|
||||
|
||||
+set_mac_addr:
|
||||
addr_lo = addr[0] | (addr[1] << 8) |
|
||||
(addr[2] << 16) | (addr[3] << 24);
|
||||
addr_hi = addr[4] | (addr[5] << 8);
|
@ -1,22 +1,60 @@
|
||||
From 383c32f69af61774ff3414f98c9bc29f28dca8fa Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Mon, 19 Mar 2018 09:26:57 +0000
|
||||
Subject: [PATCH] rpi: initial support for the 3+
|
||||
From defa4876ece55751c691d17ffc928d9bfe049585 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Date: Fri, 16 Mar 2018 22:56:59 +0100
|
||||
Subject: [PATCH] arm64: dts: broadcom: Add reference to Raspberry Pi 3 B+
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
This adds a reference to the dts file of the Raspberry Pi 3 B+
|
||||
|
||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
---
|
||||
arch/arm/boot/dts/Makefile | 1 +
|
||||
arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 62 ++++++++++++++++++++++
|
||||
arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi | 36 +++++++++++++
|
||||
arch/arm64/boot/dts/broadcom/Makefile | 4 +-
|
||||
.../boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts | 2 +
|
||||
5 files changed, 104 insertions(+), 1 deletion(-)
|
||||
create mode 100644 arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
||||
create mode 100644 arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi
|
||||
arch/arm64/boot/dts/broadcom/Makefile | 3 ++-
|
||||
arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts | 2 ++
|
||||
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||
create mode 100644 arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
|
||||
index 2a2591ef1fee..1193a9e34bbb 100644
|
||||
--- a/arch/arm64/boot/dts/broadcom/Makefile
|
||||
+++ b/arch/arm64/boot/dts/broadcom/Makefile
|
||||
@@ -1,5 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
-dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb
|
||||
+dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb \
|
||||
+ bcm2837-rpi-3-b-plus.dtb
|
||||
|
||||
subdir-y += northstar2
|
||||
subdir-y += stingray
|
||||
diff --git a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts
|
||||
new file mode 100644
|
||||
index 000000000000..46ad2023cccf
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts
|
||||
@@ -0,0 +1,2 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+#include "arm/bcm2837-rpi-3-b-plus.dts"
|
||||
|
||||
From c7c06c54087dfadd065abcba0b7f614f7a88d549 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Fri, 16 Mar 2018 22:42:28 +0100
|
||||
Subject: [PATCH] ARM: dts: bcm2837: Add Raspberry Pi 3 B+
|
||||
|
||||
The Raspberry Pi 3 B+ has the following major differences compared
|
||||
to the model 3 B:
|
||||
* Microchip LAN7515 (Gigabit Ethernet)
|
||||
* Cypress CYW43455 (802.11ac and BT 4.2)
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
---
|
||||
arch/arm/boot/dts/Makefile | 1 +
|
||||
arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 102 +++++++++++++++++++++++++++++
|
||||
arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi | 27 ++++++++
|
||||
3 files changed, 130 insertions(+)
|
||||
create mode 100644 arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
||||
create mode 100644 arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi
|
||||
|
||||
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
||||
index ade7a38543dc..05b49935d84b 100644
|
||||
index 3b471e6787ff..dee85f848de9 100644
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -75,6 +75,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
|
||||
@ -29,10 +67,10 @@ index ade7a38543dc..05b49935d84b 100644
|
||||
dtb-$(CONFIG_ARCH_BCM_5301X) += \
|
||||
diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
||||
new file mode 100644
|
||||
index 000000000000..63ff6bc56e36
|
||||
index 000000000000..fb9f6f7e965c
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
||||
@@ -0,0 +1,62 @@
|
||||
@@ -0,0 +1,102 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/dts-v1/;
|
||||
+#include "bcm2837.dtsi"
|
||||
@ -55,9 +93,40 @@ index 000000000000..63ff6bc56e36
|
||||
+
|
||||
+ leds {
|
||||
+ act {
|
||||
+ gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
+ gpios = <&gpio 29 0>;
|
||||
+ };
|
||||
+
|
||||
+ pwr {
|
||||
+ label = "PWR";
|
||||
+ gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ wifi_pwrseq: wifi-pwrseq {
|
||||
+ compatible = "mmc-pwrseq-simple";
|
||||
+ reset-gpios = <&expgpio 1 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&firmware {
|
||||
+ expgpio: gpio {
|
||||
+ compatible = "raspberrypi,firmware-gpio";
|
||||
+ gpio-controller;
|
||||
+ #gpio-cells = <2>;
|
||||
+ gpio-line-names = "BT_ON",
|
||||
+ "WL_ON",
|
||||
+ "STATUS_LED",
|
||||
+ "LAN_RUN",
|
||||
+ "",
|
||||
+ "CAM_GPIO0",
|
||||
+ "CAM_GPIO1",
|
||||
+ "";
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&hdmi {
|
||||
+ hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
|
||||
+};
|
||||
+
|
||||
+/* uart0 communicates with the BT module */
|
||||
@ -69,6 +138,7 @@ index 000000000000..63ff6bc56e36
|
||||
+ bluetooth {
|
||||
+ compatible = "brcm,bcm43438-bt";
|
||||
+ max-speed = <2000000>;
|
||||
+ shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
@ -81,11 +151,19 @@ index 000000000000..63ff6bc56e36
|
||||
+
|
||||
+/* SDHCI is used to control the SDIO for wireless */
|
||||
+&sdhci {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&emmc_gpio34>;
|
||||
+ status = "okay";
|
||||
+ bus-width = <4>;
|
||||
+ non-removable;
|
||||
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||
+
|
||||
+ brcmf: wifi@1 {
|
||||
+ reg = <1>;
|
||||
+ compatible = "brcm,bcm4329-fmac";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+/* SDHOST is used to drive the SD card */
|
||||
@ -97,10 +175,11 @@ index 000000000000..63ff6bc56e36
|
||||
+};
|
||||
diff --git a/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi b/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi
|
||||
new file mode 100644
|
||||
index 000000000000..1b1075d4aa5c
|
||||
index 000000000000..169203c5ce8b
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi
|
||||
@@ -0,0 +1,36 @@
|
||||
@@ -0,0 +1,27 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/ {
|
||||
+ aliases {
|
||||
+ ethernet0 = ðernet;
|
||||
@ -123,93 +202,8 @@ index 000000000000..1b1075d4aa5c
|
||||
+ ethernet: usbether@1 {
|
||||
+ compatible = "usb424,7800";
|
||||
+ reg = <1>;
|
||||
+ microchip,eee-enabled;
|
||||
+ microchip,tx-lpi-timer = <600>; /* non-aggressive*/
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+
|
||||
+/ {
|
||||
+ __overrides__ {
|
||||
+ eee = <ðernet>,"microchip,eee-enabled?";
|
||||
+ tx_lpi_timer = <ðernet>,"microchip,tx-lpi-timer:0";
|
||||
+ };
|
||||
+};
|
||||
diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
|
||||
index 2a2591ef1fee..6b5b70542dad 100644
|
||||
--- a/arch/arm64/boot/dts/broadcom/Makefile
|
||||
+++ b/arch/arm64/boot/dts/broadcom/Makefile
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
-dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb
|
||||
+dtb-$(CONFIG_ARCH_BCM2835) += \
|
||||
+ bcm2837-rpi-3-b.dtb \
|
||||
+ bcm2837-rpi-3-b-plus.dtb
|
||||
|
||||
subdir-y += northstar2
|
||||
subdir-y += stingray
|
||||
diff --git a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts
|
||||
new file mode 100644
|
||||
index 000000000000..46ad2023cccf
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts
|
||||
@@ -0,0 +1,2 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+#include "arm/bcm2837-rpi-3-b-plus.dts"
|
||||
--
|
||||
2.16.2
|
||||
From patchwork Tue Feb 20 12:19:35 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: [v5,5/5] ARM: dts: bcm2837-rpi-3-b: add GPIO expander
|
||||
From: Baruch Siach <baruch@tkos.co.il>
|
||||
X-Patchwork-Id: 10229995
|
||||
Message-Id: <a6d59692dc4847e0b1639a26542e28c95ad5240f.1519128054.git.baruch@tkos.co.il>
|
||||
To: Linus Walleij <linus.walleij@linaro.org>,
|
||||
Dave Stevenson <dave.stevenson@raspberrypi.org>,
|
||||
Eric Anholt <eric@anholt.net>, Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Cc: devicetree@vger.kernel.org, Baruch Siach <baruch@tkos.co.il>,
|
||||
linux-gpio@vger.kernel.org, Michael Zoran <mzoran@crowfest.net>,
|
||||
Rob Herring <robh+dt@kernel.org>, linux-rpi-kernel@lists.infradead.org,
|
||||
Frank Rowand <frowand.list@gmail.com>, linux-arm-kernel@lists.infradead.org
|
||||
Date: Tue, 20 Feb 2018 14:19:35 +0200
|
||||
|
||||
Add a description of the RPi3 GPIO expander that the VC4 firmware controls.
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 17 +++++++++++++++++
|
||||
1 file changed, 17 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
||||
index 3e4ed7c5b0b3..0b31d995a066 100644
|
||||
--- a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
||||
@@ -25,6 +25,23 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&firmware {
|
||||
+ expgpio: gpio {
|
||||
+ compatible = "raspberrypi,firmware-gpio";
|
||||
+ gpio-controller;
|
||||
+ #gpio-cells = <2>;
|
||||
+ gpio-line-names = "BT_ON",
|
||||
+ "WL_ON",
|
||||
+ "STATUS_LED",
|
||||
+ "LAN_RUN",
|
||||
+ "HPD_N",
|
||||
+ "CAM_GPIO0",
|
||||
+ "CAM_GPIO1",
|
||||
+ "PWR_LOW_N";
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
/* uart0 communicates with the BT module */
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
|
||||
|
98
bcm283x-clk-audio-fixes.patch
Normal file
98
bcm283x-clk-audio-fixes.patch
Normal file
@ -0,0 +1,98 @@
|
||||
From aa964d59aab2cb04bc011ffd370822ac79f82a0b Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@bootlin.com>
|
||||
Date: Wed, 7 Mar 2018 15:39:17 +0100
|
||||
Subject: [PATCH] clk: bcm2835: De-assert/assert PLL reset signal when
|
||||
appropriate
|
||||
|
||||
In order to enable a PLL, not only the PLL has to be powered up and
|
||||
locked, but you also have to de-assert the reset signal. The last part
|
||||
was missing. Add it so PLLs that were not enabled by the FW/bootloader
|
||||
can be enabled from Linux.
|
||||
|
||||
Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks")
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
|
||||
---
|
||||
drivers/clk/bcm/clk-bcm2835.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
|
||||
index a07f6451694a..6c5d4a8e426c 100644
|
||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||
@@ -602,6 +602,9 @@ static void bcm2835_pll_off(struct clk_hw *hw)
|
||||
const struct bcm2835_pll_data *data = pll->data;
|
||||
|
||||
spin_lock(&cprman->regs_lock);
|
||||
+ cprman_write(cprman, data->a2w_ctrl_reg,
|
||||
+ cprman_read(cprman, data->a2w_ctrl_reg) &
|
||||
+ ~A2W_PLL_CTRL_PRST_DISABLE);
|
||||
cprman_write(cprman, data->cm_ctrl_reg,
|
||||
cprman_read(cprman, data->cm_ctrl_reg) |
|
||||
CM_PLL_ANARST);
|
||||
@@ -640,6 +643,10 @@ static int bcm2835_pll_on(struct clk_hw *hw)
|
||||
cpu_relax();
|
||||
}
|
||||
|
||||
+ cprman_write(cprman, data->a2w_ctrl_reg,
|
||||
+ cprman_read(cprman, data->a2w_ctrl_reg) |
|
||||
+ A2W_PLL_CTRL_PRST_DISABLE);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
From 1b6867ee05d84cc6ec23b5ec0b78684187d3190a Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@bootlin.com>
|
||||
Date: Wed, 7 Mar 2018 15:41:14 +0100
|
||||
Subject: [PATCH] clk: bcm2835: Make sure the PLL is gated before changing its
|
||||
rate
|
||||
|
||||
All bcm2835 PLLs should be gated before their rate can be changed.
|
||||
Setting CLK_SET_RATE_GATE will let the core enforce that, but this is
|
||||
not enough to make the code work in all situations. Indeed, the
|
||||
CLK_SET_RATE_GATE flag prevents a user from changing the rate while
|
||||
the clock is enabled, but this check only guarantees there's no Linux
|
||||
users. In our case, the clock might have been enabled by the
|
||||
bootloader/FW, and, because we have CLK_IGNORE_UNUSED set, Linux never
|
||||
disables the PLL. So we have to make sure the PLL is actually disabled
|
||||
before changing the rate.
|
||||
|
||||
Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks")
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
|
||||
---
|
||||
drivers/clk/bcm/clk-bcm2835.c | 14 +++++++++++++-
|
||||
1 file changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
|
||||
index 6c5d4a8e426c..051ce769c109 100644
|
||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||
@@ -678,6 +678,18 @@ static int bcm2835_pll_set_rate(struct clk_hw *hw,
|
||||
u32 ana[4];
|
||||
int i;
|
||||
|
||||
+ /*
|
||||
+ * Normally, the CLK_SET_RATE_GATE flag prevents a user from changing
|
||||
+ * the rate while the clock is enabled, but this check only makes sure
|
||||
+ * there's no Linux users.
|
||||
+ * In our case, the clock might have been enabled by the bootloader/FW,
|
||||
+ * and, since CLK_IGNORE_UNUSED flag is set, Linux never disables it.
|
||||
+ * So we have to make sure the clk is actually disabled before changing
|
||||
+ * the rate.
|
||||
+ */
|
||||
+ if (bcm2835_pll_is_on(hw))
|
||||
+ bcm2835_pll_off(hw);
|
||||
+
|
||||
if (rate > data->max_fb_rate) {
|
||||
use_fb_prediv = true;
|
||||
rate /= 2;
|
||||
@@ -1318,7 +1330,7 @@ static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
|
||||
init.num_parents = 1;
|
||||
init.name = data->name;
|
||||
init.ops = &bcm2835_pll_clk_ops;
|
||||
- init.flags = CLK_IGNORE_UNUSED;
|
||||
+ init.flags = CLK_IGNORE_UNUSED | CLK_SET_RATE_GATE;
|
||||
|
||||
pll = kzalloc(sizeof(*pll), GFP_KERNEL);
|
||||
if (!pll)
|
24
kernel.spec
24
kernel.spec
@ -588,9 +588,6 @@ Patch305: qcom-msm89xx-fixes.patch
|
||||
# https://patchwork.kernel.org/patch/10173115/
|
||||
Patch306: arm-dts-imx6qdl-udoo-Disable-usbh1-to-avoid-kernel-hang.patch
|
||||
|
||||
# Fix USB on the RPi https://patchwork.kernel.org/patch/9879371/
|
||||
Patch307: bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch
|
||||
|
||||
# http://patches.linaro.org/patch/131764/
|
||||
Patch308: wcn36xx-Fix-firmware-crash-due-to-corrupted-buffer-address.patch
|
||||
|
||||
@ -600,18 +597,25 @@ Patch309: wcn36xx-reduce-verbosity-of-drivers-messages.patch
|
||||
# https://www.spinics.net/lists/arm-kernel/msg632925.html
|
||||
Patch313: arm-crypto-sunxi-ss-Add-MODULE_ALIAS-to-sun4i-ss.patch
|
||||
|
||||
Patch314: bcm283x-gpio-expander.patch
|
||||
# Fix USB on the RPi https://patchwork.kernel.org/patch/9879371/
|
||||
Patch320: bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch
|
||||
|
||||
# https://www.spinics.net/lists/arm-kernel/msg621982.html
|
||||
Patch315: bcm283x-Fix-probing-of-bcm2835-i2s.patch
|
||||
Patch321: bcm283x-Fix-probing-of-bcm2835-i2s.patch
|
||||
|
||||
# https://www.spinics.net/lists/arm-kernel/msg633942.html
|
||||
Patch316: mmc-sdhci-iproc-Disable-preset-values-for-BCM2835.patch
|
||||
Patch322: mmc-sdhci-iproc-Disable-preset-values-for-BCM2835.patch
|
||||
|
||||
# https://www.spinics.net/lists/arm-kernel/msg633945.html
|
||||
Patch317: bcm2835-hwrng-Handle-deferred-clock-properly.patch
|
||||
Patch323: bcm2835-hwrng-Handle-deferred-clock-properly.patch
|
||||
|
||||
Patch318: bcm2837-rpi-initial-support-for-the-3.patch
|
||||
Patch324: bcm283x-clk-audio-fixes.patch
|
||||
|
||||
# Enabling Patches for the RPi3+
|
||||
Patch330: bcm2837-rpi-initial-support-for-the-3.patch
|
||||
Patch331: bcm2837-gpio-expander.patch
|
||||
Patch332: bcm2837-enable-pmu.patch
|
||||
Patch333: bcm2837-lan78xx-fixes.patch
|
||||
|
||||
# 400 - IBM (ppc/s390x) patches
|
||||
|
||||
@ -1878,6 +1882,10 @@ fi
|
||||
#
|
||||
#
|
||||
%changelog
|
||||
* Mon Apr 2 2018 Peter Robinson <pbrobinson@fedoraproject.org>
|
||||
- Improvements for the Raspberry Pi 3+
|
||||
- Fixes and minor improvements to Raspberry Pi 2/3
|
||||
|
||||
* Mon Apr 02 2018 Jeremy Cline <jeremy@jcline.org> - 4.16.0-1
|
||||
- Linux v4.16
|
||||
- Disable debugging options.
|
||||
|
Loading…
Reference in New Issue
Block a user