#
# compiler flag for diagshell and apollo ASIC driver under x86 CYGWIN platform
#

include $(ROOTDIR)/$(LINUXDIR)/.config

CONFIG_SDK_APOLLO=n
CONFIG_SDK_APOLLOMP=$(CONFIG_RTL9600_SERIES)
CONFIG_SDK_RTL9601B=$(CONFIG_RTL9601B_SERIES)
CONFIG_SDK_RTL9602C=$(CONFIG_RTL9602C_SERIES)
CONFIG_SDK_RTL9607C=$(CONFIG_RTL9607C_SERIES)
CONFIG_SDK_RTL9603CVD=$(CONFIG_RTL9603CVD_SERIES)
CONFIG_SDK_LUNA_G3=$(filter y, $(CONFIG_ARCH_CORTINA_G3) $(CONFIG_ARCH_RTL8198F))
CONFIG_SDK_CA8279=$(CONFIG_CA8279_SERIES)
CONFIG_SDK_CA8277B=$(CONFIG_CA8277B_SERIES)
CONFIG_SDK_RTL8277C=$(CONFIG_RTL8277C_SERIES)

CONFIG_SDK_RTL8198F=$(CONFIG_ARCH_RTL8198F)

# CONFIG_PLATFORM_MODE could be CONFIG_PC_FPGA_MDIO_MODE: PC access FPGA through MDIO
# CONFIG_PLATFORM_MODE could be CONFIG_SOC_FPGA_MDIO_MODE: SoC access FPGA through MDIO
# CONFIG_PLATFORM_MODE could be CONFIG_FPGA_SPI_MODE: SoC access FPGA through SPI
# CONFIG_PLATFORM_MODE could be CONFIG_FPGA_I2C_MODE: SoC access FPGA through SPI and I2C
# CONFIG_PLATFORM_MODE could be CONFIG_FPGA_SPI_L34_MODE: SoC access FPGA through SPI for L34 platform
# CONFIG_PLATFORM_MODE could be CONFIG_VIRTUAL_DRV_MODE: PC simulation
# CONFIG_PLATFORM_MODE could be CONFIG_RLX_MODE: PC access ASIC through RLX probe
# CONFIG_PLATFORM_MODE could be CONFIG_SOC_MODE: run in SoC through memory access
# CONFIG_PLATFORM_MODE could be CONFIG_SOC_VIRTUAL_DRV_MODE: run in SoC asic register is virtual ram
CONFIG_PLATFORM_MODE=CONFIG_SOC_MODE

CONFIG_FPGA_SPI_CS_GPIO_PIN=31

#CONFIG_MODULE_BUILD_IN=y
#CONFIG_CHECK_BUILD_MODE=y

### user mode rtk API ###
CONFIG_RTK_USER_MODE=y

### voip init or not ###
#CONFIG_RTK_VOIP_INIT=y

### l34 feature ###
#CONFIG_RTK_L34_ENABLE=y

#CONFIG_RTK_L34_DEMO=n

#ifeq ($(CONFIG_RTK_L34_ENABLE),y)
#PON_CFLAGS += -DCONFIG_RTK_L34_ENABLE=1
#else
#PON_CFLAGS += -DCONFIG_RTK_L34_ENABLE=0
#endif

#ifeq ($(CONFIG_RTK_L34_DEMO),y)
#PON_CFLAGS += -DCONFIG_RTK_L34_DEMO
#endif
#ifeq ($(CONFIG_RTK_USER_MODE),y)
#PON_CFLAGS += -DCONFIG_SDK_USER_MODE
#endif

#@@ GPON version config ###
CONFIG_GPON_VERSION=2

export CONFIG_GPON_VERSION
PON_CFLAGS +=-DCONFIG_GPON_VERSION=$(CONFIG_GPON_VERSION)

# CONFIG_DIAGSHELL_MODE could be CONFIG_DIAGSHELL_RAW: build raw driver access mode diagshell
#                                CONFIG_DIAGSHELL_RTK: build RTK API mode diagshell
CONFIG_DIAGSHELL_MODE=CONFIG_DIAGSHELL_RTK

export CONFIG_SDK_APOLLO CONFIG_SDK_APOLLOMP CONFIG_SDK_RTL9601B

PON_CFLAGS += -DRTK_X86_CLE -DNO_MIB_SEPARATE


ifeq ($(CONFIG_PLATFORM_MODE),CONFIG_PC_FPGA_MDIO_MODE)
#CYGWIN X86 MDIO access
  PON_CFLAGS +=  -DCYGWIN_MDIO_IO -DFPGA_DEFINED -DCONFIG_PC_FPGA_MDIO_MODE
  ifeq ($(CONFIG_SDK_KERNEL_LINUX_KERNEL_MODE),y)
    PON_CFLAGS +=  -DLINUX_KERNEL_MDIO_IO
  endif
endif

ifeq ($(CONFIG_PLATFORM_MODE),CONFIG_SOC_FPGA_MDIO_MODE)
  PON_CFLAGS +=  -DFPGA_DEFINED -DOLD_FPGA_DEFINED -DCONFIG_SOC_DEPEND_FEATURE -DCONFIG_SOC_FPGA_MDIO_MODE
  ifeq ($(CONFIG_SDK_KERNEL_LINUX_KERNEL_MODE),y)
    PON_CFLAGS +=  -DLINUX_KERNEL_MDIO_IO
  endif
endif

ifeq ($(CONFIG_PLATFORM_MODE),CONFIG_FPGA_SPI_MODE)
# MDIO access
  PON_CFLAGS +=  -DFPGA_DEFINED -DCONFIG_SOC_DEPEND_FEATURE -DCONFIG_FPGA_SPI_MODE
  ifeq ($(CONFIG_SDK_KERNEL_LINUX_KERNEL_MODE),y)
    PON_CFLAGS +=  -DLINUX_KERNEL_MDIO_IO -DLINUX_KERNEL_SPI_IO -DLINUX_KERNEL_SPI_IO_6266 -DFPGA_SPI_CS_GPIO_PIN=$(CONFIG_FPGA_SPI_CS_GPIO_PIN)
  endif
endif

ifeq ($(CONFIG_PLATFORM_MODE),CONFIG_FPGA_I2C_MODE)
# MDIO access
  PON_CFLAGS +=  -DFPGA_DEFINED -DCONFIG_SOC_DEPEND_FEATURE -DCONFIG_FPGA_SPI_MODE
  ifeq ($(CONFIG_SDK_KERNEL_LINUX_KERNEL_MODE),y)
    PON_CFLAGS +=  -DLINUX_KERNEL_MDIO_IO -DLINUX_KERNEL_SPI_IO -DLINUX_KERNEL_SPI_IO_6266 -DLINUX_KERNEL_I2C_IO -DFPGA_SPI_CS_GPIO_PIN=$(CONFIG_FPGA_SPI_CS_GPIO_PIN)
  endif
endif

ifeq ($(CONFIG_PLATFORM_MODE),CONFIG_FPGA_SPI_L34_MODE)
# MDIO access
  PON_CFLAGS +=  -DFPGA_DEFINED -DCONFIG_FPGA_SPI_L34_MODE
  ifeq ($(CONFIG_SDK_KERNEL_LINUX_KERNEL_MODE),y)
    PON_CFLAGS +=  -DLINUX_KERNEL_MDIO_IO -DLINUX_KERNEL_SPI_IO -DRTL_SPI_SLOW_CLK -DLINUX_KERNEL_SPI_IO_6266
  endif
endif

ifeq ($(CONFIG_PLATFORM_MODE),CONFIG_VIRTUAL_DRV_MODE)
# MDIO access
    PON_CFLAGS +=  -DCONFIG_SDK_ASICDRV_TEST -DRTL_CYGWIN_EMULATE -DCONFIG_VIRTUAL_DRV_MODE
endif

ifeq ($(CONFIG_PLATFORM_MODE),CONFIG_RLX_MODE)
# MDIO access
    PON_CFLAGS +=  -DRTL_RLX_IO
    endif

ifeq ($(CONFIG_PLATFORM_MODE),CONFIG_SOC_MODE)
# MDIO access
  PON_CFLAGS += -DCONFIG_SOC_DEPEND_FEATURE -DCONFIG_SOC_MODE
endif

ifeq ($(CONFIG_PLATFORM_MODE),CONFIG_SOC_VIRTUAL_DRV_MODE)
# MDIO access
  PON_CFLAGS += -DCONFIG_SDK_ASICDRV_TEST -DCONFIG_SOC_ASICDRV_TEST -DCONFIG_SOC_VIRTUAL_DRV_MODE
endif



ifeq ($(CONFIG_SDK_KERNEL_LINUX_KERNEL_MODE),y)
PON_CFLAGS +=  -DCONFIG_SDK_KERNEL_LINUX
endif


### HAL Setting ###
ifeq ($(CONFIG_SDK_APOLLO),y)
PON_CFLAGS += -DCONFIG_SDK_APOLLO
endif

ifeq ($(CONFIG_SDK_APOLLOMP),y)
PON_CFLAGS += -DCONFIG_SDK_APOLLOMP
endif


ifeq ($(CONFIG_SDK_RTL9601B),y)
PON_CFLAGS += -DCONFIG_SDK_RTL9601B
endif


ifeq ($(CONFIG_SDK_RTL9602C),y)
PON_CFLAGS += -DCONFIG_SDK_RTL9602C
endif


ifeq ($(CONFIG_SDK_RTL9607C),y)
PON_CFLAGS += -DCONFIG_SDK_RTL9607C
endif

ifeq ($(CONFIG_SDK_RTL9603CVD),y)
PON_CFLAGS += -DCONFIG_SDK_RTL9603CVD
endif

# define rtk api
EXTRA_CFLAGS += -I$(APOLLODIR)/sdk/include
EXTRA_CFLAGS += -I$(APOLLODIR)/sdk/system/include

ifeq ($(CONFIG_SDK_LUNA_G3),y)
PON_CFLAGS += -DCONFIG_SDK_LUNA_G3
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/ca-ne-rtk
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/ni-drv
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/aal/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/cortina-api/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/inc
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/osal/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/osal/osal/linux_kernel
# For 8198F OpenWRT workaround
ifeq ($(CONFIG_OPENWRT_SDK),y)
LINUXINCLUDE += -include $(TOPDIR)/$(RTK_DTS_DIR)/ca_ne_autoconf.h
else
LINUXINCLUDE += -include $(APOLLODIR)/ca-ne/include/generated/ca_ne_autoconf.h
endif
endif

ifeq ($(CONFIG_SDK_CA8279),y)
PON_CFLAGS += -DCONFIG_SDK_CA8279
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/ca-ne-rtk
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/ni-drv
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/aal/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/cortina-api/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/inc
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/osal/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/osal/osal/linux_kernel
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/peri
LINUXINCLUDE += -include $(APOLLODIR)/ca-ne/include/generated/ca_ne_autoconf.h
endif

ifeq ($(CONFIG_SDK_CA8277B),y)
PON_CFLAGS += -DCONFIG_SDK_CA8277B
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/ca-ne-rtk
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/ni-drv-gen2
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/aal-gen2/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/cortina-api/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/inc
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/osal/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/osal/osal/linux_kernel
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/peri
LINUXINCLUDE += -include $(APOLLODIR)/ca-ne/include/generated/ca_ne_autoconf.h
endif

ifeq ($(CONFIG_SDK_RTL8198F),y)
PON_CFLAGS += -DCONFIG_SDK_RTL8198F
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/peri
endif

ifeq ($(CONFIG_SDK_RTL8277C),y)
PON_CFLAGS += -DCONFIG_SDK_RTL8277C
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/ca-ne-rtk
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/ni-drv-77c
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/aal-77c/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-ne/cortina-api/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/inc
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/osal/include
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/osal/osal/linux_kernel
EXTRA_CFLAGS += -I$(APOLLODIR)/ca-plat/peri
endif

ifeq ($(CONFIG_LUNA_G3_SERIES),y)
# For 8198F OpenWRT workaround
ifeq ($(CONFIG_OPENWRT_SDK),y)
LINUXINCLUDE += -include $(TOPDIR)/$(RTK_DTS_DIR)/ca_ne_autoconf.h
else ifeq ($(CONFIG_CA8277B_SERIES)_$(CONFIG_RTL8277C_SERIES),y_y)
LINUXINCLUDE += -include $(ROOTDIR)/ca_packages/ca-network-engine/1.0-r0/ca-network-engine-1.0-venus/include/generated/ca_ne_autoconf.h
else
LINUXINCLUDE += -include $(ROOTDIR)/ca_packages/ca-network-engine/1.0-r0/ca-network-engine-1.0/include/generated/ca_ne_autoconf.h
endif
endif

### Force Probe setting, should only one line be un-comment ###
#PON_CFLAGS += -DFORCE_PROBE_APOLLO
#PON_CFLAGS += -DFORCE_PROBE_APOLLO_REV_B
#PON_CFLAGS += -DFORCE_PROBE_APOLLOMP
#PON_CFLAGS += -DFORCE_PROBE_APOLLOMP_REV_B
#PON_CFLAGS += -DFORCE_PROBE_RTL9601B
#PON_CFLAGS += -DFORCE_PROBE_RTL9602C



### For debug ###
#PON_CFLAGS += -DCONFIG_SDK_DEBUG

### For SDK driver unittest
#CONFIG_SDK_DRIVER_UNITTEST=y
#export CONFIG_SDK_DRIVER_UNITTEST


ifeq ($(CONFIG_SDK_APOLLOMP), y)
CONFIG_L34_TABLE_BASE_DIAG=y
export CONFIG_L34_TABLE_BASE_DIAG
EXTRA_CFLAGS += -DCONFIG_L34_TABLE_BASE_DIAG
endif

ifeq ($(CONFIG_SDK_RTL9602C), y)
CONFIG_L34_TABLE_BASE_DIAG=y
export CONFIG_L34_TABLE_BASE_DIAG
EXTRA_CFLAGS += -DCONFIG_L34_TABLE_BASE_DIAG
endif

### pure h/w verify, not init asic by S/W###
#PON_CFLAGS += -DCONFIG_PURE_HW_INIT


### BEN mode selection: single end or differential ###
PON_CFLAGS += -DCONFIG_BEN_SINGLE_END
#PON_CFLAGS += -DCONFIG_BEN_DIFFERENTIAL


######################################
###    featrue select part
######################################

### for gpon feature

#CONFIG_GPON_FEATURE=y
#ifeq ($(CONFIG_GPON_FEATURE),y)
#PON_CFLAGS += -DCONFIG_GPON_FEATURE
#endif

#CONFIG_RTK_OMCI=y
#ifeq ($(CONFIG_RTK_OMCI),y)
#PON_CFLAGS += -DCONFIG_RTK_OMCI
#endif
### for classfication feature
PON_CFLAGS += -DCONFIG_CLASSFICATION_FEATURE



### for epon feature

#CONFIG_EPON_FEATURE=y
#ifeq ($(CONFIG_EPON_FEATURE),y)
#PON_CFLAGS += -DCONFIG_EPON_FEATURE
#endif

ifeq ($(CONFIG_COMMON_RT_API),y)
PON_CFLAGS += -DCONFIG_COMMON_RT_API
EXTRA_CFLAGS += -I$(NETDIR)
EXTRA_CFLAGS += -I$(APOLLODIR)/FleetConntrackDriver
EXTRA_CFLAGS += -I$(APOLLODIR)/FleetConntrackDriver/rt/include

ifeq ($(CONFIG_RTK_IGMP_MLD_SNOOPING_MODULE),m)
PON_CFLAGS += -DCONFIG_RTK_IGMP_MLD_SNOOPING_MODULE
EXTRA_CFLAGS += -I$(APOLLODIR)/igmpHookModule
EXTRA_CFLAGS += -I$(APOLLODIR)/igmpHookModule/rt_igmpHook/include
endif

endif

