blob: 8d0ffcc211cd9d57f07caaaba85b646312997dde [file] [log] [blame]
##
#
# 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