BAL and Maple Release 2.2

Signed-off-by: Shad Ansari <developer@Carbon.local>
diff --git a/bcm68620_release/release/make/Makefile.config b/bcm68620_release/release/make/Makefile.config
new file mode 100644
index 0000000..908239a
--- /dev/null
+++ b/bcm68620_release/release/make/Makefile.config
@@ -0,0 +1,391 @@
+# Common Makefile configuration
+#
+
+# The following variables must be set
+# MOD_NAME - module name. Depending on MOD_TYPE can be encapsulated (e.g., MOD_NAME=os --> libos.a)
+# MOD_TYPE - module type. Supported types currently are "lib", "app", "linux_module" and "linux_lib"
+#                        Note:
+#                               For library module it is possible to specify "unitest" target in
+#                               $(MAKE_DEVICE_DIR)/modules.host / embedded.
+#                               In this case unitest.c is compiled and linked with its module library.
+#                               However, MOD_TYPE remains a "lib".
+#
+# The following variables are optional
+# srcs     - list of .c source files relative to SRC_DIR
+# as_srcs  - list of .s (lower case s)   source files relative to SRC_DIR
+# AS_srcs  - list of .S (upper case .S) source files relative to SRC_DIR
+# gen_srcs - list of .c that have to be generated as part of the build
+# MOD_DEPS - list of modules the "current" module depends on. OS abstraction layer dependency
+#                        (module "os") is always present implicitly. For example, api_cli module's Makefile
+#                        includes the following line:
+#                        MOD_DEPS = cli api utils model
+# MOD_INC_DIRS - used when module exports includes in directory(s) other than the module directory
+# MOD_DEFS - additional defines, including -D. the defines are added when compiling "this" module
+#                        and all modules depending on it
+# MOD_LIBS - additional libraries required by the module, including -l and -L
+# MOD_CUSTOM - if set "y", default rule for building the module is NOT provided.
+#                        In this case the rule for building $(MOD_TARGET) must be provided in module's Makefile
+#
+# The following variables are not required in most cases, but supported nonetheless
+# EXTRA_CFLAGS - extra CFLAGS the module requires for compilation
+# EXTRA_INCLUDES - extra include directories the module requires for compilation (with -I)
+# EXTRA_LIBS_PATH - additional library search paths
+# EXTRA_LIBS additional libraries to link with
+#
+# The following variables are pre-set and can be used in module-specific Makefile
+# TOP_DIR - fully qualified top directory
+# MOD_DIR - module directory relative to the top directory
+# OUT_DIR_BASE - output directory base
+# ALL_MODULES - list of all modules in the current subsystem (host/embedded)
+# ALL_LIB_MODULES - list of all lib modules in the current subsystem (host/embedded)
+# ALL_APP_MODULES - list of all app modules in the current subsystem (host/embedded)
+# SIMULATION_BUILD - set "y" for simulation build (CROSS_COMPILE is empty)
+# OS - OS
+# ENABLE_EPON - set "y" if EPON mode is included
+# ENABLE_GPON - set "y" if GPON mode is included
+# ENABLE_XGPON - set "y" if XGPON mode is included
+# ENABLE_GPON_OR_XGPON - set "y" if GPON or XGPON mode is included
+# ENABLE_CLI - set "n" if host CLI support is not required
+# ENABLE_LOG - set "n" if host logger support is not required
+#
+# USE_CLANG - set "y" to enable CLANG code pass for improved diagnostic
+#
+# The following variables are pre-set and can be used and/or overwritten in module-specific Makefile
+# SRC_DIR - fully-qualified source directory
+# OUT_DIR - module output directory
+# TARGET_LIB - library name for "lib" module. By default it is $(MOD_NAME)
+# TARGET_LIB_FNAME - module library file name including path. By default it is $(OUT_DIR)/lib$(TARGET_LIB).a
+# MOD_TARGET - module target name, including path. By default it is
+#       $(OUT_DIR)/$(MOD_NAME) for "app" modules
+#       $(TARGET_LIB_FNAME) for "lib" modules
+# CODEGEN_OUTPUT_DIR - output directory containing generated files
+
+TOOLCHAIN    ?= gcc
+OS           ?= posix
+DEBUG        ?= y
+BLD_DEP      ?= gcc
+USE_CLANG 	 ?= n
+
+export BOARD
+export TOOLCHAIN
+export OS
+export DEBUG
+export BLD_DEP
+export OS_KERNEL
+
+V ?= 0
+ifeq (x"$(V)", x"0")
+    SILENT_BUILD = @
+endif
+
+#
+# Compiler warning configuration
+# Some extra warnings are always enabled. Others must be opted in on the module level
+#
+ENABLE_EXTRA_WARNINGS ?= y
+export ENABLE_EXTRA_WARNINGS
+
+# Include optional platform-specific configuration
+-include $(MAKE_DEVICE_DIR)/Makefile.$(SUBSYSTEM).config
+
+ENABLE_EPON      ?= y
+ENABLE_GPON      ?= y
+ENABLE_XGPON ?= y
+
+ENABLE_GPON_OR_XGPON = n
+ifeq ("$(ENABLE_GPON)", "y")
+    ENABLE_GPON_OR_XGPON = y
+endif
+ifeq ("$(ENABLE_XGPON)", "y")
+    ENABLE_GPON_OR_XGPON = y
+endif
+export ENABLE_EPON
+export ENABLE_GPON
+export ENABLE_XGPON
+export ENABLE_GPON_OR_XGPON
+
+SRC_DIR          = $(TOP_DIR)/$(MOD_DIR)
+
+ifeq ("$(RELEASE_BUILD)", "y")
+    OUT_DIR_BASE ?= $(TOP_DIR)/build
+    OUT_DIR      = $(OUT_DIR_BASE)/$(MOD_DIR)
+    MODEL_OUT_DIR= $(TOP_DIR)/host_driver/model
+    CONFIG_DIR      = host_driver/config
+else
+    OUT_DIR_BASE ?= $(TOP_DIR)/build/$(PLATFORM)/$(SUBSYSTEM)
+    OUT_DIR      = $(OUT_DIR_BASE)/$(MOD_DIR)
+    MODEL_OUT_DIR= $(OUT_DIR_BASE)/common/model/$(PLATFORM)
+    CONFIG_DIR      = $(SUBSYSTEM)/config
+    OS_PLATFORM_DIR = $(SUBSYSTEM)/os_abstraction/$(PLATFORM)
+endif
+
+# Host CLI and logger support
+ENABLE_CLI ?= y
+ENABLE_LOG ?= y
+ENABLE_KT2 ?= n
+
+MOD_DEFS += -DUSE_DRIVER_CLI=1 -DFULL_DRIVER=1 -DCFE_DRIVER=0
+
+export ENABLE_CLI
+export ENABLE_LOG
+export ENABLE_KT2
+
+ifeq ("$(SUBSYSTEM)", "embedded")
+    override ENABLE_CLI = y
+    override ENABLE_LOG = y
+endif
+
+#
+### Include module Makefile
+# For MOD_CUSTOM only will be included in Makefile.rules second time for propagate custom rules
+#
+include $(SRC_DIR)/Makefile
+
+# Code-generator - related parameters
+CODEGEN_INPUT_DIR        = $(SRC_DIR)/codegen_templates
+CODEGEN_OUTPUT_DIR       = $(OUT_DIR)
+CODEGEN_DIR                      = $(TOP_DIR)/bin/codegen
+MODEL_FILE                       = $(TOP_DIR)/common/model/$(PLATFORM)/$(PLATFORM).objset
+CODEGEN_EXE                      = $(CODEGEN_DIR)/Teknovus.MetaStructure.CodeGenerator.exe
+MONO_VER            ?= 4.3.2.467
+MONO_PATH           ?= /opt/mono-$(MONO_VER)/bin/mono
+
+export SRC_DIR
+export OUT_DIR_BASE
+export OUT_DIR
+export MODEL_OUT_DIR
+
+ifeq ("$(wildcard $(MONO_PATH))", "")
+    # If we can't find Mono installed in the correct path, default to the current PATH version.
+    # In the future, we should always use Mono from a common tools directory.
+    # TODO: change this once the compiler/toolchain paths are better defined.
+    MONO_PATH        = mono
+endif
+
+# Treat "yes" and "y" the same
+ifeq ("$(USE_CLANG)", "yes")
+    USE_CLANG := y
+endif
+ifeq ("$(USE_CLANG)", "y")
+    include $(MAKE_DIR)/clang.opts
+endif
+
+# Disable code generation in release build
+ifeq ("$(RELEASE_BUILD)", "y")
+    srcs := $(srcs) $(gen_srcs)
+    gen_srcs :=
+    # Disable LINT and CLANG
+    USE_LINT = n
+    USE_CLANG = n
+	EXTRA_DEFINES += -DRELEASE_BUILD
+endif
+
+SRCS = $(strip $(srcs:%=$(SRC_DIR)/%))
+
+# In COMPILE_ALL_IN_ONE_GO mode all .c files of a module are compiled in
+# a single invocation of BLD_CC compiler. In result, objects files are created
+# in OUT_DIR even if module's .c files are spread in sub-directories
+ifeq ("$(COMPILE_ALL_IN_ONE_GO)", "y")
+    srcs_no_dir = $(notdir $(srcs))
+    _OBJS = $(srcs_no_dir:%.c=$(OUT_DIR)/%.o)
+else
+    _OBJS = $(srcs:%.c=$(OUT_DIR)/%.o)
+endif
+
+as_SRCS = $(strip $(as_srcs:%=$(SRC_DIR)/%))
+as_OBJS = $(as_srcs:%.s=$(OUT_DIR)/%.o)
+_OBJS  += $(as_OBJS)
+
+AS_SRCS = $(strip $(AS_srcs:%=$(SRC_DIR)/%))
+AS_OBJS = $(AS_srcs:%.S=$(OUT_DIR)/%.o)
+_OBJS  += $(AS_OBJS)
+
+ifneq ("$(gen_srcs)", "")
+    GEN_SRCS = $(strip $(gen_srcs:%=$(CODEGEN_OUTPUT_DIR)/%))
+    _OBJS += $(GEN_SRCS:%.c=%.o)
+endif
+OBJS = $(strip $(_OBJS))
+
+# Add default dependency on OS abstraction
+ifeq ("$(MOD_NAME)", "")
+    ifneq (x"$(V)", x"0")
+        $(info MOD_NAME is not set for $(SRC_DIR)/Makefile. Skipping..)
+    endif
+    MOD_TYPE = _skip_
+endif
+
+# Add default dependency on OS abstraction
+ifneq ("$(MOD_SUPPRESS_OS_DEP), "y)
+    ifeq ("$(MOD_TYPE)", "linux_module")
+        _kernel = y
+    endif
+    ifeq ("$(MOD_TYPE)", "linux_lib")
+        _kernel = y
+    endif
+    ifeq ("$(_kernel)", "y")
+         MOD_DEPS := os_linux $(MOD_DEPS)
+    else
+         MOD_DEPS := os $(MOD_DEPS)
+    endif
+endif
+
+# GEN_OBJTAGS define which objects are generated. If not set explicitly,
+# derive it from ENABLE_EPON, ENABLE_GPON, ENABLE_XGPON flags
+ifeq ("$(GEN_OBJTAGS)", "")
+    ifeq ("$(ENABLE_EPON)", "y")
+        GEN_OBJTAGS := $(GEN_OBJTAGS),EPON,AE
+    endif
+    ifeq ("$(ENABLE_GPON)", "y")
+        GEN_OBJTAGS := $(GEN_OBJTAGS),GPON
+    endif
+    ifeq ("$(ENABLE_XGPON)", "y")
+        GEN_OBJTAGS := $(GEN_OBJTAGS),XGPON
+    endif
+    ifeq ("$(GEN_OBJTAGS)", "")
+        $(error At least one of ENABLE_EPON, ENABLE_GPON, ENABLE_XGPON must be set =y)
+    endif
+endif
+
+# Extra types filter
+ifneq ("$(EXTRA_TYPES)", "")
+    EXTRA_TYPES := $(shell echo -n $(EXTRA_TYPES) | sed -e 's/ /\\|/g')
+    GEN_EXTRA_TYPES := -typeNameFilter=\^\($(EXTRA_TYPES)\)\$$
+endif
+
+OS_KERNEL ?= $(OS)
+UC_PLATFORM = $(shell echo $(PLATFORM) | tr a-z A-Z)
+UC_SUBSYSTEM = $(shell echo $(SUBSYSTEM) | tr a-z A-Z)
+UC_OS = $(shell echo $(OS) | tr a-z A-Z)
+UC_OS_KERNEL = $(shell echo $(OS_KERNEL) | tr a-z A-Z)
+
+BUILD_TIME = $(shell date +%s)
+BUILD_TIME_ZONE = $(shell date +%:z)
+EXTRA_CFLAGS += -DBUILD_TIME=$(BUILD_TIME) -DBUILD_TIME_ZONE='"$(BUILD_TIME_ZONE)"'
+
+EXTRA_DEFINES   += -DBCM_SUBSYSTEM_$(UC_SUBSYSTEM) -DBCM_PLATFORM_$(UC_PLATFORM) -DBCM_OS_$(UC_OS)
+EXTRA_DEFINES   += -D$(UC_OS_KERNEL)_KERNEL_SPACE
+ifeq ("$(ENABLE_EPON)", "y")
+    EXTRA_DEFINES       += -DBCM_EPON
+endif
+ifeq ("$(ENABLE_GPON)", "y")
+    EXTRA_DEFINES       += -DBCM_GPON
+endif
+ifeq ("$(ENABLE_XGPON)", "y")
+    EXTRA_DEFINES       += -DBCM_XGPON
+endif
+
+# Build unitests for simulation and from Jenkins jobs
+UNITEST ?= n
+
+ifeq ("$(SIMULATION_BUILD)", "y")
+    EXTRA_DEFINES += -DSIMULATION_BUILD
+    UNITEST = y
+endif
+
+ifeq ("$(JENKINS_BUILD)", "y")
+    UNITEST = y
+endif
+
+EXTRA_INCLUDES  += -I$(SRC_DIR)
+
+OPT_DISABLE_EMBEDDED ?= n
+OPT_DISABLE_HOST ?=n
+
+ifeq ("OPT_DISABLE_$(UC_SUBSYSTEM)", "OPT_DISABLE_EMBEDDED")
+    OPT_DISABLE := $(OPT_DISABLE_EMBEDDED)
+else
+    OPT_DISABLE := $(OPT_DISABLE_HOST)
+endif
+
+ARCH_CFLAGS = $(ARCH_FLAGS)
+ifeq ("$(OPT_DISABLE)", "y")
+    ARCH_CFLAGS		+= $(DEBUG_O_CFLAGS)
+    EXTRA_LFLAGS    += $(DEBUG_O_LFLAGS)
+    EXTRA_ASFLAGS   += $(DEBUG_O_ASFLAGS)
+    EXTRA_asFLAGS   += $(DEBUG_O_asLAGS)
+else
+    ARCH_CFLAGS     += $(RELEASE_O_CFLAGS)
+    EXTRA_LFLAGS    += $(RELEASE_O_LFLAGS)
+    EXTRA_ASFLAGS   += $(RELEASE_O_ASFLAGS)
+    EXTRA_asFLAGS   += $(RELEASE_O_asFLAGS)
+endif
+
+# Treat lib as shared lib if BUILD_SHARED_LIBS is y
+ifeq  ("$(BUILD_SHARED_LIBS)", "y")
+   ifeq  ("$(MOD_TYPE)", "lib")
+      MOD_TYPE = shared_lib
+   endif
+   SHARED_LIB_PATH ?= $(OUT_DIR_BASE)/shared_libs
+endif
+
+# Calculate MOD_TARGET based on MOD_TYPE
+ifeq  ("$(MOD_TYPE)", "lib")
+    ifneq ("$(OBJS)", "")
+        TARGET_LIB ?= $(MOD_NAME)
+        TARGET_LIB_FNAME ?= $(OUT_DIR)/lib$(TARGET_LIB).a
+    endif
+    MOD_TARGET ?= $(TARGET_LIB_FNAME)
+else ifeq  ("$(MOD_TYPE)", "shared_lib")
+	ifneq ("$(OBJS)", "")
+		TARGET_LIB ?= $(MOD_NAME)
+		TARGET_LIB_FNAME ?= $(OUT_DIR)/lib$(TARGET_LIB).so
+	endif
+	MOD_TARGET ?= $(TARGET_LIB_FNAME)
+else ifeq  ("$(MOD_TYPE)", "app")
+    MOD_TARGET ?= $(OUT_DIR)/$(MOD_NAME)
+else ifeq  ("$(MOD_TYPE)", "linux_module")
+    ifeq ("$(KERNELDIR)", "")
+        $(error KERNELDIR must be set in board profile)
+    endif
+    ifeq ("$(KERNEL_ARCH)", "")
+        $(error KERNEL_ARCH must be set in board profile)
+    endif
+    ifeq ("$(KERNEL_OUTDIR)", "")
+        KERNEL_OUTDIR := $(KERNELDIR)
+    endif
+    MOD_TARGET ?= $(SRC_DIR)/$(MOD_NAME).ko
+else ifeq ("$(MOD_TYPE)", "linux_lib")
+    MOD_TARGET ?= $(OUT_DIR_BASE)/$(MOD_NAME).linuxlib
+else ifeq ("$(MOD_TYPE)", "_skip_")
+    MOD_TARGET = .dummy
+else
+    $(error MOD_TYPE $(MOD_TYPE) is incorrect for module $(MOD_NAME). Must be lib or app)
+endif
+
+ifeq ("$(MOD_TARGET)", "")
+   MOD_TARGET = $(MOD_NAME)
+endif
+
+ifeq ("$(OS)", "posix")
+    EXTRA_DEFINES += -D_XOPEN_SOURCE=600
+    LIBS   = -lrt -lpthread -lm
+endif
+
+# Make sure that paths in EXTRA_INCLUDES are absolute
+ifneq ("$(EXTRA_INCLUDES)", "")
+    # Make sure that each directory is an absolute path
+    EXTRA_INCS = $(addprefix -I$(TOP_DIR)/, $(subst -I,,$(subst $(TOP_DIR)/,,$(EXTRA_INCLUDES))))
+endif
+ifneq ("$(EXTRA_ASINCLUDES)", "")
+    # Make sure that each directory is an absolute path
+    EXTRA_ASINCS = $(addprefix -I$(TOP_DIR)/, $(subst -I,,$(subst $(TOP_DIR)/,,$(EXTRA_ASINCLUDES))))
+endif
+ifneq ("$(EXTRA_asINCLUDES)", "")
+    # Make sure that each directory is an absolute path
+    EXTRA_asINCS = $(addprefix -I$(TOP_DIR)/, $(subst -I,,$(subst $(TOP_DIR)/,,$(EXTRA_asINCLUDES))))
+endif
+ifeq ("$(USE_LINT)", "y")
+    USE_LINT := yes
+endif    
+ifeq ("$(USE_LINT)", "yes")
+    EXTRA_DEFINES += -DUSE_LINT
+endif    
+
+EXTRA_DEFINES += $(USER_EXTRA_DEFINES) $(USER_EXTRA_$(UC_SUBSYSTEM)_DEFINES)
+EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS) $(USER_EXTRA_$(UC_SUBSYSTEM)_CFLAGS)
+CFLAGS  += $(ARCH_CFLAGS) $(EXTRA_CFLAGS)  $(EXTRA_INCS) $(EXTRA_DEFINES)
+ASFLAGS += $(ARCH_FLAGS) $(EXTRA_ASFLAGS) $(EXTRA_ASINCS) $(EXTRA_ASDEFINES)
+asFLAGS += $(ARCH_FLAGS) $(EXTRA_asFLAGS) $(EXTRA_asINCS) $(EXTRA_asDEFINES)
+LFLAGS  += $(ARCH_FLAGS) $(EXTRA_LFLAGS)
+DEP_FLAGS += $(EXTRA_CFLAGS) $(EXTRA_INCS) $(EXTRA_DEFINES)
+CLANG_FLAGS += $(EXTRA_CFLAGS) $(EXTRA_INCS) $(EXTRA_DEFINES) $(CLANG_OPTS)
diff --git a/bcm68620_release/release/make/Makefile.initial_config b/bcm68620_release/release/make/Makefile.initial_config
new file mode 100644
index 0000000..541ec84
--- /dev/null
+++ b/bcm68620_release/release/make/Makefile.initial_config
@@ -0,0 +1,6 @@
+ifeq ("$(TERM)", "dumb")
+        BOLD_PRINT := printf "\n---- %s --------------------------------------------------\n"
+else
+        BOLD_PRINT?=printf "%s\n"
+endif
+export BOLD_PRINT
diff --git a/bcm68620_release/release/make/Makefile.main b/bcm68620_release/release/make/Makefile.main
new file mode 100644
index 0000000..2ddef1e
--- /dev/null
+++ b/bcm68620_release/release/make/Makefile.main
@@ -0,0 +1,153 @@
+# Main Makefile body
+# It is included in the central Makefile twice - for host and embedded subsystems
+# PARAMATER: SUBSYSTEM
+
+UC_SUBSYSTEM = $(shell echo $(SUBSYSTEM) | tr a-z A-Z)
+
+$(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD): $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM) \
+        $(MAKE_DIR)/Makefile.config $(MAKE_DIR)/Makefile.rules $(MAKE_DIR)/Makefile.template $(MAKE_DIR)/Makefile.main
+	@if ! test -f $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD); then\
+	    if ls $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_* 2>/dev/null >/dev/null; then\
+	    	olddeps=`ls $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_*` ; \
+	    	old_board=`echo $$olddeps | sed 's@$(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_@@'` ; \
+			$(BOLD_PRINT) "Previous build was for different board $$old_board. cleaning up..";\
+			$(MAKE) -s BOARD=$$old_board V=0 clean_$(SUBSYSTEM); \
+		fi;\
+	fi
+	@$(BOLD_PRINT) "Generating list of $(SUBSYSTEM) modules for $(PLATFORM)"
+	@rm -fr $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_*
+	@rm -fr $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)
+	@rm -fr $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)
+	@rm -fr $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)
+	@mkdir -p $(OUT_$(UC_SUBSYSTEM)_DIR)
+	@touch $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)
+	@touch $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)
+	@touch $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)
+	@for mod_dir in `awk '{print $$1}' $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM)`; do\
+		if test "$$mod_dir" = "" ; then continue; fi; \
+		mod_name=`$(MAKE) -s V=0 SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir SKIP_DEPS=yes -f $(MAKE_DIR)/Makefile.template module_name`;\
+		if test "$$mod_name" = "" ; then continue; fi; \
+		mod_name=$${mod_name}_$(SUBSYSTEM);\
+		mod_type=`grep -e '^[[:space:]]*MOD_TYPE[[:space:]]*=' $$mod_dir/Makefile | awk -F= '{sub(/\r/,""); print $$2}' | sed -e 's/^[ \t]*//'`; \
+		echo -n "$$mod_name " >> $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM); \
+		if test "`echo -n $$mod_type | sed -e 's/linux_lib lib/lib/' | sed -e 's/lib linux_lib/lib/'`" = "lib" ; then\
+			echo -n "$$mod_name " >> $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM); \
+		fi;\
+		if test "$$mod_type" = "app" ; then\
+			echo -n "$$mod_name " >> $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM); \
+		fi;\
+	done
+	@touch $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD)
+
+$(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_$(BOARD): $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD)
+	@$(BOLD_PRINT) "Building $(BOARD) board environment for $(PLATFORM)"
+	$(MAKE) SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir OUT_DIR_BASE=$(OUT_$(UC_SUBSYSTEM)_DIR) SKIP_DEPS=yes \
+            ALL_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)`" \
+            ALL_LIB_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)`" \
+            ALL_APP_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)`" \
+            -f $(MAKE_DIR)/Makefile.template board_env
+	@$(BOLD_PRINT) "Generating $(SUBSYSTEM) dependencies for $(PLATFORM)"
+	@for mod_dir in `awk '{print $$1}' $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM)`; do\
+		if test "$$mod_dir" = "" ; then continue; fi; \
+		mod_name=`$(MAKE) -s V=0 SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir SKIP_DEPS=yes -f $(MAKE_DIR)/Makefile.template module_name`;\
+		if test "$$mod_name" = "" ; then continue; fi; \
+		if ! $(MAKE) $(SILENT) SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir OUT_DIR_BASE=$(OUT_$(UC_SUBSYSTEM)_DIR) SKIP_DEPS=yes \
+			ALL_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)`" \
+			ALL_LIB_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)`" \
+			ALL_APP_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)`" \
+			-f $(MAKE_DIR)/Makefile.template moddep; then exit 1;\
+		fi;\
+	done
+	@touch $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_$(BOARD)
+
+.PHONY:
+
+# Make sure that none of module Makefiles changed.
+# If there is a change - we need to regenerate dependencies
+_deps_$(SUBSYSTEM)_: $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_$(BOARD) .PHONY
+	@cat $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM) | while read -r mod_dir_targ; do\
+			mod_dir=`echo $$mod_dir_targ | awk '{print $$1}'`;\
+			if test "$$mod_dir" = "" ; then continue; fi; \
+			if test $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD) -ot $$mod_dir/Makefile; then\
+				echo $$mod_dir/Makefile changed, must regenerate dependencies.;\
+				echo PLEASE RE-RUN make;\
+				rm -f $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD);\
+				exit -1;\
+			fi;\
+		done
+
+build_$(SUBSYSTEM): _deps_$(SUBSYSTEM)_
+	@$(BOLD_PRINT) "Building $(SUBSYSTEM) image for $(PLATFORM)"
+	@cat $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM) | while read -r mod_dir_targ; do\
+		mod_dir=`echo $$mod_dir_targ | awk '{print $$1}'`;\
+		if test "$$mod_dir" = "" ; then continue; fi; \
+		mod_targets=`echo $$mod_dir_targ | awk '{print $$2 $$3 $$4 $$5}'`;\
+		if ! $(MAKE) $(SILENT) SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir OUT_DIR_BASE=$(OUT_$(UC_SUBSYSTEM)_DIR) \
+			ALL_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)`" \
+			ALL_LIB_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)`" \
+			ALL_APP_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)`" \
+			-f $(MAKE_DIR)/Makefile.template $$mod_targets; then exit 1;\
+		fi;\
+	done
+	@$(BOLD_PRINT) "Finished building $(SUBSYSTEM) image for $(PLATFORM)"
+
+clean_$(SUBSYSTEM): BOARD=$(shell ls $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_* 2>/dev/null | sed 's@$(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_@@')
+
+clean_$(SUBSYSTEM):
+	@$(BOLD_PRINT) "Clean $(PLATFORM) $(SUBSYSTEM) BOARD=$(BOARD)"
+	@for mod_dir in `awk '{print $$1}' $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM)`; do\
+		if test "$$mod_dir" = "" ; then continue; fi; \
+		if ! $(MAKE) $(SILENT) SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir OUT_DIR_BASE=$(OUT_$(UC_SUBSYSTEM)_DIR) SKIP_DEPS=yes \
+			-f $(MAKE_DIR)/Makefile.template clean_module; then exit 1; fi;\
+	done
+	$(SILENT_BUILD)rm -f $(OUT_$(UC_SUBSYSTEM)_DIR)/Makefile.config.*
+	$(SILENT_BUILD)rm -f $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)*
+	$(SILENT_BUILD)rm -f $(OUT_$(UC_SUBSYSTEM)_DIR)/all_*modules.$(SUBSYSTEM)
+	$(SILENT_BUILD)find $(SUBSYSTEM) -name '*~' -print0 2>/dev/null | xargs -0 rm -rf
+	$(SILENT_BUILD)find $(SUBSYSTEM) -name '*.ko' -print0 2>/dev/null | xargs -0 rm -rf
+	$(SILENT_BUILD)find $(SUBSYSTEM) -name '.*.cmd' -print0 2>/dev/null | xargs -0 rm -rf
+	$(SILENT_BUILD)find $(SUBSYSTEM) -name '*.o' -print0 2>/dev/null | xargs -0 rm -rf
+	$(SILENT_BUILD)find $(SUBSYSTEM) -name '*.mod.c' -print0 2>/dev/null | xargs -0 rm -rf
+	$(SILENT_BUILD)find $(SUBSYSTEM) -name modules.order -print0 2>/dev/null | xargs -0 rm -rf
+	$(SILENT_BUILD)find $(SUBSYSTEM) -name Module.symvers -print0 2>/dev/null | xargs -0 rm -rf
+	$(SILENT_BUILD)find $(SUBSYSTEM) -name .tmp_versions -print0 2>/dev/null | xargs -0 rm -rf
+ 
+help_$(SUBSYSTEM):
+	@echo "$$PLATFORM $(SUBSYSTEM) modules:"
+	@cat $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM) | while read -r mod_dir_targ; do\
+		mod_dir=`echo $$mod_dir_targ | awk '{print $$1}'`;\
+		if test "$$mod_dir" = "" ; then continue; fi; \
+		mod_name=`$(MAKE) -s V=0 SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir SKIP_DEPS=yes -f $(MAKE_DIR)/Makefile.template module_name`;\
+		if test "$$mod_name" = "" ; then continue; fi; \
+		echo "  " $${mod_name}_$(SUBSYSTEM);\
+	done
+
+# Targets for building individual $(SUBSYSTEM) module
+%_$(SUBSYSTEM):: _deps_$(SUBSYSTEM)_
+	@while read -r mod_dir_targ; do\
+		mod_dir=`echo $$mod_dir_targ | awk '{print $$1}'`;\
+		if test "$$mod_dir" = "" ; then continue; fi; \
+		mod_name=`$(MAKE) -s V=0 SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir SKIP_DEPS=yes -f $(MAKE_DIR)/Makefile.template module_name`;\
+		if test "$$mod_name" = "" ; then continue; fi; \
+		mod_name=$${mod_name}_$(SUBSYSTEM);\
+		mod_targets=`echo $$mod_dir_targ | awk '{print $$2 $$3 $$4 $$5}'`;\
+		if test "$$mod_name" = "$@" ; then\
+			target_found=y;\
+			$(MAKE) $(SILENT) SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir OUT_DIR_BASE=$(OUT_$(UC_SUBSYSTEM)_DIR) \
+			ALL_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)`" \
+			ALL_LIB_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)`" \
+			ALL_APP_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)`" \
+				-f $(MAKE_DIR)/Makefile.template $$mod_targets || exit 1;\
+		fi;\
+	done < $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM);\
+	if test "$$target_found" != "y" ; then\
+		echo No rule to make target $@;\
+		exit 1;\
+	fi
+
+docs_$(SUBSYSTEM): _deps_$(SUBSYSTEM)_
+	mkdir -p $(OUT_DOCS_DIR)
+	sed -e 's@%OUT_DOCS_DIR@$(OUT_DOCS_DIR)@g' -e 's@%MODEL_DIR@$(OUT_$(UC_SUBSYSTEM)_DIR)/common/model/$(PLATFORM)@g' \
+		-e 's@%API_DIR@$(TOP_DIR)/$(SUBSYSTEM)/api/$(PLATFORM)@g' doc_config/Doxyfile > $(OUT_DOCS_DIR)/Doxyfile
+	doxygen $(OUT_DOCS_DIR)/Doxyfile
+ 
diff --git a/bcm68620_release/release/make/Makefile.rules b/bcm68620_release/release/make/Makefile.rules
new file mode 100644
index 0000000..21f4c0c
--- /dev/null
+++ b/bcm68620_release/release/make/Makefile.rules
@@ -0,0 +1,495 @@
+# Common Makefile rules
+#
+
+# For linux_lib we don't build anything. Object files are just added
+# when compiling modules depending on the libs
+
+ifeq  ("$(MOD_TYPE)", "linux_lib")
+	# Skip libraries that might have crept in dependencies
+    SKIP_LIB_MODULES = y
+    export SKIP_LIB_MODULES
+endif    
+
+ifeq  ("$(MOD_TYPE)", "linux_module")
+	# Skip libraries that might have crept in dependencies
+    SKIP_LIB_MODULES = y
+    export SKIP_LIB_MODULES
+endif    
+
+ifeq ("$(MOD_TYPE)", "lib")
+    MODULE_IS_A_LIBRARY = y
+else ifeq ("$(MOD_TYPE)", "shared_lib")
+    MODULE_IS_A_LIBRARY = y
+else
+    MODULE_IS_A_LIBRARY = n
+endif
+
+# Include module's own auto-generated Makefile.config.$(MODULE) file if any
+# It in turn includes all dependencies
+ifeq (x"$(V)", x"2")
+    $(info !!!MOD_NAME=$(MOD_NAME) MOD_TYPE=$(MOD_TYPE) MOD_TARGET=$(MOD_TARGET))
+    $(info !!!Including own dependency file: $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME))
+endif
+-include $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+ifeq (x"$(V)", x"2")
+    $(info !!!After include of $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME))
+endif
+
+ifeq (x"$(V)", x"2")
+    $(info !!! Building $(MOD_TYPE) module $(MOD_NAME): depends on $(MOD_DEPS_FILES) SKIP_LIBS=$(SKIP_LIB_MODULES))
+endif
+
+# Skip default rules for custom module
+ifneq  ("$(MOD_CUSTOM)", "y")
+ 
+# Default lib rule
+ifeq  ("$(MOD_TYPE)", "lib")
+
+ifeq ("$(SKIP_LIB_MODULES)", "y")
+
+$(MOD_TARGET): 
+
+else
+
+# Rule to compile all module's C files in one go
+ifeq ("$(COMPILE_ALL_IN_ONE_GO)", "y") 
+
+$(MOD_TARGET): $(SRCS) $(AS_OBJS) $(as_OBJS)
+
+# Create library if there are any objects 
+ifneq ("$(SRCS)$(AS_SRCS)$(as_SRCS)$(GEN_SRCS)", "")
+
+ifneq  ("$(SRCS)$(GEN_SRCS)", "")
+ifeq (x"$(V)", x"0")
+	@echo "CC $(srcs) $(gen_srcs)"
+endif	
+	$(SILENT_BUILD)mkdir -p $(dir $@)
+	$(SILENT_BUILD)cd $(dir $@) && $(BLD_CC) $(CFLAGS) -c $(SRCS) $(GEN_SRCS)
+endif
+	$(SILENT_BUILD)cd $(dir $@) && $(BLD_AR) $(ARFLAGS) $@ $(OBJS)
+	$(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+	@$(BOLD_PRINT) "done: $@"
+# ifneq ("$(SRCS)$(AS_SRCS)$(as_SRCS)$(GEN_SRCS)", "")
+endif
+
+# ifeq ("$(COMPILE_ALL_IN_ONE_GO)", "y")
+else
+
+# Create library if there are any objects 
+$(MOD_TARGET): $(OBJS)
+ifneq ("$(OBJS)", "")
+	$(SILENT_BUILD)$(BLD_AR) $(ARFLAGS) $@ $(OBJS)
+	$(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+	@$(BOLD_PRINT) "done: $@"
+endif
+
+# end of ifeq ($(COMPILE_ALL_IN_ONE_GO), "y")
+endif
+
+# end of ifeq ("$(SKIP_LIB_MODULES)", "y")
+endif
+
+# end of ifeq  ("$(MOD_TYPE)", "lib")
+endif
+ 
+# Default shared_lib rule
+ifeq  ("$(MOD_TYPE)", "shared_lib")
+
+EXTRA_CFLAGS += -fPIC
+
+# Create library if there are any objects 
+$(MOD_TARGET): $(OBJS)
+ifneq ("$(OBJS)", "")
+	$(SILENT_BUILD)$(BLD_CC) -shared -rdynamic -o $@ $(OBJS) $(LFLAGS)
+	$(SILENT_BUILD)mkdir -p $(SHARED_LIB_PATH)/
+	$(SILENT_BUILD)cp $@ $(SHARED_LIB_PATH)/
+	@$(BOLD_PRINT) "done: $@"
+endif
+	$(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+
+# end of ifeq  ("$(MOD_TYPE)", "shared_lib")
+endif
+
+# Default app rule
+ifeq  ("$(MOD_TYPE)", "app")
+
+# Currently, ThreadX image doesn't support any applications, apart from the
+# image itself. Disable building applications for ThreadX
+ifneq ("$(OS)", "threadx")
+
+$(MOD_TARGET): $(OBJS) $(MOD_DEPS_FILES)
+	$(SILENT_BUILD)$(BLD_CC) -o $@ $(OBJS) $(LFLAGS) $(EXTRA_LIBS_PATH) $(LIBS_START_MARKER) $(EXTRA_LIBS) $(LIBS_END_MARKER) $(LIBS)
+	$(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+	@$(BOLD_PRINT) "done: $(OUT_DIR)/$(MOD_NAME)"
+
+# else of ifneq ("$(OS)", "threadx")
+else
+
+$(MOD_TARGET):
+
+
+# endif of ifneq ("$(OS)", "threadx")
+endif
+
+# endif of ifeq  ("$(MOD_TYPE)", "app")
+endif
+
+# For linux_lib we don't build anything. Object files are just added
+# when compiling modules depending on the libs
+ifeq  ("$(MOD_TYPE)", "linux_lib")
+    LINUX_LIB_OBJECTS := $(srcs:%.c=$(SRC_DIR)/%.o)
+
+$(MOD_TARGET): $(SRCS) $(GEN_SRCS) $(MOD_DEPS_FILES)
+	$(SILENT_BUILD)touch $(MOD_TARGET)
+	$(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+
+endif
+
+# Default linux_module$(srcs:%=$(SRC_DIR)/%)
+ifeq  ("$(MOD_TYPE)", "linux_module")
+    obj-m    += $(MOD_NAME).o
+    $(MOD_NAME)-objs := $(srcs:%.c=%.o)
+    LIB_OBJS_REL_PATH = $(foreach oo,$(ALL_LIB_OBJS),$(shell python -c "import os.path; print os.path.relpath('$(oo)', '$(SRC_DIR)')"))
+
+    _KERNEL_MAKEPARMS = -C $(KERNELDIR) M=$(SRC_DIR) KBUILD_EXTRA_SYMBOLS="$(KBUILD_EXTRA_SYMBOLS)" \
+    	O=$(KERNEL_OUTDIR) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(CROSS_COMPILE) V=$(V) EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
+    	obj-m=$(obj-m) $(MOD_NAME)-objs="$($(MOD_NAME)-objs) $(LIB_OBJS_REL_PATH)"
+    KERNEL_MAKEPARMS = $(_KERNEL_MAKEPARMS:%os_abstraction/posix=%os_abstraction/linux)
+
+	# Prevent parallel build    
+.NOTPARALLEL:
+
+    # Only build linux module if not already being built by another make thread.
+    # Otherwise, linux build system get confused
+    # Also, remove -s flag using MAKEFLAGS. Otherwise, linux build system will not print names of the files
+    # being compiled
+$(MOD_TARGET): $(SRCS) $(MOD_DEPS_FILES)
+ifneq  ("$(SRC_DIR)", "$(TOP_DIR)/$(MOD_DIR)")
+	@cp -f $(TOP_DIR)/$(MOD_DIR)/Makefile $(SRC_DIR)
+endif
+	$(SILENT_BUILD)if [ ! -f $(SRC_DIR)/.$(MOD_NAME)_in_progress ]; then \
+		touch $(SRC_DIR)/.$(MOD_NAME)_in_progress; \
+		MAKEFLAGS= $(MAKE) $(KERNEL_MAKEPARMS) ;\
+		if [[ "$$?" != "0" ]]; then \
+			rm -f $(SRC_DIR)/.$(MOD_NAME)_in_progress;\
+			exit -2;\
+		fi; \
+		mkdir -p $(OUT_DIR_BASE)/linux_modules ;\
+		touch -c $(MOD_TARGET) ;\
+		cp $(SRC_DIR)/$(MOD_NAME).ko $(OUT_DIR_BASE)/linux_modules/ ;\
+		touch $(OUT_DIR_BASE)/.$(MOD_NAME) ;\
+		$(BOLD_PRINT) "done: $(MOD_TARGET)" ;\
+		rm -f $(SRC_DIR)/.$(MOD_NAME)_in_progress ;\
+	fi
+
+# Take care of compiling generated code for linux kernel
+ifneq  ("$(SRC_DIR)", "$(TOP_DIR)/$(MOD_DIR)")
+
+$(SRC_DIR)/%.c : $(CODEGEN_OUTPUT_DIR)/../%.c
+	$(SILENT_BUILD)cp -f $(CODEGEN_OUTPUT_DIR)/../*.[c,h] $(SRC_DIR)/
+
+$(SRC_DIR)/%.h : $(CODEGEN_OUTPUT_DIR)/../%.h
+	$(SILENT_BUILD)cp -f $(CODEGEN_OUTPUT_DIR)/../*.[c,h] $(SRC_DIR)/
+
+endif
+
+# End of MOD_TYPE==linux_module
+endif
+
+else
+# only for MOD_CUSTOM include Module Makefile second time for propagate  
+# custom rules, first time included in Makefile.config for all modules 
+include $(SRC_DIR)/Makefile
+# End of ifneq ($(MOD_CUSTOM), y)
+endif
+
+$(OUT_DIR)/%.o: $(SRC_DIR)/%.c $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+ifeq (x"$(V)", x"0")
+	@echo "CC $<"
+endif
+	$(SILENT_BUILD)mkdir -p $(dir $@)
+	$(SILENT_BUILD)$(BLD_CC) $(CFLAGS) -D__BASENAME__=`basename $<` -c -o $@ $<
+ifeq (x"$(USE_LINT)", x"yes")
+ifeq (x"$(V)", x"0")
+	@echo "LINT $<"
+endif
+	$(SILENT_BUILD)FORCE_LINT=$(FORCE_LINT) $(MAKE_DEVICE_DIR)/lint.sh $(LINT_FLAGS) $(filter -I% -D%, $(CFLAGS)) $< || { rm $@; false; }
+endif
+ifeq (x"$(USE_CLANG)", x"y")
+ifeq (x"$(V)", x"0")
+	_fn=`basename "$<" .c` ;\
+	eval "_disable_fn_set=\$${DISABLE_CLANG_$$_fn}"; \
+	if test "$$_disable_fn_set" != "y" ; then echo "CLANG $<"; else echo "CLANG $< ... skipped"; fi
+endif
+	_fn=`basename "$<" .c` ;\
+	eval "_disable_fn_set=\$${DISABLE_CLANG_$$_fn}"; \
+	if test "$$_disable_fn_set" != "y" ; then  $(CLANG) $(CLANG_FLAGS) -c $< -o $@.clang && rm -f $@.clang; fi
+# ifeq (x"$(USE_CLANG)", x"y")	
+endif	
+
+$(OUT_DIR)/%.o: $(SRC_DIR)/%.s $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+ifeq (x"$(V)", x"0")
+	@echo "AS $<"
+endif
+	$(SILENT_BUILD)mkdir -p $(dir $@)
+	$(SILENT_BUILD)$(BLD_AS) $(asFLAGS) -o $@ $<
+
+$(OUT_DIR)/%.o: $(SRC_DIR)/%.S $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+ifeq (x"$(V)", x"0")
+	@echo "AS $<"
+endif
+	$(SILENT_BUILD)mkdir -p $(dir $@)
+	$(SILENT_BUILD)$(BLD_CC) $(ASFLAGS) -o $@ $<
+
+
+$(OUT_DIR)/%.d: $(SRC_DIR)/%.c $(SRC_DIR)/Makefile
+ifneq ("$(BUILD_DEPS_IN_CC)", "y")
+ifeq (x"$(V)", x"0")
+	@echo "DP $<"
+endif
+	$(SILENT_BUILD)mkdir -p $(dir $@)
+	$(SILENT_BUILD)$(BLD_DEP) -MM -MT $(@:.d=.o) $(DEP_FLAGS) $<  > $@ && sed 's,\($*\.o\)[ :]*,\1 $@ : ,g' -i $@
+endif
+
+$(CODEGEN_OUTPUT_DIR)/%.o: $(CODEGEN_OUTPUT_DIR)/%.c $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+ifeq (x"$(V)", x"0")
+	@echo "CC $<"
+endif
+	$(SILENT_BUILD)mkdir -p $(dir $@)
+	$(SILENT_BUILD)$(BLD_CC) $(CFLAGS) -D__BASENAME__=`basename $<` -c -o $@ $<
+
+$(CODEGEN_OUTPUT_DIR)/%.d: $(CODEGEN_OUTPUT_DIR)/%.c $(SRC_DIR)/Makefile
+ifneq ("$(BUILD_DEPS_IN_CC)", "y")
+ifeq (x"$(V)", x"0")
+	@echo "DP $<"
+endif
+	$(SILENT_BUILD)mkdir -p $(dir $@)
+	$(SILENT_BUILD)$(BLD_DEP) -MM -MT $(@:.d=.o) $(DEP_FLAGS) $<  > $@ && sed 's,\($*\.o\)[ :]*,\1 $@ : ,g' -i $@
+endif
+
+ifneq ("$(SKIP_DEPS)", "yes")
+ifneq  ("$(MOD_TYPE)", "linux_module")
+ifneq  ("$(MOD_TYPE)", "linux_lib")
+-include $(OBJS:.o=.d)
+endif
+endif
+endif
+
+BUILD_UNITEST = $(UNITEST)
+ifeq  ("$(OBJS)", "")
+    BUILD_UNITEST = n
+endif    
+ifeq ("$(OS)", "threadx")
+    BUILD_UNITEST = n
+endif    
+
+# Only build unitest if library objects are included
+ifeq  ("$(BUILD_UNITEST)", "y")
+
+unitest: $(OUT_DIR)/unitest
+
+$(OUT_DIR)/unitest: $(OUT_DIR)/unitest.o $(TARGET_LIB_FNAME) $(MOD_DEPS_FILES)
+	$(SILENT_BUILD)$(BLD_CC) -o $@ $(OUT_DIR)/unitest.o $(LFLAGS) $(EXTRA_LIBS_PATH) $(LIBS_START_MARKER) $(EXTRA_LIBS) $(LIBS_END_MARKER) $(LIBS)
+	$(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+	@$(BOLD_PRINT) "done: $@"
+
+# else of ifneq  ("$(BUILD_UNITEST)", "y")
+else 
+
+unitest: $(TARGET_LIB_FNAME) $(MOD_DEPS_FILES)
+	
+# endif of ifneq  ("$(BUILD_UNITEST)", "y")
+endif
+
+# Generate version header
+MODEL_REVISION_FILE = $(MODEL_OUT_DIR)/bcmolt_model_revision.h 
+
+ifneq ("$(RELEASE_BUILD)", "y")
+$(MODEL_REVISION_FILE): $(MODEL_FILE)
+	mkdir -p $(MODEL_OUT_DIR)
+	@$(TOP_DIR)/scripts/update_model_revision.sh $< $@
+
+# Generate sources if necessary
+ifneq ("$(GEN_SRCS)", "")
+ifneq ("$(CUSTOM_CODEGEN)", "y")
+
+$(CODEGEN_OUTPUT_DIR)/.generated: $(MODEL_FILE) $(wildcard $(CODEGEN_DIR)/*) $(wildcard $(CODEGEN_INPUT_DIR)/*) $(MODEL_REVISION_FILE)
+	$(SILENT_BUILD)rm -fr $@
+	@echo "Generating code in $(CODEGEN_OUTPUT_DIR) from model..."
+	@mkdir -p $(CODEGEN_OUTPUT_DIR)
+	$(SILENT_BUILD)$(MONO_PATH) $(CODEGEN_EXE) --genobjmodel -objtags=$(GEN_OBJTAGS) -objset=$(MODEL_FILE) \
+	      $(GEN_EXTRA_TYPES) -templatedir=$(CODEGEN_INPUT_DIR) -outdir=$(CODEGEN_OUTPUT_DIR)
+	$(SILENT_BUILD)touch $@
+	@echo "Code generation in $(CODEGEN_OUTPUT_DIR) complete!"
+
+$(GEN_SRCS): $(CODEGEN_OUTPUT_DIR)/.generated
+
+# ifneq ("$(CUSTOM_CODEGEN)", "y")
+endif
+
+# ifneq  ("$(GEN_SRCS)", "") 
+endif
+
+# ifneq ("$(RELEASE_BUILD)", "y")
+endif
+
+#
+# Dependency rules generation: --> Makefile.config.$(MOD_NAME)
+# 
+
+MOD_CONFIG_FILE = $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+MOD_CONFIG_DEF  = $(MOD_NAME)_DEP_DEFINED
+ifneq ("$(MOD_INC_DIRS)", "")
+    # Make sure that each directory is an absolute path
+    MOD_INCS = $(addprefix -I$(TOP_DIR)/, $(subst $(TOP_DIR)/,,$(MOD_INC_DIRS)))
+else
+	MOD_INCS = -I$(SRC_DIR)
+endif
+
+# 
+# Generate Makefile.config.$(MODULE) capable of re-creating the module
+#
+moddep: $(GEN_SRCS)
+ifeq (x"$(V)", x"3")
+	@echo "!!!!!  moddep for  MOD_NAME=$(MOD_NAME) MOD_TYPE=$(MOD_TYPE) MOD_CUSTOM=$(MOD_CUSTOM)!!!"
+endif
+	$(SILENT_BUILD)mkdir -p $(OUT_DIR_BASE)
+	@rm -fr $(MOD_CONFIG_FILE)
+	@rm -fr $(OBJS:.o=.d)
+
+	@echo "ifeq (x\"$$""(V)\", x\"2\")"  >> $(MOD_CONFIG_FILE)
+	@echo "    $$""(info !!! MODULE=$$""(MOD_NAME) --> $(MOD_CONFIG_FILE): $(MOD_CONFIG_DEF)=$$""($(MOD_CONFIG_DEF)), DEPS=$(MOD_DEPS))" >> $(MOD_CONFIG_FILE)
+	@echo "endif"  >> $(MOD_CONFIG_FILE)
+
+    # Prevent double inclusion 
+	@echo "ifneq (\"$$""($(MOD_CONFIG_DEF))\", \"y\")" >> $(MOD_CONFIG_FILE)
+	@echo "" >> $(MOD_CONFIG_FILE)
+	@echo "$(MOD_CONFIG_DEF) := y" >> $(MOD_CONFIG_FILE)
+
+    ifeq  ("$(MODULE_IS_A_LIBRARY)", "y")
+		@echo "_skip_it := y" >> $(MOD_CONFIG_FILE)
+    else
+		@echo "_skip_it := n" >> $(MOD_CONFIG_FILE)
+    endif
+	@echo "ifneq (\"$$""(SKIP_LIB_MODULES)\", \"y\")" >> $(MOD_CONFIG_FILE)
+	@echo "    _skip_it := n" >> $(MOD_CONFIG_FILE)
+	@echo "endif" >> $(MOD_CONFIG_FILE)
+
+	@echo "ifneq (\"$$""(_skip_it)\", \"y\")"  >> $(MOD_CONFIG_FILE)
+
+    ifeq  ("$(MODULE_IS_A_LIBRARY)", "y")
+        ifneq ("$(OBJS)", "")
+			@echo "EXTRA_LIBS += $(LIBS_MARKER)$(TARGET_LIB)" >> $(MOD_CONFIG_FILE)
+			@echo "EXTRA_LIBS_PATH += $(LIBS_PATH_MARKER)$(OUT_DIR)" >> $(MOD_CONFIG_FILE)
+        endif
+        ifneq ("$(MOD_LIBS)", "")
+			@echo "EXTRA_LIBS += $(MOD_LIBS)" >> $(MOD_CONFIG_FILE)
+        endif
+		@echo "ifneq (x\"$$""(MOD_NAME)\", x\"$(MOD_NAME)\")"  >> $(MOD_CONFIG_FILE)
+		@echo "   MOD_DEPS_FILES += $(OUT_DIR_BASE)/.$(MOD_NAME)"  >> $(MOD_CONFIG_FILE)
+		@echo "endif"  >> $(MOD_CONFIG_FILE)
+        ifneq ("$(startup_src)", "")
+			@echo "" >> $(MOD_CONFIG_FILE)
+			@echo "ENTRY_POINT_SRC = $(SRC_DIR)/$(startup_src)"   >> $(MOD_CONFIG_FILE)
+			@echo "" >> $(MOD_CONFIG_FILE)
+        endif
+    endif
+
+    ifeq  ("$(MOD_TYPE)", "linux_lib")
+        ifneq ("$(OBJS)", "")
+			@echo "ALL_LIB_OBJS += $(LINUX_LIB_OBJECTS)"  >> $(MOD_CONFIG_FILE)
+        endif
+		@echo "ifneq (x\"$$""(MOD_NAME)\", x\"$(MOD_NAME)\")"  >> $(MOD_CONFIG_FILE)
+		@echo "   MOD_DEPS_FILES += $(OUT_DIR_BASE)/.$(MOD_NAME)"  >> $(MOD_CONFIG_FILE)
+		@echo "endif"  >> $(MOD_CONFIG_FILE)
+    endif
+
+    ifeq  ("$(MOD_TYPE)", "linux_module")
+		@echo "ifneq (x\"$$""(MOD_NAME)\", x\"$(MOD_NAME)\")"  >> $(MOD_CONFIG_FILE)
+			@echo "   KBUILD_EXTRA_SYMBOLS += $(SRC_DIR)/Module.symvers" >> $(MOD_CONFIG_FILE)
+			@echo "   MOD_DEPS_FILES += $(OUT_DIR_BASE)/.$(MOD_NAME)"  >> $(MOD_CONFIG_FILE)
+		@echo "endif"  >> $(MOD_CONFIG_FILE)
+    endif
+
+    # Module creation rules
+	@echo "$(MOD_NAME)_$(SUBSYSTEM): $(OUT_DIR_BASE)/.$(MOD_NAME)"  >> $(MOD_CONFIG_FILE)
+	@echo ""  >> $(MOD_CONFIG_FILE)
+	@echo "$(OUT_DIR_BASE)/.$(MOD_NAME): .FORCE"   >> $(MOD_CONFIG_FILE)
+    ifeq  ("$(MOD_CUSTOM)", "y")
+		@echo "		$$""(MAKE) MOD_DIR=$(MOD_DIR) -f $(MAKE_DIR)/Makefile.template $(MOD_TARGET)" >> $(MOD_CONFIG_FILE)
+    else
+    ifneq  ("$(OBJS)", "")
+		@echo "		$$""(MAKE) MOD_DIR=$(MOD_DIR) -f $(MAKE_DIR)/Makefile.template $(MOD_TARGET)" >> $(MOD_CONFIG_FILE)
+    endif
+    ifeq  ("$(OBJS)", "")
+		@echo "		if [ ! -f $(OUT_DIR_BASE)/.$(MOD_NAME) ]; then touch $(OUT_DIR_BASE)/.$(MOD_NAME); fi" >> $(MOD_CONFIG_FILE)
+    endif
+    endif
+	@echo ""  >> $(MOD_CONFIG_FILE)
+	@echo ".FORCE:"   >> $(MOD_CONFIG_FILE)
+	@echo ""  >> $(MOD_CONFIG_FILE)
+
+    ifneq ("$(MOD_DEFS)", "")
+		@echo "EXTRA_CFLAGS += $(MOD_DEFS)" >> $(MOD_CONFIG_FILE)
+    endif
+	
+	@echo "endif"  >> $(MOD_CONFIG_FILE)
+
+    # If it is a library and this file is included as someone's dependency - extend MOD_DEP_FULL_NAMES
+    # and generate a rule to rebuilt the library
+    ifneq ("$(MOD_DEPS)", "")
+		@echo "ifeq (x\"$$""(V)\", x\"2\")"  >> $(MOD_CONFIG_FILE)
+		@echo "   $$""(info !!! Now include dependencies $(MOD_DEPS))" >> $(MOD_CONFIG_FILE)
+		@echo "endif"  >> $(MOD_CONFIG_FILE)
+		@echo "$(MOD_NAME)_MOD_DEPS = $(MOD_DEPS)" >> $(MOD_CONFIG_FILE)
+		@echo "ifneq (x\"$$""(SKIP_DEPS)\", x\"yes\")"  >> $(MOD_CONFIG_FILE)
+		@echo "include $$""($(MOD_NAME)_MOD_DEPS:%=$(OUT_DIR_BASE)/Makefile.config.%)" >> $(MOD_CONFIG_FILE)
+		@echo "endif"  >> $(MOD_CONFIG_FILE)
+		@echo "ifeq (x\"$$""(V)\", x\"2\")"  >> $(MOD_CONFIG_FILE)
+		@echo "   $$""(info !!! $(MOD_NAME) finished including dependencies)" >> $(MOD_CONFIG_FILE)
+		@echo "endif"  >> $(MOD_CONFIG_FILE)
+    endif
+
+	@echo "EXTRA_CFLAGS += $(MOD_INCS)" >> $(MOD_CONFIG_FILE)
+
+	@echo "" >> $(MOD_CONFIG_FILE)
+	@echo "endif" >> $(MOD_CONFIG_FILE)
+# 
+# end of moddep: target
+#
+
+clean_module:
+ifeq  ("$(MOD_TYPE)", "linux_module")
+	$(SILENT_BUILD)-test -f $(SRC_DIR)/Makefile && $(MAKE) $(KERNEL_MAKEPARMS) clean
+	$(SILENT_BUILD)cd $(SRC_DIR) && rm -fr $($(MOD_NAME)-objs) $($(MOD_NAME)-objs:../%=../.%.cmd)
+	$(SILENT_BUILD)rm -fr $(OUT_DIR_BASE)/linux_modules/$(MOD_NAME).ko
+endif
+ifeq  ("$(MOD_TYPE)", "linux_lib")
+	$(SILENT_BUILD)rm -fr $(LINUX_LIB_OBJECTS)
+endif	
+	$(SILENT_BUILD)cd $(SRC_DIR) && rm -fr $(patsubst %.c,.%.o.cmd,$(srcs))
+	$(SILENT_BUILD)[ ! -d $(OUT_DIR) ] || find $(OUT_DIR) -name '*.[o,d,a]' -print0 | xargs -0 rm -rf
+	$(SILENT_BUILD)[ ! -d $(OUT_DIR) ] || find $(OUT_DIR) -name '*~'        -print0 | xargs -0 rm -rf
+	$(SILENT_BUILD)[ ! -d $(OUT_DIR) ] || find $(OUT_DIR) -name '*.ko'      -print0 | xargs -0 rm -rf
+	$(SILENT_BUILD)[ ! -d $(OUT_DIR) ] || find $(OUT_DIR) -name '.*.cmd'    -print0 | xargs -0 rm -rf
+	$(SILENT_BUILD)rm -fr $(SRC_DIR)/*.mod.c $(SRC_DIR)/modules.order $(SRC_DIR)/Module.symvers $(SRC_DIR)/.tmp_versions
+	$(SILENT_BUILD)rm -fr $(MOD_TARGET) $(OUT_DIR)/$(TARGET) $(OUT_DIR)/unitest $(TARGET_LIB_FNAME)
+	$(SILENT_BUILD)rm -fr $(ALL_LIB_OBJS)
+	$(SILENT_BUILD)rm -fr $(GEN_SRCS) $(CODEGEN_OUTPUT_DIR)/.generated
+ifneq ("$(MOD_NAME)", "")
+	$(SILENT_BUILD)rm -fr $(OUT_DIR_BASE)/.$(MOD_NAME)
+	$(SILENT_BUILD)rm -fr $(SRC_DIR)/.$(MOD_NAME)_in_progress
+endif	
+    
+clobber: clean_module
+	$(SILENT_BUILD)rm -fr $(OUT_DIR)
+
+# Optional platform-specific rules
+-include $(MAKE_DEVICE_DIR)/Makefile.$(SUBSYSTEM).rules
+
+# Generate board-specific environment if any
+board_env: $(BOARD_ENV_RULE)
+	
+
+module_name:
+	$(info $(MOD_NAME))
diff --git a/bcm68620_release/release/make/Makefile.template b/bcm68620_release/release/make/Makefile.template
new file mode 100644
index 0000000..633e962
--- /dev/null
+++ b/bcm68620_release/release/make/Makefile.template
@@ -0,0 +1,12 @@
+# Central Makefile template
+# Builds specific module
+# Input parameters:
+# MOD_DIR
+# TOP_DIR
+
+ifeq (x"$(V)", x"1")
+    $(info Building module $(MOD_DIR))
+endif
+
+include $(MAKE_DIR)/Makefile.config
+include $(MAKE_DIR)/Makefile.rules
diff --git a/bcm68620_release/release/make/bcm68620/Makefile.host.config b/bcm68620_release/release/make/bcm68620/Makefile.host.config
new file mode 100644
index 0000000..6f42b11
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/Makefile.host.config
@@ -0,0 +1,23 @@
+# Maple host configuration
+#
+# Set environment, extra flags, etc.
+# In particular, set CROSS_COMPILE
+# For linux environment make sure to set also OS_KERNEL=linux, KERNELDIR, KERNEL_OUTDIR and KERNEL_ARCH
+ifneq ("$(BOARD)", "")
+    include $(MAKE_DEVICE_DIR)/board.$(BOARD).config
+endif
+
+include $(MAKE_DEVICE_DIR)/$(TOOLCHAIN).opts
+
+export KERNELDIR
+export KERNEL_OUTDIR
+export KERNEL_ARCH
+export OS_KERNEL
+
+ifeq ("$(USE_ONU_SIM)", "y")
+    CFLAGS += -DCONFIG_ONU_SIM
+    export CONFIG_ONU_SIM := y
+endif
+
+LINT_FLAGS = -e686 $(MAKE_DEVICE_DIR)/gcc.lnt $(MAKE_DEVICE_DIR)/config.lnt
+
diff --git a/bcm68620_release/release/make/bcm68620/Makefile.host.rules b/bcm68620_release/release/make/bcm68620/Makefile.host.rules
new file mode 100644
index 0000000..54c4c44
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/Makefile.host.rules
@@ -0,0 +1,7 @@
+# Maple host rules
+#
+# Platform/board-specific rules
+# In particular, set BOARD_ENV_RULE if there is anything board-specific to be done
+ifneq ("$(BOARD)", "")
+    -include $(MAKE_DEVICE_DIR)/board.$(BOARD).rules
+endif
diff --git a/bcm68620_release/release/make/bcm68620/armcc.lnt b/bcm68620_release/release/make/bcm68620/armcc.lnt
new file mode 100644
index 0000000..99aa766
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/armcc.lnt
@@ -0,0 +1,5 @@
+-i/projects/xpon_co_lint/sources/supp/lnt
+co-ARMCC-5.lnt
+-i/tools/arm/DS-5_5.18.0/Linux-64/include
+-d"__int64=long long"
+
diff --git a/bcm68620_release/release/make/bcm68620/board.remote_wrx.config b/bcm68620_release/release/make/bcm68620/board.remote_wrx.config
new file mode 100644
index 0000000..57cfb32
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/board.remote_wrx.config
@@ -0,0 +1,25 @@
+# Remote WRX board
+#
+export CONFIG_TRANSPORT_RAW = n
+
+ifeq ("$(SUBSYSTEM)", "embedded")
+    $(error Can't build embedded subsystem for this board)
+else
+    ARCH_FLAGS      += -EB -mabi=64
+    TOOLCHAIN_PATH  ?= /opt/toolchains/maple/toolchains_bin/mipscross/linux/bin
+    CROSS_COMPILE   = $(TOOLCHAIN_PATH)/mips64-nlm-linux-
+
+    # a kludge here. If CONFIG_TRANSPORT_RAW is not set, that means that we are building for 
+    # wrx, but not the same wrx where Maple is. For example, building for WRX that controls 
+    # switch directly and maple remotely. In this case, we don't want any board-specific stuff
+    # to be compiled in (e.g., FPGA, I2C, etc.).
+    override BOARD =
+    
+    # OS for user space 
+    OS              = posix
+    
+    SIMULATION_BUILD = y
+   
+endif
+
+
diff --git a/bcm68620_release/release/make/bcm68620/board.wrx.config b/bcm68620_release/release/make/bcm68620/board.wrx.config
new file mode 100644
index 0000000..99bdf12
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/board.wrx.config
@@ -0,0 +1,112 @@
+# WRX board
+#
+
+# Use raw transport
+export CONFIG_TRANSPORT_RAW = y
+
+ENABLE_PMC   ?= y
+
+ifeq ("$(ENABLE_PMC)", "y")
+    EXTRA_CFLAGS   += -DBCM_PMC_EXIST
+endif
+
+ifeq ("$(SUBSYSTEM)", "embedded")
+    TOOLCHAIN = armcc
+    OS=threadx
+	    
+    # We use gcc for dependency generation in order to speed up the build process
+    GCCVER ?= 4.8.1
+    
+    # Use raw transport
+    # Should be moved go common host/embedded section when the host environment is ready
+    COMPILE_ALL_IN_ONE_GO ?= n
+    export COMPILE_ALL_IN_ONE_GO
+
+    # Definition for enable Periodic  ARM DS-5 license model, up to 4X improvement for compilation time 
+    # the output from the /tools/bin/get_lic_servers arm5-periodic is optimized for each site, the 
+    # "38224@lic-tlva-001:38224@lic-blr-001:38224@lic-irva-350:38224@lic-irva-000" string is valide for HZ site
+    export ARMLMD_LICENSE_FILE :=$(shell if [ -f /tools/bin/get_lic_servers ] ; then /tools/bin/get_lic_servers arm5-periodic ; \
+else echo "38224@lic-tlva-001.broadcom.net:38224@lic-blr-001.broadcom.net:38224@lic-irva-350.broadcom.net:38224@lic-irva-000.broadcom.net"; fi)
+    export ARMCC5_CCOPT        :=--sitelicense --licretry
+    export ARMCC5_ASMOPT       :=--sitelicense --licretry
+    export ARMCC5_LINKOPT      :=--sitelicense --licretry
+    export ARMCC5_FROMELFOPT   :=--sitelicense --licretry
+    export ARMCC5_AROPT        :=--sitelicense --licretry
+   
+    USE_UNCACHE_BW_MAP ?= n
+    export USE_UNCACHE_BW_MAP 
+    USE_UNCACHE_SR_NSR_COUNTERS ?= n
+    export USE_UNCACHE_SR_NSR_COUNTERS
+
+    ifeq ("$(SIMULATION)", "y")
+        EXTRA_DEFINES += -DSIMULATION
+    endif
+	
+	USE_SYM_TAB ?= y
+	export USE_SYM_TAB
+	
+	ifeq ("$(USE_SYM_TAB)", "y")
+		
+		export SYMTAB_GEN_TOOLS = $(TOP_DIR)/scripts/bcmSymTlbGen.sh 
+		
+		ifeq ("$(SYMTAB_NO_DATA)", "y")
+		    export SYMTAB_ND=-nd
+	    endif
+	
+	    ifeq ("$(SYMTAB_NO_LDATA)", "y")
+		   export SYMTAB_NLD=-nld
+	    endif
+	
+	    ifeq ("$(SYMTAB_NO_LFANC)", "y")
+		    export SYMTAB_NLF=-nlf
+	    endif
+		
+		EXTRA_DEFINES += -DUSE_SYM_TAB	
+		
+		export DUMMY_SYMTAB = $(TOP_DIR)/embedded/sys/bsp/symtab.c
+	endif
+    
+    ifeq ("$(ENABLE_TRACE)", "y")
+        EXTRA_DEFINES += -DTX_ENABLE_EVENT_TRACE
+        ifeq ("$(DEBUG_TRACE_INIT)", "y")
+            EXTRA_DEFINES += -DDEBUG_TRACE_INIT
+        endif
+    endif
+    	
+    INT_CHECK    ?= y
+    ifeq ("$(INT_CHECK)", "y")
+        EXTRA_DEFINES += -DINTERRUPT_VALIDATION
+    endif
+else
+    BOARD_DIR       ?= $(TOP_DIR)/../boards/cur/$(BOARD)
+    KERNEL_BRCM_VER = 3.0.2-m1.01
+    TOOLCHAIN_PATH  ?= /opt/toolchains/maple/toolchains_bin/mipscross/linux/bin
+    CROSS_COMPILE   = $(TOOLCHAIN_PATH)/mips64-nlm-linux-
+    
+    KERNELDIR       = $(BOARD_DIR)/linux/$(KERNEL_BRCM_VER)/linux
+    KERNEL_OUTDIR  ?= $(KERNELDIR)
+    export KERNELDIR
+    export KERNEL_OUTDIR
+
+
+    # use Linux kernel
+    export OS_KERNEL= linux
+    # OS for user space 
+    OS              = posix
+    
+    # Architecture definition   
+    KERNEL_ARCH     = mips
+    ARCH_FLAGS      += -EB -mabi=64
+    
+    export KERNEL_ARCH
+    export ARCH_FLAGS
+    
+    export KERNEL_TAR_NAME  = wrx_linux-sdk.tar.bz2
+    export LIBS_TAR_NAME    = libraries.tar.bz2
+    
+    # Rule tu build wrx kernel. The rule itself is defined in board.wrx.rules
+    export BOARD_ENV_RULE   = wrx_linux_kernel 
+    
+endif
+
+
diff --git a/bcm68620_release/release/make/bcm68620/board.wrx.rules b/bcm68620_release/release/make/bcm68620/board.wrx.rules
new file mode 100644
index 0000000..3546f5d
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/board.wrx.rules
@@ -0,0 +1,26 @@
+# WRX-specific rules
+
+ifeq ("$(SUBSYSTEM)", "host")
+    # Build linux kernel if not done yet
+
+wrx_linux_kernel:
+	if [ ! -d $(BOARD_DIR) ]; then\
+		$(BOLD_PRINT) "ERROR: $(BOARD_DIR) directory doesn't not exist" ; \
+		exit -1; \
+	fi;\
+    if [ -f  $(KERNEL_OUTDIR)/vmlinux ] ; then \
+        $(BOLD_PRINT) "found compiled $(BOARD) kernel in $(KERNEL_OUTDIR)" ;\
+        exit 0;\
+    fi;\
+	if [ ! -f $(BOARD_DIR)/linux/$(KERNEL_BRCM_VER)/$(KERNEL_TAR_NAME) ]; then\
+		$(BOLD_PRINT) "ERROR: Kernel tar file doesn't exist. Please get the latest version of $(BOARD_DIR)/linux/$(KERNEL_BRCM_VER)/$(KERNEL_TAR_NAME) ";\
+		exit -1;\
+	fi;\
+	if [ ! -f $(BOARD_DIR)/linux/$(KERNEL_BRCM_VER)/$(LIBS_TAR_NAME) ]; then \
+		$(BOLD_PRINT) "ERROR: Kernel Libraries tar file not exists. Please get latest version of $(BOARD_DIR)/linux/$(KERNEL_BRCM_VER)/$(LIBS_TAR_NAME) ";\
+		exit -1;\
+	fi;\
+	$(BOLD_PRINT) "Building wrx kernel";\
+	cd $(BOARD_DIR);  $(MAKE)
+
+endif
diff --git a/bcm68620_release/release/make/bcm68620/gcc.lnt b/bcm68620_release/release/make/bcm68620/gcc.lnt
new file mode 100644
index 0000000..3a3c198
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/gcc.lnt
@@ -0,0 +1,5 @@
+-i/projects/xpon_co_lint/sources/supp/lnt
+co-gcc.lnt
+-emacro(633, BUG_ON)
+-parent(va_list, __gnuc_va_list)
+-parent(va_list, __builtin_va_list)
diff --git a/bcm68620_release/release/make/bcm68620/gcc.opts b/bcm68620_release/release/make/bcm68620/gcc.opts
new file mode 100644
index 0000000..718b403
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/gcc.opts
@@ -0,0 +1,53 @@
+# Maple SDK requires C99
+EXTRA_CFLAGS    += -Wall -Werror
+ARFLAGS = r
+
+BLD_CC = $(CCACHE) $(CROSS_COMPILE)gcc
+BLD_AS = $(CCACHE) $(CROSS_COMPILE)gcc
+BLD_AR = $(CROSS_COMPILE)ar
+BLD_DEP = $(BLD_CC)
+
+CFLAGS    += -std=c99
+ifeq ("$(ENABLE_EXTRA_WARNINGS)", "y")
+    CFLAGS    += -Wextra -Wbad-function-cast -Wcast-align -Wcast-qual -Wchar-subscripts
+    CFLAGS    += -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wredundant-decls
+    CFLAGS    += -Wstrict-prototypes -Wparentheses -Wswitch -Wswitch-default -Wunused -Wuninitialized -Wunused-but-set-variable
+    CFLAGS    += -Wno-unused-parameter -Wno-missing-field-initializers -Wno-sign-compare
+    CFLAGS    += -Wshadow -Wno-inline
+endif
+
+BUILD_DEPS_IN_CC    ?= y
+export BUILD_DEPS_IN_CC
+
+ifeq ("$(BUILD_DEPS_IN_CC)", "y")
+    CFLAGS += -MMD -MP
+endif
+
+ifeq ("$(CROSS_COMPILE)", "")
+    ARCH_FLAGS += -m32 -march=i386
+    SIMULATION_BUILD ?= y
+    export SIMULATION_BUILD
+    GCCVER ?= 4.8.1
+    export GCCVER
+    # Temporary, until bad cast in bcm_dev_log_task.c is fixed (SWMAPLE-2123)
+    CFLAGS += -Wno-strict-aliasing
+endif
+
+ifeq ("$(EXPORT_DYNAMIC_SYMBOLS)", "y")
+    ARCH_FLAGS += -Wl,-export-dynamic 
+endif
+
+ifneq ("$(SIMULATION_BUILD)", "y")
+    EXTRA_CFLAGS    += -Wframe-larger-than=16384
+endif
+
+LIBS_MARKER =-l
+LIBS_PATH_MARKER =-L
+LIBS_START_MARKER = -Wl,--start-group
+LIBS_END_MARKER = -Wl,--end-group
+
+# Debug and release optimization options. Can be overwritten in Makefile.config.$(PLATFORM)
+DEBUG_O_CFLAGS      ?= -g -ggdb -O0
+DEBUG_O_LFLAGS      ?= -g
+RELEASE_O_CFLAGS    ?= -g -O2
+RELEASE_O_LFLAGS    ?= -g
diff --git a/bcm68620_release/release/make/bcm68620/modules.host b/bcm68620_release/release/make/bcm68620/modules.host
new file mode 100644
index 0000000..a7a0f59
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/modules.host
@@ -0,0 +1,67 @@
+host_customized/dev_ctrl_linux
+host_customized/coop_dba_linux
+host_customized/embedded_cli
+host_customized/embedded_cli/main
+host_customized/os_abstraction
+host_customized/os_abstraction/linux
+host_customized/os_abstraction/os_cli
+host_customized/transport/nl_socket
+host_customized/transport/unix_socket
+host_customized/transport/plugin
+host_customized/transport/plugin/mux
+host_customized/transport/plugin/raw_nl
+host_customized/transport/plugin/raw_ud
+host_customized/transport/plugin/udp
+host_customized/user_config
+host_customized/user_config/board_selector
+host_customized/ll_pcie
+host_customized/pcie
+host_customized/i2c
+host_customized/board/wrx
+host_customized/model_linux
+host_customized/utils_linux
+host_customized/api_linux
+host_customized/host_api_linux
+host_driver/api
+host_driver/utils
+host_driver/debug
+host_driver/dev_ctrl
+host_driver/coop_dba
+host_driver/dev_ctrl_daemon
+host_driver/dev_ctrl_daemon/user
+host_driver/host_api
+host_driver/keep_alive
+host_driver/keep_alive/daemon
+host_driver/model
+host_driver/pcie
+host_driver/transport/inband
+host_driver/transport
+host_driver/transport/mux
+host_driver/transport/mux/daemon
+host_driver/transport/pcie_sw_queue
+host_driver/fld
+host_driver/common_gpon
+host_reference/api_cli
+host_reference/device_selector
+host_reference/cli
+host_reference/dev_log
+host_reference/dev_log_linux
+host_reference/dev_log_linux/kernel
+host_reference/api_dev_log
+host_reference/linenoise
+host_reference/user_appl
+host_reference/user_appl/eon
+host_reference/user_appl/omon
+host_reference/user_appl/epon_hde
+host_reference/user_appl/protection_switching
+host_reference/user_appl/epon_oam
+host_reference/user_appl/epon_oam_cli
+host_reference/user_appl/image_transfer
+host_reference/user_appl/sw_upgrade
+host_reference/user_appl/playback
+host_reference/user_appl/dpoe_sec
+host_reference/user_appl/ngpon2_onu_tuning
+host_reference/api_proxy
+host_reference/remote_cli
+host_reference/common_epon_oam
+host_reference/time_measurement
diff --git a/bcm68620_release/release/make/clang.opts b/bcm68620_release/release/make/clang.opts
new file mode 100644
index 0000000..1b383ef
--- /dev/null
+++ b/bcm68620_release/release/make/clang.opts
@@ -0,0 +1,6 @@
+# CLANG options
+
+# CLANG tool
+export CLANG ?= clang
+export CLANG_OPTS = -Wno-unused-function
+export LLVMVER ?= 3.6
diff --git a/bcm68620_release/release/make/copy_host_fs.sh b/bcm68620_release/release/make/copy_host_fs.sh
new file mode 100755
index 0000000..7cffbf3
--- /dev/null
+++ b/bcm68620_release/release/make/copy_host_fs.sh
@@ -0,0 +1,31 @@
+#! /bin/bash
+
+#set -x
+
+HOST_FS_TARGET=${OUT_HOST_DIR}/fs
+HOST_OUTPUT_TARGET=${OUT_HOST_DIR}/output
+
+echo -n "Copying host fs to ${HOST_FS_TARGET}..."
+mkdir -p ${HOST_FS_TARGET}
+rm -fr ${HOST_FS_TARGET}/*
+pushd ${HOST_FS_TARGET}
+ln -s ${OUT_HOST_DIR}/linux_modules/* .
+ln -s ${TOP_DIR}/host_customized/board/wrx/fs/* .
+ln -s ${TOP_DIR}/embedded_binaries/* .
+ln -s ${OUT_HOST_DIR}/host_reference/user_appl/bcm_user_appl .
+popd
+
+echo -n "Copying all modules and libraries to ${HOST_OUTPUT_TARGET}..."
+mkdir -p ${HOST_OUTPUT_TARGET}
+rm -fr ${HOST_OUTPUT_TARGET}/*
+pushd ${HOST_OUTPUT_TARGET}
+ln -s ${OUT_HOST_DIR}/linux_modules/* .
+ln -s `find ${OUT_HOST_DIR} -name 'lib*.a'` .
+ln -s ${OUT_HOST_DIR}/host_reference/user_appl/bcm_user_appl .
+popd
+
+# Extract i2c addresses from bcmolt_i2c_devs_addr.h into the tail of a target file called i2c_addrs.sh. svk_init.sh will include i2c_addrs.sh to access i2c addresses.
+grep -w "BCM_I2C_DEV_ADDR" ${TOP_DIR}/host_customized/i2c/bcmolt_i2c_devs_addr.h | sed -s "s/BCM_I2C_DEV_ADDR(\(.*\), \(.*\), 0x\(.*\))/\1=\3/" >> ${HOST_FS_TARGET}/i2c_addrs.sh
+
+echo "Done"
+