# 
# Copyright (C) 2006 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
# $Id: Makefile,v 1.30 2010/05/13 14:27:33 madhu.koriginja Exp $
#$(PKG_NAME)-$(PKG_VERSION).$(RELEASE_VERSION)-internal/driver_linux

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=mspd-legerity
PKG_VERSION:=3.00
RELEASE_VERSION=1

#PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).$(RELEASE_VERSION)-internal.tar.gz
#PKG_SOURCE_URL:=http://10.1.124.219/platform_group/enterprise/drivers/legerity/releases/$(RELEASE_VERSION)/$(PKG_VERSION).$(RELEASE_VERSION)/packages/
#PKG_CAT:=zcat

PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION).$(RELEASE_VERSION)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
PKG_MODULE_NAME:=legerity-$(PKG_VERSION).$(RELEASE_VERSION).$(LINUX_KMOD_SUFFIX)

PKG_SOURCE_FILE:=$(TOPDIR)/dl/$(PKG_NAME)-$(PKG_VERSION).$(RELEASE_VERSION).tar.gz
PKG_BUILD_FROM_SOURCE:=$(shell if [ -e $(PKG_SOURCE_FILE) ]; then echo y; fi)
ifeq ($(CONFIG_DEV_LEGERITY), y)
  PKG_BUILD_FROM_SOURCE:=y
endif
ifeq ($(CONFIG_ASIC_SQV),y)
  PROFILE1:=$(PROFILE)-sqv
else
  PROFILE1:=$(PROFILE)
endif
ifeq ($(CONFIG_BOOT_NAND),y)
  BIN_PROFILE:=$(PROFILE1)-nand
else
  BIN_PROFILE:=$(PROFILE1)
endif
ifeq ($(word 1,$(subst ., ,$(GCC_VERSION))),4)
  BIN_PROFILE_BUILD:=$(BIN_PROFILE)-gcc-4.1_glibc_eabi
else
  BIN_PROFILE_BUILD:=$(BIN_PROFILE)
endif

include $(INCLUDE_DIR)/package.mk

################ Board definition ########################

# L_DEBUG "yes or no
# L_TDM_CODING " sets the TDM coding law, possible values are : 0(alaw) 1(ulaw)
# L_SLIC_TYPE " is a table defining the type of legerity device per chip select mask value
#             "0(none) 1(LE790) 2(LE88231) 3(LE88241) 4(LE88231-megamombasa) 5(LE88231-packet_iad) 6(LE88221) 7(LE88010-FXO)
# L_LINE_TESTING "enable built-in line tests

# Common parameters
L_LINE_TESTING:=no
L_DEBUG := no

ifeq ($(CONFIG_TARGET_comcerto1000_c1kasic),y)
	L_TDM_CODING:=1
	L_SLIC_TYPE:=4
	L_FLASH_TIME:=500
endif

ifeq ($(CONFIG_TARGET_comcerto100_packet-iad),y)
	L_TDM_CODING:=1,1,1
	L_SLIC_TYPE:=4,4,7
	L_FLASH_TIME:=500
endif

ifeq ($(CONFIG_TARGET_comcerto100_router),y)
	L_TDM_CODING:=1,1,1
	L_SLIC_TYPE:=6,6,7
	L_FLASH_TIME:=500
endif

ifeq ($(CONFIG_TARGET_comcerto100_asic),y)
	L_TDM_CODING:=1
	L_SLIC_TYPE:=4
	L_FLASH_TIME:=500
endif

ifeq ($(CONFIG_TARGET_comcerto50_packet-iad),y)
	L_TDM_CODING:=1,1,1
	L_SLIC_TYPE:=4,4,7
	L_FLASH_TIME:=500
endif

ifeq ($(CONFIG_TARGET_comcerto50_router),y)
	L_TDM_CODING:=1,1,1
	L_SLIC_TYPE:=6,6,7
	L_FLASH_TIME:=500
endif

################ OpenWRT definition ########################
define KernelPackage/legerity
  CATEGORY:=Mindspeed Packages
  DEFAULT:=y
  DEPENDS:=@TARGET_comcerto1000_c1kasic||TARGET_comcerto100_packet-iad||TARGET_comcerto100_router||TARGET_comcerto100_asic||TARGET_comcerto50_packet-iad||TARGET_comcerto50_router
  TITLE:=Legerity SLIC/SLAC
  DESCRIPTION:= This package contains a driver for Legerity chipsets on Mindspeed boards.
  URL:=http://www.legerity.com/
  MAINTAINER:=Mindspeed Technologies
  FILES:= $(PKG_BUILD_DIR)/legerity.$(LINUX_KMOD_SUFFIX)
endef

define KernelPackage/legerity-fxo
  CATEGORY:=Mindspeed Packages
  DEFAULT:=y
  DEPENDS:=@TARGET_comcerto1000_c1kasic||TARGET_comcerto100_packet-iad||TARGET_comcerto100_router||TARGET_comcerto100_asic||TARGET_comcerto50_packet-iad||TARGET_comcerto50_router
  TITLE:=Legerity FXO SLIC/SLAC
  DESCRIPTION:= This package contains a driver for Legerity chipsets on Mindspeed boards.
  URL:=http://www.legerity.com/
  MAINTAINER:=Mindspeed Technologies
endef

ifeq ($(PKG_BUILD_FROM_SOURCE), y)
ifeq ($(CONFIG_DEV_LEGERITY), y)
define Build/Prepare
	pushd "$(KERNEL_BUILD_DIR)" &&\
	cvs -z9 -d:pserver:$(CONFIG_ACTIVEDEV_CVSUSERNAME)@$(CONFIG_ACTIVEDEV_CVSROOTPATH):/prj/msacvs/enterprise checkout -d $(PKG_NAME)-$(PKG_VERSION).$(RELEASE_VERSION) -r $(CONFIG_DEV_LEGERITY_CVSBRANCH) $(CONFIG_DEV_LEGERITY_MODULENAME) &&\
	popd
	@if [ -d ./patches -a "$$$$(ls ./patches | wc -l)" -gt 0 ]; then \
		$(PATCH) $(PKG_BUILD_DIR) ./patches; \
	fi
endef
define Build/Compile
	$(call Build/Compile/Default, KERNEL_SOURCE="$(LINUX_DIR)" LINE_TESTING="$(L_LINE_TESTING)" DEBUG="$(L_DEBUG)" EXTRA_CFLAGS="-DVP880_SIMPLE_POLLED_MODE -DLEGERITY_FLASH -DLEGERITY_DEB")
	$(CP) $(PKG_BUILD_DIR)/driver_linux/legerity.$(LINUX_KMOD_SUFFIX) $(PKG_BUILD_DIR)
endef
else ## CONFIG_DEV_LEGERITY is not defined
define Build/Prepare
	$(TAR) xfz $(PKG_SOURCE_FILE) -C $(KERNEL_BUILD_DIR)

	@if [ -d ./patches -a "$$$$(ls ./patches | wc -l)" -gt 0 ]; then \
		$(PATCH) $(PKG_BUILD_DIR) ./patches; \
	fi
endef
define Build/Compile
	$(call Build/Compile/Default, KERNEL_SOURCE="$(LINUX_DIR)" LINE_TESTING="$(L_LINE_TESTING)" DEBUG="$(L_DEBUG)" EXTRA_CFLAGS="-DVP880_SIMPLE_POLLED_MODE -DLEGERITY_FLASH -DLEGERITY_DEB")
	$(CP) $(PKG_BUILD_DIR)/driver_linux/legerity.$(LINUX_KMOD_SUFFIX) $(PKG_BUILD_DIR)
endef
endif
else ## PKT_BUILD_FROM_SOURCE not defined 

define Build/Prepare
	echo BUILD PREPARE
endef

define Build/Compile
	$(CP) ./files/$(BIN_PROFILE_BUILD)/$(PKG_MODULE_NAME) $(PKG_BUILD_DIR)/legerity.$(LINUX_KMOD_SUFFIX)
endef
endif

define Build/InstallDev
endef

define Build/UninstallDev
endef

define KernelPackage/legerity/install
	mkdir -p $(1)/etc/modules.d
	echo legerity tdm_coding=$(L_TDM_CODING) slic_type=$(L_SLIC_TYPE) flash_time=$(L_FLASH_TIME) > $(1)/etc/modules.d/50-legerity
endef

$(eval $(call KernelPackage,legerity))
$(eval $(call KernelPackage,legerity-fxo))
