##
#
# Makefile
#
# GNU makefile for bootLoader object
##

USE_BCM_CMD_ARRAY?=1

CUR_DIR=$(shell readlink -f .)

#
# configure file
#
-include configure.am
BUILD_GOOGLETV = true
CFG_BOARD_NAME = lexx-b1

CROSS_COMPILE=armv7a-cros-linux-gnueabihf-
ifeq ($(strip $(CROSS_COMPILE)),)
CROSS_COMPILE=armv7a-cros-linux-gnueabihf-
endif

CFLAGS = -W -Wall -Werror -g -gdwarf-2 -mfloat-abi=hard -mfpu=neon-vfpv4 -nostdlib -fno-builtin -march=armv7-a -marm
SFLAGS = -W -Wall -Werror -g -gdwarf-2 -mfloat-abi=hard -mfpu=neon-vfpv4 -nostdlib -fno-builtin -march=armv7-a -marm

HOST_CFLAGS = -W -Wall -g -gdwarf-2 -O0

CHIPVERSIONS = -DBERLIN \
		-DBERLIN_B_0=0x1000 -DBERLIN_C_0=0x2000 -DBERLIN_A_0=0x0000 -DBERLIN_A_1=0x0010 -DBERLIN_A_2=0x0020 \
		-DBERLIN_BG2=0x3000 -DBERLIN_BG2_Z1=0x3000 -DBERLIN_BG2_Z2=0x3010 -DBERLIN_BG2_A0=0x3020 -DBERLIN_BG2_A1=0x3030 \
		-DBERLIN_BG2CDP=0x3040 -DBERLIN_BG2_CT=0x3050 -DBERLIN_BG2_Q=0x3060 -DBERLIN_BG2_DTV=0x3070 \
		-DBERLIN_BG2CD_A0=0x3035

CFLAGS += $(CHIPVERSIONS)
SFLAGS += $(CHIPVERSIONS)
HOST_CFLAGS += $(CHIPVERSIONS)

LDFLAGS		= -T bootloader.lds -Map bootloader.map -Bstatic

#OPTIMIZE=-O0
OPTIMIZE=-Os
CFLAGS += $(OPTIMIZE) -DBOOTLOADER -DDEBUG -I$(CUR_DIR)
SFLAGS += $(OPTIMIZE) -DBOOTLOADER -DDEBUG -I$(CUR_DIR)
HOST_CFLAGS += $(OPTIMIZE)

# Determine last commit in src tree and status to add to
# bootloader version info. configure.am, sm.bin are modified
# by build scripts, so ignore them during index check.
GIT_LAST_COMMIT = $(shell git rev-parse --verify --short HEAD)
GIT_TREE_DIRTY = $(if $(shell git diff-index --name-only HEAD | \
	grep -E -v '(configure.am|sm.bin)'),-dirty)
CFLAGS += -DBOOTLOADER_VERSION=\"$(GIT_LAST_COMMIT)$(GIT_TREE_DIRTY)\"

#
# Source tree roots
#
PROJ_DIR = .
ifeq ($(CPU_TYPE), A0)
ASIC?=BG2CDP
CDP_A0=1
else
ASIC?=BG2CDP
endif


CFLAGS += -D$(ASIC)=1
SFLAGS += -D$(ASIC)=1
HOST_CFLAGS += -D$(ASIC)=1

ifeq ($(BERLIN_CHIP), BG2CDP)
LIB_CDP_Z1=bg2cdp_z1
LIB_CDP_A0=bg2cdp_a0
ifeq ($(CDP_A0), 1)
CHIP_DIR=board/bg2cdp_a0
BOARD_DIR=$(CHIP_DIR)/dongle
SUPPORT_FASTLOGO = 1
INCLUDE_DIR = include/Firmware_Berlin_BG2CDP_A0
CFLAGS += -DBERLIN_CHIP_VERSION=0x3040 -DBG2CD=1 -DBERLIN_CHIP_VERSION_EXT=0xA0 -DCDP_A0=1
SFLAGS += -DBERLIN_CHIP_VERSION=0x3040 -DBG2CD=1-DBERLIN_CHIP_VERSION_EXT=0xA0 -DCDP_A0=1
HOST_CFLAGS += -DBERLIN_CHIP_VERSION=0x3040-DBERLIN_CHIP_VERSION_EXT=0xA0 -DCDP_A0=1
FASTLOGO_LIB += $(LIB_CDP_A0)
FASTLOGO_LD += -Lboard/bg2cdp_a0/out_bg2cdp_a0 -lbg2cdp_a0
else
CHIP_DIR=board/bg2cdp_z1
BOARD_DIR=$(CHIP_DIR)/dongle
SUPPORT_FASTLOGO = 1
INCLUDE_DIR = include/Firmware_Berlin_BG2CDP
CFLAGS += -DBERLIN_CHIP_VERSION=0x3040 -DBG2CD=1 -DBERLIN_CHIP_VERSION_EXT=0x0
SFLAGS += -DBERLIN_CHIP_VERSION=0x3040 -DBG2CD=1 -DBERLIN_CHIP_VERSION_EXT=0x0
HOST_CFLAGS += -DBERLIN_CHIP_VERSION=0x3040 -DBERLIN_CHIP_VERSION_EXT=0x0
FASTLOGO_LIB += $(LIB_CDP_Z1)
FASTLOGO_LD += -Lboard/bg2cdp_z1/out_bg2cdp_z1 -lbg2cdp_z1
endif

else

$(error BERLIN_CHIP "$(BERLIN_CHIP)" is not supported!)
endif


CFLAGS += -I$(CHIP_DIR) -I$(BOARD_DIR) -I$(OBJDIR)
SFLAGS += -I$(CHIP_DIR) -I$(BOARD_DIR) -I$(OBJDIR)

DHUB=$(BOARD_DIR)/DHUB
AVPLL=$(BOARD_DIR)/AVPLL
THINVPP=$(BOARD_DIR)/THINVPP
#THINVPP_INCLUDE_DIR = $(THINVPP)/source/include/include_BG2_CDP

CFLAGS += -DBERLIN_C_SERIES -I$(INCLUDE_DIR) -Inand_ctrl/include/ -I../Common/randomizer/ -DCPU0_START_ADDR=$(CPU0_START_ADDR)
SFLAGS += -DBERLIN_C_SERIES -I$(INCLUDE_DIR)
HOST_CFLAGS += -I$(INCLUDE_DIR)

ifeq ($(AUDIO_DEVICE),1)
CFLAGS += -DAUDIO_DEVICE=1
SUPPORT_FASTLOGO = 0
endif

ifeq ($(SUPPORT_FASTLOGO),1)
SUPPORT_SHOWLOGO = 1
CFLAGS += -DBOOTLOADER_FASTLOGO=1 -DLOGO_ENABLE_MAIN=1 -DLOGO_ENABLE_PIP=1 -DLOGO_ENABLE_AUX=1
ifeq ($(SUPPORT_SHOWLOGO),1)
CFLAGS += -DBOOTLOADER_SHOWLOGO=1
endif
### 
### CFLAGS += -I$(THINVPP)/include
### CFLAGS += -I$(THINVPP)/source/include
### CFLAGS += -I$(THINVPP)/source/FE/include
### CFLAGS += -I$(THINVPP)/source/SCL/include
### CFLAGS += -I$(THINVPP)/source/CPCB/include
### CFLAGS += -I$(THINVPP)/source/BE/include
### CFLAGS += -I$(THINVPP)/source/MISC/include
### CFLAGS += -I$(AVPLL)/include
### CFLAGS += -I$(DHUB)/include
else
SUPPORT_SHOWLOGO = 0
endif

ifeq ($(BOX_PRODUCT_RELEASE), y)
CFLAGS += -DBOX_PRODUCT_RELEASE
SFLAGS += -DBOX_PRODUCT_RELEASE
endif

CFLAGS += -I$(CUR_DIR)/include/
SFLAGS += -I$(CUR_DIR)/include/
HOST_CFLAGS += -I$(CUR_DIR)/include/

CFLAGS += -I$(CUR_DIR)/clock/include/
SFLAGS += -I$(CUR_DIR)/clock/include/
HOST_CFLAGS += -I$(CUR_DIR)/clock/include/

CFLAGS += -I$(CUR_DIR)/../../include/
#
# Common source
#
Source :=	$(PROJ_DIR)/init.S $(PROJ_DIR)/uish.S $(PROJ_DIR)/figo_sram_bin.c \
		$(PROJ_DIR)/initmmu.S\
		$(PROJ_DIR)/cache.S\
		$(PROJ_DIR)/util.c $(PROJ_DIR)/warm_linuxparam.c \
		$(PROJ_DIR)/apb_uart_driver.c $(PROJ_DIR)/lgpl_printf.c string.c $(PROJ_DIR)/bcm_hal.c\
		$(PROJ_DIR)/warm_boot_contex.c \
		$(PROJ_DIR)/clock/galois_speed.c \
		$(CHIP_DIR)/cdp_pin_init.c \
		$(PROJ_DIR)/gpio.c \
		$(PROJ_DIR)/code_data.S \
		$(PROJ_DIR)/crc32.c \
		$(CHIP_DIR)/power_tuning.c

#ifeq ($(SUPPORT_FASTLOGO),1)
#Source += $(wildcard $(THINVPP)/source/*.c)
#Source += $(wildcard $(THINVPP)/source/FE/source/*.c)
#Source += $(wildcard $(THINVPP)/source/SCL/source/*.c)
#Source += $(wildcard $(THINVPP)/source/CPCB/source/*.c)
#Source += $(wildcard $(THINVPP)/source/BE/source/*.c)
#Source += $(wildcard $(THINVPP)/source/MISC/source/*.c)
#Source += $(wildcard $(AVPLL)/source/*.c)
#Source += $(wildcard $(DHUB)/source/*.c)
#ifeq ($(SUPPORT_SHOWLOGO),1)
#Source += $(PROJ_DIR)/showlogo.c
#endif
#endif

ifeq ($(SM_IMAGE_ACTIVE), 1)
Source += $(PROJ_DIR)/SM_Comm.c $(PROJ_DIR)/SM_Driver.c
CFLAGS += -DCONFIG_SM
SFLAGS += -DCONFIG_SM
endif

ifeq ($(BUILD_GOOGLETV), true)
Source += $(PROJ_DIR)/bootloader.c $(PROJ_DIR)/android/ctype.c\
		$(PROJ_DIR)/android/strtol.c $(PROJ_DIR)/android/flash_ts.c \
		$(PROJ_DIR)/sha/sha1.c
CFLAGS += -DANDROID_BOOT=1 -DCFG_BOARD_NAME=$(CFG_BOARD_NAME) -I$(CUR_DIR)/sha
else
Source += $(PROJ_DIR)/bootloader.c $(PROJ_DIR)/android/ctype.c
endif
Source += $(CHIP_DIR)/list_speed.c $(PROJ_DIR)/diag_api.c
# For caprica-b1/b2/b3/b4
ifeq ($(CFG_BOARD_NAME), $(filter $(CFG_BOARD_NAME), 29 30 31 32))
Source += $(CHIP_DIR)/caprica/init_clock.c
else
Source += $(CHIP_DIR)/common/init_clock.c
endif
#CustomizeFile := $(PROJ_DIR)/customization/$(PLATFORM)/bootloader_customize.c
#ifeq ($(CustomizeFile), $(wildcard $(CustomizeFile)))
	#Source += $(CustomizeFile)
#else
	#Source += $(PROJ_DIR)/customization/default/bootloader_customize.c
#endif

Source += load_cust_key.c

CFLAGS += -Ipv_comp/
Source += pv_comp/pwm_driver.c
Source += led_pwm.c

ifneq ($(PV_COMP), )
CFLAGS += -DPV_COMP
Source += pv_comp/pv_compensation.c
ifeq ($(PV_COMP), PWM)
CFLAGS += -DPWM
Source += pv_comp/pwm.c pv_comp/pwm_driver.c
endif
ifeq ($(PV_COMP), ONEWIRE)
CFLAGS += -DONEWIRE
Source += pv_comp/one_wire.c
endif
endif

ifeq ($(CPUPLL), 1200)
CFLAGS += -DCPUPLL_1200
Source += clock/initClocks.c
endif

ifeq ($(BOOT_TYPE), NAND_BOOT)
Source += nand_ctrl/mv_nand.c $(PROJ_DIR)/nflash_drv.c ../Common/randomizer/nand_randomizer.c ../Common/randomizer/prbs15.c
CFLAGS += -DNAND_BOOT
SFLAGS += -DNAND_BOOT
ifeq ($(RANDOMIZER), y)
CFLAGS += -DENABLE_RANDOMIZER
SFLAGS += -DENABLE_RANDOMIZER
endif
ifeq ($(ROOTFS_TYPE), SQUASHFS)
CFLAGS += -DROOTFS_SQUASHFS
endif

ifeq ($(CONFIG_SLC), y)
CFLAGS += -DCONFIG_SLC
SFLAGS += -DCONFIG_SLC
endif

ifeq ($(CONFIG_ENHANCED_SLC), y)
CFLAGS += -DCONFIG_ENHANCED_SLC
SFLAGS += -DCONFIG_ENHANCED_SLC
endif

ifeq ($(CONFIG_NAND_READ_RETRY), y)
CFLAGS += -DCONFIG_NAND_READ_RETRY
SFLAGS += -DCONFIG_NAND_READ_RETRY
endif

ifeq ($(NFCECCCLK), 400)
CFLAGS += -DNFCECCCLK_400
SFLAGS += -DNFCECCCLK_400
endif
endif

ifeq ($(BOOT_TYPE), EMMC_BOOT)
Source += $(CHIP_DIR)/irqHandler.S sdio_ctrl/sdioDiag.c \
		sdio_ctrl/sdioController.c $(CHIP_DIR)/gicDiag.c \
		sdio_ctrl/sdio_printf.c emmc_drv.c
CFLAGS += -DEMMC_BOOT
SFLAGS += -DEMMC_BOOT

ifeq ($(EXTERNAL_EMMC), y)
CFLAGS += -DEXTERNAL_EMMC
SFLAGS += -DEXTERNAL_EMMC
endif
endif
#ifeq ($(SUPPORT_SHOWLOGO),1)
#Source += $(CHIP_DIR)/irqHandler.S $(CHIP_DIR)/gicDiag.c
#CFLAGS += -I$(PROJ_DIR)/sdio_ctrl
#endif

ifeq ($(CONFIG_USB), y)
Source += usb_ctrl/usb.c usb_ctrl/ehci-hcd.c \
	  usb_ctrl/ehci-berlin.c usb_ctrl/usb_storage.c \
	  timer/timer.c timer/apb_timer.c
CFLAGS += -Itimer -Iusb_ctrl
SFLAGS += -Itimer -Iusb_ctrl
HOST_CFLAGS += -Itimer -Iusb_ctrl
CFLAGS += -DCONFIG_USB
SFLAGS += -DCONFIG_USB

ifeq ($(CONFIG_USB0_STORAGE), y)
CFLAGS += -DCONFIG_USB0_STORAGE
SFLAGS += -DCONFIG_USB0_STORAGE
endif

ifeq ($(CONFIG_USB1_STORAGE), y)
CFLAGS += -DCONFIG_USB1_STORAGE
SFLAGS += -DCONFIG_USB1_STORAGE
endif

endif

ifeq ($(CONNECT_BUTTON_ENABLE), y)
CFLAGS += -DENABLE_CONNECT_BTN
SFLAGS += -DENABLE_CONNECT_BTN
endif

ifeq ($(CONFIG_GPT), y)
CFLAGS += -DCONFIG_GPT
SFLAGS += -DCONFIG_GPT
endif

ifeq ($(DISABLE_CRASH_COUNTER), y)
CFLAGS += -DDISABLE_CRASH_COUNTER
SFLAGS += -DDISABLE_CRASH_COUNTER
endif

FIGO_source := 	$(PROJ_DIR)/figo_sram.S
#
# Common objects
#
#Object :=	$(patsubst %.S,%.o,$(Source))
#Object :=	$(patsubst %.c,%.o,$(Object))
TMPDIR=.tmp_$(BOOT_TYPE)
OBJDIR=$(TMPDIR)/$(BOOT_TYPE)
Object := $(Source)
Object := $(patsubst %.c,$(OBJDIR)/%.o,$(Object))
Object := $(patsubst %.S,$(OBJDIR)/%.o,$(Object))
Objtree := $(abspath $(dir $(Object)))

FIGO_Object :=	$(patsubst %.S,$(OBJDIR)/%.o,$(FIGO_source))

#
# Include the make variables (CC, etc...)
#
AS		= $(CROSS_COMPILE)as
LD		= $(CROSS_COMPILE)ld
CC		= $(CROSS_COMPILE)gcc
CPP		= $(CROSS_COMPILE)g++
AR		= $(CROSS_COMPILE)ar
NM		= $(CROSS_COMPILE)nm
STRIP		= $(CROSS_COMPILE)strip
OBJCOPY		= $(CROSS_COMPILE)objcopy
OBJDUMP		= $(CROSS_COMPILE)objdump
GCCINCDIR	= $(shell $(CC) -print-file-name=include)
PLATFORM_LIBS	= -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc


#
# Common rule
#
$(OBJDIR)/%.o: %.c
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $(PROJ_DIR)/$<
$(OBJDIR)/%.o: %.S
	$(CC) $(SFLAGS) $(EXTRA_CFLAGS) -c -o $@ $(PROJ_DIR)/$<

#
# Common Make targets
#
.PHONY: all init clean fresh
all:	bootloader
#	@./addheader.sh $<.elf $<.img
#	@./encryption.sh $<.img $<.img.en

init:
	#############################################################################
	## Source = $(Source)
	## Object = $(Object)
	#############################################################################
	@mkdir -p $(Objtree)

bootloader:	header $(Object) $(FASTLOGO_LIB)
	#############################################################################
	## SUPPORT_FASTLOGO = $(SUPPORT_FASTLOGO)
	## SUPPORT_SHOWLOGO = $(SUPPORT_SHOWLOGO)
	#############################################################################
	$(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) -o $@.elf $(Object) $(FASTLOGO_LD) $(PLATFORM_LIBS)
	$(OBJCOPY) -O binary $@.elf $@.bin
	cp bootloader.elf bootloader_en.elf

.PHONY: gen_uboot_scr
gen_uboot_scr: gen_uboot_scr.c pin_settings.h
	gcc $(HOST_CFLAGS) $< -o $@
	./$@
#############################################################################
#	configuration
#############################################################################
configure: header $(FIGO_Object)
	gcc code.c -o code
	$(LD)  -T figo_sram.lds -o figo_sram.elf $(FIGO_Object)
	$(OBJCOPY)      -O binary figo_sram.elf figo_sram.bin
	./code
	./berlin_config.sh

.PHONY: header
header:	init $(INCLUDE_DIR)/Galois_memmap.h $(INCLUDE_DIR)/global.h $(INCLUDE_DIR)/MctrlDual.h
	@./header.sh $(INCLUDE_DIR)/Galois_memmap.h $(OBJDIR)/memmap.h MEMMAP_
	@./header.sh $(INCLUDE_DIR)/global.h $(OBJDIR)/ra_gbl.h RA_Gbl_
	@./header.sh $(INCLUDE_DIR)/MctrlDual.h $(OBJDIR)/mem_ctrl.h RA_MctrlDual_
	@./header.sh $(INCLUDE_DIR)/drmdmx.h $(OBJDIR)/figo_drm.h Figo_Drm_
	@#./header.sh $(INCLUDE_DIR)/drm_sw_spec.h $(OBJDIR)/drm.h DRM_
	@./header.sh $(INCLUDE_DIR)/soc.h $(OBJDIR)/Berlin_SoC.h System

clean:
	@rm -rf board/bg2cdp_a0/.tmp_*
	@rm -rf board/bg2cdp_a0/out_*
	@rm -rf board/bg2cdp_z1/.tmp_*
	@rm -rf board/bg2cdp_z1/out_*
	@rm -rf .tmp_*
	@rm -rf $(Object) $(FIGO_Object) bootloader.elf bootloader.map bootloader.bin configure.ame
	@rm -rf memmap.h ra_gbl.h mem_ctrl.h figo_drm.h drm.h
	@rm -rf flash.bin encrypt
	@rm -rf debug.log
	@rm -rf figo_sram.bin figo_sram.elf figo_sram_bin.c
	@rm -rf code echobin flash_en.bin
	@rm -rf cold_cmd_table.bin warm_cmd_table.bin
	@rm -rf	loader.bin loader_en.bin sm.en.bin
	@rm -rf global.h Galois_memmap.h
	@rm -rf gen_uboot_scr

fresh: clean
	@rm -rf linux_param.h customer_key_store.h Berlin_SoC.h
	@rm -rf *.bin *.log *.img *.info
	@rm -rf version layout.*
	@rm -rf *.o */*.o

.PHONY: regen
regen: clean all

.PHONY: bg2cdp_a0
bg2cdp_a0:
	CC="$(CC)" \
	AR="$(AR)" \
	PROJ_DIR="$(CUR_DIR)" \
	CFLAGS="$(CFLAGS)" \
	make -C board/bg2cdp_a0 -f fastlogo.mak

.PHONY: bg2cdp_z1
bg2cdp_z1:
	CC="$(CC)" \
	AR="$(AR)" \
	PROJ_DIR="$(CUR_DIR)" \
	CFLAGS="$(CFLAGS)" \
	make -C board/bg2cdp_z1 -f fastlogo.mak
