]> www.infradead.org Git - nvme.git/commitdiff
net: tn40xx: add pci driver for Tehuti Networks TN40xx chips
authorFUJITA Tomonori <fujita.tomonori@gmail.com>
Sun, 23 Jun 2024 23:55:02 +0000 (08:55 +0900)
committerJakub Kicinski <kuba@kernel.org>
Wed, 26 Jun 2024 01:44:19 +0000 (18:44 -0700)
This just adds the scaffolding for an ethernet driver for Tehuti
Networks TN40xx chips.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Link: https://patch.msgid.link/20240623235507.108147-3-fujita.tomonori@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
MAINTAINERS
drivers/net/ethernet/tehuti/Kconfig
drivers/net/ethernet/tehuti/Makefile
drivers/net/ethernet/tehuti/tn40.c [new file with mode: 0644]
drivers/net/ethernet/tehuti/tn40.h [new file with mode: 0644]

index 9283dd04cc6ece7c7943feaf03a80902ad12e917..571c52b43cfb2d15afa87b11c52933933375dd9c 100644 (file)
@@ -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>
index 8735633765a112fc49a251b9b28de6afeb002623..849e3b4a71c1ed1f19d308175754c05268fa615c 100644 (file)
@@ -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
index 13a0ddd62088d9c8a8c9922689c29934984b5b6b..1c468d99e476750538d65de181887f998d090095 100644 (file)
@@ -4,3 +4,6 @@
 #
 
 obj-$(CONFIG_TEHUTI) += tehuti.o
+
+tn40xx-y := tn40.o
+obj-$(CONFIG_TEHUTI_TN40) += tn40xx.o
diff --git a/drivers/net/ethernet/tehuti/tn40.c b/drivers/net/ethernet/tehuti/tn40.c
new file mode 100644 (file)
index 0000000..248b173
--- /dev/null
@@ -0,0 +1,54 @@
+// 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");
diff --git a/drivers/net/ethernet/tehuti/tn40.h b/drivers/net/ethernet/tehuti/tn40.h
new file mode 100644 (file)
index 0000000..b45a2ee
--- /dev/null
@@ -0,0 +1,9 @@
+/* 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 */