Skip to content

Commit

Permalink
net: guangruntong: Add support for Guangruntong ethernet card
Browse files Browse the repository at this point in the history
This driver comes from Guangruntong Cooperation, which provides
support for Guangruntong ethernet card.

Link: deepin-community/kernel#349
Link: deepin-community/kernel#357
Co-developed-by: Shunkui Hu <hushunkui@grt-china.com>
Signed-off-by: Shunkui Hu <hushunkui@grt-china.com>
Signed-off-by: WangYuli <wangyuli@uniontech.com>
  • Loading branch information
Avenger-285714 committed Jan 4, 2025
1 parent 175ac01 commit aeb0678
Show file tree
Hide file tree
Showing 30 changed files with 27,141 additions and 0 deletions.
1 change: 1 addition & 0 deletions drivers/net/ethernet/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -192,5 +192,6 @@ source "drivers/net/ethernet/wangxun/Kconfig"
source "drivers/net/ethernet/wiznet/Kconfig"
source "drivers/net/ethernet/xilinx/Kconfig"
source "drivers/net/ethernet/xircom/Kconfig"
source "drivers/net/ethernet/guangruntong/Kconfig"

endif # ETHERNET
1 change: 1 addition & 0 deletions drivers/net/ethernet/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,4 @@ obj-$(CONFIG_NET_VENDOR_XILINX) += xilinx/
obj-$(CONFIG_NET_VENDOR_XIRCOM) += xircom/
obj-$(CONFIG_NET_VENDOR_SYNOPSYS) += synopsys/
obj-$(CONFIG_NET_VENDOR_PENSANDO) += pensando/
obj-$(CONFIG_NET_VENDOR_GRT) += guangruntong/
23 changes: 23 additions & 0 deletions drivers/net/ethernet/guangruntong/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# SPDX-License-Identifier: GPL-2.0
#
# Guangruntong network device configuration
#

config NET_VENDOR_GRT
bool "Guanruntong devices"
depends on PCI
default y
help
If you have a network (Ethernet) card belonging to this class, 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 Intel cards. If you say Y, you will be asked for
your specific card in the following questions.

config GRTNIC
tristate "Guangruntong PCI Express adapters support"
depends on NET_VENDOR_GRT
help
This driver supports Guangruntong PCI Express family of
adapters.
245 changes: 245 additions & 0 deletions drivers/net/ethernet/guangruntong/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,245 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright(c) 1999 - 2021 Intel Corporation.

ifneq ($(KERNELRELEASE),)
# kbuild part of makefile
#
# Makefile for the Intel(R) 10GbE PCI Express Linux Network Driver
#

obj-$(CONFIG_GRTNIC_XGB) += grtnic_xgb.o

define grtnic_xgb-y
grtnic_main.o
grtnic_netdev.o
grtnic_macphy.o
grtnic_param.o
grtnic_nvm.o
grtnic_ethtool.o
grtnic_proc.o
endef
grtnic_xgb-y := $(strip ${grtnic_xgb-y})
grtnic_xgb-y += kcompat.o

else # ifneq($(KERNELRELEASE),)
# normal makefile

DRIVER := grtnic_xgb

# Check that kernel version is at least 2.6.0, since we don't support 2.4.x
# kernels with the grtnic driver. We can't use minimum_kver_check since SLES 10
# SP4's Make has a bug which causes $(eval) inside an ifeq conditional to error
# out. This was fixed in Make 3.81, but SLES 10 SP4 does not have a fix for
# this yet.
ifeq (0,$(shell [ ${KVER_CODE} -lt $(call get_kvercode,2,6,0) ]; echo "$?"))
$(warning *** Aborting the build.)
$(error This driver is not supported on kernel versions older than 2.6.0)
endif

######################
# Kernel Build Macro #
######################

# customized kernelbuild function
#
# ${1} is the kernel build target
# ${2} may contain extra rules to pass to kernelbuild macro
#
# We customize the kernelbuild target in order to provide our hack to disable
# CONFIG_PTP_1588_CLOCK support should -DNO_PTP_SUPPORT be defined in the extra
# cflags given on the command line.
devkernelbuild = $(call kernelbuild,$(if $(filter -DNO_PTP_SUPPORT,${EXTRA_CFLAGS}),CONFIG_PTP_1588_CLOCK=n) ${2},${1})

# Command to update initramfs or display a warning message
ifeq (${cmd_initrd},)
define cmd_initramfs
@echo "Unable to update initramfs. You may need to do this manually."
endef
else
define cmd_initramfs
@echo "Updating initramfs..."
-@$(call cmd_initrd)
endef
endif

###############
# Build rules #
###############

# Standard compilation, with regular output
default:
@+$(call devkernelbuild,modules)

# Noisy output, for extra debugging
noisy:
@+$(call devkernelbuild,modules,V=1)

# Silence any output generated
silent:
@+$(call devkernelbuild,modules,>/dev/null)

# Enable higher warning level
checkwarnings: clean
@+$(call devkernelbuild,modules,W=1)

# Run sparse static analyzer
sparse: clean
@+$(call devkernelbuild,modules,C=2 CF="-D__CHECK_ENDIAN__ -Wbitwise -Wcontext")

# Run coccicheck static analyzer
ccc: clean
@+$(call devkernelbuild,modules,coccicheck MODE=report))

# Build manfiles
manfile:
@gzip -c ../${DRIVER}.${MANSECTION} > ${DRIVER}.${MANSECTION}.gz

# Clean the module subdirectories
clean:
@+$(call devkernelbuild,clean)
@-rm -rf *.${MANSECTION}.gz *.ko

kylin: EXTRA_CFLAGS += -DKYLIN_KERNEL
kylin:
@echo "Compile for Kylin kernel..."
@+$(call devkernelbuild,modules)

kylin44: EXTRA_CFLAGS += -DKYLIN_KERNEL44
kylin44:
@echo "Compile for Kylin4.4 kernel..."
@+$(call devkernelbuild,modules)

uos: EXTRA_CFLAGS += -DUOS_KERNEL
uos:
@echo "Compile for Uos kernel..."
@+$(call devkernelbuild,modules)

euler: EXTRA_CFLAGS += -DEULER_KERNEL
euler:
@echo "Compile for OpenEuler kernel..."
@+$(call devkernelbuild,modules)


# Install the modules and manpage
mandocs_install: manfile
@echo "Copying manpages..."
@install -D -m 644 ${DRIVER}.${MANSECTION}.gz ${INSTALL_MOD_PATH}${MANDIR}/man${MANSECTION}/${DRIVER}.${MANSECTION}.gz

# Install kernel module files. This target is called by the RPM specfile
# when generating binary RPMs, and is not expected to modify files outside
# of the build root. Thus, it must not update initramfs, or run depmod.
modules_install: default
@echo "Installing modules..."
@+$(call devkernelbuild,modules_install)

kylin_modules_install: kylin
@echo "Installing modules..."
@+$(call devkernelbuild,modules_install)

kylin44_modules_install: kylin44
@echo "Installing modules..."
@+$(call devkernelbuild,modules_install)

uos_modules_install: uos
@echo "Installing modules..."
@+$(call devkernelbuild,modules_install)

euler_modules_install: euler
@echo "Installing modules..."
@+$(call devkernelbuild,modules_install)

# After installing all the files, perform necessary work to ensure the
# system will use the new modules. This includes running depmod to update
# module dependencies and updating the initramfs image in case the module is
# loaded during early boot.
install: modules_install #mandocs_install
@echo "Running depmod..."
$(call cmd_depmod)
$(call cmd_initramfs)

kylin_install: kylin_modules_install #mandocs_install
@echo "Running depmod..."
$(call cmd_depmod)
$(call cmd_initramfs)

kylin44_install: kylin44_modules_install #mandocs_install
@echo "Running depmod..."
$(call cmd_depmod)
$(call cmd_initramfs)

uos_install: uos_modules_install #mandocs_install
@echo "Running depmod..."
$(call cmd_depmod)
$(call cmd_initramfs)

euler_install: euler_modules_install #mandocs_install
@echo "Running depmod..."
$(call cmd_depmod)
$(call cmd_initramfs)

mandocs_uninstall:
if [ -e ${INSTALL_MOD_PATH}${MANDIR}/man${MANSECTION}/${DRIVER}.${MANSECTION}.gz ] ; then \
rm -f ${INSTALL_MOD_PATH}${MANDIR}/man${MANSECTION}/${DRIVER}.${MANSECTION}.gz ; \
fi;

# Remove installed module files. This target is called by the RPM specfile
# when generating binary RPMs, and is not expected to modify files outside
# of the build root. Thus, it must not update the initramfs image or run
# depmod.
modules_uninstall:
rm -f ${INSTALL_MOD_PATH}/lib/modules/${KVER}/${INSTALL_MOD_DIR}/${DRIVER}.ko;

# After uninstalling all the files, perform necessary work to restore the
# system back to using the default kernel modules. This includes running
# depmod to update module dependencies and updating the initramfs image.
uninstall: modules_uninstall
$(call cmd_depmod)
$(call cmd_initramfs)

########
# Help #
########
help:
@echo 'Build targets:'
@echo ' default - Build module(s) with standard verbosity'
@echo ' kylin - Build module(s) for kylin Kernel'
@echo ' kylin44 - Build module(s) for kylin 4.4 Kernel'
@echo ' uos - Build module(s) for uos Kernel'
@echo ' euler - Build module(s) for euler Kernel'
@echo ' noisy - Build module(s) with V=1 verbosity -- very noisy'
@echo ' silent - Build module(s), squelching all output'
@echo ''
@echo 'Static Analysis:'
@echo ' checkwarnings - Clean, then build module(s) with W=1 warnings enabled'
@echo ' sparse - Clean, then check module(s) using sparse'
@echo ' ccc - Clean, then check module(s) using coccicheck'
@echo ''
@echo 'Cleaning targets:'
@echo ' clean - Clean files generated by kernel module build'
@echo ''
@echo 'Other targets:'
@echo ' manfile - Generate a gzipped manpage'
@echo ' modules_install - Install the module(s) only'
@echo ' mandocs_install - Install the manpage only'
@echo ' install - Build then install the module(s) and manpage, and update initramfs'
@echo ' kylin_install - Build then install kylin module(s) and update initramfs'
@echo ' kylin44_install - Build then install kylin 4.4 module(s) and update initramfs'
@echo ' uos_install - Build then install uos module(s) and update initramfs'
@echo ' euler_install - Build then install OpenEuler module(s) and update initramfs'
@echo ' modules_uninstall - Uninstall the module(s) only'
@echo ' mandocs_uninstall - Uninstall the manpage only'
@echo ' uninstall - Uninstall the module(s) and manpage, and update initramfs'
@echo ' help - Display this help message'
@echo ''
@echo 'Variables:'
@echo ' LINUX_VERSION - Debug tool to force kernel LINUX_VERSION_CODE. Use at your own risk.'
@echo ' W=N - Kernel variable for setting warning levels'
@echo ' V=N - Kernel variable for setting output verbosity'
@echo ' INSTALL_MOD_PATH - Add prefix for the module and manpage installation path'
@echo ' INSTALL_MOD_DIR - Use module directory other than updates/drivers/net/ethernet/intel/${DRIVER}'
@echo ' Other variables may be available for tuning make process, see'
@echo ' Kernel Kbuild documentation for more information'

.PHONY: default noisy clean manfile silent sparse ccc install uninstall help

endif # ifneq($(KERNELRELEASE),)
Loading

0 comments on commit aeb0678

Please sign in to comment.