Add patches for linux-5.4. The patches are from NXP LSDK-20.04 release which was tagged LSDK-20.04-V5.4. https://source.codeaurora.org/external/qoriq/qoriq-components/linux/ For boards LS1021A-IOT, and Traverse-LS1043 which are not involved in LSDK, port the dts patches from 4.14. The patches are sorted into the following categories: 301-arch-xxxx 302-dts-xxxx 303-core-xxxx 701-net-xxxx 801-audio-xxxx 802-can-xxxx 803-clock-xxxx 804-crypto-xxxx 805-display-xxxx 806-dma-xxxx 807-gpio-xxxx 808-i2c-xxxx 809-jailhouse-xxxx 810-keys-xxxx 811-kvm-xxxx 812-pcie-xxxx 813-pm-xxxx 814-qe-xxxx 815-sata-xxxx 816-sdhc-xxxx 817-spi-xxxx 818-thermal-xxxx 819-uart-xxxx 820-usb-xxxx 821-vfio-xxxx Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
		
			
				
	
	
		
			193 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			193 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 210fde07cd9e3f2dc826f538ccec4e90b54eb7e5 Mon Sep 17 00:00:00 2001
 | 
						|
From: Vladimir Oltean <vladimir.oltean@nxp.com>
 | 
						|
Date: Fri, 22 Nov 2019 17:47:56 +0200
 | 
						|
Subject: [PATCH] enetc: export enetc_mdio definitionns to include/linux/fsl
 | 
						|
 | 
						|
The Felix DSA switch has an internal MDIO bus that has the same register
 | 
						|
map as the ENETC one, so the accessors can be reused.
 | 
						|
 | 
						|
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
 | 
						|
---
 | 
						|
 drivers/net/ethernet/freescale/enetc/enetc_mdio.c  | 18 +++++++++-
 | 
						|
 drivers/net/ethernet/freescale/enetc/enetc_mdio.h  | 12 -------
 | 
						|
 .../net/ethernet/freescale/enetc/enetc_pci_mdio.c  | 41 +++++++++++++---------
 | 
						|
 include/linux/fsl/enetc_mdio.h                     | 21 +++++++++++
 | 
						|
 4 files changed, 62 insertions(+), 30 deletions(-)
 | 
						|
 delete mode 100644 drivers/net/ethernet/freescale/enetc/enetc_mdio.h
 | 
						|
 create mode 100644 include/linux/fsl/enetc_mdio.h
 | 
						|
 | 
						|
--- a/drivers/net/ethernet/freescale/enetc/enetc_mdio.c
 | 
						|
+++ b/drivers/net/ethernet/freescale/enetc/enetc_mdio.c
 | 
						|
@@ -1,13 +1,13 @@
 | 
						|
 // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
 | 
						|
 /* Copyright 2019 NXP */
 | 
						|
 
 | 
						|
+#include <linux/fsl/enetc_mdio.h>
 | 
						|
 #include <linux/mdio.h>
 | 
						|
 #include <linux/of_mdio.h>
 | 
						|
 #include <linux/iopoll.h>
 | 
						|
 #include <linux/of.h>
 | 
						|
 
 | 
						|
 #include "enetc_pf.h"
 | 
						|
-#include "enetc_mdio.h"
 | 
						|
 
 | 
						|
 #define	ENETC_MDIO_CFG	0x0	/* MDIO configuration and status */
 | 
						|
 #define	ENETC_MDIO_CTL	0x4	/* MDIO control */
 | 
						|
@@ -99,6 +99,7 @@ int enetc_mdio_write(struct mii_bus *bus
 | 
						|
 
 | 
						|
 	return 0;
 | 
						|
 }
 | 
						|
+EXPORT_SYMBOL_GPL(enetc_mdio_write);
 | 
						|
 
 | 
						|
 int enetc_mdio_read(struct mii_bus *bus, int phy_id, int regnum)
 | 
						|
 {
 | 
						|
@@ -154,6 +155,21 @@ int enetc_mdio_read(struct mii_bus *bus,
 | 
						|
 
 | 
						|
 	return value;
 | 
						|
 }
 | 
						|
+EXPORT_SYMBOL_GPL(enetc_mdio_read);
 | 
						|
+
 | 
						|
+struct enetc_hw *enetc_hw_alloc(struct device *dev, void __iomem *port_regs)
 | 
						|
+{
 | 
						|
+	struct enetc_hw *hw;
 | 
						|
+
 | 
						|
+	hw = devm_kzalloc(dev, sizeof(*hw), GFP_KERNEL);
 | 
						|
+	if (!hw)
 | 
						|
+		return ERR_PTR(-ENOMEM);
 | 
						|
+
 | 
						|
+	hw->port = port_regs;
 | 
						|
+
 | 
						|
+	return hw;
 | 
						|
+}
 | 
						|
+EXPORT_SYMBOL_GPL(enetc_hw_alloc);
 | 
						|
 
 | 
						|
 int enetc_mdio_probe(struct enetc_pf *pf)
 | 
						|
 {
 | 
						|
--- a/drivers/net/ethernet/freescale/enetc/enetc_mdio.h
 | 
						|
+++ /dev/null
 | 
						|
@@ -1,12 +0,0 @@
 | 
						|
-/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
 | 
						|
-/* Copyright 2019 NXP */
 | 
						|
-
 | 
						|
-#include <linux/phy.h>
 | 
						|
-
 | 
						|
-struct enetc_mdio_priv {
 | 
						|
-	struct enetc_hw *hw;
 | 
						|
-	int mdio_base;
 | 
						|
-};
 | 
						|
-
 | 
						|
-int enetc_mdio_write(struct mii_bus *bus, int phy_id, int regnum, u16 value);
 | 
						|
-int enetc_mdio_read(struct mii_bus *bus, int phy_id, int regnum);
 | 
						|
--- a/drivers/net/ethernet/freescale/enetc/enetc_pci_mdio.c
 | 
						|
+++ b/drivers/net/ethernet/freescale/enetc/enetc_pci_mdio.c
 | 
						|
@@ -1,8 +1,8 @@
 | 
						|
 // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
 | 
						|
 /* Copyright 2019 NXP */
 | 
						|
+#include <linux/fsl/enetc_mdio.h>
 | 
						|
 #include <linux/of_mdio.h>
 | 
						|
 #include "enetc_pf.h"
 | 
						|
-#include "enetc_mdio.h"
 | 
						|
 
 | 
						|
 #define ENETC_MDIO_DEV_ID	0xee01
 | 
						|
 #define ENETC_MDIO_DEV_NAME	"FSL PCIe IE Central MDIO"
 | 
						|
@@ -14,17 +14,29 @@ static int enetc_pci_mdio_probe(struct p
 | 
						|
 {
 | 
						|
 	struct enetc_mdio_priv *mdio_priv;
 | 
						|
 	struct device *dev = &pdev->dev;
 | 
						|
+	void __iomem *port_regs;
 | 
						|
 	struct enetc_hw *hw;
 | 
						|
 	struct mii_bus *bus;
 | 
						|
 	int err;
 | 
						|
 
 | 
						|
-	hw = devm_kzalloc(dev, sizeof(*hw), GFP_KERNEL);
 | 
						|
-	if (!hw)
 | 
						|
-		return -ENOMEM;
 | 
						|
+	port_regs = pci_iomap(pdev, 0, 0);
 | 
						|
+	if (!port_regs) {
 | 
						|
+		dev_err(dev, "iomap failed\n");
 | 
						|
+		err = -ENXIO;
 | 
						|
+		goto err_ioremap;
 | 
						|
+	}
 | 
						|
+
 | 
						|
+	hw = enetc_hw_alloc(dev, port_regs);
 | 
						|
+	if (IS_ERR(enetc_hw_alloc)) {
 | 
						|
+		err = PTR_ERR(hw);
 | 
						|
+		goto err_hw_alloc;
 | 
						|
+	}
 | 
						|
 
 | 
						|
 	bus = devm_mdiobus_alloc_size(dev, sizeof(*mdio_priv));
 | 
						|
-	if (!bus)
 | 
						|
-		return -ENOMEM;
 | 
						|
+	if (!bus) {
 | 
						|
+		err = -ENOMEM;
 | 
						|
+		goto err_mdiobus_alloc;
 | 
						|
+	}
 | 
						|
 
 | 
						|
 	bus->name = ENETC_MDIO_BUS_NAME;
 | 
						|
 	bus->read = enetc_mdio_read;
 | 
						|
@@ -39,7 +51,7 @@ static int enetc_pci_mdio_probe(struct p
 | 
						|
 	err = pci_enable_device_mem(pdev);
 | 
						|
 	if (err) {
 | 
						|
 		dev_err(dev, "device enable failed\n");
 | 
						|
-		return err;
 | 
						|
+		goto err_pci_enable;
 | 
						|
 	}
 | 
						|
 
 | 
						|
 	err = pci_request_region(pdev, 0, KBUILD_MODNAME);
 | 
						|
@@ -48,13 +60,6 @@ static int enetc_pci_mdio_probe(struct p
 | 
						|
 		goto err_pci_mem_reg;
 | 
						|
 	}
 | 
						|
 
 | 
						|
-	hw->port = pci_iomap(pdev, 0, 0);
 | 
						|
-	if (!hw->port) {
 | 
						|
-		err = -ENXIO;
 | 
						|
-		dev_err(dev, "iomap failed\n");
 | 
						|
-		goto err_ioremap;
 | 
						|
-	}
 | 
						|
-
 | 
						|
 	err = of_mdiobus_register(bus, dev->of_node);
 | 
						|
 	if (err)
 | 
						|
 		goto err_mdiobus_reg;
 | 
						|
@@ -64,12 +69,14 @@ static int enetc_pci_mdio_probe(struct p
 | 
						|
 	return 0;
 | 
						|
 
 | 
						|
 err_mdiobus_reg:
 | 
						|
-	iounmap(mdio_priv->hw->port);
 | 
						|
-err_ioremap:
 | 
						|
 	pci_release_mem_regions(pdev);
 | 
						|
 err_pci_mem_reg:
 | 
						|
 	pci_disable_device(pdev);
 | 
						|
-
 | 
						|
+err_pci_enable:
 | 
						|
+err_mdiobus_alloc:
 | 
						|
+	iounmap(port_regs);
 | 
						|
+err_hw_alloc:
 | 
						|
+err_ioremap:
 | 
						|
 	return err;
 | 
						|
 }
 | 
						|
 
 | 
						|
--- /dev/null
 | 
						|
+++ b/include/linux/fsl/enetc_mdio.h
 | 
						|
@@ -0,0 +1,21 @@
 | 
						|
+/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
 | 
						|
+/* Copyright 2019 NXP */
 | 
						|
+
 | 
						|
+#include <linux/phy.h>
 | 
						|
+
 | 
						|
+/* PCS registers */
 | 
						|
+#define ENETC_PCS_LINK_TIMER1		0x12
 | 
						|
+#define ENETC_PCS_LINK_TIMER1_VAL	0x06a0
 | 
						|
+#define ENETC_PCS_LINK_TIMER2		0x13
 | 
						|
+#define ENETC_PCS_LINK_TIMER2_VAL	0x0003
 | 
						|
+#define ENETC_PCS_IF_MODE		0x14
 | 
						|
+#define ENETC_PCS_IF_MODE_SGMII_AN	0x0003
 | 
						|
+
 | 
						|
+struct enetc_mdio_priv {
 | 
						|
+	struct enetc_hw *hw;
 | 
						|
+	int mdio_base;
 | 
						|
+};
 | 
						|
+
 | 
						|
+int enetc_mdio_write(struct mii_bus *bus, int phy_id, int regnum, u16 value);
 | 
						|
+int enetc_mdio_read(struct mii_bus *bus, int phy_id, int regnum);
 | 
						|
+struct enetc_hw *enetc_hw_alloc(struct device *dev, void __iomem *port_regs);
 |