nixge.c (71af75b6929458d85f63c0649dc26d6f4c19729e) nixge.c (464a57281f29afc202905b456b0cb8bc729b383a)
1// SPDX-License-Identifier: GPL-2.0
2/* Copyright (c) 2016-2017, National Instruments Corp.
3 *
4 * Author: Moritz Fischer <mdf@kernel.org>
5 */
6
7#include <linux/etherdevice.h>
8#include <linux/module.h>

--- 979 unchanged lines hidden (view full) ---

988
989static void nixge_ethtools_get_drvinfo(struct net_device *ndev,
990 struct ethtool_drvinfo *ed)
991{
992 strlcpy(ed->driver, "nixge", sizeof(ed->driver));
993 strlcpy(ed->bus_info, "platform", sizeof(ed->bus_info));
994}
995
1// SPDX-License-Identifier: GPL-2.0
2/* Copyright (c) 2016-2017, National Instruments Corp.
3 *
4 * Author: Moritz Fischer <mdf@kernel.org>
5 */
6
7#include <linux/etherdevice.h>
8#include <linux/module.h>

--- 979 unchanged lines hidden (view full) ---

988
989static void nixge_ethtools_get_drvinfo(struct net_device *ndev,
990 struct ethtool_drvinfo *ed)
991{
992 strlcpy(ed->driver, "nixge", sizeof(ed->driver));
993 strlcpy(ed->bus_info, "platform", sizeof(ed->bus_info));
994}
995
996static int nixge_ethtools_get_coalesce(struct net_device *ndev,
997 struct ethtool_coalesce *ecoalesce)
996static int
997nixge_ethtools_get_coalesce(struct net_device *ndev,
998 struct ethtool_coalesce *ecoalesce,
999 struct kernel_ethtool_coalesce *kernel_coal,
1000 struct netlink_ext_ack *extack)
998{
999 struct nixge_priv *priv = netdev_priv(ndev);
1000 u32 regval = 0;
1001
1002 regval = nixge_dma_read_reg(priv, XAXIDMA_RX_CR_OFFSET);
1003 ecoalesce->rx_max_coalesced_frames = (regval & XAXIDMA_COALESCE_MASK)
1004 >> XAXIDMA_COALESCE_SHIFT;
1005 regval = nixge_dma_read_reg(priv, XAXIDMA_TX_CR_OFFSET);
1006 ecoalesce->tx_max_coalesced_frames = (regval & XAXIDMA_COALESCE_MASK)
1007 >> XAXIDMA_COALESCE_SHIFT;
1008 return 0;
1009}
1010
1001{
1002 struct nixge_priv *priv = netdev_priv(ndev);
1003 u32 regval = 0;
1004
1005 regval = nixge_dma_read_reg(priv, XAXIDMA_RX_CR_OFFSET);
1006 ecoalesce->rx_max_coalesced_frames = (regval & XAXIDMA_COALESCE_MASK)
1007 >> XAXIDMA_COALESCE_SHIFT;
1008 regval = nixge_dma_read_reg(priv, XAXIDMA_TX_CR_OFFSET);
1009 ecoalesce->tx_max_coalesced_frames = (regval & XAXIDMA_COALESCE_MASK)
1010 >> XAXIDMA_COALESCE_SHIFT;
1011 return 0;
1012}
1013
1011static int nixge_ethtools_set_coalesce(struct net_device *ndev,
1012 struct ethtool_coalesce *ecoalesce)
1014static int
1015nixge_ethtools_set_coalesce(struct net_device *ndev,
1016 struct ethtool_coalesce *ecoalesce,
1017 struct kernel_ethtool_coalesce *kernel_coal,
1018 struct netlink_ext_ack *extack)
1013{
1014 struct nixge_priv *priv = netdev_priv(ndev);
1015
1016 if (netif_running(ndev)) {
1017 netdev_err(ndev,
1018 "Please stop netif before applying configuration\n");
1019 return -EBUSY;
1020 }

--- 197 unchanged lines hidden (view full) ---

1218 {},
1219};
1220MODULE_DEVICE_TABLE(of, nixge_dt_ids);
1221
1222static int nixge_of_get_resources(struct platform_device *pdev)
1223{
1224 const struct of_device_id *of_id;
1225 enum nixge_version version;
1019{
1020 struct nixge_priv *priv = netdev_priv(ndev);
1021
1022 if (netif_running(ndev)) {
1023 netdev_err(ndev,
1024 "Please stop netif before applying configuration\n");
1025 return -EBUSY;
1026 }

--- 197 unchanged lines hidden (view full) ---

1224 {},
1225};
1226MODULE_DEVICE_TABLE(of, nixge_dt_ids);
1227
1228static int nixge_of_get_resources(struct platform_device *pdev)
1229{
1230 const struct of_device_id *of_id;
1231 enum nixge_version version;
1226 struct resource *ctrlres;
1227 struct net_device *ndev;
1228 struct nixge_priv *priv;
1229
1230 ndev = platform_get_drvdata(pdev);
1231 priv = netdev_priv(ndev);
1232 of_id = of_match_node(nixge_dt_ids, pdev->dev.of_node);
1233 if (!of_id)
1234 return -ENODEV;
1235
1236 version = (enum nixge_version)of_id->data;
1237 if (version <= NIXGE_V2)
1238 priv->dma_regs = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
1239 else
1240 priv->dma_regs = devm_platform_ioremap_resource_byname(pdev, "dma");
1241 if (IS_ERR(priv->dma_regs)) {
1242 netdev_err(ndev, "failed to map dma regs\n");
1243 return PTR_ERR(priv->dma_regs);
1244 }
1232 struct net_device *ndev;
1233 struct nixge_priv *priv;
1234
1235 ndev = platform_get_drvdata(pdev);
1236 priv = netdev_priv(ndev);
1237 of_id = of_match_node(nixge_dt_ids, pdev->dev.of_node);
1238 if (!of_id)
1239 return -ENODEV;
1240
1241 version = (enum nixge_version)of_id->data;
1242 if (version <= NIXGE_V2)
1243 priv->dma_regs = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
1244 else
1245 priv->dma_regs = devm_platform_ioremap_resource_byname(pdev, "dma");
1246 if (IS_ERR(priv->dma_regs)) {
1247 netdev_err(ndev, "failed to map dma regs\n");
1248 return PTR_ERR(priv->dma_regs);
1249 }
1245 if (version <= NIXGE_V2) {
1250 if (version <= NIXGE_V2)
1246 priv->ctrl_regs = priv->dma_regs + NIXGE_REG_CTRL_OFFSET;
1251 priv->ctrl_regs = priv->dma_regs + NIXGE_REG_CTRL_OFFSET;
1247 } else {
1248 ctrlres = platform_get_resource_byname(pdev, IORESOURCE_MEM,
1249 "ctrl");
1250 priv->ctrl_regs = devm_ioremap_resource(&pdev->dev, ctrlres);
1251 }
1252 else
1253 priv->ctrl_regs = devm_platform_ioremap_resource_byname(pdev, "ctrl");
1252 if (IS_ERR(priv->ctrl_regs)) {
1253 netdev_err(ndev, "failed to map ctrl regs\n");
1254 return PTR_ERR(priv->ctrl_regs);
1255 }
1256 return 0;
1257}
1258
1259static int nixge_probe(struct platform_device *pdev)

--- 139 unchanged lines hidden ---
1254 if (IS_ERR(priv->ctrl_regs)) {
1255 netdev_err(ndev, "failed to map ctrl regs\n");
1256 return PTR_ERR(priv->ctrl_regs);
1257 }
1258 return 0;
1259}
1260
1261static int nixge_probe(struct platform_device *pdev)

--- 139 unchanged lines hidden ---