1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved.
3 * Copyright(c) 2018 Synopsys, Inc. All rights reserved.
6 #include "axgbe_ethdev.h"
8 static int eth_axgbe_dev_init(struct rte_eth_dev *eth_dev);
9 static int eth_axgbe_dev_uninit(struct rte_eth_dev *eth_dev);
11 /* The set of PCI devices this driver supports */
12 #define AMD_PCI_VENDOR_ID 0x1022
13 #define AMD_PCI_AXGBE_DEVICE_V2A 0x1458
14 #define AMD_PCI_AXGBE_DEVICE_V2B 0x1459
16 int axgbe_logtype_init;
17 int axgbe_logtype_driver;
19 static const struct rte_pci_id pci_id_axgbe_map[] = {
20 {RTE_PCI_DEVICE(AMD_PCI_VENDOR_ID, AMD_PCI_AXGBE_DEVICE_V2A)},
21 {RTE_PCI_DEVICE(AMD_PCI_VENDOR_ID, AMD_PCI_AXGBE_DEVICE_V2B)},
26 * It returns 0 on success.
29 eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
31 PMD_INIT_FUNC_TRACE();
32 struct axgbe_port *pdata;
33 struct rte_pci_device *pci_dev;
36 * For secondary processes, we don't initialise any further as primary
37 * has already done this work.
39 if (rte_eal_process_type() != RTE_PROC_PRIMARY)
42 pdata = (struct axgbe_port *)eth_dev->data->dev_private;
43 pdata->eth_dev = eth_dev;
45 pci_dev = RTE_DEV_TO_PCI(eth_dev->device);
46 pdata->pci_dev = pci_dev;
48 PMD_INIT_LOG(DEBUG, "port %d vendorID=0x%x deviceID=0x%x",
49 eth_dev->data->port_id, pci_dev->id.vendor_id,
50 pci_dev->id.device_id);
56 eth_axgbe_dev_uninit(struct rte_eth_dev *eth_dev __rte_unused)
59 PMD_INIT_FUNC_TRACE();
64 static int eth_axgbe_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
65 struct rte_pci_device *pci_dev)
67 return rte_eth_dev_pci_generic_probe(pci_dev,
68 sizeof(struct axgbe_port), eth_axgbe_dev_init);
71 static int eth_axgbe_pci_remove(struct rte_pci_device *pci_dev)
73 return rte_eth_dev_pci_generic_remove(pci_dev, eth_axgbe_dev_uninit);
76 static struct rte_pci_driver rte_axgbe_pmd = {
77 .id_table = pci_id_axgbe_map,
78 .drv_flags = RTE_PCI_DRV_NEED_MAPPING,
79 .probe = eth_axgbe_pci_probe,
80 .remove = eth_axgbe_pci_remove,
83 RTE_PMD_REGISTER_PCI(net_axgbe, rte_axgbe_pmd);
84 RTE_PMD_REGISTER_PCI_TABLE(net_axgbe, pci_id_axgbe_map);
85 RTE_PMD_REGISTER_KMOD_DEP(net_axgbe, "* igb_uio | uio_pci_generic | vfio-pci");
87 RTE_INIT(axgbe_init_log);
91 axgbe_logtype_init = rte_log_register("pmd.net.axgbe.init");
92 if (axgbe_logtype_init >= 0)
93 rte_log_set_level(axgbe_logtype_init, RTE_LOG_NOTICE);
94 axgbe_logtype_driver = rte_log_register("pmd.net.axgbe.driver");
95 if (axgbe_logtype_driver >= 0)
96 rte_log_set_level(axgbe_logtype_driver, RTE_LOG_NOTICE);