| ## |
| # |
| # 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 |