12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /* Synopsys DesignWare Core Enterprise Ethernet (XLGMAC) Driver
- *
- * Copyright (c) 2017 Synopsys, Inc. (www.synopsys.com)
- *
- * This program is dual-licensed; you may select either version 2 of
- * the GNU General Public License ("GPL") or BSD license ("BSD").
- *
- * This Synopsys DWC XLGMAC software driver and associated documentation
- * (hereinafter the "Software") is an unsupported proprietary work of
- * Synopsys, Inc. unless otherwise expressly agreed to in writing between
- * Synopsys and you. The Software IS NOT an item of Licensed Software or a
- * Licensed Product under any End User Software License Agreement or
- * Agreement for Licensed Products with Synopsys or any supplement thereto.
- * Synopsys is a registered trademark of Synopsys, Inc. Other names included
- * in the SOFTWARE may be the trademarks of their respective owners.
- */
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/pci.h>
- #include "dwc-xlgmac.h"
- #include "dwc-xlgmac-reg.h"
- static int xlgmac_probe(struct pci_dev *pcidev, const struct pci_device_id *id)
- {
- struct device *dev = &pcidev->dev;
- struct xlgmac_resources res;
- int i, ret;
- ret = pcim_enable_device(pcidev);
- if (ret) {
- dev_err(dev, "ERROR: failed to enable device\n");
- return ret;
- }
- for (i = 0; i <= PCI_STD_RESOURCE_END; i++) {
- if (pci_resource_len(pcidev, i) == 0)
- continue;
- ret = pcim_iomap_regions(pcidev, BIT(i), XLGMAC_DRV_NAME);
- if (ret)
- return ret;
- break;
- }
- pci_set_master(pcidev);
- memset(&res, 0, sizeof(res));
- res.irq = pcidev->irq;
- res.addr = pcim_iomap_table(pcidev)[i];
- return xlgmac_drv_probe(&pcidev->dev, &res);
- }
- static void xlgmac_remove(struct pci_dev *pcidev)
- {
- xlgmac_drv_remove(&pcidev->dev);
- }
- static const struct pci_device_id xlgmac_pci_tbl[] = {
- { PCI_DEVICE(PCI_VENDOR_ID_SYNOPSYS, 0x7302) },
- { 0 }
- };
- MODULE_DEVICE_TABLE(pci, xlgmac_pci_tbl);
- static struct pci_driver xlgmac_pci_driver = {
- .name = XLGMAC_DRV_NAME,
- .id_table = xlgmac_pci_tbl,
- .probe = xlgmac_probe,
- .remove = xlgmac_remove,
- };
- module_pci_driver(xlgmac_pci_driver);
- MODULE_DESCRIPTION(XLGMAC_DRV_DESC);
- MODULE_VERSION(XLGMAC_DRV_VERSION);
- MODULE_AUTHOR("Jie Deng <jiedeng@synopsys.com>");
- MODULE_LICENSE("Dual BSD/GPL");
|