blob: a5768ea64c5ceb6c0b2bdf39747adbc21a1626b6 [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
Martin Roth81da6432023-08-24 18:15:59 -060031ifeq ($(CONFIG_SOC_AMD_STONEYRIDGE),y)
32
Martin Roth059988d2017-11-11 20:06:19 -070033subdirs-y += 00670F00
34
Elyes Haouasced8fe02023-01-12 07:47:39 +010035# AGESA V5 Files
36
37AGESA_ROOT = $(top)/$(call strip_quotes,$(CONFIG_AGESA_BINARY_PI_VENDORCODE_PATH))
38
39BINARY_PI_INC = -I$(AGESA_ROOT)
40BINARY_PI_INC += -I$(AGESA_ROOT)/binaryPI
41BINARY_PI_INC += -I$(AGESA_ROOT)/Include
42BINARY_PI_INC += -I$(AGESA_ROOT)/Proc
43BINARY_PI_INC += -I$(AGESA_ROOT)/Proc/Common
44BINARY_PI_INC += -I$(AGESA_ROOT)/Proc/CPU
45BINARY_PI_INC += -I$(AGESA_ROOT)/Proc/CPU/Family
46BINARY_PI_INC += -I$(AGESA_ROOT)/Proc/Fch
47BINARY_PI_INC += -I$(AGESA_ROOT)/Proc/Fch/Common
48
49AGESA_INC = -I$(obj)
50AGESA_INC += $(BINARY_PI_INC)
51
52AGESA_INC += -I$(src)/soc/amd/stoneyridge/include
53AGESA_INC += -I$(src)/soc/amd/common/block/include
54
55AGESA_INC += -I$(src)/arch/x86/include
56AGESA_INC += -I$(src)/include
57AGESA_INC += -I$(src)/commonlib/include
58AGESA_INC += -I$(VBOOT_SOURCE)/firmware/include
59endif
60
Michał Żygowski07844822021-05-09 17:23:17 +020061ifeq ($(CONFIG_CPU_AMD_PI_00730F01),y)
Stefan Reinauer55feadd2015-06-10 16:15:36 -070062# AGESA V5 Files
Marc Jones21cde8b2017-05-07 16:47:36 -060063
Martin Roth81da6432023-08-24 18:15:59 -060064subdirs-y += 00730F01
65
Marc Jones0b11bd02015-07-19 15:20:17 -060066AGESA_ROOT = $(call strip_quotes,$(CONFIG_AGESA_BINARY_PI_VENDORCODE_PATH))
Stefan Reinauer55feadd2015-06-10 16:15:36 -070067
Stefan Reinauerf652f822017-06-24 21:57:30 +020068AGESA_INC = -I$(obj) -I$(src)/vendorcode/amd/include
Stefan Reinauer55feadd2015-06-10 16:15:36 -070069
70AGESA_INC += -I$(src)/mainboard/$(MAINBOARDDIR)
71AGESA_INC += -I$(AGESA_ROOT)/binaryPI
72AGESA_INC += -I$(AGESA_ROOT)
73AGESA_INC += -I$(AGESA_ROOT)/Include
74AGESA_INC += -I$(src)/vendorcode/amd/pi
75AGESA_INC += -I$(src)/vendorcode/amd/pi/Lib
76
77AGESA_INC += -I$(AGESA_ROOT)/Proc
78AGESA_INC += -I$(AGESA_ROOT)/Proc/Common
79AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU
80AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU/Family
81AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU/Feature
82AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch
83AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch/Common
Martin Roth059988d2017-11-11 20:06:19 -070084
Marc Jones1587dc82017-05-15 18:55:11 -060085AGESA_INC += -I$(src)/northbridge/amd/pi
Stefan Reinauer55feadd2015-06-10 16:15:36 -070086AGESA_INC += -I$(src)/southbridge/amd/pi/hudson
87
88AGESA_INC += -I$(src)/arch/x86/include
89AGESA_INC += -I$(src)/include
Aaron Durbindc9f5cd2015-09-08 13:34:43 -050090AGESA_INC += -I$(src)/commonlib/include
Julius Werner98eeb962019-12-11 15:47:42 -080091AGESA_INC += -I$(src)/commonlib/bsd/include
Paul Kocialkowski46114512016-07-24 12:10:38 +020092AGESA_INC += -I$(VBOOT_SOURCE)/firmware/include
Stefan Reinauer55feadd2015-06-10 16:15:36 -070093
Arthur Heymansd683bf52022-03-23 22:03:51 +010094AGESA_CFLAGS += -Wno-pragma-pack
Martin Roth5b2954e2017-06-29 21:42:02 -060095AGESA_CFLAGS += -fno-strict-aliasing -D__LIBAGESA__
Stefan Reinauer55feadd2015-06-10 16:15:36 -070096CFLAGS_x86_32 += $(AGESA_CFLAGS)
Stefan Reinauerd91ddc82015-07-30 11:17:40 -070097CFLAGS_x86_64 += $(AGESA_CFLAGS)
Stefan Reinauer55feadd2015-06-10 16:15:36 -070098
99export AGESA_ROOT := $(AGESA_ROOT)
100export AGESA_INC := $(AGESA_INC)
101export AGESA_CFLAGS := $(AGESA_CFLAGS)
102
103CC_bootblock := $(CC_bootblock) $(AGESA_INC) $(AGESA_CFLAGS)
104CC_romstage := $(CC_romstage) $(AGESA_INC) $(AGESA_CFLAGS)
Kyösti Mälkkib8cb1422020-06-23 21:36:14 +0300105CC_postcar:= $(CC_postcar) -I$(src)/southbridge/amd/pi/hudson -I$(AGESA_ROOT)/binaryPI
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700106CC_ramstage := $(CC_ramstage) $(AGESA_INC) $(AGESA_CFLAGS)
Kyösti Mälkki63fac812017-09-02 16:41:43 +0300107
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700108CC_x86_32 := $(CC_x86_32) $(AGESA_INC) $(AGESA_CFLAGS)
Stefan Reinauerd91ddc82015-07-30 11:17:40 -0700109CC_x86_64 := $(CC_x86_64) $(AGESA_INC) $(AGESA_CFLAGS)
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700110
111#######################################################################
112
113define create_agesa_cp_template
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700114# $1 AGESA source file
Nico Huber81b09f42016-01-23 00:50:00 +0100115
116$(agesa_src_path)/$(notdir $1): $1
117 @printf " AGESA Copying $$(notdir $1) => $$(@D)\n"
118 if [ ! -r $(agesa_src_path)/$(notdir $1) ]; then \
119 cp -f $1 $$(@D); \
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700120 fi
121
Nico Huber81b09f42016-01-23 00:50:00 +0100122$(call src-to-obj,libagesa,$1): $(agesa_src_path)/$(notdir $1) $(obj)/config.h $(src)/include/kconfig.h
123 @printf " CC $$(subst $(obj)/,,$$(@))\n"
Julius Werner98eeb962019-12-11 15:47:42 -0800124 $(CC_libagesa) -c -MMD $(CFLAGS_libagesa) $(AGESA_CFLAGS) \
125 $(AGESA_INC) \
126 -include $(src)/include/kconfig.h \
127 -include $(src)/include/rules.h \
128 -include $(src)/commonlib/bsd/include/commonlib/bsd/compiler.h \
129 -o $$@ \
Nico Huber81b09f42016-01-23 00:50:00 +0100130 $(agesa_src_path)/$(notdir $1)
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700131
132endef
133
134agesa_raw_files += $(wildcard $(src)/vendorcode/amd/pi/Lib/*.[cS])
Kyösti Mälkki903ce252016-11-25 11:21:02 +0200135
Martin Roth059988d2017-11-11 20:06:19 -0700136ifeq ($(CONFIG_HUDSON_IMC_FWM),y)
WANG Siyuan3f95f1d2015-06-23 22:14:33 +0800137agesa_raw_files += $(wildcard $(src)/vendorcode/amd/pi/Lib/imc/*.c)
138endif
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700139
Arthur Heymans81a4fef2022-11-01 23:33:45 +0100140classes-y += libagesa
Stefan Reinauerd91ddc82015-07-30 11:17:40 -0700141
142ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32),y)
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700143$(eval $(call create_class_compiler,libagesa,x86_32))
Stefan Reinauerd91ddc82015-07-30 11:17:40 -0700144else
145$(eval $(call create_class_compiler,libagesa,x86_64))
146endif
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700147
148agesa_src_files := $(strip $(sort $(foreach file,$(strip $(agesa_raw_files)),$(call strip_quotes,$(file)))))
Martin Roth4460e8f2017-09-26 10:07:35 -0600149agesa_output_path := $(obj)/libagesa
150agesa_src_path := $(agesa_output_path)
Nico Huber81b09f42016-01-23 00:50:00 +0100151agesa_dirs := $(sort $(abspath $(dir $(call src-to-obj,libagesa,$(agesa_src_files)))))
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700152
Nico Huber81b09f42016-01-23 00:50:00 +0100153additional-dirs += $(agesa_src_path) $(agesa_dirs)
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700154
Nico Huber81b09f42016-01-23 00:50:00 +0100155$(foreach file,$(strip $(agesa_src_files)),$(eval $(call create_agesa_cp_template,$(file))))
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700156
Martin Roth4460e8f2017-09-26 10:07:35 -0600157$(agesa_output_path)/libagesa.a: $(call src-to-obj,libagesa,$(agesa_src_files))
Nico Huber81b09f42016-01-23 00:50:00 +0100158 @printf " AGESA $(subst $(obj)/,,$(@))\n"
Kyösti Mälkki807e4232017-10-08 21:51:06 +0300159 $(AR_libagesa) rcsDT $@ $+
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700160
Martin Roth4460e8f2017-09-26 10:07:35 -0600161bootblock-libs += $(agesa_output_path)/libagesa.a
162romstage-libs += $(agesa_output_path)/libagesa.a
163ramstage-libs += $(agesa_output_path)/libagesa.a
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700164
165#######################################################################
166
Arthur Heymans81a4fef2022-11-01 23:33:45 +0100167cbfs-files-y += $(CONFIG_AGESA_CBFS_NAME)
Kyösti Mälkki7104fe22017-05-27 20:53:29 +0300168$(CONFIG_AGESA_CBFS_NAME)-file := $(CONFIG_AGESA_BINARY_PI_FILE)
169$(CONFIG_AGESA_CBFS_NAME)-type := raw
170$(CONFIG_AGESA_CBFS_NAME)-position := $(CONFIG_AGESA_BINARY_PI_LOCATION)
Stefan Reinauer55feadd2015-06-10 16:15:36 -0700171
172endif