Commit ab61adc6 authored by FUJITA Tomonori's avatar FUJITA Tomonori Committed by Jakub Kicinski

net: tn40xx: add pci driver for Tehuti Networks TN40xx chips

This just adds the scaffolding for an ethernet driver for Tehuti
Networks TN40xx chips.
Signed-off-by: default avatarFUJITA Tomonori <fujita.tomonori@gmail.com>
Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
Link: https://patch.msgid.link/20240623235507.108147-3-fujita.tomonori@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent eee55288
......@@ -22148,7 +22148,13 @@ TEHUTI ETHERNET DRIVER
M: Andy Gospodarek <andy@greyhouse.net>
L: netdev@vger.kernel.org
S: Supported
F: drivers/net/ethernet/tehuti/*
F: drivers/net/ethernet/tehuti/tehuti.*
TEHUTI TN40XX ETHERNET DRIVER
M: FUJITA Tomonori <fujita.tomonori@gmail.com>
L: netdev@vger.kernel.org
S: Maintained
F: drivers/net/ethernet/tehuti/tn40*
TELECOM CLOCK DRIVER FOR MCPL0010
M: Mark Gross <markgross@kernel.org>
......
......@@ -23,4 +23,16 @@ config TEHUTI
help
Tehuti Networks 10G Ethernet NIC
config TEHUTI_TN40
tristate "Tehuti Networks TN40xx 10G Ethernet adapters"
depends on PCI
help
This driver supports 10G Ethernet adapters using Tehuti Networks
TN40xx chips. Currently, adapters with Applied Micro Circuits
Corporation QT2025 are supported; Tehuti Networks TN9310,
DLink DXE-810S, ASUS XG-C100F, and Edimax EN-9320.
To compile this driver as a module, choose M here: the module
will be called tn40xx.
endif # NET_VENDOR_TEHUTI
......@@ -4,3 +4,6 @@
#
obj-$(CONFIG_TEHUTI) += tehuti.o
tn40xx-y := tn40.o
obj-$(CONFIG_TEHUTI_TN40) += tn40xx.o
// SPDX-License-Identifier: GPL-2.0+
/* Copyright (c) Tehuti Networks Ltd. */
#include <linux/pci.h>
#include "tn40.h"
static int tn40_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
int ret;
ret = pci_enable_device(pdev);
if (ret)
return ret;
ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
if (ret) {
dev_err(&pdev->dev, "failed to set DMA mask.\n");
goto err_disable_device;
}
return 0;
err_disable_device:
pci_disable_device(pdev);
return ret;
}
static void tn40_remove(struct pci_dev *pdev)
{
pci_disable_device(pdev);
}
static const struct pci_device_id tn40_id_table[] = {
{ PCI_DEVICE_SUB(PCI_VENDOR_ID_TEHUTI, 0x4022,
PCI_VENDOR_ID_TEHUTI, 0x3015) },
{ PCI_DEVICE_SUB(PCI_VENDOR_ID_TEHUTI, 0x4022,
PCI_VENDOR_ID_DLINK, 0x4d00) },
{ PCI_DEVICE_SUB(PCI_VENDOR_ID_TEHUTI, 0x4022,
PCI_VENDOR_ID_ASUSTEK, 0x8709) },
{ PCI_DEVICE_SUB(PCI_VENDOR_ID_TEHUTI, 0x4022,
PCI_VENDOR_ID_EDIMAX, 0x8103) },
{ }
};
static struct pci_driver tn40_driver = {
.name = TN40_DRV_NAME,
.id_table = tn40_id_table,
.probe = tn40_probe,
.remove = tn40_remove,
};
module_pci_driver(tn40_driver);
MODULE_DEVICE_TABLE(pci, tn40_id_table);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Tehuti Network TN40xx Driver");
/* SPDX-License-Identifier: GPL-2.0+ */
/* Copyright (c) Tehuti Networks Ltd. */
#ifndef _TN40_H_
#define _TN40_H_
#define TN40_DRV_NAME "tn40xx"
#endif /* _TN40XX_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment