blob: b2ac43f40b54bd5d37f4df0e4ae8cb5fd09cac43 [file] [log] [blame]
Felix Held4a8cd722020-04-18 22:26:39 +02001# SPDX-License-Identifier: BSD-3-Clause
Felix Held4a8cd722020-04-18 22:26:39 +02002
Marshall Dawsond7868432019-11-25 11:47:32 -07003ifeq ($(CONFIG_SOC_AMD_STONEYRIDGE),y)
Marc Jones21cde8b2017-05-07 16:47:36 -06004
5subdirs-y += ../../../cpu/amd/mtrr/
Marc Jones24484842017-05-04 21:17:45 -06006
Felix Heldfbfb9062021-12-15 19:35:00 +01007bootblock-y += aoac.c
Felix Held91ef9252021-01-12 23:44:05 +01008bootblock-y += uart.c
Martin Rothc450fbe2017-10-02 13:46:50 -06009bootblock-y += BiosCallOuts.c
Felix Held0aada3c2020-11-24 22:55:53 +010010bootblock-y += bootblock.c
Felix Held2d020e12021-12-15 20:52:10 +010011bootblock-y += early_fch.c
Chris Ching2269a3c2018-02-05 16:46:41 -070012bootblock-y += gpio.c
Chris Ching6fc39d42017-12-20 16:06:03 -070013bootblock-y += i2c.c
Arthur Heymansc63649b2019-11-16 12:13:03 +010014bootblock-y += enable_usbdebug.c
Aaron Durbin24079322018-01-23 10:53:05 -070015bootblock-y += monotonic_timer.c
Marshall Dawson9df969a2017-07-25 18:46:46 -060016bootblock-y += tsc_freq.c
17
Martin Rothc450fbe2017-10-02 13:46:50 -060018romstage-y += BiosCallOuts.c
Chris Ching6fc39d42017-12-20 16:06:03 -070019romstage-y += i2c.c
Marshall Dawson9df969a2017-07-25 18:46:46 -060020romstage-y += romstage.c
Arthur Heymansc63649b2019-11-16 12:13:03 +010021romstage-y += enable_usbdebug.c
Felix Held25aa5602021-12-15 20:52:10 +010022romstage-y += fch_agesa.c
Marc Jonesa1b07932017-06-22 21:39:03 -060023romstage-y += gpio.c
Aaron Durbin24079322018-01-23 10:53:05 -070024romstage-y += monotonic_timer.c
Marc Jones24484842017-05-04 21:17:45 -060025romstage-y += smbus_spd.c
Kyösti Mälkki1dbf3102019-08-03 21:28:40 +030026romstage-y += memmap.c
Felix Held91ef9252021-01-12 23:44:05 +010027romstage-y += uart.c
Marshall Dawson786bd5d2017-06-16 10:10:17 -060028romstage-y += tsc_freq.c
Felix Helddba32292020-03-31 23:54:44 +020029romstage-y += psp.c
Marc Jones24484842017-05-04 21:17:45 -060030
Chris Ching2269a3c2018-02-05 16:46:41 -070031verstage-y += gpio.c
Chris Ching6fc39d42017-12-20 16:06:03 -070032verstage-y += i2c.c
Aaron Durbin24079322018-01-23 10:53:05 -070033verstage-y += monotonic_timer.c
Felix Held91ef9252021-01-12 23:44:05 +010034verstage-y += uart.c
Marshall Dawsone7557de2017-06-09 16:35:14 -060035verstage-y += tsc_freq.c
36
Aaron Durbin24079322018-01-23 10:53:05 -070037postcar-y += monotonic_timer.c
Felix Held91ef9252021-01-12 23:44:05 +010038postcar-y += uart.c
Kyösti Mälkki1dbf3102019-08-03 21:28:40 +030039postcar-y += memmap.c
Philipp Deppenwiese2af17af2018-11-26 15:04:46 +010040postcar-$(CONFIG_VBOOT_MEASURED_BOOT) += i2c.c
Philipp Deppenwiese66f9a092018-11-08 10:59:40 +010041postcar-y += tsc_freq.c
Marshall Dawson18b477e2017-09-21 12:27:12 -060042
Martin Rothc450fbe2017-10-02 13:46:50 -060043ramstage-y += BiosCallOuts.c
Chris Ching6fc39d42017-12-20 16:06:03 -070044ramstage-y += i2c.c
Marc Jones24484842017-05-04 21:17:45 -060045ramstage-y += chip.c
Marshall Dawsona7bfbbe2017-09-13 17:24:53 -060046ramstage-y += cpu.c
Marshall Dawson0b4a1e22018-09-04 13:11:42 -060047ramstage-y += mca.c
Arthur Heymansc63649b2019-11-16 12:13:03 +010048ramstage-y += enable_usbdebug.c
Marc Jones257db582017-06-18 17:33:30 -060049ramstage-$(CONFIG_HAVE_ACPI_TABLES) += acpi.c
Felix Held2d020e12021-12-15 20:52:10 +010050ramstage-y += fch.c
Felix Held25aa5602021-12-15 20:52:10 +010051ramstage-y += fch_agesa.c
Marc Jones24484842017-05-04 21:17:45 -060052ramstage-y += gpio.c
Aaron Durbin24079322018-01-23 10:53:05 -070053ramstage-y += monotonic_timer.c
Marc Jones1587dc82017-05-15 18:55:11 -060054ramstage-y += northbridge.c
Marc Jones24484842017-05-04 21:17:45 -060055ramstage-y += sata.c
Kyösti Mälkki1dbf3102019-08-03 21:28:40 +030056ramstage-y += memmap.c
Felix Held91ef9252021-01-12 23:44:05 +010057ramstage-y += uart.c
Marc Jones24484842017-05-04 21:17:45 -060058ramstage-y += usb.c
Marshall Dawson786bd5d2017-06-16 10:10:17 -060059ramstage-y += tsc_freq.c
Felix Helddba32292020-03-31 23:54:44 +020060ramstage-y += psp.c
Marc Jones24484842017-05-04 21:17:45 -060061
Kyösti Mälkki9db39872019-12-13 18:11:05 +020062all-y += reset.c
63
Aaron Durbin24079322018-01-23 10:53:05 -070064smm-y += monotonic_timer.c
Marshall Dawson6746d372017-09-27 13:32:00 -060065smm-y += smihandler.c
Marshall Dawson6746d372017-09-27 13:32:00 -060066smm-y += tsc_freq.c
Marshall Dawsonabac64d2017-09-27 13:26:23 -060067smm-$(CONFIG_DEBUG_SMI) += uart.c
Marc Jones85aec312018-07-14 17:08:27 -060068smm-y += gpio.c
Felix Helddba32292020-03-31 23:54:44 +020069smm-y += psp.c
Marc Jones24484842017-05-04 21:17:45 -060070
Marc Jones24484842017-05-04 21:17:45 -060071CPPFLAGS_common += -I$(src)/soc/amd/stoneyridge/include
72CPPFLAGS_common += -I$(src)/soc/amd/stoneyridge/acpi
73
Martin Roth6d8ef242017-09-08 14:39:35 -060074# ROMSIG Normally At ROMBASE + 0x20000
75# Overridden by CONFIG_AMD_FWM_POSITION_INDEX
Marc Jones24484842017-05-04 21:17:45 -060076# +-----------+---------------+----------------+------------+
77# |0x55AA55AA |EC ROM Address |GEC ROM Address |USB3 ROM |
78# +-----------+---------------+----------------+------------+
79# |PSPDIR ADDR|
80# +-----------+
81#
82# EC ROM should be 64K aligned.
Martin Roth6d8ef242017-09-08 14:39:35 -060083STONEYRIDGE_FWM_POSITION=$(call int-add, \
84 $(call int-subtract, 0xffffffff \
85 $(call int-shift-left, \
86 0x80000 $(CONFIG_AMD_FWM_POSITION_INDEX))) 0x20000 1)
Marc Jones24484842017-05-04 21:17:45 -060087
88### 0
Zheng Baoc5e28ab2020-10-28 11:38:09 +080089
Zheng Bao3384e4a2020-10-06 12:03:11 +080090FIRMWARE_LOCATION=$(shell grep -e FIRMWARE_LOCATION $(CONFIG_AMDFW_CONFIG_FILE) | awk '{print $$2}')
Zheng Baoc5e28ab2020-10-28 11:38:09 +080091
Zheng Bao3384e4a2020-10-06 12:03:11 +080092ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson12294d02019-11-25 07:21:18 -070093
94ifeq ($(CONFIG_AMD_APU_STONEYRIDGE),y)
95FIRMWARE_TYPE=ST
96else
Marshall Dawson12294d02019-11-25 07:21:18 -070097ifeq ($(CONFIG_AMD_APU_MERLINFALCON),y)
Richard Spiegel1bc578a2019-06-18 18:19:47 -070098FIRMWARE_TYPE=CZ
99else
Marshall Dawsone1988f52019-11-25 11:15:35 -0700100ifeq ($(CONFIG_AMD_APU_PRAIRIEFALCON),y)
101FIRMWARE_TYPE=ST
102else
Marshall Dawson91e7fe72019-11-24 17:19:19 -0700103$(error soc/amd/stoneyridge: Unusable FIRMWARE_TYPE)
Marshall Dawson12294d02019-11-25 07:21:18 -0700104
Marshall Dawsone1988f52019-11-25 11:15:35 -0700105endif # CONFIG_AMD_APU_PRAIRIEFALCON
Marshall Dawson12294d02019-11-25 07:21:18 -0700106endif # CONFIG_AMD_APU_MERLINFALCON
107endif # CONFIG_AMD_APU_STONEYRIDGE
Marc Jones24484842017-05-04 21:17:45 -0600108
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800109add_opt_prefix=$(if $(call strip_quotes, $(1)), $(2) $(call strip_quotes, $(1)), )
Marc Jones24484842017-05-04 21:17:45 -0600110
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800111OPT_STONEYRIDGE_XHCI_FWM_FILE=$(call add_opt_prefix, $(CONFIG_STONEYRIDGE_XHCI_FWM_FILE), --xhci)
112OPT_STONEYRIDGE_GEC_FWM_FILE=$(call add_opt_prefix, $(CONFIG_STONEYRIDGE_GEC_FWM_FILE), --gec)
Marc Jones24484842017-05-04 21:17:45 -0600113
Zheng Bao3384e4a2020-10-06 12:03:11 +0800114SMUFWM_FILE=$(top)/$(FIRMWARE_LOCATION)/$(shell awk '($$1=="PSP_SMUFW1_SUB0_FILE") {print $$2}' $(CONFIG_AMDFW_CONFIG_FILE))
115SMUFWM_FN_FILE=$(top)/$(FIRMWARE_LOCATION)/$(shell awk '($$1=="PSP_SMUFW1_SUB1_FILE") {print $$2}' $(CONFIG_AMDFW_CONFIG_FILE))
Marc Jones24484842017-05-04 21:17:45 -0600116
Zheng Bao3384e4a2020-10-06 12:03:11 +0800117SMUFIRMWARE2_FILE=$(top)/$(FIRMWARE_LOCATION)/$(shell awk '($$1=="PSP_SMUFW2_SUB0_FILE") {print $$2}' $(CONFIG_AMDFW_CONFIG_FILE))
118SMUFIRMWARE2_FN_FILE=$(top)/$(FIRMWARE_LOCATION)/$(shell awk '($$1=="PSP_SMUFW2_SUB1_FILE") {print $$2}' $(CONFIG_AMDFW_CONFIG_FILE))
Marc Jones24484842017-05-04 21:17:45 -0600119
Richard Spiegel1bc578a2019-06-18 18:19:47 -0700120ifeq ("$(wildcard $(SMUFWM_FN_FILE))","")
121SMUFWM_FN_FILE=
122SMUFIRMWARE2_FN_FILE=
123endif
124
Richard Spiegel1bc578a2019-06-18 18:19:47 -0700125ifeq ($(FIRMWARE_TYPE),ST)
126OPT_COMBOCAPABLE=--combo-capable
Zheng Bao6bc300d2021-11-03 10:24:15 +0800127OPT_SOCNAME=--soc-name "Stoneyridge"
Richard Spiegel1bc578a2019-06-18 18:19:47 -0700128endif
Marc Jones24484842017-05-04 21:17:45 -0600129
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800130ifeq ($(CONFIG_USE_PSPSECUREOS),y)
131PSP_USE_PSPSECUREOS="--use-pspsecureos"
132endif
133
134OPT_PSP_USE_PSPSECUREOS=$(call strip_quotes, $(PSP_USE_PSPSECUREOS))
135
Zheng Bao570645d2021-11-03 10:25:03 +0800136OPT_EFS_SPI_READ_MODE=$(call add_opt_prefix, $(CONFIG_EFS_SPI_READ_MODE), --spi-read-mode)
137OPT_EFS_SPI_SPEED=$(call add_opt_prefix, $(CONFIG_EFS_SPI_SPEED), --spi-speed)
138
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800139# Add all the files listed in the config file
Zheng Baoaf2efbb2020-11-05 18:26:10 +0800140POUND_SIGN=$(call strip_quotes, "\#")
141DEP_FILES= $(patsubst %,$(FIRMWARE_LOCATION)/%, $(shell sed -e /^$(POUND_SIGN)/d -e /^FIRMWARE_LOCATION/d $(CONFIG_AMDFW_CONFIG_FILE) | awk '{print $$2}' ))
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800142
Marc Jones24484842017-05-04 21:17:45 -0600143$(obj)/amdfw.rom: $(call strip_quotes, $(CONFIG_STONEYRIDGE_XHCI_FWM_FILE)) \
Marc Jones24484842017-05-04 21:17:45 -0600144 $(call strip_quotes, $(CONFIG_STONEYRIDGE_GEC_FWM_FILE)) \
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800145 $(DEP_FILES) \
Marc Jones24484842017-05-04 21:17:45 -0600146 $(AMDFWTOOL)
147 rm -f $@
148 @printf " AMDFWTOOL $(subst $(obj)/,,$(@))\n"
149 $(AMDFWTOOL) \
150 $(OPT_STONEYRIDGE_XHCI_FWM_FILE) \
Marc Jones24484842017-05-04 21:17:45 -0600151 $(OPT_STONEYRIDGE_GEC_FWM_FILE) \
Richard Spiegel1bc578a2019-06-18 18:19:47 -0700152 $(OPT_COMBOCAPABLE)\
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800153 $(OPT_PSP_USE_PSPSECUREOS) \
Zheng Bao570645d2021-11-03 10:25:03 +0800154 $(OPT_EFS_SPI_READ_MODE) \
155 $(OPT_EFS_SPI_SPEED) \
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800156 --config $(CONFIG_AMDFW_CONFIG_FILE) \
Zheng Bao6bc300d2021-11-03 10:24:15 +0800157 $(OPT_SOCNAME) \
Marc Jones24484842017-05-04 21:17:45 -0600158 --flashsize $(CONFIG_ROM_SIZE) \
Martin Rotha75d6802017-10-03 14:24:07 -0600159 --location $(shell printf "0x%x" $(STONEYRIDGE_FWM_POSITION)) \
Marc Jones24484842017-05-04 21:17:45 -0600160 --output $@
161
162ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
Marc Jones24484842017-05-04 21:17:45 -0600163
Martin Roth30f9b952017-10-03 15:54:45 -0600164# Calculate firmware position inside the ROM
165STONEYRIDGE_FWM_ROM_POSITION=$(call int-add, \
166 $(call int-subtract, $(CONFIG_ROM_SIZE) \
167 $(call int-shift-left, \
168 0x80000 $(CONFIG_AMD_FWM_POSITION_INDEX))) 0x20000)
169
Patrick Georgi2cc5bcb2021-01-13 09:15:07 +0100170$(call add_intermediate, add_amdfw, $(obj)/amdfw.rom)
Martin Roth30f9b952017-10-03 15:54:45 -0600171 printf " DD Adding AMD Firmware at ROM offset 0x%x\n" \
172 "$(STONEYRIDGE_FWM_ROM_POSITION)"
Patrick Georgi0b7d3a12021-01-13 09:16:41 +0100173 dd if=$(obj)/amdfw.rom \
Martin Roth30f9b952017-10-03 15:54:45 -0600174 of=$(obj)/coreboot.pre conv=notrunc bs=1 \
175 seek=$(STONEYRIDGE_FWM_ROM_POSITION) >/dev/null 2>&1
Marc Jones24484842017-05-04 21:17:45 -0600176
177else # ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
178
179cbfs-files-y += apu/amdfw
180apu/amdfw-file := $(obj)/amdfw.rom
181apu/amdfw-position := $(STONEYRIDGE_FWM_POSITION)
182apu/amdfw-type := raw
183
184endif # ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
185
Marshall Dawson5f0520a2017-10-30 16:11:45 -0600186ifeq ($(CONFIG_SOC_AMD_PSP_SELECTABLE_SMU_FW),y)
187
188cbfs-files-y += smu_fw
189cbfs-files-y += smu_fw2
190smu_fw-type := raw
191smu_fw2-type := raw
192
193ifeq ($(CONFIG_SOC_AMD_SMU_FANLESS),y)
194smu_fw-file := $(SMUFWM_FN_FILE)
195smu_fw2-file := $(SMUFIRMWARE2_FN_FILE)
196else ifeq ($(CONFIG_SOC_AMD_SMU_FANNED),y)
197smu_fw-file := $(SMUFWM_FILE)
198smu_fw2-file := $(SMUFIRMWARE2_FILE)
199else
200$(error "Proper SMU Firmware not selected")
201endif
202
203endif # ifeq ($(CONFIG_SOC_AMD_PSP_SELECTABLE_SMU_FW),y)
204
Zheng Bao3384e4a2020-10-06 12:03:11 +0800205else # ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson91e7fe72019-11-24 17:19:19 -0700206
207warn_no_amdfw:
208 printf "\n\t** WARNING **\n"
209 printf "coreboot has been built with no PSP firmware and "
210 printf "a non-booting image has been generated.\n\n"
211
212PHONY+=warn_no_amdfw
213
214files_added:: warn_no_amdfw
215
Zheng Bao3384e4a2020-10-06 12:03:11 +0800216endif # ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson91e7fe72019-11-24 17:19:19 -0700217
Marshall Dawsond7868432019-11-25 11:47:32 -0700218endif # ($(CONFIG_SOC_AMD_STONEYRIDGE),y)