0d9bb14427
With ARCH=hexagon, make allmodconfig && make W=1 C=1 reports: WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/net/ethernet/synopsys/dwc-xlgmac.o With most other ARCH settings the MODULE_DESCRIPTION() is provided by the macro invocation in dwc-xlgmac-pci.c. However, for hexagon, the PCI bus is not enabled, and hence CONFIG_DWC_XLGMAC_PCI is not set. As a result, dwc-xlgmac-pci.c is not compiled, and hence is not linked into dwc-xlgmac.o. To avoid this issue, relocate the MODULE_DESCRIPTION() and other related macros from dwc-xlgmac-pci.c to dwc-xlgmac-common.c, since that file already has an existing MODULE_LICENSE() and it is unconditionally linked into dwc-xlgmac.o. Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com> Link: https://lore.kernel.org/r/20240616-md-hexagon-drivers-net-ethernet-synopsys-v1-1-55852b60aef8@quicinc.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
74 lines
2.0 KiB
C
74 lines
2.0 KiB
C
/* 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_NUM_BARS; 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);
|