aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/701-net-0231-enetc-Use-DT-protocol-information-to-set-up-the-port.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0231-enetc-Use-DT-protocol-information-to-set-up-the-port.patch')
-rw-r--r--target/linux/layerscape/patches-5.4/701-net-0231-enetc-Use-DT-protocol-information-to-set-up-the-port.patch195
1 files changed, 0 insertions, 195 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0231-enetc-Use-DT-protocol-information-to-set-up-the-port.patch b/target/linux/layerscape/patches-5.4/701-net-0231-enetc-Use-DT-protocol-information-to-set-up-the-port.patch
deleted file mode 100644
index 8c3ea7fbbe..0000000000
--- a/target/linux/layerscape/patches-5.4/701-net-0231-enetc-Use-DT-protocol-information-to-set-up-the-port.patch
+++ /dev/null
@@ -1,195 +0,0 @@
-From 98f64a89977a32df96cdb8aaf3884086b2309924 Mon Sep 17 00:00:00 2001
-From: Alex Marginean <alexandru.marginean@nxp.com>
-Date: Tue, 27 Aug 2019 15:14:11 +0300
-Subject: [PATCH] enetc: Use DT protocol information to set up the ports
-
-Use DT information rather than in-band information from bootloader to
-set up MAC for XGMII. For RGMII use the DT indication in addition to
-RGMII defaults in hardware.
-However, this implies that PHY connection information needs to be
-extracted before netdevice creation, when the ENETC Port MAC is
-being configured.
-
-Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
-Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
----
- drivers/net/ethernet/freescale/enetc/enetc_pf.c | 55 ++++++++++++++-----------
- drivers/net/ethernet/freescale/enetc/enetc_pf.h | 3 ++
- 2 files changed, 33 insertions(+), 25 deletions(-)
-
---- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c
-+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
-@@ -507,7 +507,8 @@ static void enetc_port_si_configure(stru
- enetc_port_wr(hw, ENETC_PSIVLANFMR, ENETC_PSIVLANFMR_VS);
- }
-
--static void enetc_configure_port_mac(struct enetc_hw *hw)
-+static void enetc_configure_port_mac(struct enetc_hw *hw,
-+ phy_interface_t phy_mode)
- {
- enetc_port_wr(hw, ENETC_PM0_MAXFRM,
- ENETC_SET_MAXFRM(ENETC_RX_MAXFRM_SIZE));
-@@ -523,9 +524,11 @@ static void enetc_configure_port_mac(str
- ENETC_PM0_CMD_TXP | ENETC_PM0_PROMISC |
- ENETC_PM0_TX_EN | ENETC_PM0_RX_EN);
- /* set auto-speed for RGMII */
-- if (enetc_port_rd(hw, ENETC_PM0_IF_MODE) & ENETC_PMO_IFM_RG)
-+ if (enetc_port_rd(hw, ENETC_PM0_IF_MODE) & ENETC_PMO_IFM_RG ||
-+ phy_mode == PHY_INTERFACE_MODE_RGMII)
- enetc_port_wr(hw, ENETC_PM0_IF_MODE, ENETC_PM0_IFM_RGAUTO);
-- if (enetc_global_rd(hw, ENETC_G_EPFBLPR(1)) == ENETC_G_EPFBLPR1_XGMII)
-+
-+ if (phy_mode == PHY_INTERFACE_MODE_XGMII)
- enetc_port_wr(hw, ENETC_PM0_IF_MODE, ENETC_PM0_IFM_XGMII);
- }
-
-@@ -549,7 +552,7 @@ static void enetc_configure_port(struct
-
- enetc_configure_port_pmac(hw);
-
-- enetc_configure_port_mac(hw);
-+ enetc_configure_port_mac(hw, pf->if_mode);
-
- enetc_port_si_configure(pf->si);
-
-@@ -749,28 +752,28 @@ static void enetc_pf_netdev_setup(struct
- enetc_get_primary_mac_addr(&si->hw, ndev->dev_addr);
- }
-
--static int enetc_of_get_phy(struct enetc_ndev_priv *priv)
-+static int enetc_of_get_phy(struct enetc_pf *pf)
- {
-- struct enetc_pf *pf = enetc_si_priv(priv->si);
-- struct device_node *np = priv->dev->of_node;
-+ struct device *dev = &pf->si->pdev->dev;
-+ struct device_node *np = dev->of_node;
- struct device_node *mdio_np;
- int phy_mode;
- int err;
-
-- priv->phy_node = of_parse_phandle(np, "phy-handle", 0);
-- if (!priv->phy_node) {
-+ pf->phy_node = of_parse_phandle(np, "phy-handle", 0);
-+ if (!pf->phy_node) {
- if (!of_phy_is_fixed_link(np)) {
-- dev_err(priv->dev, "PHY not specified\n");
-+ dev_err(dev, "PHY not specified\n");
- return -ENODEV;
- }
-
- err = of_phy_register_fixed_link(np);
- if (err < 0) {
-- dev_err(priv->dev, "fixed link registration failed\n");
-+ dev_err(dev, "fixed link registration failed\n");
- return err;
- }
-
-- priv->phy_node = of_node_get(np);
-+ pf->phy_node = of_node_get(np);
- }
-
- mdio_np = of_get_child_by_name(np, "mdio");
-@@ -778,28 +781,28 @@ static int enetc_of_get_phy(struct enetc
- of_node_put(mdio_np);
- err = enetc_mdio_probe(pf);
- if (err) {
-- of_node_put(priv->phy_node);
-+ of_node_put(pf->phy_node);
- return err;
- }
- }
-
- phy_mode = of_get_phy_mode(np);
- if (phy_mode < 0)
-- priv->if_mode = PHY_INTERFACE_MODE_NA; /* fixed link */
-+ pf->if_mode = PHY_INTERFACE_MODE_NA; /* fixed link */
- else
-- priv->if_mode = phy_mode;
-+ pf->if_mode = phy_mode;
-
- return 0;
- }
-
--static void enetc_of_put_phy(struct enetc_ndev_priv *priv)
-+static void enetc_of_put_phy(struct enetc_pf *pf)
- {
-- struct device_node *np = priv->dev->of_node;
-+ struct device_node *np = pf->si->pdev->dev.of_node;
-
- if (np && of_phy_is_fixed_link(np))
- of_phy_deregister_fixed_link(np);
-- if (priv->phy_node)
-- of_node_put(priv->phy_node);
-+ if (pf->phy_node)
-+ of_node_put(pf->phy_node);
- }
-
- /* Initialize the entire shared memory for the flow steering entries
-@@ -955,6 +958,10 @@ static int enetc_pf_probe(struct pci_dev
- pf->si = si;
- pf->total_vfs = pci_sriov_get_totalvfs(pdev);
-
-+ err = enetc_of_get_phy(pf);
-+ if (err)
-+ dev_warn(&pdev->dev, "Fallback to PHY-less operation\n");
-+
- enetc_configure_port(pf);
-
- enetc_get_si_caps(si);
-@@ -969,6 +976,8 @@ static int enetc_pf_probe(struct pci_dev
- enetc_pf_netdev_setup(si, ndev, &enetc_ndev_ops);
-
- priv = netdev_priv(ndev);
-+ priv->phy_node = pf->phy_node;
-+ priv->if_mode = pf->if_mode;
-
- enetc_init_si_rings_params(priv);
-
-@@ -1002,10 +1011,6 @@ static int enetc_pf_probe(struct pci_dev
- goto err_alloc_msix;
- }
-
-- err = enetc_of_get_phy(priv);
-- if (err)
-- dev_warn(&pdev->dev, "Fallback to PHY-less operation\n");
--
- err = enetc_configure_serdes(priv);
- if (err)
- dev_warn(&pdev->dev, "Attempted serdes config but failed\n");
-@@ -1023,7 +1028,6 @@ static int enetc_pf_probe(struct pci_dev
-
- err_reg_netdev:
- enetc_mdio_remove(pf);
-- enetc_of_put_phy(priv);
- enetc_free_msix(priv);
- err_config_si:
- err_init_port_rss:
-@@ -1034,6 +1038,7 @@ err_alloc_si_res:
- si->ndev = NULL;
- free_netdev(ndev);
- err_alloc_netdev:
-+ enetc_of_put_phy(pf);
- err_device_disabled:
- err_map_pf_space:
- enetc_pci_remove(pdev);
-@@ -1057,7 +1062,7 @@ static void enetc_pf_remove(struct pci_d
- unregister_netdev(si->ndev);
-
- enetc_mdio_remove(pf);
-- enetc_of_put_phy(priv);
-+ enetc_of_put_phy(pf);
-
- enetc_free_msix(priv);
-
---- a/drivers/net/ethernet/freescale/enetc/enetc_pf.h
-+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.h
-@@ -45,6 +45,9 @@ struct enetc_pf {
-
- struct mii_bus *mdio; /* saved for cleanup */
- struct mii_bus *imdio;
-+
-+ struct device_node *phy_node;
-+ phy_interface_t if_mode;
- };
-
- int enetc_msg_psi_init(struct enetc_pf *pf);