Add build options and doc for mucse.
Initialize pci device access for MUCSE devices.
Signed-off-by: Dong Yibo <dong100@mucse.com>
---
.../device_drivers/ethernet/index.rst | 1 +
.../device_drivers/ethernet/mucse/rnpgbe.rst | 21 +++
MAINTAINERS | 8 ++
drivers/net/ethernet/Kconfig | 1 +
drivers/net/ethernet/Makefile | 1 +
drivers/net/ethernet/mucse/Kconfig | 34 +++++
drivers/net/ethernet/mucse/Makefile | 7 +
drivers/net/ethernet/mucse/rnpgbe/Makefile | 8 ++
drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h | 24 ++++
.../net/ethernet/mucse/rnpgbe/rnpgbe_main.c | 120 ++++++++++++++++++
10 files changed, 225 insertions(+)
create mode 100644 Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst
create mode 100644 drivers/net/ethernet/mucse/Kconfig
create mode 100644 drivers/net/ethernet/mucse/Makefile
create mode 100644 drivers/net/ethernet/mucse/rnpgbe/Makefile
create mode 100644 drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h
create mode 100644 drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c
diff --git a/Documentation/networking/device_drivers/ethernet/index.rst b/Documentation/networking/device_drivers/ethernet/index.rst
index 0b0a3eef6aae..41ff2152b7aa 100644
--- a/Documentation/networking/device_drivers/ethernet/index.rst
+++ b/Documentation/networking/device_drivers/ethernet/index.rst
@@ -47,6 +47,7 @@ Contents:
mellanox/mlx5/index
meta/fbnic
microsoft/netvsc
+ mucse/rnpgbe
neterion/s2io
netronome/nfp
pensando/ionic
diff --git a/Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst b/Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst
new file mode 100644
index 000000000000..7562fb6b8f61
--- /dev/null
+++ b/Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst
@@ -0,0 +1,21 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+===========================================================
+Linux Base Driver for MUCSE(R) Gigabit PCI Express Adapters
+===========================================================
+
+MUCSE Gigabit Linux driver.
+Copyright (c) 2020 - 2025 MUCSE Co.,Ltd.
+
+Identifying Your Adapter
+========================
+The driver is compatible with devices based on the following:
+
+ * MUCSE(R) Ethernet Controller N500 series
+ * MUCSE(R) Ethernet Controller N210 series
+
+Support
+=======
+ If you have problems with the software or hardware, please contact our
+ customer support team via email at techsupport@mucse.com or check our
+ website at https://www.mucse.com/en/
diff --git a/MAINTAINERS b/MAINTAINERS
index bce96dd254b8..00b73e3631b4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -17276,6 +17276,14 @@ T: git git://linuxtv.org/media.git
F: Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml
F: drivers/media/i2c/mt9v111.c
+MUCSE ETHERNET DRIVER
+M: Yibo Dong <dong100@mucse.com>
+L: netdev@vger.kernel.org
+S: Maintained
+W: https://www.mucse.com/en/
+F: Documentation/networking/device_drivers/ethernet/mucse/
+F: drivers/net/ethernet/mucse/
+
MULTIFUNCTION DEVICES (MFD)
M: Lee Jones <lee@kernel.org>
S: Maintained
diff --git a/drivers/net/ethernet/Kconfig b/drivers/net/ethernet/Kconfig
index f86d4557d8d7..167388f9c744 100644
--- a/drivers/net/ethernet/Kconfig
+++ b/drivers/net/ethernet/Kconfig
@@ -129,6 +129,7 @@ source "drivers/net/ethernet/microchip/Kconfig"
source "drivers/net/ethernet/mscc/Kconfig"
source "drivers/net/ethernet/microsoft/Kconfig"
source "drivers/net/ethernet/moxa/Kconfig"
+source "drivers/net/ethernet/mucse/Kconfig"
source "drivers/net/ethernet/myricom/Kconfig"
config FEALNX
diff --git a/drivers/net/ethernet/Makefile b/drivers/net/ethernet/Makefile
index 67182339469a..1b8c4df3f594 100644
--- a/drivers/net/ethernet/Makefile
+++ b/drivers/net/ethernet/Makefile
@@ -65,6 +65,7 @@ obj-$(CONFIG_NET_VENDOR_MICREL) += micrel/
obj-$(CONFIG_NET_VENDOR_MICROCHIP) += microchip/
obj-$(CONFIG_NET_VENDOR_MICROSEMI) += mscc/
obj-$(CONFIG_NET_VENDOR_MOXART) += moxa/
+obj-$(CONFIG_NET_VENDOR_MUCSE) += mucse/
obj-$(CONFIG_NET_VENDOR_MYRI) += myricom/
obj-$(CONFIG_FEALNX) += fealnx.o
obj-$(CONFIG_NET_VENDOR_NATSEMI) += natsemi/
diff --git a/drivers/net/ethernet/mucse/Kconfig b/drivers/net/ethernet/mucse/Kconfig
new file mode 100644
index 000000000000..be0fdf268484
--- /dev/null
+++ b/drivers/net/ethernet/mucse/Kconfig
@@ -0,0 +1,34 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Mucse network device configuration
+#
+
+config NET_VENDOR_MUCSE
+ bool "Mucse devices"
+ default y
+ help
+ If you have a network (Ethernet) card from Mucse(R), say Y.
+
+ Note that the answer to this question doesn't directly affect the
+ kernel: saying N will just cause the configurator to skip all
+ the questions about Mucse(R) cards. If you say Y, you will
+ be asked for your specific card in the following questions.
+
+if NET_VENDOR_MUCSE
+
+config MGBE
+ tristate "Mucse(R) 1GbE PCI Express adapters support"
+ depends on PCI
+ select PAGE_POOL
+ help
+ This driver supports Mucse(R) 1GbE PCI Express family of
+ adapters.
+
+ More specific information on configuring the driver is in
+ <file:Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst>.
+
+ To compile this driver as a module, choose M here. The module
+ will be called rnpgbe.
+
+endif # NET_VENDOR_MUCSE
+
diff --git a/drivers/net/ethernet/mucse/Makefile b/drivers/net/ethernet/mucse/Makefile
new file mode 100644
index 000000000000..675173fa05f7
--- /dev/null
+++ b/drivers/net/ethernet/mucse/Makefile
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright(c) 2020 - 2025 MUCSE Corporation.
+#
+# Makefile for the MUCSE(R) network device drivers
+#
+
+obj-$(CONFIG_MGBE) += rnpgbe/
diff --git a/drivers/net/ethernet/mucse/rnpgbe/Makefile b/drivers/net/ethernet/mucse/rnpgbe/Makefile
new file mode 100644
index 000000000000..9df536f0d04c
--- /dev/null
+++ b/drivers/net/ethernet/mucse/rnpgbe/Makefile
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright(c) 2020 - 2025 MUCSE Corporation.
+#
+# Makefile for the MUCSE(R) 1GbE PCI Express ethernet driver
+#
+
+obj-$(CONFIG_MGBE) += rnpgbe.o
+rnpgbe-objs := rnpgbe_main.o
diff --git a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h
new file mode 100644
index 000000000000..64b2c093bc6e
--- /dev/null
+++ b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2020 - 2025 Mucse Corporation. */
+
+#ifndef _RNPGBE_H
+#define _RNPGBE_H
+
+enum rnpgbe_boards {
+ board_n500,
+ board_n210,
+ board_n210L,
+};
+
+struct mucse {
+ struct net_device *netdev;
+ struct pci_dev *pdev;
+};
+
+/* Device IDs */
+#define PCI_VENDOR_ID_MUCSE 0x8848
+#define PCI_DEVICE_ID_N500_QUAD_PORT 0x8308
+#define PCI_DEVICE_ID_N500_DUAL_PORT 0x8318
+#define PCI_DEVICE_ID_N210 0x8208
+#define PCI_DEVICE_ID_N210L 0x820a
+#endif /* _RNPGBE_H */
diff --git a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c
new file mode 100644
index 000000000000..b4a9c5c66af6
--- /dev/null
+++ b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c
@@ -0,0 +1,120 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright(c) 2020 - 2025 Mucse Corporation. */
+
+#include <linux/types.h>
+#include <linux/module.h>
+#include <linux/pci.h>
+
+#include "rnpgbe.h"
+
+static const char rnpgbe_driver_name[] = "rnpgbe";
+
+/* rnpgbe_pci_tbl - PCI Device ID Table
+ *
+ * { PCI_DEVICE(Vendor ID, Device ID),
+ * driver_data (used for different hw chip) }
+ */
+static struct pci_device_id rnpgbe_pci_tbl[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N500_QUAD_PORT),
+ .driver_data = board_n500},
+ { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N500_DUAL_PORT),
+ .driver_data = board_n500},
+ { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N210),
+ .driver_data = board_n210},
+ { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N210L),
+ .driver_data = board_n210L},
+ /* required last entry */
+ {0, },
+};
+
+/**
+ * rnpgbe_probe - Device initialization routine
+ * @pdev: PCI device information struct
+ * @id: entry in rnpgbe_pci_tbl
+ *
+ * rnpgbe_probe initializes a PF adapter identified by a pci_dev
+ * structure.
+ *
+ * @return: 0 on success, negative on failure
+ **/
+static int rnpgbe_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+{
+ int err;
+
+ err = pci_enable_device_mem(pdev);
+ if (err)
+ return err;
+
+ err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(56));
+ if (err) {
+ dev_err(&pdev->dev,
+ "No usable DMA configuration, aborting %d\n", err);
+ goto err_dma;
+ }
+
+ err = pci_request_mem_regions(pdev, rnpgbe_driver_name);
+ if (err) {
+ dev_err(&pdev->dev,
+ "pci_request_selected_regions failed 0x%x\n", err);
+ goto err_dma;
+ }
+
+ pci_set_master(pdev);
+ pci_save_state(pdev);
+
+ return 0;
+err_dma:
+ pci_disable_device(pdev);
+ return err;
+}
+
+/**
+ * rnpgbe_remove - Device removal routine
+ * @pdev: PCI device information struct
+ *
+ * rnpgbe_remove is called by the PCI subsystem to alert the driver
+ * that it should release a PCI device. This could be caused by a
+ * Hot-Plug event, or because the driver is going to be removed from
+ * memory.
+ **/
+static void rnpgbe_remove(struct pci_dev *pdev)
+{
+ pci_release_mem_regions(pdev);
+ pci_disable_device(pdev);
+}
+
+/**
+ * rnpgbe_dev_shutdown - Device shutdown routine
+ * @pdev: PCI device information struct
+ **/
+static void rnpgbe_dev_shutdown(struct pci_dev *pdev)
+{
+ pci_disable_device(pdev);
+}
+
+/**
+ * rnpgbe_shutdown - Device shutdown routine
+ * @pdev: PCI device information struct
+ *
+ * rnpgbe_shutdown is called by the PCI subsystem to alert the driver
+ * that os shutdown. Device should setup wakeup state here.
+ **/
+static void rnpgbe_shutdown(struct pci_dev *pdev)
+{
+ rnpgbe_dev_shutdown(pdev);
+}
+
+static struct pci_driver rnpgbe_driver = {
+ .name = rnpgbe_driver_name,
+ .id_table = rnpgbe_pci_tbl,
+ .probe = rnpgbe_probe,
+ .remove = rnpgbe_remove,
+ .shutdown = rnpgbe_shutdown,
+};
+
+module_pci_driver(rnpgbe_driver);
+
+MODULE_DEVICE_TABLE(pci, rnpgbe_pci_tbl);
+MODULE_AUTHOR("Mucse Corporation, <techsupport@mucse.com>");
+MODULE_DESCRIPTION("Mucse(R) 1 Gigabit PCI Express Network Driver");
+MODULE_LICENSE("GPL");
--
2.25.1
Hi, On 22/08/25 8:04 am, Dong Yibo wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > Add build options and doc for mucse. > Initialize pci device access for MUCSE devices. > > Signed-off-by: Dong Yibo <dong100@mucse.com> > --- > .../device_drivers/ethernet/index.rst | 1 + > .../device_drivers/ethernet/mucse/rnpgbe.rst | 21 +++ > MAINTAINERS | 8 ++ > drivers/net/ethernet/Kconfig | 1 + > drivers/net/ethernet/Makefile | 1 + > drivers/net/ethernet/mucse/Kconfig | 34 +++++ > drivers/net/ethernet/mucse/Makefile | 7 + > drivers/net/ethernet/mucse/rnpgbe/Makefile | 8 ++ > drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h | 24 ++++ > .../net/ethernet/mucse/rnpgbe/rnpgbe_main.c | 120 ++++++++++++++++++ > 10 files changed, 225 insertions(+) > create mode 100644 Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst > create mode 100644 drivers/net/ethernet/mucse/Kconfig > create mode 100644 drivers/net/ethernet/mucse/Makefile > create mode 100644 drivers/net/ethernet/mucse/rnpgbe/Makefile > create mode 100644 drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h > create mode 100644 drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c > > diff --git a/Documentation/networking/device_drivers/ethernet/index.rst b/Documentation/networking/device_drivers/ethernet/index.rst > index 0b0a3eef6aae..41ff2152b7aa 100644 > --- a/Documentation/networking/device_drivers/ethernet/index.rst > +++ b/Documentation/networking/device_drivers/ethernet/index.rst > @@ -47,6 +47,7 @@ Contents: > mellanox/mlx5/index > meta/fbnic > microsoft/netvsc > + mucse/rnpgbe > neterion/s2io > netronome/nfp > pensando/ionic > diff --git a/Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst b/Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst > new file mode 100644 > index 000000000000..7562fb6b8f61 > --- /dev/null > +++ b/Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst > @@ -0,0 +1,21 @@ > +.. SPDX-License-Identifier: GPL-2.0 > + > +=========================================================== > +Linux Base Driver for MUCSE(R) Gigabit PCI Express Adapters > +=========================================================== > + > +MUCSE Gigabit Linux driver. > +Copyright (c) 2020 - 2025 MUCSE Co.,Ltd. > + > +Identifying Your Adapter > +======================== > +The driver is compatible with devices based on the following: > + > + * MUCSE(R) Ethernet Controller N500 series > + * MUCSE(R) Ethernet Controller N210 series > + > +Support > +======= > + If you have problems with the software or hardware, please contact our > + customer support team via email at techsupport@mucse.com or check our > + website at https://www.mucse.com/en/ > diff --git a/MAINTAINERS b/MAINTAINERS > index bce96dd254b8..00b73e3631b4 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -17276,6 +17276,14 @@ T: git git://linuxtv.org/media.git > F: Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml > F: drivers/media/i2c/mt9v111.c > > +MUCSE ETHERNET DRIVER > +M: Yibo Dong <dong100@mucse.com> > +L: netdev@vger.kernel.org > +S: Maintained > +W: https://www.mucse.com/en/ > +F: Documentation/networking/device_drivers/ethernet/mucse/ > +F: drivers/net/ethernet/mucse/ > + > MULTIFUNCTION DEVICES (MFD) > M: Lee Jones <lee@kernel.org> > S: Maintained > diff --git a/drivers/net/ethernet/Kconfig b/drivers/net/ethernet/Kconfig > index f86d4557d8d7..167388f9c744 100644 > --- a/drivers/net/ethernet/Kconfig > +++ b/drivers/net/ethernet/Kconfig > @@ -129,6 +129,7 @@ source "drivers/net/ethernet/microchip/Kconfig" > source "drivers/net/ethernet/mscc/Kconfig" > source "drivers/net/ethernet/microsoft/Kconfig" > source "drivers/net/ethernet/moxa/Kconfig" > +source "drivers/net/ethernet/mucse/Kconfig" > source "drivers/net/ethernet/myricom/Kconfig" > > config FEALNX > diff --git a/drivers/net/ethernet/Makefile b/drivers/net/ethernet/Makefile > index 67182339469a..1b8c4df3f594 100644 > --- a/drivers/net/ethernet/Makefile > +++ b/drivers/net/ethernet/Makefile > @@ -65,6 +65,7 @@ obj-$(CONFIG_NET_VENDOR_MICREL) += micrel/ > obj-$(CONFIG_NET_VENDOR_MICROCHIP) += microchip/ > obj-$(CONFIG_NET_VENDOR_MICROSEMI) += mscc/ > obj-$(CONFIG_NET_VENDOR_MOXART) += moxa/ > +obj-$(CONFIG_NET_VENDOR_MUCSE) += mucse/ > obj-$(CONFIG_NET_VENDOR_MYRI) += myricom/ > obj-$(CONFIG_FEALNX) += fealnx.o > obj-$(CONFIG_NET_VENDOR_NATSEMI) += natsemi/ > diff --git a/drivers/net/ethernet/mucse/Kconfig b/drivers/net/ethernet/mucse/Kconfig > new file mode 100644 > index 000000000000..be0fdf268484 > --- /dev/null > +++ b/drivers/net/ethernet/mucse/Kconfig > @@ -0,0 +1,34 @@ > +# SPDX-License-Identifier: GPL-2.0-only > +# > +# Mucse network device configuration > +# > + > +config NET_VENDOR_MUCSE > + bool "Mucse devices" > + default y > + help > + If you have a network (Ethernet) card from Mucse(R), say Y. > + > + Note that the answer to this question doesn't directly affect the > + kernel: saying N will just cause the configurator to skip all > + the questions about Mucse(R) cards. If you say Y, you will > + be asked for your specific card in the following questions. > + > +if NET_VENDOR_MUCSE > + > +config MGBE > + tristate "Mucse(R) 1GbE PCI Express adapters support" > + depends on PCI > + select PAGE_POOL > + help > + This driver supports Mucse(R) 1GbE PCI Express family of > + adapters. > + > + More specific information on configuring the driver is in > + <file:Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst>. > + > + To compile this driver as a module, choose M here. The module > + will be called rnpgbe. > + > +endif # NET_VENDOR_MUCSE > + > diff --git a/drivers/net/ethernet/mucse/Makefile b/drivers/net/ethernet/mucse/Makefile > new file mode 100644 > index 000000000000..675173fa05f7 > --- /dev/null > +++ b/drivers/net/ethernet/mucse/Makefile > @@ -0,0 +1,7 @@ > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright(c) 2020 - 2025 MUCSE Corporation. > +# > +# Makefile for the MUCSE(R) network device drivers > +# > + > +obj-$(CONFIG_MGBE) += rnpgbe/ > diff --git a/drivers/net/ethernet/mucse/rnpgbe/Makefile b/drivers/net/ethernet/mucse/rnpgbe/Makefile > new file mode 100644 > index 000000000000..9df536f0d04c > --- /dev/null > +++ b/drivers/net/ethernet/mucse/rnpgbe/Makefile > @@ -0,0 +1,8 @@ > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright(c) 2020 - 2025 MUCSE Corporation. > +# > +# Makefile for the MUCSE(R) 1GbE PCI Express ethernet driver > +# > + > +obj-$(CONFIG_MGBE) += rnpgbe.o > +rnpgbe-objs := rnpgbe_main.o > diff --git a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h > new file mode 100644 > index 000000000000..64b2c093bc6e > --- /dev/null > +++ b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h > @@ -0,0 +1,24 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* Copyright(c) 2020 - 2025 Mucse Corporation. */ > + > +#ifndef _RNPGBE_H > +#define _RNPGBE_H > + > +enum rnpgbe_boards { > + board_n500, > + board_n210, > + board_n210L, > +}; > + > +struct mucse { > + struct net_device *netdev; > + struct pci_dev *pdev; > +}; > + > +/* Device IDs */ > +#define PCI_VENDOR_ID_MUCSE 0x8848 > +#define PCI_DEVICE_ID_N500_QUAD_PORT 0x8308 > +#define PCI_DEVICE_ID_N500_DUAL_PORT 0x8318 > +#define PCI_DEVICE_ID_N210 0x8208 > +#define PCI_DEVICE_ID_N210L 0x820a > +#endif /* _RNPGBE_H */ > diff --git a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c > new file mode 100644 > index 000000000000..b4a9c5c66af6 > --- /dev/null > +++ b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c > @@ -0,0 +1,120 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* Copyright(c) 2020 - 2025 Mucse Corporation. */ > + > +#include <linux/types.h> > +#include <linux/module.h> > +#include <linux/pci.h> > + > +#include "rnpgbe.h" > + > +static const char rnpgbe_driver_name[] = "rnpgbe"; > + > +/* rnpgbe_pci_tbl - PCI Device ID Table > + * > + * { PCI_DEVICE(Vendor ID, Device ID), > + * driver_data (used for different hw chip) } > + */ > +static struct pci_device_id rnpgbe_pci_tbl[] = { > + { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N500_QUAD_PORT), > + .driver_data = board_n500}, > + { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N500_DUAL_PORT), > + .driver_data = board_n500}, > + { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N210), > + .driver_data = board_n210}, > + { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N210L), > + .driver_data = board_n210L}, > + /* required last entry */ > + {0, }, > +}; > + > +/** > + * rnpgbe_probe - Device initialization routine > + * @pdev: PCI device information struct > + * @id: entry in rnpgbe_pci_tbl > + * > + * rnpgbe_probe initializes a PF adapter identified by a pci_dev > + * structure. > + * > + * @return: 0 on success, negative on failure > + **/ > +static int rnpgbe_probe(struct pci_dev *pdev, const struct pci_device_id *id) > +{ > + int err; > + > + err = pci_enable_device_mem(pdev); > + if (err) > + return err; > + > + err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(56)); > + if (err) { > + dev_err(&pdev->dev, > + "No usable DMA configuration, aborting %d\n", err); > + goto err_dma; > + } > + > + err = pci_request_mem_regions(pdev, rnpgbe_driver_name); > + if (err) { > + dev_err(&pdev->dev, > + "pci_request_selected_regions failed 0x%x\n", err); > + goto err_dma; > + } > + > + pci_set_master(pdev); > + pci_save_state(pdev); Don't you need to check the return value of this? Best regards, Parthiban V > + > + return 0; > +err_dma: > + pci_disable_device(pdev); > + return err; > +} > + > +/** > + * rnpgbe_remove - Device removal routine > + * @pdev: PCI device information struct > + * > + * rnpgbe_remove is called by the PCI subsystem to alert the driver > + * that it should release a PCI device. This could be caused by a > + * Hot-Plug event, or because the driver is going to be removed from > + * memory. > + **/ > +static void rnpgbe_remove(struct pci_dev *pdev) > +{ > + pci_release_mem_regions(pdev); > + pci_disable_device(pdev); > +} > + > +/** > + * rnpgbe_dev_shutdown - Device shutdown routine > + * @pdev: PCI device information struct > + **/ > +static void rnpgbe_dev_shutdown(struct pci_dev *pdev) > +{ > + pci_disable_device(pdev); > +} > + > +/** > + * rnpgbe_shutdown - Device shutdown routine > + * @pdev: PCI device information struct > + * > + * rnpgbe_shutdown is called by the PCI subsystem to alert the driver > + * that os shutdown. Device should setup wakeup state here. > + **/ > +static void rnpgbe_shutdown(struct pci_dev *pdev) > +{ > + rnpgbe_dev_shutdown(pdev); > +} > + > +static struct pci_driver rnpgbe_driver = { > + .name = rnpgbe_driver_name, > + .id_table = rnpgbe_pci_tbl, > + .probe = rnpgbe_probe, > + .remove = rnpgbe_remove, > + .shutdown = rnpgbe_shutdown, > +}; > + > +module_pci_driver(rnpgbe_driver); > + > +MODULE_DEVICE_TABLE(pci, rnpgbe_pci_tbl); > +MODULE_AUTHOR("Mucse Corporation, <techsupport@mucse.com>"); > +MODULE_DESCRIPTION("Mucse(R) 1 Gigabit PCI Express Network Driver"); > +MODULE_LICENSE("GPL"); > -- > 2.25.1 > >
On Fri, Aug 22, 2025 at 04:32:06AM +0000, Parthiban.Veerasooran@microchip.com wrote: > > + > > +/** > > + * rnpgbe_probe - Device initialization routine > > + * @pdev: PCI device information struct > > + * @id: entry in rnpgbe_pci_tbl > > + * > > + * rnpgbe_probe initializes a PF adapter identified by a pci_dev > > + * structure. > > + * > > + * @return: 0 on success, negative on failure > > + **/ > > +static int rnpgbe_probe(struct pci_dev *pdev, const struct pci_device_id *id) > > +{ > > + int err; > > + > > + err = pci_enable_device_mem(pdev); > > + if (err) > > + return err; > > + > > + err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(56)); > > + if (err) { > > + dev_err(&pdev->dev, > > + "No usable DMA configuration, aborting %d\n", err); > > + goto err_dma; > > + } > > + > > + err = pci_request_mem_regions(pdev, rnpgbe_driver_name); > > + if (err) { > > + dev_err(&pdev->dev, > > + "pci_request_selected_regions failed 0x%x\n", err); > > + goto err_dma; > > + } > > + > > + pci_set_master(pdev); > > + pci_save_state(pdev); > Don't you need to check the return value of this? > > Best regards, > Parthiban V Ok, I will add the check. Thanks for your feedback.
© 2016 - 2025 Red Hat, Inc.