1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun################################################################################ 3*4882a593Smuzhiyun# 4*4882a593Smuzhiyun# r8168 is the Linux device driver released for Realtek Gigabit Ethernet 5*4882a593Smuzhiyun# controllers with PCI-Express interface. 6*4882a593Smuzhiyun# 7*4882a593Smuzhiyun# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. 8*4882a593Smuzhiyun# 9*4882a593Smuzhiyun# This program is free software; you can redistribute it and/or modify it 10*4882a593Smuzhiyun# under the terms of the GNU General Public License as published by the Free 11*4882a593Smuzhiyun# Software Foundation; either version 2 of the License, or (at your option) 12*4882a593Smuzhiyun# any later version. 13*4882a593Smuzhiyun# 14*4882a593Smuzhiyun# This program is distributed in the hope that it will be useful, but WITHOUT 15*4882a593Smuzhiyun# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 16*4882a593Smuzhiyun# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 17*4882a593Smuzhiyun# more details. 18*4882a593Smuzhiyun# 19*4882a593Smuzhiyun# You should have received a copy of the GNU General Public License along with 20*4882a593Smuzhiyun# this program; if not, see <http://www.gnu.org/licenses/>. 21*4882a593Smuzhiyun# 22*4882a593Smuzhiyun# Author: 23*4882a593Smuzhiyun# Realtek NIC software team <nicfae@realtek.com> 24*4882a593Smuzhiyun# No. 2, Innovation Road II, Hsinchu Science Park, Hsinchu 300, Taiwan 25*4882a593Smuzhiyun# 26*4882a593Smuzhiyun################################################################################ 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun################################################################################ 29*4882a593Smuzhiyun# This product is covered by one or more of the following patents: 30*4882a593Smuzhiyun# US6,570,884, US6,115,776, and US6,327,625. 31*4882a593Smuzhiyun################################################################################ 32*4882a593Smuzhiyun 33*4882a593SmuzhiyunCONFIG_SOC_LAN = n 34*4882a593SmuzhiyunENABLE_FIBER_SUPPORT = n 35*4882a593SmuzhiyunENABLE_REALWOW_SUPPORT = n 36*4882a593SmuzhiyunENABLE_DASH_SUPPORT = n 37*4882a593SmuzhiyunENABLE_DASH_PRINTER_SUPPORT = n 38*4882a593SmuzhiyunCONFIG_DOWN_SPEED_100 = n 39*4882a593SmuzhiyunCONFIG_ASPM = n 40*4882a593SmuzhiyunENABLE_S5WOL = y 41*4882a593SmuzhiyunENABLE_S5_KEEP_CURR_MAC = n 42*4882a593SmuzhiyunENABLE_EEE = n 43*4882a593SmuzhiyunENABLE_S0_MAGIC_PACKET = n 44*4882a593SmuzhiyunCONFIG_DYNAMIC_ASPM = y 45*4882a593SmuzhiyunENABLE_USE_FIRMWARE_FILE = n 46*4882a593Smuzhiyun 47*4882a593Smuzhiyunifneq ($(KERNELRELEASE),) 48*4882a593Smuzhiyun obj-$(CONFIG_R8168) := r8168.o 49*4882a593Smuzhiyun r8168-objs := r8168_n.o r8168_asf.o rtl_eeprom.o rtltool.o 50*4882a593Smuzhiyun ifeq ($(CONFIG_SOC_LAN), y) 51*4882a593Smuzhiyun EXTRA_CFLAGS += -DCONFIG_SOC_LAN 52*4882a593Smuzhiyun endif 53*4882a593Smuzhiyun ifeq ($(ENABLE_FIBER_SUPPORT), y) 54*4882a593Smuzhiyun r8168-objs += r8168_fiber.o 55*4882a593Smuzhiyun EXTRA_CFLAGS += -DENABLE_FIBER_SUPPORT 56*4882a593Smuzhiyun endif 57*4882a593Smuzhiyun ifeq ($(ENABLE_REALWOW_SUPPORT), y) 58*4882a593Smuzhiyun r8168-objs += r8168_realwow.o 59*4882a593Smuzhiyun EXTRA_CFLAGS += -DENABLE_REALWOW_SUPPORT 60*4882a593Smuzhiyun endif 61*4882a593Smuzhiyun ifeq ($(ENABLE_DASH_SUPPORT), y) 62*4882a593Smuzhiyun r8168-objs += r8168_dash.o 63*4882a593Smuzhiyun EXTRA_CFLAGS += -DENABLE_DASH_SUPPORT 64*4882a593Smuzhiyun endif 65*4882a593Smuzhiyun ifeq ($(ENABLE_DASH_PRINTER_SUPPORT), y) 66*4882a593Smuzhiyun r8168-objs += r8168_dash.o 67*4882a593Smuzhiyun EXTRA_CFLAGS += -DENABLE_DASH_SUPPORT -DENABLE_DASH_PRINTER_SUPPORT 68*4882a593Smuzhiyun endif 69*4882a593Smuzhiyun EXTRA_CFLAGS += -DCONFIG_R8168_NAPI 70*4882a593Smuzhiyun EXTRA_CFLAGS += -DCONFIG_R8168_VLAN 71*4882a593Smuzhiyun ifeq ($(CONFIG_DOWN_SPEED_100), y) 72*4882a593Smuzhiyun EXTRA_CFLAGS += -DCONFIG_DOWN_SPEED_100 73*4882a593Smuzhiyun endif 74*4882a593Smuzhiyun ifeq ($(CONFIG_ASPM), y) 75*4882a593Smuzhiyun EXTRA_CFLAGS += -DCONFIG_ASPM 76*4882a593Smuzhiyun endif 77*4882a593Smuzhiyun ifeq ($(ENABLE_S5WOL), y) 78*4882a593Smuzhiyun EXTRA_CFLAGS += -DENABLE_S5WOL 79*4882a593Smuzhiyun endif 80*4882a593Smuzhiyun ifeq ($(ENABLE_S5_KEEP_CURR_MAC), y) 81*4882a593Smuzhiyun EXTRA_CFLAGS += -DENABLE_S5_KEEP_CURR_MAC 82*4882a593Smuzhiyun endif 83*4882a593Smuzhiyun ifeq ($(ENABLE_EEE), y) 84*4882a593Smuzhiyun EXTRA_CFLAGS += -DENABLE_EEE 85*4882a593Smuzhiyun endif 86*4882a593Smuzhiyun ifeq ($(ENABLE_S0_MAGIC_PACKET), y) 87*4882a593Smuzhiyun EXTRA_CFLAGS += -DENABLE_S0_MAGIC_PACKET 88*4882a593Smuzhiyun endif 89*4882a593Smuzhiyun ifeq ($(CONFIG_DYNAMIC_ASPM), y) 90*4882a593Smuzhiyun EXTRA_CFLAGS += -DCONFIG_DYNAMIC_ASPM 91*4882a593Smuzhiyun endif 92*4882a593Smuzhiyun ifeq ($(ENABLE_USE_FIRMWARE_FILE), y) 93*4882a593Smuzhiyun r8168-objs += r8168_firmware.o 94*4882a593Smuzhiyun EXTRA_CFLAGS += -DENABLE_USE_FIRMWARE_FILE 95*4882a593Smuzhiyun endif 96*4882a593Smuzhiyunelse 97*4882a593Smuzhiyun BASEDIR := /lib/modules/$(shell uname -r) 98*4882a593Smuzhiyun KERNELDIR ?= $(BASEDIR)/build 99*4882a593Smuzhiyun PWD :=$(shell pwd) 100*4882a593Smuzhiyun DRIVERDIR := $(shell find $(BASEDIR)/kernel/drivers/net/ethernet -name realtek -type d) 101*4882a593Smuzhiyun ifeq ($(DRIVERDIR),) 102*4882a593Smuzhiyun DRIVERDIR := $(shell find $(BASEDIR)/kernel/drivers/net -name realtek -type d) 103*4882a593Smuzhiyun endif 104*4882a593Smuzhiyun ifeq ($(DRIVERDIR),) 105*4882a593Smuzhiyun DRIVERDIR := $(BASEDIR)/kernel/drivers/net 106*4882a593Smuzhiyun endif 107*4882a593Smuzhiyun RTKDIR := $(subst $(BASEDIR)/,,$(DRIVERDIR)) 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun KERNEL_GCC_VERSION := $(shell cat /proc/version | sed -n 's/.*gcc version \([[:digit:]]\.[[:digit:]]\.[[:digit:]]\).*/\1/p') 110*4882a593Smuzhiyun CCVERSION = $(shell $(CC) -dumpversion) 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun KVER = $(shell uname -r) 113*4882a593Smuzhiyun KMAJ = $(shell echo $(KVER) | \ 114*4882a593Smuzhiyun sed -e 's/^\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*.*/\1/') 115*4882a593Smuzhiyun KMIN = $(shell echo $(KVER) | \ 116*4882a593Smuzhiyun sed -e 's/^[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*.*/\1/') 117*4882a593Smuzhiyun KREV = $(shell echo $(KVER) | \ 118*4882a593Smuzhiyun sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/') 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun kver_ge = $(shell \ 121*4882a593Smuzhiyun echo test | awk '{if($(KMAJ) < $(1)) {print 0} else { \ 122*4882a593Smuzhiyun if($(KMAJ) > $(1)) {print 1} else { \ 123*4882a593Smuzhiyun if($(KMIN) < $(2)) {print 0} else { \ 124*4882a593Smuzhiyun if($(KMIN) > $(2)) {print 1} else { \ 125*4882a593Smuzhiyun if($(KREV) < $(3)) {print 0} else { print 1 } \ 126*4882a593Smuzhiyun }}}}}' \ 127*4882a593Smuzhiyun ) 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun.PHONY: all 130*4882a593Smuzhiyunall: print_vars clean modules install 131*4882a593Smuzhiyun 132*4882a593Smuzhiyunprint_vars: 133*4882a593Smuzhiyun @echo 134*4882a593Smuzhiyun @echo "CC: " $(CC) 135*4882a593Smuzhiyun @echo "CCVERSION: " $(CCVERSION) 136*4882a593Smuzhiyun @echo "KERNEL_GCC_VERSION: " $(KERNEL_GCC_VERSION) 137*4882a593Smuzhiyun @echo "KVER: " $(KVER) 138*4882a593Smuzhiyun @echo "KMAJ: " $(KMAJ) 139*4882a593Smuzhiyun @echo "KMIN: " $(KMIN) 140*4882a593Smuzhiyun @echo "KREV: " $(KREV) 141*4882a593Smuzhiyun @echo "BASEDIR: " $(BASEDIR) 142*4882a593Smuzhiyun @echo "DRIVERDIR: " $(DRIVERDIR) 143*4882a593Smuzhiyun @echo "PWD: " $(PWD) 144*4882a593Smuzhiyun @echo "RTKDIR: " $(RTKDIR) 145*4882a593Smuzhiyun @echo 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun.PHONY:modules 148*4882a593Smuzhiyunmodules: 149*4882a593Smuzhiyun#ifeq ($(call kver_ge,5,0,0),1) 150*4882a593Smuzhiyun $(MAKE) -C $(KERNELDIR) M=$(PWD) modules 151*4882a593Smuzhiyun#else 152*4882a593Smuzhiyun# $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) modules 153*4882a593Smuzhiyun#endif 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun.PHONY:clean 156*4882a593Smuzhiyunclean: 157*4882a593Smuzhiyun#ifeq ($(call kver_ge,5,0,0),1) 158*4882a593Smuzhiyun $(MAKE) -C $(KERNELDIR) M=$(PWD) clean 159*4882a593Smuzhiyun#else 160*4882a593Smuzhiyun# $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) clean 161*4882a593Smuzhiyun#endif 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun.PHONY:install 164*4882a593Smuzhiyuninstall: 165*4882a593Smuzhiyun#ifeq ($(call kver_ge,5,0,0),1) 166*4882a593Smuzhiyun $(MAKE) -C $(KERNELDIR) M=$(PWD) INSTALL_MOD_DIR=$(RTKDIR) modules_install 167*4882a593Smuzhiyun#else 168*4882a593Smuzhiyun# $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) INSTALL_MOD_DIR=$(RTKDIR) modules_install 169*4882a593Smuzhiyun#endif 170*4882a593Smuzhiyun 171*4882a593Smuzhiyunendif 172