blob: 33328fa95802baad27cffe98c268e656b6a8c808 [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
Martin Rothc450fbe2017-10-02 13:46:50 -060031ramstage-y += BiosCallOuts.c
Chris Ching6fc39d42017-12-20 16:06:03 -070032ramstage-y += i2c.c
Marc Jones24484842017-05-04 21:17:45 -060033ramstage-y += chip.c
Marshall Dawsona7bfbbe2017-09-13 17:24:53 -060034ramstage-y += cpu.c
Marshall Dawson0b4a1e22018-09-04 13:11:42 -060035ramstage-y += mca.c
Arthur Heymansc63649b2019-11-16 12:13:03 +010036ramstage-y += enable_usbdebug.c
Marc Jones257db582017-06-18 17:33:30 -060037ramstage-$(CONFIG_HAVE_ACPI_TABLES) += acpi.c
Felix Held2d020e12021-12-15 20:52:10 +010038ramstage-y += fch.c
Felix Held25aa5602021-12-15 20:52:10 +010039ramstage-y += fch_agesa.c
Marc Jones24484842017-05-04 21:17:45 -060040ramstage-y += gpio.c
Felix Held1d66ad12023-03-27 14:39:29 +020041ramstage-y += graphics.c
Marc Jones1587dc82017-05-15 18:55:11 -060042ramstage-y += northbridge.c
Marc Jones24484842017-05-04 21:17:45 -060043ramstage-y += sata.c
Kyösti Mälkki1dbf3102019-08-03 21:28:40 +030044ramstage-y += memmap.c
Marc Jones24484842017-05-04 21:17:45 -060045ramstage-y += usb.c
Felix Helddba32292020-03-31 23:54:44 +020046ramstage-y += psp.c
Marc Jones24484842017-05-04 21:17:45 -060047
Felix Held3924e182023-03-31 15:29:13 +020048all-y += monotonic_timer.c
Felix Held8c75d4b2023-03-31 15:37:14 +020049all-y += pstate_util.c
Kyösti Mälkki9db39872019-12-13 18:11:05 +020050all-y += reset.c
Felix Held3924e182023-03-31 15:29:13 +020051all-y += tsc_freq.c
52all-y += uart.c
Kyösti Mälkki9db39872019-12-13 18:11:05 +020053
Felix Held8c75d4b2023-03-31 15:37:14 +020054smm-y += pstate_util.c
Aaron Durbin24079322018-01-23 10:53:05 -070055smm-y += monotonic_timer.c
Marshall Dawson6746d372017-09-27 13:32:00 -060056smm-y += smihandler.c
Marshall Dawson6746d372017-09-27 13:32:00 -060057smm-y += tsc_freq.c
Marshall Dawsonabac64d2017-09-27 13:26:23 -060058smm-$(CONFIG_DEBUG_SMI) += uart.c
Marc Jones85aec312018-07-14 17:08:27 -060059smm-y += gpio.c
Felix Helddba32292020-03-31 23:54:44 +020060smm-y += psp.c
Marc Jones24484842017-05-04 21:17:45 -060061
Marc Jones24484842017-05-04 21:17:45 -060062CPPFLAGS_common += -I$(src)/soc/amd/stoneyridge/include
63CPPFLAGS_common += -I$(src)/soc/amd/stoneyridge/acpi
64
Martin Roth6d8ef242017-09-08 14:39:35 -060065# ROMSIG Normally At ROMBASE + 0x20000
66# Overridden by CONFIG_AMD_FWM_POSITION_INDEX
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.
Martin Roth6d8ef242017-09-08 14:39:35 -060074STONEYRIDGE_FWM_POSITION=$(call int-add, \
75 $(call int-subtract, 0xffffffff \
76 $(call int-shift-left, \
77 0x80000 $(CONFIG_AMD_FWM_POSITION_INDEX))) 0x20000 1)
Marc Jones24484842017-05-04 21:17:45 -060078
79### 0
Zheng Baoc5e28ab2020-10-28 11:38:09 +080080
Zheng Bao3384e4a2020-10-06 12:03:11 +080081FIRMWARE_LOCATION=$(shell grep -e FIRMWARE_LOCATION $(CONFIG_AMDFW_CONFIG_FILE) | awk '{print $$2}')
Zheng Baoc5e28ab2020-10-28 11:38:09 +080082
Zheng Bao3384e4a2020-10-06 12:03:11 +080083ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson12294d02019-11-25 07:21:18 -070084
85ifeq ($(CONFIG_AMD_APU_STONEYRIDGE),y)
86FIRMWARE_TYPE=ST
87else
Marshall Dawson12294d02019-11-25 07:21:18 -070088ifeq ($(CONFIG_AMD_APU_MERLINFALCON),y)
Richard Spiegel1bc578a2019-06-18 18:19:47 -070089FIRMWARE_TYPE=CZ
90else
Marshall Dawsone1988f52019-11-25 11:15:35 -070091ifeq ($(CONFIG_AMD_APU_PRAIRIEFALCON),y)
92FIRMWARE_TYPE=ST
93else
Marshall Dawson91e7fe72019-11-24 17:19:19 -070094$(error soc/amd/stoneyridge: Unusable FIRMWARE_TYPE)
Marshall Dawson12294d02019-11-25 07:21:18 -070095
Marshall Dawsone1988f52019-11-25 11:15:35 -070096endif # CONFIG_AMD_APU_PRAIRIEFALCON
Marshall Dawson12294d02019-11-25 07:21:18 -070097endif # CONFIG_AMD_APU_MERLINFALCON
98endif # CONFIG_AMD_APU_STONEYRIDGE
Marc Jones24484842017-05-04 21:17:45 -060099
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800100add_opt_prefix=$(if $(call strip_quotes, $(1)), $(2) $(call strip_quotes, $(1)), )
Marc Jones24484842017-05-04 21:17:45 -0600101
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800102OPT_STONEYRIDGE_XHCI_FWM_FILE=$(call add_opt_prefix, $(CONFIG_STONEYRIDGE_XHCI_FWM_FILE), --xhci)
103OPT_STONEYRIDGE_GEC_FWM_FILE=$(call add_opt_prefix, $(CONFIG_STONEYRIDGE_GEC_FWM_FILE), --gec)
Marc Jones24484842017-05-04 21:17:45 -0600104
Zheng Bao3384e4a2020-10-06 12:03:11 +0800105SMUFWM_FILE=$(top)/$(FIRMWARE_LOCATION)/$(shell awk '($$1=="PSP_SMUFW1_SUB0_FILE") {print $$2}' $(CONFIG_AMDFW_CONFIG_FILE))
106SMUFWM_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 -0600107
Zheng Bao3384e4a2020-10-06 12:03:11 +0800108SMUFIRMWARE2_FILE=$(top)/$(FIRMWARE_LOCATION)/$(shell awk '($$1=="PSP_SMUFW2_SUB0_FILE") {print $$2}' $(CONFIG_AMDFW_CONFIG_FILE))
109SMUFIRMWARE2_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 -0600110
Richard Spiegel1bc578a2019-06-18 18:19:47 -0700111ifeq ("$(wildcard $(SMUFWM_FN_FILE))","")
112SMUFWM_FN_FILE=
113SMUFIRMWARE2_FN_FILE=
114endif
115
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800116ifeq ($(CONFIG_USE_PSPSECUREOS),y)
117PSP_USE_PSPSECUREOS="--use-pspsecureos"
118endif
119
120OPT_PSP_USE_PSPSECUREOS=$(call strip_quotes, $(PSP_USE_PSPSECUREOS))
121
Zheng Bao570645d2021-11-03 10:25:03 +0800122OPT_EFS_SPI_READ_MODE=$(call add_opt_prefix, $(CONFIG_EFS_SPI_READ_MODE), --spi-read-mode)
123OPT_EFS_SPI_SPEED=$(call add_opt_prefix, $(CONFIG_EFS_SPI_SPEED), --spi-speed)
124
Marc Jones24484842017-05-04 21:17:45 -0600125$(obj)/amdfw.rom: $(call strip_quotes, $(CONFIG_STONEYRIDGE_XHCI_FWM_FILE)) \
Marc Jones24484842017-05-04 21:17:45 -0600126 $(call strip_quotes, $(CONFIG_STONEYRIDGE_GEC_FWM_FILE)) \
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800127 $(DEP_FILES) \
Marc Jones24484842017-05-04 21:17:45 -0600128 $(AMDFWTOOL)
129 rm -f $@
130 @printf " AMDFWTOOL $(subst $(obj)/,,$(@))\n"
131 $(AMDFWTOOL) \
132 $(OPT_STONEYRIDGE_XHCI_FWM_FILE) \
Marc Jones24484842017-05-04 21:17:45 -0600133 $(OPT_STONEYRIDGE_GEC_FWM_FILE) \
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800134 $(OPT_PSP_USE_PSPSECUREOS) \
Zheng Bao570645d2021-11-03 10:25:03 +0800135 $(OPT_EFS_SPI_READ_MODE) \
136 $(OPT_EFS_SPI_SPEED) \
Martin Roth0acf59d2023-03-08 15:18:24 -0700137 $(OPT_DEBUG_AMDFWTOOL) \
Zheng Baoc5e28ab2020-10-28 11:38:09 +0800138 --config $(CONFIG_AMDFW_CONFIG_FILE) \
Marc Jones24484842017-05-04 21:17:45 -0600139 --flashsize $(CONFIG_ROM_SIZE) \
Fred Reitbergere66ce2f2023-07-05 15:43:19 -0400140 --location $(call _tohex,$(STONEYRIDGE_FWM_POSITION)) \
Marc Jones24484842017-05-04 21:17:45 -0600141 --output $@
142
143ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
Marc Jones24484842017-05-04 21:17:45 -0600144
Martin Roth30f9b952017-10-03 15:54:45 -0600145# Calculate firmware position inside the ROM
146STONEYRIDGE_FWM_ROM_POSITION=$(call int-add, \
147 $(call int-subtract, $(CONFIG_ROM_SIZE) \
148 $(call int-shift-left, \
149 0x80000 $(CONFIG_AMD_FWM_POSITION_INDEX))) 0x20000)
150
Patrick Georgi2cc5bcb2021-01-13 09:15:07 +0100151$(call add_intermediate, add_amdfw, $(obj)/amdfw.rom)
Martin Roth30f9b952017-10-03 15:54:45 -0600152 printf " DD Adding AMD Firmware at ROM offset 0x%x\n" \
153 "$(STONEYRIDGE_FWM_ROM_POSITION)"
Patrick Georgi0b7d3a12021-01-13 09:16:41 +0100154 dd if=$(obj)/amdfw.rom \
Arthur Heymans8ceef402021-07-06 16:20:09 +0200155 of=$< conv=notrunc bs=1 \
Martin Roth30f9b952017-10-03 15:54:45 -0600156 seek=$(STONEYRIDGE_FWM_ROM_POSITION) >/dev/null 2>&1
Marc Jones24484842017-05-04 21:17:45 -0600157
158else # ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
159
160cbfs-files-y += apu/amdfw
161apu/amdfw-file := $(obj)/amdfw.rom
162apu/amdfw-position := $(STONEYRIDGE_FWM_POSITION)
163apu/amdfw-type := raw
164
165endif # ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
166
Marshall Dawson5f0520a2017-10-30 16:11:45 -0600167ifeq ($(CONFIG_SOC_AMD_PSP_SELECTABLE_SMU_FW),y)
168
169cbfs-files-y += smu_fw
170cbfs-files-y += smu_fw2
171smu_fw-type := raw
172smu_fw2-type := raw
173
174ifeq ($(CONFIG_SOC_AMD_SMU_FANLESS),y)
175smu_fw-file := $(SMUFWM_FN_FILE)
176smu_fw2-file := $(SMUFIRMWARE2_FN_FILE)
177else ifeq ($(CONFIG_SOC_AMD_SMU_FANNED),y)
178smu_fw-file := $(SMUFWM_FILE)
179smu_fw2-file := $(SMUFIRMWARE2_FILE)
180else
181$(error "Proper SMU Firmware not selected")
182endif
183
184endif # ifeq ($(CONFIG_SOC_AMD_PSP_SELECTABLE_SMU_FW),y)
185
Zheng Bao3384e4a2020-10-06 12:03:11 +0800186else # ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson91e7fe72019-11-24 17:19:19 -0700187
188warn_no_amdfw:
189 printf "\n\t** WARNING **\n"
190 printf "coreboot has been built with no PSP firmware and "
191 printf "a non-booting image has been generated.\n\n"
192
193PHONY+=warn_no_amdfw
194
195files_added:: warn_no_amdfw
196
Zheng Bao3384e4a2020-10-06 12:03:11 +0800197endif # ifneq ($(FIRMWARE_LOCATION),)
Marshall Dawson91e7fe72019-11-24 17:19:19 -0700198
Marshall Dawsond7868432019-11-25 11:47:32 -0700199endif # ($(CONFIG_SOC_AMD_STONEYRIDGE),y)