blob: 5c0f08d75d900b8d7400cef2c176d75d3bebde04 [file] [log] [blame]
Stefan Reinauer55feadd2015-06-10 16:15:36 -07001#*****************************************************************************
2#
Marc Jones21e5dd82016-09-20 20:32:47 -06003# Copyright (c) 2012, 2016 Advanced Micro Devices, Inc.
Stefan Reinauer55feadd2015-06-10 16:15:36 -07004# 2013 - 2014, Sage Electronic Engineering, LLC
5# All rights reserved.
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions are met:
9# * Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# * Redistributions in binary form must reproduce the above copyright
12# notice, this list of conditions and the following disclaimer in the
13# documentation and/or other materials provided with the distribution.
14# * Neither the name of Advanced Micro Devices, Inc. nor the names of
15# its contributors may be used to endorse or promote products derived
16# from this software without specific prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21# DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
22# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28#
29#*****************************************************************************
30
Marc Jones21cde8b2017-05-07 16:47:36 -060031ifeq ($(CONFIG_CPU_AMD_PI_00630F01)$(CONFIG_CPU_AMD_PI_00730F01)$(CONFIG_CPU_AMD_PI_00670F00_FP4)$(CONFIG_CPU_AMD_PI_00670F00_FT4)$(CONFIG_CPU_AMD_PI_00660F01)$(CONFIG_SOC_AMD_STONEYRIDGE_FP4)$(CONFIG_SOC_AMD_STONEYRIDGE_FT4),y)
Stefan Reinauer55feadd2015-06-10 16:15:36 -070032# AGESA V5 Files
Marc Jones21cde8b2017-05-07 16:47:36 -060033
Marc Jones0b11bd02015-07-19 15:20:17 -060034AGESA_ROOT = $(call strip_quotes,$(CONFIG_AGESA_BINARY_PI_VENDORCODE_PATH))
Stefan Reinauer55feadd2015-06-10 16:15:36 -070035
36AGESA_INC = -I$(obj)
37
38AGESA_INC += -I$(src)/mainboard/$(MAINBOARDDIR)
39AGESA_INC += -I$(AGESA_ROOT)/binaryPI
40AGESA_INC += -I$(AGESA_ROOT)
41AGESA_INC += -I$(AGESA_ROOT)/Include
42AGESA_INC += -I$(src)/vendorcode/amd/pi
43AGESA_INC += -I$(src)/vendorcode/amd/pi/Lib
44
45AGESA_INC += -I$(AGESA_ROOT)/Proc
46AGESA_INC += -I$(AGESA_ROOT)/Proc/Common
47AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU
48AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU/Family
49AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU/Feature
50AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch
51AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch/Common
Marc Jones21cde8b2017-05-07 16:47:36 -060052ifeq ($(CONFIG_CPU_AMD_PI_00670F00_FP4)$(CONFIG_CPU_AMD_PI_00670F00_FT4)$(CONFIG_SOC_AMD_STONEYRIDGE_FP4)$(CONFIG_SOC_AMD_STONEYRIDGE_FT4),y)
Marc Jones21e5dd82016-09-20 20:32:47 -060053AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch/Kern
54AGESA_INC += -I$(AGESA_ROOT)/Proc/Psp/PspBaseLib
55endif
Stefan Reinauer55feadd2015-06-10 16:15:36 -070056ifeq ($(CONFIG_CPU_AMD_PI_00660F01),y)
57AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch/Kern
58AGESA_INC += -I$(AGESA_ROOT)/Proc/Psp/PspBaseLib
59endif
60ifeq ($(CONFIG_CPU_AMD_PI_00630F01),y)
61AGESA_INC += -I$(AGESA_ROOT)/Proc/IDS
62endif
63
Marc Jones21cde8b2017-05-07 16:47:36 -060064ifeq ($(CONFIG_SOC_AMD_STONEYRIDGE_FP4)$(CONFIG_SOC_AMD_STONEYRIDGE_FT4),y)
Marc Jones24484842017-05-04 21:17:45 -060065AGESA_INC += -I$(src)/soc/amd/stoneyridge/include
Marc Jones1587dc82017-05-15 18:55:11 -060066AGESA_INC += -I$(src)/soc/amd/common
Marc Jones24484842017-05-04 21:17:45 -060067else
Marc Jones1587dc82017-05-15 18:55:11 -060068AGESA_INC += -I$(src)/northbridge/amd/pi
Stefan Reinauer55feadd2015-06-10 16:15:36 -070069AGESA_INC += -I$(src)/southbridge/amd/pi/hudson
Marc Jones24484842017-05-04 21:17:45 -060070endif
Stefan Reinauer55feadd2015-06-10 16:15:36 -070071
72AGESA_INC += -I$(src)/arch/x86/include
73AGESA_INC += -I$(src)/include
Aaron Durbindc9f5cd2015-09-08 13:34:43 -050074AGESA_INC += -I$(src)/commonlib/include
Paul Kocialkowski46114512016-07-24 12:10:38 +020075AGESA_INC += -I$(VBOOT_SOURCE)/firmware/include
Stefan Reinauer55feadd2015-06-10 16:15:36 -070076
77AGESA_CFLAGS += -march=amdfam10 -mno-3dnow -fno-zero-initialized-in-bss -fno-strict-aliasing
78CFLAGS_x86_32 += $(AGESA_CFLAGS)
Stefan Reinauerd91ddc82015-07-30 11:17:40 -070079CFLAGS_x86_64 += $(AGESA_CFLAGS)
Stefan Reinauer55feadd2015-06-10 16:15:36 -070080
81export AGESA_ROOT := $(AGESA_ROOT)
82export AGESA_INC := $(AGESA_INC)
83export AGESA_CFLAGS := $(AGESA_CFLAGS)
84
85CC_bootblock := $(CC_bootblock) $(AGESA_INC) $(AGESA_CFLAGS)
86CC_romstage := $(CC_romstage) $(AGESA_INC) $(AGESA_CFLAGS)
87CC_ramstage := $(CC_ramstage) $(AGESA_INC) $(AGESA_CFLAGS)
88CC_x86_32 := $(CC_x86_32) $(AGESA_INC) $(AGESA_CFLAGS)
Stefan Reinauerd91ddc82015-07-30 11:17:40 -070089CC_x86_64 := $(CC_x86_64) $(AGESA_INC) $(AGESA_CFLAGS)
Stefan Reinauer55feadd2015-06-10 16:15:36 -070090
91#######################################################################
92
93define create_agesa_cp_template
Stefan Reinauer55feadd2015-06-10 16:15:36 -070094# $1 AGESA source file
Nico Huber81b09f42016-01-23 00:50:00 +010095
96$(agesa_src_path)/$(notdir $1): $1
97 @printf " AGESA Copying $$(notdir $1) => $$(@D)\n"
98 if [ ! -r $(agesa_src_path)/$(notdir $1) ]; then \
99 cp -f $1 $$(@D); \
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700100 fi
101
Nico Huber81b09f42016-01-23 00:50:00 +0100102$(call src-to-obj,libagesa,$1): $(agesa_src_path)/$(notdir $1) $(obj)/config.h $(src)/include/kconfig.h
103 @printf " CC $$(subst $(obj)/,,$$(@))\n"
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700104 $(CC_libagesa) -c -MMD $(CFLAGS_libagesa) $(AGESA_CFLAGS) \
105 $(AGESA_INC) \
Kyösti Mälkki211b1d82016-12-01 07:59:16 +0200106 -include $(src)/include/rules.h -include $(src)/include/kconfig.h \
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700107 -o $$@ \
Nico Huber81b09f42016-01-23 00:50:00 +0100108 $(agesa_src_path)/$(notdir $1)
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700109
110endef
111
112agesa_raw_files += $(wildcard $(src)/vendorcode/amd/pi/Lib/*.[cS])
113agesa_raw_files += $(wildcard $(AGESA_ROOT)/binaryPI/*.[cS])
Marc Jones21cde8b2017-05-07 16:47:36 -0600114ifeq ($(CONFIG_CPU_AMD_PI_00670F00_FP4)$(CONFIG_CPU_AMD_PI_00670F00_FT4)$(CONFIG_SOC_AMD_STONEYRIDGE_FP4)$(CONFIG_SOC_AMD_STONEYRIDGE_FT4),y)
Marc Jones21e5dd82016-09-20 20:32:47 -0600115agesa_raw_files += $(wildcard $(AGESA_ROOT)/Proc/Fch/Kern/KernImc/*.[cS])
116agesa_raw_files += $(wildcard $(AGESA_ROOT)/Proc/Fch/Common/*.[cS])
117agesa_raw_files += $(wildcard $(AGESA_ROOT)/Proc/Psp/PspBaseLib/*.[cS])
118endif
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700119ifeq ($(CONFIG_CPU_AMD_PI_00660F01),y)
120agesa_raw_files += $(wildcard $(AGESA_ROOT)/Proc/Fch/Kern/KernImc/*.[cS])
121agesa_raw_files += $(wildcard $(AGESA_ROOT)/Proc/Fch/Common/*.[cS])
122agesa_raw_files += $(wildcard $(AGESA_ROOT)/Proc/Psp/PspBaseLib/*.[cS])
123endif
Marc Jones24484842017-05-04 21:17:45 -0600124ifeq ($(CONFIG_HUDSON_IMC_FWM)$(CONFIG_STONEYRIDGE_IMC_FWM),y)
WANG Siyuan3f95f1d2015-06-23 22:14:33 +0800125agesa_raw_files += $(wildcard $(src)/vendorcode/amd/pi/Lib/imc/*.c)
126endif
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700127
128classes-$(CONFIG_CPU_AMD_AGESA_BINARY_PI) += libagesa
Stefan Reinauerd91ddc82015-07-30 11:17:40 -0700129
130ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32),y)
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700131$(eval $(call create_class_compiler,libagesa,x86_32))
Stefan Reinauerd91ddc82015-07-30 11:17:40 -0700132else
133$(eval $(call create_class_compiler,libagesa,x86_64))
134endif
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700135
136agesa_src_files := $(strip $(sort $(foreach file,$(strip $(agesa_raw_files)),$(call strip_quotes,$(file)))))
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700137agesa_src_path := $(strip $(obj)/agesa)
Nico Huber81b09f42016-01-23 00:50:00 +0100138agesa_dirs := $(sort $(abspath $(dir $(call src-to-obj,libagesa,$(agesa_src_files)))))
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700139
Nico Huber81b09f42016-01-23 00:50:00 +0100140additional-dirs += $(agesa_src_path) $(agesa_dirs)
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700141
Nico Huber81b09f42016-01-23 00:50:00 +0100142$(foreach file,$(strip $(agesa_src_files)),$(eval $(call create_agesa_cp_template,$(file))))
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700143
Nico Huber81b09f42016-01-23 00:50:00 +0100144$(obj)/agesa/libagesa.a: $(call src-to-obj,libagesa,$(agesa_src_files))
145 @printf " AGESA $(subst $(obj)/,,$(@))\n"
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700146 ar rcs $@ $+
147
148romstage-libs += $(obj)/agesa/libagesa.a
149ramstage-libs += $(obj)/agesa/libagesa.a
150
151#######################################################################
152
153cbfs-files-$(CONFIG_CPU_AMD_AGESA_BINARY_PI) += AGESA
Marc Jones0b11bd02015-07-19 15:20:17 -0600154AGESA-file := $(CONFIG_AGESA_BINARY_PI_FILE)
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700155AGESA-type := raw
156AGESA-position := $(CONFIG_AGESA_BINARY_PI_LOCATION)
157
158endif