blob: c1c74ea2eaa9a5d782eb7bd01b4eb51e3e13197a [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
Patrick Georgi47282a92023-11-24 14:39:56 +010029postcar-$(CONFIG_TPM_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
Marc Jones24484842017-05-04 21:17:45 -060067# +-----------+---------------+----------------+------------+
68# |0x55AA55AA |EC ROM Address |GEC ROM Address |USB3 ROM |
69# +-----------+---------------+----------------+------------+
70# |PSPDIR ADDR|
71# +-----------+
72#
73# EC ROM should be 64K aligned.
Marc Jones24484842017-05-04 21:17:45 -060074### 0
Zheng Baoc5e28ab2020-10-28 11:38:09 +080075
Zheng Bao3384e4a2020-10-06 12:03:11 +080076FIRMWARE_LOCATION=$(shell grep -e FIRMWARE_LOCATION $(CONFIG_AMDFW_CONFIG_FILE) | awk '{print $$2}')
Zheng Baoc5e28ab2020-10-28 11:38:09 +080077
Zheng Bao3384e4a2020-10-06 12:03:11 +080078ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson12294d02019-11-25 07:21:18 -070079
80ifeq ($(CONFIG_AMD_APU_STONEYRIDGE),y)
81FIRMWARE_TYPE=ST
82else
Marshall Dawson12294d02019-11-25 07:21:18 -070083ifeq ($(CONFIG_AMD_APU_MERLINFALCON),y)
Richard Spiegel1bc578a2019-06-18 18:19:47 -070084FIRMWARE_TYPE=CZ
85else
Marshall Dawsone1988f52019-11-25 11:15:35 -070086ifeq ($(CONFIG_AMD_APU_PRAIRIEFALCON),y)
87FIRMWARE_TYPE=ST
88else
Marshall Dawson91e7fe72019-11-24 17:19:19 -070089$(error soc/amd/stoneyridge: Unusable FIRMWARE_TYPE)
Marshall Dawson12294d02019-11-25 07:21:18 -070090
Marshall Dawsone1988f52019-11-25 11:15:35 -070091endif # CONFIG_AMD_APU_PRAIRIEFALCON
Marshall Dawson12294d02019-11-25 07:21:18 -070092endif # CONFIG_AMD_APU_MERLINFALCON
93endif # CONFIG_AMD_APU_STONEYRIDGE
Marc Jones24484842017-05-04 21:17:45 -060094
Zheng Baoc5e28ab2020-10-28 11:38:09 +080095add_opt_prefix=$(if $(call strip_quotes, $(1)), $(2) $(call strip_quotes, $(1)), )
Marc Jones24484842017-05-04 21:17:45 -060096
Zheng Baoc5e28ab2020-10-28 11:38:09 +080097OPT_STONEYRIDGE_XHCI_FWM_FILE=$(call add_opt_prefix, $(CONFIG_STONEYRIDGE_XHCI_FWM_FILE), --xhci)
98OPT_STONEYRIDGE_GEC_FWM_FILE=$(call add_opt_prefix, $(CONFIG_STONEYRIDGE_GEC_FWM_FILE), --gec)
Marc Jones24484842017-05-04 21:17:45 -060099
Zheng Bao3384e4a2020-10-06 12:03:11 +0800100SMUFWM_FILE=$(top)/$(FIRMWARE_LOCATION)/$(shell awk '($$1=="PSP_SMUFW1_SUB0_FILE") {print $$2}' $(CONFIG_AMDFW_CONFIG_FILE))
101SMUFWM_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 -0600102
Zheng Bao3384e4a2020-10-06 12:03:11 +0800103SMUFIRMWARE2_FILE=$(top)/$(FIRMWARE_LOCATION)/$(shell awk '($$1=="PSP_SMUFW2_SUB0_FILE") {print $$2}' $(CONFIG_AMDFW_CONFIG_FILE))
104SMUFIRMWARE2_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 -0600105
Richard Spiegel1bc578a2019-06-18 18:19:47 -0700106ifeq ("$(wildcard $(SMUFWM_FN_FILE))","")
107SMUFWM_FN_FILE=
108SMUFIRMWARE2_FN_FILE=
109endif
110
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800111ifeq ($(CONFIG_USE_PSPSECUREOS),y)
112PSP_USE_PSPSECUREOS="--use-pspsecureos"
113endif
114
115OPT_PSP_USE_PSPSECUREOS=$(call strip_quotes, $(PSP_USE_PSPSECUREOS))
116
Zheng Bao570645d2021-11-03 10:25:03 +0800117OPT_EFS_SPI_READ_MODE=$(call add_opt_prefix, $(CONFIG_EFS_SPI_READ_MODE), --spi-read-mode)
118OPT_EFS_SPI_SPEED=$(call add_opt_prefix, $(CONFIG_EFS_SPI_SPEED), --spi-speed)
119
Marc Jones24484842017-05-04 21:17:45 -0600120$(obj)/amdfw.rom: $(call strip_quotes, $(CONFIG_STONEYRIDGE_XHCI_FWM_FILE)) \
Marc Jones24484842017-05-04 21:17:45 -0600121 $(call strip_quotes, $(CONFIG_STONEYRIDGE_GEC_FWM_FILE)) \
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800122 $(DEP_FILES) \
Marc Jones24484842017-05-04 21:17:45 -0600123 $(AMDFWTOOL)
124 rm -f $@
125 @printf " AMDFWTOOL $(subst $(obj)/,,$(@))\n"
126 $(AMDFWTOOL) \
127 $(OPT_STONEYRIDGE_XHCI_FWM_FILE) \
Marc Jones24484842017-05-04 21:17:45 -0600128 $(OPT_STONEYRIDGE_GEC_FWM_FILE) \
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800129 $(OPT_PSP_USE_PSPSECUREOS) \
Zheng Bao570645d2021-11-03 10:25:03 +0800130 $(OPT_EFS_SPI_READ_MODE) \
131 $(OPT_EFS_SPI_SPEED) \
Martin Roth0acf59d2023-03-08 15:18:24 -0700132 $(OPT_DEBUG_AMDFWTOOL) \
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800133 --config $(CONFIG_AMDFW_CONFIG_FILE) \
Marc Jones24484842017-05-04 21:17:45 -0600134 --flashsize $(CONFIG_ROM_SIZE) \
Zheng Bao6bc06982023-02-14 13:26:31 +0800135 --location $(CONFIG_AMD_FWM_POSITION) \
Marc Jones24484842017-05-04 21:17:45 -0600136 --output $@
137
138ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
Marc Jones24484842017-05-04 21:17:45 -0600139
Patrick Georgi2cc5bcb2021-01-13 09:15:07 +0100140$(call add_intermediate, add_amdfw, $(obj)/amdfw.rom)
Martin Roth30f9b952017-10-03 15:54:45 -0600141 printf " DD Adding AMD Firmware at ROM offset 0x%x\n" \
Zheng Bao6bc06982023-02-14 13:26:31 +0800142 "$(CONFIG_AMD_FWM_POSITION)"
Patrick Georgi0b7d3a12021-01-13 09:16:41 +0100143 dd if=$(obj)/amdfw.rom \
Arthur Heymans8ceef402021-07-06 16:20:09 +0200144 of=$< conv=notrunc bs=1 \
Zheng Bao6bc06982023-02-14 13:26:31 +0800145 seek=$(CONFIG_AMD_FWM_POSITION) >/dev/null 2>&1
Marc Jones24484842017-05-04 21:17:45 -0600146
147else # ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
148
Zheng Bao6bc06982023-02-14 13:26:31 +0800149STONEYRIDGE_FWM_POSITION=$(call int-add, \
150 $(call int-subtract, 0xffffffff $(CONFIG_ROM_SIZE)) \
151 1 \
152 $(CONFIG_AMD_FWM_POSITION))
Marc Jones24484842017-05-04 21:17:45 -0600153cbfs-files-y += apu/amdfw
154apu/amdfw-file := $(obj)/amdfw.rom
155apu/amdfw-position := $(STONEYRIDGE_FWM_POSITION)
156apu/amdfw-type := raw
157
158endif # ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
159
Marshall Dawson5f0520a2017-10-30 16:11:45 -0600160ifeq ($(CONFIG_SOC_AMD_PSP_SELECTABLE_SMU_FW),y)
161
162cbfs-files-y += smu_fw
163cbfs-files-y += smu_fw2
164smu_fw-type := raw
165smu_fw2-type := raw
166
167ifeq ($(CONFIG_SOC_AMD_SMU_FANLESS),y)
168smu_fw-file := $(SMUFWM_FN_FILE)
169smu_fw2-file := $(SMUFIRMWARE2_FN_FILE)
170else ifeq ($(CONFIG_SOC_AMD_SMU_FANNED),y)
171smu_fw-file := $(SMUFWM_FILE)
172smu_fw2-file := $(SMUFIRMWARE2_FILE)
173else
174$(error "Proper SMU Firmware not selected")
175endif
176
177endif # ifeq ($(CONFIG_SOC_AMD_PSP_SELECTABLE_SMU_FW),y)
178
Zheng Bao3384e4a2020-10-06 12:03:11 +0800179else # ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson91e7fe72019-11-24 17:19:19 -0700180
181warn_no_amdfw:
182 printf "\n\t** WARNING **\n"
183 printf "coreboot has been built with no PSP firmware and "
184 printf "a non-booting image has been generated.\n\n"
185
186PHONY+=warn_no_amdfw
187
Martin Roth372503f2023-12-08 00:43:23 -0700188show_notices:: warn_no_amdfw
Marshall Dawson91e7fe72019-11-24 17:19:19 -0700189
Zheng Bao3384e4a2020-10-06 12:03:11 +0800190endif # ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson91e7fe72019-11-24 17:19:19 -0700191
Marshall Dawsond7868432019-11-25 11:47:32 -0700192endif # ($(CONFIG_SOC_AMD_STONEYRIDGE),y)