blob: 5c0a31296b05d78bf50a3b44b0c3fafe31651f8b [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
Martin Rothc450fbe2017-10-02 13:46:50 -06008bootblock-y += BiosCallOuts.c
Felix Held0aada3c2020-11-24 22:55:53 +01009bootblock-y += bootblock.c
Felix Held2d020e12021-12-15 20:52:10 +010010bootblock-y += early_fch.c
Chris Ching2269a3c2018-02-05 16:46:41 -070011bootblock-y += gpio.c
Chris Ching6fc39d42017-12-20 16:06:03 -070012bootblock-y += i2c.c
Arthur Heymansc63649b2019-11-16 12:13:03 +010013bootblock-y += enable_usbdebug.c
Marshall Dawson9df969a2017-07-25 18:46:46 -060014
Martin Rothc450fbe2017-10-02 13:46:50 -060015romstage-y += BiosCallOuts.c
Chris Ching6fc39d42017-12-20 16:06:03 -070016romstage-y += i2c.c
Marshall Dawson9df969a2017-07-25 18:46:46 -060017romstage-y += romstage.c
Arthur Heymansc63649b2019-11-16 12:13:03 +010018romstage-y += enable_usbdebug.c
Felix Held25aa5602021-12-15 20:52:10 +010019romstage-y += fch_agesa.c
Marc Jonesa1b07932017-06-22 21:39:03 -060020romstage-y += gpio.c
Marc Jones24484842017-05-04 21:17:45 -060021romstage-y += smbus_spd.c
Kyösti Mälkki1dbf3102019-08-03 21:28:40 +030022romstage-y += memmap.c
Felix Helddba32292020-03-31 23:54:44 +020023romstage-y += psp.c
Marc Jones24484842017-05-04 21:17:45 -060024
Chris Ching2269a3c2018-02-05 16:46:41 -070025verstage-y += gpio.c
Chris Ching6fc39d42017-12-20 16:06:03 -070026verstage-y += i2c.c
Marshall Dawsone7557de2017-06-09 16:35:14 -060027
Kyösti Mälkki1dbf3102019-08-03 21:28:40 +030028postcar-y += memmap.c
Philipp Deppenwiese2af17af2018-11-26 15:04:46 +010029postcar-$(CONFIG_VBOOT_MEASURED_BOOT) += i2c.c
Marshall Dawson18b477e2017-09-21 12:27:12 -060030
Matt DeVillier66ff4fb2023-08-08 12:28:03 -050031ramstage-y += aoac.c
Martin Rothc450fbe2017-10-02 13:46:50 -060032ramstage-y += BiosCallOuts.c
Chris Ching6fc39d42017-12-20 16:06:03 -070033ramstage-y += i2c.c
Marc Jones24484842017-05-04 21:17:45 -060034ramstage-y += chip.c
Marshall Dawsona7bfbbe2017-09-13 17:24:53 -060035ramstage-y += cpu.c
Marshall Dawson0b4a1e22018-09-04 13:11:42 -060036ramstage-y += mca.c
Arthur Heymansc63649b2019-11-16 12:13:03 +010037ramstage-y += enable_usbdebug.c
Marc Jones257db582017-06-18 17:33:30 -060038ramstage-$(CONFIG_HAVE_ACPI_TABLES) += acpi.c
Felix Held2d020e12021-12-15 20:52:10 +010039ramstage-y += fch.c
Felix Held25aa5602021-12-15 20:52:10 +010040ramstage-y += fch_agesa.c
Marc Jones24484842017-05-04 21:17:45 -060041ramstage-y += gpio.c
Felix Held1d66ad12023-03-27 14:39:29 +020042ramstage-y += graphics.c
Marc Jones1587dc82017-05-15 18:55:11 -060043ramstage-y += northbridge.c
Marc Jones24484842017-05-04 21:17:45 -060044ramstage-y += sata.c
Kyösti Mälkki1dbf3102019-08-03 21:28:40 +030045ramstage-y += memmap.c
Marc Jones24484842017-05-04 21:17:45 -060046ramstage-y += usb.c
Felix Helddba32292020-03-31 23:54:44 +020047ramstage-y += psp.c
Marc Jones24484842017-05-04 21:17:45 -060048
Felix Held3924e182023-03-31 15:29:13 +020049all-y += monotonic_timer.c
Felix Held8c75d4b2023-03-31 15:37:14 +020050all-y += pstate_util.c
Kyösti Mälkki9db39872019-12-13 18:11:05 +020051all-y += reset.c
Felix Held3924e182023-03-31 15:29:13 +020052all-y += tsc_freq.c
53all-y += uart.c
Kyösti Mälkki9db39872019-12-13 18:11:05 +020054
Felix Held8c75d4b2023-03-31 15:37:14 +020055smm-y += pstate_util.c
Aaron Durbin24079322018-01-23 10:53:05 -070056smm-y += monotonic_timer.c
Marshall Dawson6746d372017-09-27 13:32:00 -060057smm-y += smihandler.c
Marshall Dawson6746d372017-09-27 13:32:00 -060058smm-y += tsc_freq.c
Marshall Dawsonabac64d2017-09-27 13:26:23 -060059smm-$(CONFIG_DEBUG_SMI) += uart.c
Marc Jones85aec312018-07-14 17:08:27 -060060smm-y += gpio.c
Felix Helddba32292020-03-31 23:54:44 +020061smm-y += psp.c
Marc Jones24484842017-05-04 21:17:45 -060062
Marc Jones24484842017-05-04 21:17:45 -060063CPPFLAGS_common += -I$(src)/soc/amd/stoneyridge/include
64CPPFLAGS_common += -I$(src)/soc/amd/stoneyridge/acpi
65
Martin Roth6d8ef242017-09-08 14:39:35 -060066# ROMSIG Normally At ROMBASE + 0x20000
67# Overridden by CONFIG_AMD_FWM_POSITION_INDEX
Marc Jones24484842017-05-04 21:17:45 -060068# +-----------+---------------+----------------+------------+
69# |0x55AA55AA |EC ROM Address |GEC ROM Address |USB3 ROM |
70# +-----------+---------------+----------------+------------+
71# |PSPDIR ADDR|
72# +-----------+
73#
74# EC ROM should be 64K aligned.
Martin Roth6d8ef242017-09-08 14:39:35 -060075STONEYRIDGE_FWM_POSITION=$(call int-add, \
76 $(call int-subtract, 0xffffffff \
77 $(call int-shift-left, \
78 0x80000 $(CONFIG_AMD_FWM_POSITION_INDEX))) 0x20000 1)
Marc Jones24484842017-05-04 21:17:45 -060079
80### 0
Zheng Baoc5e28ab2020-10-28 11:38:09 +080081
Zheng Bao3384e4a2020-10-06 12:03:11 +080082FIRMWARE_LOCATION=$(shell grep -e FIRMWARE_LOCATION $(CONFIG_AMDFW_CONFIG_FILE) | awk '{print $$2}')
Zheng Baoc5e28ab2020-10-28 11:38:09 +080083
Zheng Bao3384e4a2020-10-06 12:03:11 +080084ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson12294d02019-11-25 07:21:18 -070085
86ifeq ($(CONFIG_AMD_APU_STONEYRIDGE),y)
87FIRMWARE_TYPE=ST
88else
Marshall Dawson12294d02019-11-25 07:21:18 -070089ifeq ($(CONFIG_AMD_APU_MERLINFALCON),y)
Richard Spiegel1bc578a2019-06-18 18:19:47 -070090FIRMWARE_TYPE=CZ
91else
Marshall Dawsone1988f52019-11-25 11:15:35 -070092ifeq ($(CONFIG_AMD_APU_PRAIRIEFALCON),y)
93FIRMWARE_TYPE=ST
94else
Marshall Dawson91e7fe72019-11-24 17:19:19 -070095$(error soc/amd/stoneyridge: Unusable FIRMWARE_TYPE)
Marshall Dawson12294d02019-11-25 07:21:18 -070096
Marshall Dawsone1988f52019-11-25 11:15:35 -070097endif # CONFIG_AMD_APU_PRAIRIEFALCON
Marshall Dawson12294d02019-11-25 07:21:18 -070098endif # CONFIG_AMD_APU_MERLINFALCON
99endif # CONFIG_AMD_APU_STONEYRIDGE
Marc Jones24484842017-05-04 21:17:45 -0600100
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800101add_opt_prefix=$(if $(call strip_quotes, $(1)), $(2) $(call strip_quotes, $(1)), )
Marc Jones24484842017-05-04 21:17:45 -0600102
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800103OPT_STONEYRIDGE_XHCI_FWM_FILE=$(call add_opt_prefix, $(CONFIG_STONEYRIDGE_XHCI_FWM_FILE), --xhci)
104OPT_STONEYRIDGE_GEC_FWM_FILE=$(call add_opt_prefix, $(CONFIG_STONEYRIDGE_GEC_FWM_FILE), --gec)
Marc Jones24484842017-05-04 21:17:45 -0600105
Zheng Bao3384e4a2020-10-06 12:03:11 +0800106SMUFWM_FILE=$(top)/$(FIRMWARE_LOCATION)/$(shell awk '($$1=="PSP_SMUFW1_SUB0_FILE") {print $$2}' $(CONFIG_AMDFW_CONFIG_FILE))
107SMUFWM_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 -0600108
Zheng Bao3384e4a2020-10-06 12:03:11 +0800109SMUFIRMWARE2_FILE=$(top)/$(FIRMWARE_LOCATION)/$(shell awk '($$1=="PSP_SMUFW2_SUB0_FILE") {print $$2}' $(CONFIG_AMDFW_CONFIG_FILE))
110SMUFIRMWARE2_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 -0600111
Richard Spiegel1bc578a2019-06-18 18:19:47 -0700112ifeq ("$(wildcard $(SMUFWM_FN_FILE))","")
113SMUFWM_FN_FILE=
114SMUFIRMWARE2_FN_FILE=
115endif
116
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800117ifeq ($(CONFIG_USE_PSPSECUREOS),y)
118PSP_USE_PSPSECUREOS="--use-pspsecureos"
119endif
120
121OPT_PSP_USE_PSPSECUREOS=$(call strip_quotes, $(PSP_USE_PSPSECUREOS))
122
Zheng Bao570645d2021-11-03 10:25:03 +0800123OPT_EFS_SPI_READ_MODE=$(call add_opt_prefix, $(CONFIG_EFS_SPI_READ_MODE), --spi-read-mode)
124OPT_EFS_SPI_SPEED=$(call add_opt_prefix, $(CONFIG_EFS_SPI_SPEED), --spi-speed)
125
Marc Jones24484842017-05-04 21:17:45 -0600126$(obj)/amdfw.rom: $(call strip_quotes, $(CONFIG_STONEYRIDGE_XHCI_FWM_FILE)) \
Marc Jones24484842017-05-04 21:17:45 -0600127 $(call strip_quotes, $(CONFIG_STONEYRIDGE_GEC_FWM_FILE)) \
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800128 $(DEP_FILES) \
Marc Jones24484842017-05-04 21:17:45 -0600129 $(AMDFWTOOL)
130 rm -f $@
131 @printf " AMDFWTOOL $(subst $(obj)/,,$(@))\n"
132 $(AMDFWTOOL) \
133 $(OPT_STONEYRIDGE_XHCI_FWM_FILE) \
Marc Jones24484842017-05-04 21:17:45 -0600134 $(OPT_STONEYRIDGE_GEC_FWM_FILE) \
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800135 $(OPT_PSP_USE_PSPSECUREOS) \
Zheng Bao570645d2021-11-03 10:25:03 +0800136 $(OPT_EFS_SPI_READ_MODE) \
137 $(OPT_EFS_SPI_SPEED) \
Martin Roth0acf59d2023-03-08 15:18:24 -0700138 $(OPT_DEBUG_AMDFWTOOL) \
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800139 --config $(CONFIG_AMDFW_CONFIG_FILE) \
Marc Jones24484842017-05-04 21:17:45 -0600140 --flashsize $(CONFIG_ROM_SIZE) \
Fred Reitbergere66ce2f2023-07-05 15:43:19 -0400141 --location $(call _tohex,$(STONEYRIDGE_FWM_POSITION)) \
Marc Jones24484842017-05-04 21:17:45 -0600142 --output $@
143
144ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
Marc Jones24484842017-05-04 21:17:45 -0600145
Martin Roth30f9b952017-10-03 15:54:45 -0600146# Calculate firmware position inside the ROM
147STONEYRIDGE_FWM_ROM_POSITION=$(call int-add, \
148 $(call int-subtract, $(CONFIG_ROM_SIZE) \
149 $(call int-shift-left, \
150 0x80000 $(CONFIG_AMD_FWM_POSITION_INDEX))) 0x20000)
151
Patrick Georgi2cc5bcb2021-01-13 09:15:07 +0100152$(call add_intermediate, add_amdfw, $(obj)/amdfw.rom)
Martin Roth30f9b952017-10-03 15:54:45 -0600153 printf " DD Adding AMD Firmware at ROM offset 0x%x\n" \
154 "$(STONEYRIDGE_FWM_ROM_POSITION)"
Patrick Georgi0b7d3a12021-01-13 09:16:41 +0100155 dd if=$(obj)/amdfw.rom \
Arthur Heymans8ceef402021-07-06 16:20:09 +0200156 of=$< conv=notrunc bs=1 \
Martin Roth30f9b952017-10-03 15:54:45 -0600157 seek=$(STONEYRIDGE_FWM_ROM_POSITION) >/dev/null 2>&1
Marc Jones24484842017-05-04 21:17:45 -0600158
159else # ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
160
161cbfs-files-y += apu/amdfw
162apu/amdfw-file := $(obj)/amdfw.rom
163apu/amdfw-position := $(STONEYRIDGE_FWM_POSITION)
164apu/amdfw-type := raw
165
166endif # ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
167
Marshall Dawson5f0520a2017-10-30 16:11:45 -0600168ifeq ($(CONFIG_SOC_AMD_PSP_SELECTABLE_SMU_FW),y)
169
170cbfs-files-y += smu_fw
171cbfs-files-y += smu_fw2
172smu_fw-type := raw
173smu_fw2-type := raw
174
175ifeq ($(CONFIG_SOC_AMD_SMU_FANLESS),y)
176smu_fw-file := $(SMUFWM_FN_FILE)
177smu_fw2-file := $(SMUFIRMWARE2_FN_FILE)
178else ifeq ($(CONFIG_SOC_AMD_SMU_FANNED),y)
179smu_fw-file := $(SMUFWM_FILE)
180smu_fw2-file := $(SMUFIRMWARE2_FILE)
181else
182$(error "Proper SMU Firmware not selected")
183endif
184
185endif # ifeq ($(CONFIG_SOC_AMD_PSP_SELECTABLE_SMU_FW),y)
186
Zheng Bao3384e4a2020-10-06 12:03:11 +0800187else # ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson91e7fe72019-11-24 17:19:19 -0700188
189warn_no_amdfw:
190 printf "\n\t** WARNING **\n"
191 printf "coreboot has been built with no PSP firmware and "
192 printf "a non-booting image has been generated.\n\n"
193
194PHONY+=warn_no_amdfw
195
196files_added:: warn_no_amdfw
197
Zheng Bao3384e4a2020-10-06 12:03:11 +0800198endif # ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson91e7fe72019-11-24 17:19:19 -0700199
Marshall Dawsond7868432019-11-25 11:47:32 -0700200endif # ($(CONFIG_SOC_AMD_STONEYRIDGE),y)