diff options
Diffstat (limited to 'src/soc/intel/apollolake/Makefile.mk')
-rw-r--r-- | src/soc/intel/apollolake/Makefile.mk | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/src/soc/intel/apollolake/Makefile.mk b/src/soc/intel/apollolake/Makefile.mk new file mode 100644 index 0000000000..82937bc9a6 --- /dev/null +++ b/src/soc/intel/apollolake/Makefile.mk @@ -0,0 +1,208 @@ +## SPDX-License-Identifier: GPL-2.0-only +ifeq ($(CONFIG_SOC_INTEL_APOLLOLAKE),y) + +subdirs-y += ../../../cpu/intel/common +subdirs-y += ../../../cpu/intel/microcode +subdirs-y += ../../../cpu/intel/turbo + +bootblock-$(CONFIG_TPM_MEASURED_BOOT) += bootblock/bootblock_measure.c +bootblock-y += bootblock/bootblock.c +bootblock-y += ../common/block/cpu/pm_timer_emulation.c +bootblock-y += car.c +bootblock-y += heci.c +bootblock-y += gspi.c +bootblock-y += i2c.c +bootblock-y += lpc.c +bootblock-y += mmap_boot.c +bootblock-y += pmutil.c +bootblock-y += spi.c +bootblock-y += uart.c + +romstage-y += car.c +romstage-y += ../../../cpu/intel/car/romstage.c +romstage-y += romstage.c +romstage-y += report_platform.c +romstage-y += gspi.c +romstage-y += heci.c +romstage-y += i2c.c +romstage-y += uart.c +romstage-y += meminit.c +ifeq ($(CONFIG_SOC_INTEL_GEMINILAKE),y) +romstage-y += meminit_util_glk.c +else +romstage-y += meminit_util_apl.c +endif +romstage-y += mmap_boot.c +romstage-y += pmutil.c +romstage-y += reset.c +romstage-y += spi.c + +smm-y += mmap_boot.c +smm-y += pmutil.c +smm-y += smihandler.c +smm-y += spi.c +smm-y += uart.c +smm-y += elog.c +smm-y += xhci.c + +ramstage-$(CONFIG_HAVE_ACPI_TABLES) += acpi.c +ramstage-y += ahci.c +ramstage-y += cpu.c +ramstage-y += chip.c +ramstage-y += cse.c +ramstage-y += elog.c +ramstage-y += graphics.c +ramstage-y += gspi.c +ramstage-y += heci.c +ramstage-y += i2c.c +ramstage-y += lockdown.c +ramstage-y += lpc.c +ramstage-y += mmap_boot.c +ramstage-y += uart.c +ramstage-y += nhlt.c +ramstage-y += spi.c +ramstage-y += systemagent.c +ramstage-y += pmutil.c +ramstage-y += pnpconfig.c +ramstage-y += pmc.c +ramstage-y += reset.c +ramstage-y += xdci.c +ramstage-y += sd.c +ramstage-y += xhci.c + +postcar-y += mmap_boot.c +postcar-y += spi.c +postcar-y += i2c.c +postcar-y += heci.c +postcar-y += reset.c +postcar-y += uart.c +postcar-y += gspi.c + +verstage-y += car.c +verstage-y += i2c.c +verstage-y += gspi.c +verstage-y += heci.c +verstage-y += mmap_boot.c +verstage-y += uart.c +verstage-y += pmutil.c +verstage-y += reset.c +verstage-y += spi.c + +ifeq ($(CONFIG_SOC_INTEL_GEMINILAKE),y) +bootblock-y += gpio_glk.c +romstage-y += gpio_glk.c +smm-y += gpio_glk.c +ramstage-y += gpio_glk.c +verstage-y += gpio_glk.c +else +bootblock-y += gpio_apl.c +romstage-y += gpio_apl.c +smm-y += gpio_apl.c +ramstage-y += gpio_apl.c +verstage-y += gpio_apl.c +endif + +CPPFLAGS_common += -I$(src)/soc/intel/apollolake/include + +# Since FSP-M runs in CAR we need to relocate it to a specific address +$(call strip_quotes,$(CONFIG_FSP_M_CBFS))-options := -b $(CONFIG_FSP_M_ADDR) + +# Handle GLK paging requirements +ifeq ($(CONFIG_PAGING_IN_CACHE_AS_RAM),y) +cbfs-files-y += pt +pt-file := pt.c:struct +pt-type := raw +cbfs-files-y += pdpt +pdpt-file := pdpt.c:struct +pdpt-type := raw +endif + +ifeq ($(CONFIG_NEED_LBP2),y) +$(objcbfs)/lbp2.bin: $(IFWITOOL) +ifeq ($(CONFIG_LBP2_FROM_IFWI),y) + $(IFWITOOL) $(CONFIG_IFWI_FILE_NAME) create -f $@ -s + $(IFWITOOL) $@ delete -n OBBP +else + cp $(CONFIG_LBP2_FILE_NAME) $@ +endif + +$(call add_intermediate, write_lbp2, $(objcbfs)/lbp2.bin) + @printf " FMAP writing lbp2 to %s\n" $(CONFIG_LBP2_FMAP_NAME) + $(CBFSTOOL) $< write -r $(CONFIG_LBP2_FMAP_NAME) -f $< --fill-upward +endif + +# Bootblock on Apollolake platform lies in the IFWI region. In order to place +# the bootblock at the right location in IFWI image - +# a. Using ifwitool: +# 1. Create IFWI image (ifwi.bin.tmp) from input image +# (CONFIG_IFWI_FILE_NAME). +# 2. Delete OBBP sub-partition, if present. +# 3. Replace IBBL directory entry in IBBP sub-partition with currently +# generated bootblock.bin. +# b. Using cbfstool: +# 1. Write ifwi.bin.tmp to coreboot.rom using CONFIG_IFWI_FMAP_NAME. +ifeq ($(CONFIG_NEED_IFWI),y) +$(call add_intermediate, write_ifwi, $(objcbfs)/bootblock.bin $(IFWITOOL)) + @printf " IFWI Embedding %s in %s\n" $(objcbfs)/bootblock.bin $(CONFIG_IFWI_FMAP_NAME) + $(IFWITOOL) $(CONFIG_IFWI_FILE_NAME) create -f $(objcbfs)/ifwi.bin.tmp + $(IFWITOOL) $(objcbfs)/ifwi.bin.tmp delete -n OBBP + $(IFWITOOL) $(objcbfs)/ifwi.bin.tmp replace -n IBBP -f $(objcbfs)/bootblock.bin -d -e IBBL + $(CBFSTOOL) $< write -r $(CONFIG_IFWI_FMAP_NAME) -f $(objcbfs)/ifwi.bin.tmp --fill-upward +endif + +# When booting APL the IBBL loader places the microcode updates embedded +# in the IFWI image and a matching FIT table in SRAM. After copying the +# bootblock to SRAM, it updates the FIT pointer at 0xffffffc0 to point +# to that table. Before releasing the x86 cores from reset, the regular FIT +# mechanism does the updates. So coreboot does not need to generate a FIT +# table + pointer, but reserving the pointer is still needed. Otherwise the +# IBBL loader thrashes code there. So include fit.c so that the linker +# reserves that pointer. +bootblock-y += bootblock/fit.c + +# DSP firmware settings files. +ifeq ($(CONFIG_SOC_INTEL_GEMINILAKE),y) +NHLT_BLOB_PATH = 3rdparty/blobs/soc/intel/glk/nhlt-blobs +else +NHLT_BLOB_PATH = 3rdparty/blobs/soc/intel/apollolake/nhlt-blobs +endif +DMIC_1CH_48KHZ_16B = dmic-1ch-48khz-16b.bin +DMIC_2CH_48KHZ_16B = dmic-2ch-48khz-16b.bin +DMIC_4CH_48KHZ_16B = dmic-4ch-48khz-16b.bin +MAX98357_RENDER = max98357-render-2ch-48khz-24b.bin +DA7219_RENDER_CAPTURE = dialog-2ch-48khz-24b.bin +RT5682_RENDER_CAPTURE = rt5682-2ch-48khz-24b.bin + +cbfs-files-$(CONFIG_NHLT_DMIC_1CH_16B) += $(DMIC_1CH_48KHZ_16B) +$(DMIC_1CH_48KHZ_16B)-file := $(NHLT_BLOB_PATH)/$(DMIC_1CH_48KHZ_16B) +$(DMIC_1CH_48KHZ_16B)-type := raw + +cbfs-files-$(CONFIG_NHLT_DMIC_2CH_16B) += $(DMIC_2CH_48KHZ_16B) +$(DMIC_2CH_48KHZ_16B)-file := $(NHLT_BLOB_PATH)/$(DMIC_2CH_48KHZ_16B) +$(DMIC_2CH_48KHZ_16B)-type := raw + +cbfs-files-$(CONFIG_NHLT_DMIC_4CH_16B) += $(DMIC_4CH_48KHZ_16B) +$(DMIC_4CH_48KHZ_16B)-file := $(NHLT_BLOB_PATH)/$(DMIC_4CH_48KHZ_16B) +$(DMIC_4CH_48KHZ_16B)-type := raw + +cbfs-files-$(CONFIG_NHLT_MAX98357) += $(MAX98357_RENDER) +$(MAX98357_RENDER)-file := $(NHLT_BLOB_PATH)/$(MAX98357_RENDER) +$(MAX98357_RENDER)-type := raw + +cbfs-files-$(CONFIG_NHLT_DA7219) += $(DA7219_RENDER_CAPTURE) +$(DA7219_RENDER_CAPTURE)-file := $(NHLT_BLOB_PATH)/$(DA7219_RENDER_CAPTURE) +$(DA7219_RENDER_CAPTURE)-type := raw + +cbfs-files-$(CONFIG_NHLT_RT5682) += $(RT5682_RENDER_CAPTURE) +$(RT5682_RENDER_CAPTURE)-file := $(NHLT_BLOB_PATH)/$(RT5682_RENDER_CAPTURE) +$(RT5682_RENDER_CAPTURE)-type := raw + +ifeq ($(CONFIG_SOC_INTEL_GEMINILAKE),y) +# Gemini Lake B0 (706a1) only atm. +cpu_microcode_bins += $(wildcard 3rdparty/intel-microcode/intel-ucode/06-7a-*) +else +# Apollo Lake 506c2, B0 (506c9) and E0 (506ca) only atm. +cpu_microcode_bins += $(wildcard 3rdparty/intel-microcode/intel-ucode/06-5c-*) +endif + +endif # if CONFIG_SOC_INTEL_APOLLOLAKE |