#
# (C) Copyright 2003-2006
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
# project.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#

include $(TOPDIR)/config.mk

LIB	= $(obj)lib$(ARCH).o

SOBJS-y	+=
COBJS-y	+= board.o bootm.o ashldi3.o ashrdi3.o lshrdi3.o
COBJS-y += otto_uart.o otto_time.o otto_sym.o otto_cg.o otto_cpu.o

# to be impl...
# HM-COBJS-$(CONFIG_CMD_WDTEST_MIPS_RXBUS) = dramtest18/dramtest_mips_rxbus.o
HM-COBJS-$(CONFIG_CMD_WDTEST_MIPS_CNBUS) = dramtest18/dramtest_mips_cnbus.o
ifneq ($(HM-COBJS-y),)
	HM-COBJS-y += dramtest18/dramtest.o dramtest18/dramtest_case.o
endif
COBJS-y += $(HM-COBJS-y)

include ./otto_memcntlr.mk

COBJS-$(CONFIG_CMD_SF) += otto_nor_spi_flash.o

COBJS-$(CONFIG_SPI_NOR_FLASH) += $(OTTO_UBOOT_SNOF_DRV_NAME)/nor_spif_core.o

ifeq ($(CONFIG_SPI_NOR_FLASH), y)
	ifeq ($(CONFIG_SPI_NOR_FLASH_GEN), 3)
		COBJS-y += otto_xf.o
		COBJS-$(CONFIG_SNOF_MXIC)      += $(OTTO_UBOOT_SNOF_DRV_NAME)/nor_spif_mxic.o
		COBJS-$(CONFIG_SNOF_WINBOND)   += $(OTTO_UBOOT_SNOF_DRV_NAME)/nor_spif_winbond.o
		COBJS-$(CONFIG_SNOF_GD)        += $(OTTO_UBOOT_SNOF_DRV_NAME)/nor_spif_gd.o
		COBJS-$(CONFIG_SNOF_SPANSION)  += $(OTTO_UBOOT_SNOF_DRV_NAME)/nor_spif_spansion.o
		COBJS-$(CONFIG_SNOF_MICRON)    += $(OTTO_UBOOT_SNOF_DRV_NAME)/nor_spif_micron.o
	endif
endif

COBJS-$(CONFIG_OTTO_FLASH_LAYOUT) += otto_flash_layout.o

ifeq ($(CONFIG_SPI_NAND_FLASH),y)
	COBJS-y += otto_spi_nand_flash.o
	COBJS-y += otto_spi_nand_bb_util.o
	OTTO_SPI_NAND_GEN := $(shell echo $(CONFIG_SPI_NAND_FLASH_GEN))
	ifneq ($(OTTO_SPI_NAND_GEN),1)
	#ifneq ($(CONFIG_SPI_NAND_FLASH_GEN),1)
		ifeq ($(CONFIG_SPI_NAND_FLASH_INIT_FIRST),y)
			COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_common.o
			COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_ctrl.o
			COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_util.o
		endif
                ifeq ($(OTTO_SPI_NAND_GEN),3)
                    COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_ato.o
                    COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_dosilicon.o
                    COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_esmt.o
                    COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_etron.o
                    COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_fmsh.o
                    COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_heyangtek.o
                    COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_longsys.o
                    COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_micron.o
                    COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_xtx.o
                endif
		COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_gd.o
		COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_mxic.o
		COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_toshiba.o
		COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_winbond.o
		COBJS-y += $(OTTO_UBOOT_SNAF_DRV_NAME)/spi_nand_zentel.o
	endif
	CPPFLAGS_arch/otto/lib/otto_spi_nand_flash.o := -DOTTO_SPI_NAND_GEN=$(OTTO_SPI_NAND_GEN)
	#CPPFLAGS_arch/otto/lib/otto_spi_nand_flash.o := -DOTTO_SPI_NAND_GEN=$(subst spi_nand_gen,,$(shell echo $(CONFIG_SPI_NAND_FLASH_GEN)))
endif

ifeq ($(CONFIG_CMD_ONFI),y)
COBJS-y += otto_onfi_flash.o
COBJS-y += otto_onfi_bb_util.o
ifneq ($(CONFIG_ONFI_GEN), "onfi_gen1")
#COBJS-y +=
endif
CPPFLAGS_arch/otto/lib/otto_onfi_flash.o := -DOTTO_ONFI_GEN=$(subst onfi_gen,,$(shell echo $(CONFIG_ONFI_GEN)))
endif

ifeq ($(CONFIG_ECC_ENGINE),y)
	ifeq ($(CONFIG_ECC_ENGINE_INIT),y)
		COBJS-y += $(OTTO_UBOOT_ECC_DRV_NAME)/ecc_ctrl.o
	endif
endif

MP_DIR := mp_util
COBJS-$(CONFIG_MP_UTILS) += $(MP_DIR)/mp_hwmutex_check.o
COBJS-$(CONFIG_MP_UTILS) += $(MP_DIR)/mp_coherence_test.o
COBJS-$(CONFIG_MP_UTILS) += $(MP_DIR)/mp_util.o
COBJS-$(CONFIG_MP_UTILS) += $(MP_DIR)/mpcntl.o

# SOBJS-$(CONFIG_MP_UTILS) += $(MP_DIR)/mp_memtest_engine.o
# SOBJS-$(CONFIG_MP_UTILS) += $(MP_DIR)/mp_memtest_lb_engine.o
SOBJS-$(CONFIG_MP_UTILS) += $(MP_DIR)/mp_memtest_engine.o
# SOBJS-$(CONFIG_MP_UTILS) += $(MP_DIR)/mpcntl_func_bdg.o

ifeq ($(CONFIG_MP_UTILS),y)
	SLAVE_GCC := /share/rlx/rsdk-4.8.5-5281-EB-2.6.30-u0.9.33-m32utb-150924/bin/rsdk-linux-gcc
	SLAVE_CFLAGS := -I$(OTTO_RELEASE_DIR)/../src/include -I$(TOPDIR)/arch/$(ARCH)/cpu/$(CPU) -I$(TOPDIR)/include/configs -nostdinc -fno-pic -fno-builtin -mno-abicalls -mno-memcpy -EB -Wall -march=5281 -mtune=5281 -Wno-unused-result -Os -g -mno-gpopt
	SLAVE_OBJS := $(MP_DIR)/mp_memtest_main.o $(MP_DIR)/mp_printf.o
endif

CPPFLAGS_arch/otto/lib/otto_sym.o := -DSECTION_SYMACCESS=

SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
OBJS := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))

all: $(LIB)

$(SLAVE_OBJS): %.o: %.c
	$(SLAVE_GCC) $(SLAVE_CFLAGS) -c $< -o $@

$(LIB):	$(obj).depend $(OBJS) $(SLAVE_OBJS)
	$(call cmd_link_o_target, $(OBJS) $(SLAVE_OBJS))

#########################################################################

# defines $(obj).depend target
include $(SRCTREE)/rules.mk

sinclude $(obj).depend

#########################################################################
