diff options
Diffstat (limited to 'target/linux/layerscape/patches-4.14/712-etsec-support-layerscape.patch')
-rw-r--r-- | target/linux/layerscape/patches-4.14/712-etsec-support-layerscape.patch | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-4.14/712-etsec-support-layerscape.patch b/target/linux/layerscape/patches-4.14/712-etsec-support-layerscape.patch new file mode 100644 index 0000000000..bb075d4d4f --- /dev/null +++ b/target/linux/layerscape/patches-4.14/712-etsec-support-layerscape.patch @@ -0,0 +1,77 @@ +From f0f6e88696957d376d8875f675c1caf75a33fd67 Mon Sep 17 00:00:00 2001 +From: Biwen Li <biwen.li@nxp.com> +Date: Wed, 17 Apr 2019 18:58:34 +0800 +Subject: [PATCH] etsec: support layerscape + +This is an integrated patch of etsec for layerscape + +Signed-off-by: Biwen Li <biwen.li@nxp.com> +Signed-off-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> +--- + drivers/net/ethernet/freescale/gianfar.h | 3 --- + .../net/ethernet/freescale/gianfar_ethtool.c | 23 +++++++++++++++---- + 2 files changed, 18 insertions(+), 8 deletions(-) + +--- a/drivers/net/ethernet/freescale/gianfar.h ++++ b/drivers/net/ethernet/freescale/gianfar.h +@@ -1372,7 +1372,4 @@ struct filer_table { + struct gfar_filer_entry fe[MAX_FILER_CACHE_IDX + 20]; + }; + +-/* The gianfar_ptp module will set this variable */ +-extern int gfar_phc_index; +- + #endif /* __GIANFAR_H */ +--- a/drivers/net/ethernet/freescale/gianfar_ethtool.c ++++ b/drivers/net/ethernet/freescale/gianfar_ethtool.c +@@ -41,6 +41,8 @@ + #include <linux/phy.h> + #include <linux/sort.h> + #include <linux/if_vlan.h> ++#include <linux/of_platform.h> ++#include <linux/fsl/ptp_qoriq.h> + + #include "gianfar.h" + +@@ -1509,24 +1511,35 @@ static int gfar_get_nfc(struct net_devic + return ret; + } + +-int gfar_phc_index = -1; +-EXPORT_SYMBOL(gfar_phc_index); +- + static int gfar_get_ts_info(struct net_device *dev, + struct ethtool_ts_info *info) + { + struct gfar_private *priv = netdev_priv(dev); ++ struct platform_device *ptp_dev; ++ struct device_node *ptp_node; ++ struct qoriq_ptp *ptp = NULL; ++ ++ info->phc_index = -1; + + if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER)) { + info->so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE | + SOF_TIMESTAMPING_SOFTWARE; +- info->phc_index = -1; + return 0; + } ++ ++ ptp_node = of_find_compatible_node(NULL, NULL, "fsl,etsec-ptp"); ++ if (ptp_node) { ++ ptp_dev = of_find_device_by_node(ptp_node); ++ if (ptp_dev) ++ ptp = platform_get_drvdata(ptp_dev); ++ } ++ ++ if (ptp) ++ info->phc_index = ptp->phc_index; ++ + info->so_timestamping = SOF_TIMESTAMPING_TX_HARDWARE | + SOF_TIMESTAMPING_RX_HARDWARE | + SOF_TIMESTAMPING_RAW_HARDWARE; +- info->phc_index = gfar_phc_index; + info->tx_types = (1 << HWTSTAMP_TX_OFF) | + (1 << HWTSTAMP_TX_ON); + info->rx_filters = (1 << HWTSTAMP_FILTER_NONE) | |