fixes for Marvell a37xx EspressoBin, latest RPi3+ patches, rebase fixes for lan78xx
This commit is contained in:
parent
fa7ce1c7b8
commit
215fbf0212
@ -1,79 +1,452 @@
|
||||
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
|
||||
From bce4fe9fa48df0cbbe842e80d9a520f7265b4cd4 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
Date: Wed, 4 Apr 2018 16:34:24 +0100
|
||||
Subject: [PATCH 5/9] net: lan78xx: Allow for VLAN headers in timeout.
|
||||
|
||||
For applications of the LAN78xx that don't have valid programmed
|
||||
EEPROMs or OTPs, enabling both LEDs by default seems reasonable.
|
||||
The frame abort timeout being set by lan78xx_set_rx_max_frame_length
|
||||
didn't account for any VLAN headers, resulting in very low
|
||||
throughput if used with tagged VLANs.
|
||||
Use VLAN_ETH_HLEN instead of ETH_HLEN to correct for this.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
See https://github.com/raspberrypi/linux/issues/2458
|
||||
|
||||
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
---
|
||||
drivers/net/usb/lan78xx.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
drivers/net/usb/lan78xx.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
|
||||
index a21039852f8d..cd20ce4ed87d 100644
|
||||
index 0867f7275852..5b46998a6dce 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)
|
||||
@@ -2178,7 +2178,7 @@ static int lan78xx_change_mtu(struct net_device *netdev, int new_mtu)
|
||||
if ((ll_mtu % dev->maxpacket) == 0)
|
||||
return -EDOM;
|
||||
|
||||
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_set_rx_max_frame_length(dev, new_mtu + ETH_HLEN);
|
||||
+ ret = lan78xx_set_rx_max_frame_length(dev, new_mtu + VLAN_ETH_HLEN);
|
||||
|
||||
ret = lan78xx_read_reg(dev, USB_CFG0, &buf);
|
||||
From 4a4710f3847cd087e150f83382dffd92e09d9914 Mon Sep 17 00:00:00 2001
|
||||
netdev->mtu = new_mtu;
|
||||
|
||||
@@ -2467,7 +2467,8 @@ static int lan78xx_reset(struct lan78xx_net *dev)
|
||||
buf |= FCT_TX_CTL_EN_;
|
||||
ret = lan78xx_write_reg(dev, FCT_TX_CTL, buf);
|
||||
|
||||
- ret = lan78xx_set_rx_max_frame_length(dev, dev->net->mtu + ETH_HLEN);
|
||||
+ ret = lan78xx_set_rx_max_frame_length(dev,
|
||||
+ dev->net->mtu + VLAN_ETH_HLEN);
|
||||
|
||||
ret = lan78xx_read_reg(dev, MAC_RX, &buf);
|
||||
buf |= MAC_RX_RXEN_;
|
||||
--
|
||||
2.17.0
|
||||
|
||||
From 6fecd97fd35e9c624d101495ca34c83b1cb23e3d Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
Date: Mon, 9 Apr 2018 14:31:54 +0100
|
||||
Subject: [PATCH 6/9] net: lan78xx: Request s/w csum check on VLAN tagged
|
||||
packets.
|
||||
|
||||
There appears to be some issue in the LAN78xx where the checksum
|
||||
computed on a VLAN tagged packet is incorrect, or at least not
|
||||
in the form that the kernel is after. This is most easily shown
|
||||
by pinging a device via a VLAN tagged interface and it will dump
|
||||
out the error message and stack trace from netdev_rx_csum_fault.
|
||||
It has also been seen with standard TCP and UDP packets.
|
||||
|
||||
Until this is fully understood, request that the network stack
|
||||
computes the checksum on packets signalled as having a VLAN tag
|
||||
applied.
|
||||
|
||||
See https://github.com/raspberrypi/linux/issues/2458
|
||||
|
||||
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
---
|
||||
drivers/net/usb/lan78xx.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
|
||||
index 5b46998a6dce..6b61bb21f2ae 100644
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2920,8 +2920,12 @@ static void lan78xx_rx_csum_offload(struct lan78xx_net *dev,
|
||||
struct sk_buff *skb,
|
||||
u32 rx_cmd_a, u32 rx_cmd_b)
|
||||
{
|
||||
+ /* Checksum offload appears to be flawed if used with VLANs.
|
||||
+ * Elect for sw checksum check instead.
|
||||
+ */
|
||||
if (!(dev->net->features & NETIF_F_RXCSUM) ||
|
||||
- unlikely(rx_cmd_a & RX_CMD_A_ICSM_)) {
|
||||
+ unlikely(rx_cmd_a & RX_CMD_A_ICSM_) ||
|
||||
+ (rx_cmd_a & RX_CMD_A_FVTG_)) {
|
||||
skb->ip_summed = CHECKSUM_NONE;
|
||||
} else {
|
||||
skb->csum = ntohs((u16)(rx_cmd_b >> RX_CMD_B_CSUM_SHIFT_));
|
||||
--
|
||||
2.17.0
|
||||
|
||||
From 7528d39c5d01383fadb17a84b9840f9f685d1e0b 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
|
||||
Date: Thu, 19 Apr 2018 17:59:38 +0100
|
||||
Subject: [PATCH 7/9] 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.
|
||||
applications without programmed EEPROM or OTP. At the same time,
|
||||
regularise the handling of the different address sources.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/net/usb/lan78xx.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
drivers/net/usb/lan78xx.c | 42 +++++++++++++++++++--------------------
|
||||
1 file changed, 20 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
|
||||
index 60a604cc7647..a21039852f8d 100644
|
||||
index 6b61bb21f2ae..6c38a74bb32d 100644
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <linux/irq.h>
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <linux/irqchip/chained_irq.h>
|
||||
#include <linux/microchipphy.h>
|
||||
+#include <linux/of_net.h>
|
||||
#include <linux/phy.h>
|
||||
+#include <linux/of_net.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;
|
||||
+ }
|
||||
#define DRIVER_AUTHOR "WOOJUNG HUH <woojung.huh@microchip.com>"
|
||||
@@ -1652,34 +1653,31 @@ static void lan78xx_init_mac_address(struct lan78xx_net *dev)
|
||||
addr[5] = (addr_hi >> 8) & 0xFF;
|
||||
|
||||
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)
|
||||
if (!is_valid_ether_addr(addr)) {
|
||||
- /* reading mac address from EEPROM or OTP */
|
||||
- if ((lan78xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
|
||||
- addr) == 0) ||
|
||||
- (lan78xx_read_otp(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
|
||||
- addr) == 0)) {
|
||||
- if (is_valid_ether_addr(addr)) {
|
||||
- /* eeprom values are valid so use them */
|
||||
- netif_dbg(dev, ifup, dev->net,
|
||||
- "MAC address read from EEPROM");
|
||||
- } else {
|
||||
- /* generate random MAC */
|
||||
- random_ether_addr(addr);
|
||||
- netif_dbg(dev, ifup, dev->net,
|
||||
- "MAC address set to random addr");
|
||||
- }
|
||||
-
|
||||
- addr_lo = addr[0] | (addr[1] << 8) |
|
||||
- (addr[2] << 16) | (addr[3] << 24);
|
||||
- addr_hi = addr[4] | (addr[5] << 8);
|
||||
-
|
||||
- ret = lan78xx_write_reg(dev, RX_ADDRL, addr_lo);
|
||||
- ret = lan78xx_write_reg(dev, RX_ADDRH, addr_hi);
|
||||
+ if (!eth_platform_get_mac_address(&dev->udev->dev, addr)) {
|
||||
+ /* valid address present in Device Tree */
|
||||
+ netif_dbg(dev, ifup, dev->net,
|
||||
+ "MAC address read from Device Tree");
|
||||
+ } else if (((lan78xx_read_eeprom(dev, EEPROM_MAC_OFFSET,
|
||||
+ ETH_ALEN, addr) == 0) ||
|
||||
+ (lan78xx_read_otp(dev, EEPROM_MAC_OFFSET,
|
||||
+ ETH_ALEN, addr) == 0)) &&
|
||||
+ is_valid_ether_addr(addr)) {
|
||||
+ /* eeprom values are valid so use them */
|
||||
+ netif_dbg(dev, ifup, dev->net,
|
||||
+ "MAC address read from EEPROM");
|
||||
} else {
|
||||
/* generate random MAC */
|
||||
random_ether_addr(addr);
|
||||
netif_dbg(dev, ifup, dev->net,
|
||||
"MAC address set to random addr");
|
||||
}
|
||||
+
|
||||
+ addr_lo = addr[0] | (addr[1] << 8) |
|
||||
+ (addr[2] << 16) | (addr[3] << 24);
|
||||
+ addr_hi = addr[4] | (addr[5] << 8);
|
||||
+
|
||||
+ ret = lan78xx_write_reg(dev, RX_ADDRL, addr_lo);
|
||||
+ ret = lan78xx_write_reg(dev, RX_ADDRH, addr_hi);
|
||||
}
|
||||
|
||||
+set_mac_addr:
|
||||
addr_lo = addr[0] | (addr[1] << 8) |
|
||||
(addr[2] << 16) | (addr[3] << 24);
|
||||
addr_hi = addr[4] | (addr[5] << 8);
|
||||
ret = lan78xx_write_reg(dev, MAF_LO(0), addr_lo);
|
||||
--
|
||||
2.17.0
|
||||
|
||||
From f8f9ad43b37f5db5895619e4304aa9ba286cbbb0 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Thu, 19 Apr 2018 17:59:40 +0100
|
||||
Subject: [PATCH 8/9] dt-bindings: Document the DT bindings for lan78xx
|
||||
|
||||
The Microchip LAN78XX family of devices are Ethernet controllers with
|
||||
a USB interface. Despite being discoverable devices it can be useful to
|
||||
be able to configure them from Device Tree, particularly in low-cost
|
||||
applications without an EEPROM or programmed OTP.
|
||||
|
||||
Document the supported properties in a bindings file.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
---
|
||||
.../bindings/net/microchip,lan78xx.txt | 54 +++++++++++++++++++
|
||||
1 file changed, 54 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/net/microchip,lan78xx.txt
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/net/microchip,lan78xx.txt b/Documentation/devicetree/bindings/net/microchip,lan78xx.txt
|
||||
new file mode 100644
|
||||
index 000000000000..76786a0f6d3d
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/net/microchip,lan78xx.txt
|
||||
@@ -0,0 +1,54 @@
|
||||
+Microchip LAN78xx Gigabit Ethernet controller
|
||||
+
|
||||
+The LAN78XX devices are usually configured by programming their OTP or with
|
||||
+an external EEPROM, but some platforms (e.g. Raspberry Pi 3 B+) have neither.
|
||||
+The Device Tree properties, if present, override the OTP and EEPROM.
|
||||
+
|
||||
+Required properties:
|
||||
+- compatible: Should be one of "usb424,7800", "usb424,7801" or "usb424,7850".
|
||||
+
|
||||
+Optional properties:
|
||||
+- local-mac-address: see ethernet.txt
|
||||
+- mac-address: see ethernet.txt
|
||||
+
|
||||
+Optional properties of the embedded PHY:
|
||||
+- microchip,led-modes: a 0..4 element vector, with each element configuring
|
||||
+ the operating mode of an LED. Omitted LEDs are turned off. Allowed values
|
||||
+ are defined in "include/dt-bindings/net/microchip-lan78xx.h".
|
||||
+
|
||||
+Example:
|
||||
+
|
||||
+/* Based on the configuration for a Raspberry Pi 3 B+ */
|
||||
+&usb {
|
||||
+ usb-port@1 {
|
||||
+ compatible = "usb424,2514";
|
||||
+ reg = <1>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ usb-port@1 {
|
||||
+ compatible = "usb424,2514";
|
||||
+ reg = <1>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ ethernet: ethernet@1 {
|
||||
+ compatible = "usb424,7800";
|
||||
+ reg = <1>;
|
||||
+ local-mac-address = [ 00 11 22 33 44 55 ];
|
||||
+
|
||||
+ mdio {
|
||||
+ #address-cells = <0x1>;
|
||||
+ #size-cells = <0x0>;
|
||||
+ eth_phy: ethernet-phy@1 {
|
||||
+ reg = <1>;
|
||||
+ microchip,led-modes = <
|
||||
+ LAN78XX_LINK_1000_ACTIVITY
|
||||
+ LAN78XX_LINK_10_100_ACTIVITY
|
||||
+ >;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--
|
||||
2.17.0
|
||||
|
||||
From be24db04ec2949e9b03763366f100ae40836c61e Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Mon, 23 Apr 2018 14:31:26 +0100
|
||||
Subject: [PATCH 9/9] lan78xx: Read LED states from Device Tree
|
||||
|
||||
Add support for DT property "microchip,led-modes", a vector of zero
|
||||
to four cells (u32s) in the range 0-15, each of which sets the mode
|
||||
for one of the LEDs. Some possible values are:
|
||||
|
||||
0=link/activity 1=link1000/activity
|
||||
2=link100/activity 3=link10/activity
|
||||
4=link100/1000/activity 5=link10/1000/activity
|
||||
6=link10/100/activity 14=off 15=on
|
||||
|
||||
These values are given symbolic constants in a dt-bindings header.
|
||||
|
||||
Also use the presence of the DT property to indicate that the
|
||||
LEDs should be enabled - necessary in the event that no valid OTP
|
||||
or EEPROM is available.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
---
|
||||
MAINTAINERS | 1 +
|
||||
drivers/net/phy/microchip.c | 25 ++++++++++++++++
|
||||
drivers/net/usb/lan78xx.c | 32 ++++++++++++++++++++-
|
||||
include/dt-bindings/net/microchip-lan78xx.h | 21 ++++++++++++++
|
||||
include/linux/microchipphy.h | 3 ++
|
||||
5 files changed, 81 insertions(+), 1 deletion(-)
|
||||
create mode 100644 include/dt-bindings/net/microchip-lan78xx.h
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index 6e950b8b4a41..c7d5f8c60a2c 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -14437,6 +14437,7 @@ M: Microchip Linux Driver Support <UNGLinuxDriver@microchip.com>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/net/usb/lan78xx.*
|
||||
+F: include/dt-bindings/net/microchip-lan78xx.h
|
||||
|
||||
USB MASS STORAGE DRIVER
|
||||
M: Alan Stern <stern@rowland.harvard.edu>
|
||||
diff --git a/drivers/net/phy/microchip.c b/drivers/net/phy/microchip.c
|
||||
index a97ac8c12c4c..2d67937866a3 100644
|
||||
--- a/drivers/net/phy/microchip.c
|
||||
+++ b/drivers/net/phy/microchip.c
|
||||
@@ -21,6 +21,8 @@
|
||||
#include <linux/phy.h>
|
||||
#include <linux/microchipphy.h>
|
||||
#include <linux/delay.h>
|
||||
+#include <linux/of.h>
|
||||
+#include <dt-bindings/net/microchip-lan78xx.h>
|
||||
|
||||
#define DRIVER_AUTHOR "WOOJUNG HUH <woojung.huh@microchip.com>"
|
||||
#define DRIVER_DESC "Microchip LAN88XX PHY driver"
|
||||
@@ -225,6 +227,8 @@ static int lan88xx_probe(struct phy_device *phydev)
|
||||
{
|
||||
struct device *dev = &phydev->mdio.dev;
|
||||
struct lan88xx_priv *priv;
|
||||
+ u32 led_modes[4];
|
||||
+ int len;
|
||||
|
||||
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
|
||||
if (!priv)
|
||||
@@ -232,6 +236,27 @@ static int lan88xx_probe(struct phy_device *phydev)
|
||||
|
||||
priv->wolopts = 0;
|
||||
|
||||
+ len = of_property_read_variable_u32_array(dev->of_node,
|
||||
+ "microchip,led-modes",
|
||||
+ led_modes,
|
||||
+ 0,
|
||||
+ ARRAY_SIZE(led_modes));
|
||||
+ if (len >= 0) {
|
||||
+ u32 reg = 0;
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < len; i++) {
|
||||
+ if (led_modes[i] > 15)
|
||||
+ return -EINVAL;
|
||||
+ reg |= led_modes[i] << (i * 4);
|
||||
+ }
|
||||
+ for (; i < ARRAY_SIZE(led_modes); i++)
|
||||
+ reg |= LAN78XX_FORCE_LED_OFF << (i * 4);
|
||||
+ (void)phy_write(phydev, LAN78XX_PHY_LED_MODE_SELECT, reg);
|
||||
+ } else if (len == -EOVERFLOW) {
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
/* these values can be used to identify internal PHY */
|
||||
priv->chip_id = phy_read_mmd(phydev, 3, LAN88XX_MMD3_CHIP_ID);
|
||||
priv->chip_rev = phy_read_mmd(phydev, 3, LAN88XX_MMD3_CHIP_REV);
|
||||
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
|
||||
index 6c38a74bb32d..01b876daa600 100644
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <linux/irqchip/chained_irq.h>
|
||||
#include <linux/microchipphy.h>
|
||||
#include <linux/phy.h>
|
||||
+#include <linux/of_mdio.h>
|
||||
#include <linux/of_net.h>
|
||||
#include "lan78xx.h"
|
||||
|
||||
@@ -1760,6 +1761,7 @@ static int lan78xx_mdiobus_write(struct mii_bus *bus, int phy_id, int idx,
|
||||
|
||||
static int lan78xx_mdio_init(struct lan78xx_net *dev)
|
||||
{
|
||||
+ struct device_node *node;
|
||||
int ret;
|
||||
|
||||
dev->mdiobus = mdiobus_alloc();
|
||||
@@ -1788,7 +1790,13 @@ static int lan78xx_mdio_init(struct lan78xx_net *dev)
|
||||
break;
|
||||
}
|
||||
|
||||
- ret = mdiobus_register(dev->mdiobus);
|
||||
+ node = of_get_child_by_name(dev->udev->dev.of_node, "mdio");
|
||||
+ if (node) {
|
||||
+ ret = of_mdiobus_register(dev->mdiobus, node);
|
||||
+ of_node_put(node);
|
||||
+ } else {
|
||||
+ ret = mdiobus_register(dev->mdiobus);
|
||||
+ }
|
||||
if (ret) {
|
||||
netdev_err(dev->net, "can't register MDIO bus\n");
|
||||
goto exit1;
|
||||
@@ -2077,6 +2085,28 @@ static int lan78xx_phy_init(struct lan78xx_net *dev)
|
||||
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
|
||||
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
|
||||
|
||||
+ if (phydev->mdio.dev.of_node) {
|
||||
+ u32 reg;
|
||||
+ int len;
|
||||
+
|
||||
+ len = of_property_count_elems_of_size(phydev->mdio.dev.of_node,
|
||||
+ "microchip,led-modes",
|
||||
+ sizeof(u32));
|
||||
+ if (len >= 0) {
|
||||
+ /* Ensure the appropriate LEDs are enabled */
|
||||
+ lan78xx_read_reg(dev, HW_CFG, ®);
|
||||
+ reg &= ~(HW_CFG_LED0_EN_ |
|
||||
+ HW_CFG_LED1_EN_ |
|
||||
+ HW_CFG_LED2_EN_ |
|
||||
+ HW_CFG_LED3_EN_);
|
||||
+ reg |= (len > 0) * HW_CFG_LED0_EN_ |
|
||||
+ (len > 1) * HW_CFG_LED1_EN_ |
|
||||
+ (len > 2) * HW_CFG_LED2_EN_ |
|
||||
+ (len > 3) * HW_CFG_LED3_EN_;
|
||||
+ lan78xx_write_reg(dev, HW_CFG, reg);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
genphy_config_aneg(phydev);
|
||||
|
||||
dev->fc_autoneg = phydev->autoneg;
|
||||
diff --git a/include/dt-bindings/net/microchip-lan78xx.h b/include/dt-bindings/net/microchip-lan78xx.h
|
||||
new file mode 100644
|
||||
index 000000000000..0742ff075307
|
||||
--- /dev/null
|
||||
+++ b/include/dt-bindings/net/microchip-lan78xx.h
|
||||
@@ -0,0 +1,21 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+#ifndef _DT_BINDINGS_MICROCHIP_LAN78XX_H
|
||||
+#define _DT_BINDINGS_MICROCHIP_LAN78XX_H
|
||||
+
|
||||
+/* LED modes for LAN7800/LAN7850 embedded PHY */
|
||||
+
|
||||
+#define LAN78XX_LINK_ACTIVITY 0
|
||||
+#define LAN78XX_LINK_1000_ACTIVITY 1
|
||||
+#define LAN78XX_LINK_100_ACTIVITY 2
|
||||
+#define LAN78XX_LINK_10_ACTIVITY 3
|
||||
+#define LAN78XX_LINK_100_1000_ACTIVITY 4
|
||||
+#define LAN78XX_LINK_10_1000_ACTIVITY 5
|
||||
+#define LAN78XX_LINK_10_100_ACTIVITY 6
|
||||
+#define LAN78XX_DUPLEX_COLLISION 8
|
||||
+#define LAN78XX_COLLISION 9
|
||||
+#define LAN78XX_ACTIVITY 10
|
||||
+#define LAN78XX_AUTONEG_FAULT 12
|
||||
+#define LAN78XX_FORCE_LED_OFF 14
|
||||
+#define LAN78XX_FORCE_LED_ON 15
|
||||
+
|
||||
+#endif
|
||||
diff --git a/include/linux/microchipphy.h b/include/linux/microchipphy.h
|
||||
index 8f9c90379732..fd1fc8c248ef 100644
|
||||
--- a/include/linux/microchipphy.h
|
||||
+++ b/include/linux/microchipphy.h
|
||||
@@ -78,4 +78,7 @@
|
||||
#define LAN88XX_EXT_PAGE_TR_LOW_DATA 17
|
||||
#define LAN88XX_EXT_PAGE_TR_HIGH_DATA 18
|
||||
|
||||
+/* Registers specific to the LAN7800/LAN7850 embedded phy */
|
||||
+#define LAN78XX_PHY_LED_MODE_SELECT (0x1D)
|
||||
+
|
||||
#endif /* _MICROCHIPPHY_H */
|
||||
--
|
||||
2.17.0
|
||||
|
560
bcm2837-rpi-initial-3plus-support.patch
Normal file
560
bcm2837-rpi-initial-3plus-support.patch
Normal file
@ -0,0 +1,560 @@
|
||||
From patchwork Sat Apr 21 11:28:34 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: [V2,1/9] ARM: dts: bcm283x: Fix PWM pin assignment
|
||||
From: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
X-Patchwork-Id: 10354085
|
||||
Message-Id: <1524310122-9439-2-git-send-email-stefan.wahren@i2se.com>
|
||||
To: Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>,
|
||||
Eric Anholt <eric@anholt.net>, Catalin Marinas <catalin.marinas@arm.com>,
|
||||
Will Deacon <will.deacon@arm.com>
|
||||
Cc: Stefan Wahren <stefan.wahren@i2se.com>, devicetree@vger.kernel.org,
|
||||
Florian Fainelli <f.fainelli@gmail.com>, Arnd Bergmann <arnd@arndb.de>,
|
||||
Scott Branden <sbranden@broadcom.com>, Ray Jui <rjui@broadcom.com>,
|
||||
Phil Elwell <phil@raspberrypi.org>, Alexander Graf <agraf@suse.de>,
|
||||
bcm-kernel-feedback-list@broadcom.com,
|
||||
linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org
|
||||
Date: Sat, 21 Apr 2018 13:28:34 +0200
|
||||
|
||||
All RPi 1 and 2 boards used the PWM (audio out) on pin 40 and 45.
|
||||
So it was easy to define them in bcm2835-rpi.dtsi. Starting with RPi 3
|
||||
this wont work anymore, because it uses pin 40 and 41. Furthermore the
|
||||
Zero variants doesn't have audio out.
|
||||
|
||||
This patch fixes this pin conflict by moving the PWM node to the board-level.
|
||||
|
||||
Change summary:
|
||||
RPi 3 B: PWM1 45 -> 41
|
||||
Zero, Zero W: PWM disabled
|
||||
all other: no functional change
|
||||
|
||||
Reported-by: Baruch Siach <baruch@tkos.co.il>
|
||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Reviewed-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 6 ++++++
|
||||
arch/arm/boot/dts/bcm2835-rpi-a.dts | 6 ++++++
|
||||
arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 6 ++++++
|
||||
arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 6 ++++++
|
||||
arch/arm/boot/dts/bcm2835-rpi-b.dts | 6 ++++++
|
||||
arch/arm/boot/dts/bcm2835-rpi.dtsi | 6 ------
|
||||
arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 6 ++++++
|
||||
arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 6 ++++++
|
||||
8 files changed, 42 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
|
||||
index aa1fc7b..2cd9c5e 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
|
||||
@@ -101,6 +101,12 @@
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
+&pwm {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio45>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts
|
||||
index 425f6b0..067d1f0 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835-rpi-a.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts
|
||||
@@ -96,6 +96,12 @@
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
+&pwm {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio45>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
|
||||
index effa195..cfbdaac 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
|
||||
@@ -103,6 +103,12 @@
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
+&pwm {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio45>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
|
||||
index 772ec3b..5641d16 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
|
||||
@@ -96,6 +96,12 @@
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
+&pwm {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio45>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
|
||||
index 434483d..31ff602 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
|
||||
@@ -91,6 +91,12 @@
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
+&pwm {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio45>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi
|
||||
index 6c3cfaa..cb2d6d7 100644
|
||||
--- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
|
||||
@@ -83,12 +83,6 @@
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
-&pwm {
|
||||
- pinctrl-names = "default";
|
||||
- pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio45>;
|
||||
- status = "okay";
|
||||
-};
|
||||
-
|
||||
&usb {
|
||||
power-domains = <&power RPI_POWER_DOMAIN_USB>;
|
||||
};
|
||||
diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
|
||||
index 5c339ad..2fef70a 100644
|
||||
--- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
|
||||
@@ -41,6 +41,12 @@
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
+&pwm {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio45>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
|
||||
index 0b31d99..cc39b6f 100644
|
||||
--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
|
||||
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
|
||||
@@ -42,6 +42,12 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&pwm {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio41>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
/* uart0 communicates with the BT module */
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
From patchwork Sat Apr 21 11:28:35 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: [V2,2/9] ARM: dts: bcm2837: Add missing GPIOs of Expander
|
||||
From: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
X-Patchwork-Id: 10354079
|
||||
Message-Id: <1524310122-9439-3-git-send-email-stefan.wahren@i2se.com>
|
||||
To: Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>,
|
||||
Eric Anholt <eric@anholt.net>, Catalin Marinas <catalin.marinas@arm.com>,
|
||||
Will Deacon <will.deacon@arm.com>
|
||||
Cc: Stefan Wahren <stefan.wahren@i2se.com>, devicetree@vger.kernel.org,
|
||||
Florian Fainelli <f.fainelli@gmail.com>, Arnd Bergmann <arnd@arndb.de>,
|
||||
Scott Branden <sbranden@broadcom.com>, Ray Jui <rjui@broadcom.com>,
|
||||
Phil Elwell <phil@raspberrypi.org>, Alexander Graf <agraf@suse.de>,
|
||||
bcm-kernel-feedback-list@broadcom.com,
|
||||
linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org
|
||||
Date: Sat, 21 Apr 2018 13:28:35 +0200
|
||||
|
||||
After commit a98d90e7d588 ("gpio: raspberrypi-exp: Driver for RPi3 GPIO
|
||||
expander via mailbox service") we are able to control the rest of the
|
||||
GPIOs of the RPi 3. So add all the missing parts (ACT LED,
|
||||
Wifi & BT control, HDMI detect) to the DT.
|
||||
|
||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Reviewed-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
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 cc39b6f..c318bcb 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 {
|
||||
@@ -48,6 +53,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&hdmi {
|
||||
+ hpd-gpios = <&expgpio 4 GPIO_ACTIVE_LOW>;
|
||||
+};
|
||||
+
|
||||
/* uart0 communicates with the BT module */
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
@@ -57,6 +66,7 @@
|
||||
bluetooth {
|
||||
compatible = "brcm,bcm43438-bt";
|
||||
max-speed = <2000000>;
|
||||
+ shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -69,11 +79,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 */
|
||||
From patchwork Sat Apr 21 11:28:36 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: [V2,3/9] dt-bindings: bcm: Add Raspberry Pi 3 B+
|
||||
From: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
X-Patchwork-Id: 10354081
|
||||
Message-Id: <1524310122-9439-4-git-send-email-stefan.wahren@i2se.com>
|
||||
To: Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>,
|
||||
Eric Anholt <eric@anholt.net>, Catalin Marinas <catalin.marinas@arm.com>,
|
||||
Will Deacon <will.deacon@arm.com>
|
||||
Cc: Stefan Wahren <stefan.wahren@i2se.com>, devicetree@vger.kernel.org,
|
||||
Florian Fainelli <f.fainelli@gmail.com>, Arnd Bergmann <arnd@arndb.de>,
|
||||
Scott Branden <sbranden@broadcom.com>, Ray Jui <rjui@broadcom.com>,
|
||||
Phil Elwell <phil@raspberrypi.org>, Alexander Graf <agraf@suse.de>,
|
||||
bcm-kernel-feedback-list@broadcom.com,
|
||||
linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org
|
||||
Date: Sat, 21 Apr 2018 13:28:36 +0200
|
||||
|
||||
This adds the root properties for the Raspberry Pi 3 B+
|
||||
|
||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Reviewed-by: Eric Anholt <eric@anholt.net>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
---
|
||||
Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
|
||||
index 3e3efa0..1e3e29a 100644
|
||||
--- a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
|
||||
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
|
||||
@@ -34,6 +34,10 @@ Raspberry Pi 3 Model B
|
||||
Required root node properties:
|
||||
compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
|
||||
|
||||
+Raspberry Pi 3 Model B+
|
||||
+Required root node properties:
|
||||
+compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837";
|
||||
+
|
||||
Raspberry Pi Compute Module
|
||||
Required root node properties:
|
||||
compatible = "raspberrypi,compute-module", "brcm,bcm2835";
|
||||
From patchwork Sat Apr 21 11:28:37 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: [V2,4/9] ARM: dts: bcm2837: Add Raspberry Pi 3 B+
|
||||
From: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
X-Patchwork-Id: 10354075
|
||||
Message-Id: <1524310122-9439-5-git-send-email-stefan.wahren@i2se.com>
|
||||
To: Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>,
|
||||
Eric Anholt <eric@anholt.net>, Catalin Marinas <catalin.marinas@arm.com>,
|
||||
Will Deacon <will.deacon@arm.com>
|
||||
Cc: Stefan Wahren <stefan.wahren@i2se.com>, devicetree@vger.kernel.org,
|
||||
Florian Fainelli <f.fainelli@gmail.com>, Arnd Bergmann <arnd@arndb.de>,
|
||||
Scott Branden <sbranden@broadcom.com>, Ray Jui <rjui@broadcom.com>,
|
||||
Phil Elwell <phil@raspberrypi.org>, Alexander Graf <agraf@suse.de>,
|
||||
bcm-kernel-feedback-list@broadcom.com,
|
||||
linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org
|
||||
Date: Sat, 21 Apr 2018 13:28:37 +0200
|
||||
|
||||
The Raspberry Pi 3 B+ has the following major differences compared
|
||||
to the model 3 B:
|
||||
* Microchip LAN7515 (Gigabit Ethernet with integrated USB 2.0 HUB)
|
||||
* Cypress CYW43455 (802.11n/ac and BT 4.2)
|
||||
|
||||
We need to add the USB LAN chip so the bootloader can add the MAC address.
|
||||
This is necessary because there ain't an EEPROM or a valid OTP.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Reviewed-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
arch/arm/boot/dts/Makefile | 1 +
|
||||
arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 108 +++++++++++++++++++++++++++++
|
||||
arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi | 27 ++++++++
|
||||
3 files changed, 136 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 7e24249..a300a35 100644
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -75,6 +75,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
|
||||
bcm2835-rpi-a-plus.dtb \
|
||||
bcm2836-rpi-2-b.dtb \
|
||||
bcm2837-rpi-3-b.dtb \
|
||||
+ bcm2837-rpi-3-b-plus.dtb \
|
||||
bcm2835-rpi-zero.dtb \
|
||||
bcm2835-rpi-zero-w.dtb
|
||||
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 0000000..4adb85e
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
||||
@@ -0,0 +1,108 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/dts-v1/;
|
||||
+#include "bcm2837.dtsi"
|
||||
+#include "bcm2835-rpi.dtsi"
|
||||
+#include "bcm283x-rpi-lan7515.dtsi"
|
||||
+#include "bcm283x-rpi-usb-host.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837";
|
||||
+ model = "Raspberry Pi 3 Model B+";
|
||||
+
|
||||
+ chosen {
|
||||
+ /* 8250 auxiliary UART instead of pl011 */
|
||||
+ stdout-path = "serial1:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ memory {
|
||||
+ reg = <0 0x40000000>;
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ act {
|
||||
+ gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ 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>;
|
||||
+};
|
||||
+
|
||||
+&pwm {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio41>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+/* 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 */
|
||||
+&sdhost {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdhost_gpio48>;
|
||||
+ status = "okay";
|
||||
+ bus-width = <4>;
|
||||
+};
|
||||
+
|
||||
+/* uart0 communicates with the BT module */
|
||||
+&uart0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32 &gpclk2_gpio43>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ bluetooth {
|
||||
+ compatible = "brcm,bcm43438-bt";
|
||||
+ max-speed = <2000000>;
|
||||
+ shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+/* uart1 is mapped to the pin header */
|
||||
+&uart1 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart1_gpio14>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
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 0000000..9403da0
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi
|
||||
@@ -0,0 +1,27 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/ {
|
||||
+ aliases {
|
||||
+ ethernet0 = ðernet;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&usb {
|
||||
+ usb-port@1 {
|
||||
+ compatible = "usb424,2514";
|
||||
+ reg = <1>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ usb-port@1 {
|
||||
+ compatible = "usb424,2514";
|
||||
+ reg = <1>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ ethernet: ethernet@1 {
|
||||
+ compatible = "usb424,7800";
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
From patchwork Sat Apr 21 11:28:42 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: [V2,9/9] arm64: dts: broadcom: Add reference to Raspberry Pi 3 B+
|
||||
From: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
X-Patchwork-Id: 10354077
|
||||
Message-Id: <1524310122-9439-10-git-send-email-stefan.wahren@i2se.com>
|
||||
To: Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>,
|
||||
Eric Anholt <eric@anholt.net>, Catalin Marinas <catalin.marinas@arm.com>,
|
||||
Will Deacon <will.deacon@arm.com>
|
||||
Cc: Stefan Wahren <stefan.wahren@i2se.com>, devicetree@vger.kernel.org,
|
||||
Florian Fainelli <f.fainelli@gmail.com>, Arnd Bergmann <arnd@arndb.de>,
|
||||
Scott Branden <sbranden@broadcom.com>, Ray Jui <rjui@broadcom.com>,
|
||||
Phil Elwell <phil@raspberrypi.org>, Alexander Graf <agraf@suse.de>,
|
||||
bcm-kernel-feedback-list@broadcom.com,
|
||||
linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org
|
||||
Date: Sat, 21 Apr 2018 13:28:42 +0200
|
||||
|
||||
This adds a reference to the dts of the Raspberry Pi 3 B+
|
||||
in arm, so don't need to maintain the content in arm64.
|
||||
|
||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Reviewed-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
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 2a2591e..1193a9e 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 0000000..46ad202
|
||||
--- /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"
|
@ -1,209 +0,0 @@
|
||||
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+
|
||||
|
||||
This adds a reference to the dts file of the Raspberry Pi 3 B+
|
||||
|
||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
---
|
||||
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 3b471e6787ff..dee85f848de9 100644
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -75,6 +75,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
|
||||
bcm2835-rpi-a-plus.dtb \
|
||||
bcm2836-rpi-2-b.dtb \
|
||||
bcm2837-rpi-3-b.dtb \
|
||||
+ bcm2837-rpi-3-b-plus.dtb \
|
||||
bcm2835-rpi-zero.dtb \
|
||||
bcm2835-rpi-zero-w.dtb
|
||||
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..fb9f6f7e965c
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
||||
@@ -0,0 +1,102 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/dts-v1/;
|
||||
+#include "bcm2837.dtsi"
|
||||
+#include "bcm2835-rpi.dtsi"
|
||||
+#include "bcm283x-rpi-lan7515.dtsi"
|
||||
+#include "bcm283x-rpi-usb-host.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837";
|
||||
+ model = "Raspberry Pi 3 Model B+";
|
||||
+
|
||||
+ chosen {
|
||||
+ /* 8250 auxiliary UART instead of pl011 */
|
||||
+ stdout-path = "serial1:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ memory {
|
||||
+ reg = <0 0x40000000>;
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ act {
|
||||
+ 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 */
|
||||
+&uart0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart0_gpio32 &gpclk2_gpio43>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ bluetooth {
|
||||
+ compatible = "brcm,bcm43438-bt";
|
||||
+ max-speed = <2000000>;
|
||||
+ shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+/* uart1 is mapped to the pin header */
|
||||
+&uart1 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart1_gpio14>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+/* 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 */
|
||||
+&sdhost {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdhost_gpio48>;
|
||||
+ status = "okay";
|
||||
+ bus-width = <4>;
|
||||
+};
|
||||
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..169203c5ce8b
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi
|
||||
@@ -0,0 +1,27 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/ {
|
||||
+ aliases {
|
||||
+ ethernet0 = ðernet;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&usb {
|
||||
+ usb1@1 {
|
||||
+ compatible = "usb424,2514";
|
||||
+ reg = <1>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ usb1_1@1 {
|
||||
+ compatible = "usb424,2514";
|
||||
+ reg = <1>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ ethernet: usbether@1 {
|
||||
+ compatible = "usb424,7800";
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
|
13
kernel.spec
13
kernel.spec
@ -594,13 +594,19 @@ Patch310: arm-tegra-fix-nouveau-crash.patch
|
||||
# https://patchwork.kernel.org/patch/10346089/
|
||||
Patch311: arm-dts-Add-am335x-pocketbeagle.patch
|
||||
|
||||
# https://patchwork.kernel.org/patch/10354521/
|
||||
# https://patchwork.kernel.org/patch/10354187/
|
||||
# https://patchwork.kernel.org/patch/10306793/
|
||||
# https://patchwork.kernel.org/patch/10133165/
|
||||
Patch315: mvebu-a37xx-fixes.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
|
||||
|
||||
Patch324: bcm283x-clk-audio-fixes.patch
|
||||
|
||||
# Enabling Patches for the RPi3+
|
||||
Patch330: bcm2837-rpi-initial-support-for-the-3.patch
|
||||
Patch330: bcm2837-rpi-initial-3plus-support.patch
|
||||
Patch332: bcm2837-enable-pmu.patch
|
||||
Patch333: bcm2837-lan78xx-fixes.patch
|
||||
|
||||
@ -1872,6 +1878,11 @@ fi
|
||||
#
|
||||
#
|
||||
%changelog
|
||||
* Mon Apr 24 2018 Peter Robinson <pbrobinson@fedoraproject.org>
|
||||
- Add fixes for Marvell a37xx EspressoBin
|
||||
- Update to latest Raspberry Pi 3+ fixes
|
||||
- More fixes for lan78xx on the Raspberry Pi 3+
|
||||
|
||||
* Tue Apr 24 2018 Justin M. Forbes <jforbes@fedoraproject.org> - 4.17.0-0.rc2.git1.1
|
||||
- Linux v4.17-rc2-58-g24cac7009cb1
|
||||
- Reenable debugging options.
|
||||
|
190
mvebu-a37xx-fixes.patch
Normal file
190
mvebu-a37xx-fixes.patch
Normal file
@ -0,0 +1,190 @@
|
||||
From patchwork Sun Apr 22 12:33:46 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: serial: mvebu-uart: Fix local flags handling on termios update
|
||||
From: Marc Zyngier <Marc.Zyngier@arm.com>
|
||||
X-Patchwork-Id: 10354521
|
||||
Message-Id: <20180422123346.15538-1-marc.zyngier@arm.com>
|
||||
To: linux-arm-kernel@lists.infradead.org,
|
||||
linux-kernel@vger.kernel.org
|
||||
Cc: Gregory CLEMENT <gregory.clement@free-electrons.com>,
|
||||
Allen Yan <yanwei@marvell.com>,
|
||||
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
|
||||
Miquel Raynal <miquel.raynal@free-electrons.com>
|
||||
Date: Sun, 22 Apr 2018 13:33:46 +0100
|
||||
|
||||
Commit 68a0db1d7da2 reworked the baud rate selection, but also added
|
||||
a (not so) subtle change in the way the local flags (c_lflag in the
|
||||
termios structure) are handled, forcing the new flags to always be the
|
||||
same as the old ones.
|
||||
|
||||
The reason for that particular change is both obscure and undocumented.
|
||||
It also completely breaks userspace. Something as trivial as getty is
|
||||
unusable:
|
||||
|
||||
<example>
|
||||
Debian GNU/Linux 9 sy-borg ttyMV0
|
||||
|
||||
sy-borg login: root
|
||||
root
|
||||
[timeout]
|
||||
|
||||
Debian GNU/Linux 9 sy-borg ttyMV0
|
||||
</example>
|
||||
|
||||
which is quite obvious in retrospect: getty cannot get in control of
|
||||
the echo mode, is stuck in canonical mode, and times out without ever
|
||||
seeing anything valid. It also begs the question of how this change was
|
||||
ever tested.
|
||||
|
||||
The fix is pretty obvious: stop messing with c_lflag, and the world
|
||||
will be a happier place.
|
||||
|
||||
Cc: stable@vger.kernel.org # 4.15+
|
||||
Fixes: 68a0db1d7da2 ("serial: mvebu-uart: add function to change baudrate")
|
||||
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
|
||||
---
|
||||
drivers/tty/serial/mvebu-uart.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/tty/serial/mvebu-uart.c b/drivers/tty/serial/mvebu-uart.c
|
||||
index 750e5645dc85..f503fab1e268 100644
|
||||
--- a/drivers/tty/serial/mvebu-uart.c
|
||||
+++ b/drivers/tty/serial/mvebu-uart.c
|
||||
@@ -495,7 +495,6 @@ static void mvebu_uart_set_termios(struct uart_port *port,
|
||||
termios->c_iflag |= old->c_iflag & ~(INPCK | IGNPAR);
|
||||
termios->c_cflag &= CREAD | CBAUD;
|
||||
termios->c_cflag |= old->c_cflag & ~(CREAD | CBAUD);
|
||||
- termios->c_lflag = old->c_lflag;
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(&port->lock, flags);
|
||||
From patchwork Sun Mar 25 19:57:36 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Subject: arm64: dts: armada-3720-espressobin: wire up spi flash
|
||||
From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= <u.kleine-koenig@pengutronix.de>
|
||||
X-Patchwork-Id: 10306793
|
||||
Message-Id: <20180325195736.19782-1-u.kleine-koenig@pengutronix.de>
|
||||
To: Jason Cooper <jason@lakedaemon.net>, Andrew Lunn <andrew@lunn.ch>,
|
||||
Gregory Clement <gregory.clement@bootlin.com>,
|
||||
Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Cc: Ellie Reeves <ellierevves@gmail.com>,
|
||||
linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de
|
||||
Date: Sun, 25 Mar 2018 21:57:36 +0200
|
||||
|
||||
From: Ellie Reeves <ellierevves@gmail.com>
|
||||
|
||||
This is the storage the machine boots from by default. The partitioning
|
||||
is taken from the U-Boot that is shipped with the board. There is some
|
||||
more space on the flash that isn't used.
|
||||
|
||||
Signed-off-by: Ellie Reeves <ellierevves@gmail.com>
|
||||
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
|
||||
---
|
||||
.../boot/dts/marvell/armada-3720-espressobin.dts | 27 ++++++++++++++++++++++
|
||||
1 file changed, 27 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts b/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts
|
||||
index 882d6e4a04e4..5f98c2fecca4 100644
|
||||
--- a/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts
|
||||
+++ b/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts
|
||||
@@ -108,6 +108,33 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&spi0 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ flash@0 {
|
||||
+ reg = <0>;
|
||||
+ compatible = "winbond,w25q32dw", "jedec,spi-flash";
|
||||
+ spi-max-frequency = <104000000>;
|
||||
+ m25p,fast-read;
|
||||
+
|
||||
+ partitions {
|
||||
+ compatible = "fixed-partitions";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ partition@0 {
|
||||
+ label = "uboot";
|
||||
+ reg = <0 0x180000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@180000 {
|
||||
+ label = "ubootenv";
|
||||
+ reg = <0x180000 0x10000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
/* Exported on the micro USB connector J5 through an FTDI */
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
From patchwork Sat Apr 21 14:03:42 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: arm64: dts: marvell: armada-37xx: reserve memory for ATF
|
||||
From: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
X-Patchwork-Id: 10354187
|
||||
Message-Id: <20180421140342.25082-1-miquel.raynal@bootlin.com>
|
||||
To: Gregory Clement <gregory.clement@bootlin.com>,
|
||||
Jason Cooper <jason@lakedaemon.net>, Andrew Lunn <andrew@lunn.ch>,
|
||||
Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Cc: Mark Rutland <mark.rutland@arm.com>, devicetree@vger.kernel.org,
|
||||
Antoine Tenart <antoine.tenart@bootlin.com>,
|
||||
Catalin Marinas <catalin.marinas@arm.com>,
|
||||
Will Deacon <will.deacon@arm.com>,
|
||||
Maxime Chevallier <maxime.chevallier@bootlin.com>,
|
||||
Nadav Haklai <nadavh@marvell.com>, Rob Herring <robh+dt@kernel.org>,
|
||||
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
|
||||
Miquel Raynal <miquel.raynal@bootlin.com>, Victor Gu <xigu@marvell.com>,
|
||||
linux-arm-kernel@lists.infradead.org
|
||||
Date: Sat, 21 Apr 2018 16:03:42 +0200
|
||||
|
||||
From: Victor Gu <xigu@marvell.com>
|
||||
|
||||
The PSCI area should be reserved in Linux for PSCI operations such as
|
||||
suspend/resume.
|
||||
|
||||
Reserve 2MiB of memory which matches the area used by ATF (BL1, BL2,
|
||||
BL3x, see [1] in ATF source code). This covers all PSCI code and data
|
||||
area and is 2MiB aligned, which is required by Linux for huge pages
|
||||
handling.
|
||||
|
||||
[1] plat/marvell/a3700/common/include/platform_def.h
|
||||
|
||||
Signed-off-by: Victor Gu <xigu@marvell.com>
|
||||
[miquel.raynal@bootlin.com: reword of commit message]
|
||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
---
|
||||
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
||||
index 97207a61bc79..429ce91bfc39 100644
|
||||
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
||||
@@ -22,6 +22,17 @@
|
||||
serial1 = &uart1;
|
||||
};
|
||||
|
||||
+ reserved-memory {
|
||||
+ #address-cells = <2>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ psci-area@4000000 {
|
||||
+ reg = <0 0x4000000 0 0x200000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
Loading…
Reference in New Issue
Block a user