summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xDocumentation/soc/amd/family17h.md41
-rw-r--r--src/mainboard/amd/mandolin/Makefile.inc3
-rw-r--r--src/mainboard/google/zork/spd/Makefile.inc20
-rw-r--r--src/soc/amd/picasso/Makefile.inc25
4 files changed, 26 insertions, 63 deletions
diff --git a/Documentation/soc/amd/family17h.md b/Documentation/soc/amd/family17h.md
index 23088cd12bab..fffe25b02355 100755
--- a/Documentation/soc/amd/family17h.md
+++ b/Documentation/soc/amd/family17h.md
@@ -240,47 +240,12 @@ in an Integration Guide.
## APCB setup
APCBs are used to provide the PSP with SPD information and optionally a set of
-GPIOs to use for selecting which SPD to load.
-
-### Prebuilt
-The picasso `Makefile` expects APCBs to be located in
-`3rdparty/blobs/mainboard/$(MAINBOARDDIR)`. If you have a pre-built binary just
-add the following to your mainboard's Makefile.
-
-```
-# i.e., 3rdparty/blobs/mainboard/amd/mandolin/APCB_mandolin.bin
-APCB_SOURCES = mandolin
-```
+GPIOs to use for selecting which SPD to load. A list of APCB files should be
+specified in `APCB_SOURCES`.
### Generating APCBs
If you have a template APCB file, the `apcb_edit` tool can be used to inject the
-SPD and GPIOs used to select the correct slot. Entries should match this
-pattern `{NAME}_x{1,2}`. There should be a matching SPD hex file in
-`SPD_SOURCES_DIR` matching the pattern `{NAME}.spd.hex`.
-The `_x{1,2}` suffix denotes single or dual channel. Up to 16 slots can be used.
-If a slot is empty, the special empty keyword can be used. This will generate
-an APCB with an empty SPD.
-
-```
-APCB_SOURCES = hynix-HMA851S6CJR6N-VK_x1 # 0b0000
-APCB_SOURCES += hynix-HMAA1GS6CMR6N-VK_x2 # 0b0001
-APCB_SOURCES += empty # 0b0010
-APCB_SOURCES += samsung-K4A8G165WC-BCWE_x1 # 0b0011
-```
-
-#### APCB Board ID GPIO configuration.
-The GPIOs determine which memory SPD will be used during boot.
-```
-# APCB_BOARD_ID_GPIO[0-3] = GPIO_NUMBER GPIO_IO_MUX GPIO_BANK_CTL
-# GPIO_NUMBER: FCH GPIO number
-# GPIO_IO_MUX: Value write to IOMUX to configure this GPIO
-# GPIO_BANK_CTL: Value write to GPIOBankCtl[23:16] to configure this GPIO
-
-APCB_BOARD_ID_GPIO0 = 121 1 0
-APCB_BOARD_ID_GPIO1 = 120 1 0
-APCB_BOARD_ID_GPIO2 = 131 3 0
-APCB_BOARD_ID_GPIO3 = 116 1 0
-```
+SPD and GPIOs used to select the correct slot.
## Footnotes
diff --git a/src/mainboard/amd/mandolin/Makefile.inc b/src/mainboard/amd/mandolin/Makefile.inc
index 1865e74dd9ff..6d7bf3a8b95b 100644
--- a/src/mainboard/amd/mandolin/Makefile.inc
+++ b/src/mainboard/amd/mandolin/Makefile.inc
@@ -10,8 +10,7 @@ ifneq ($(CONFIG_PICASSO_LPC_IOMUX),y)
ramstage-y += emmc_gpio.c
endif
-# APCB_mandolin.bin
-APCB_SOURCES = mandolin
+APCB_SOURCES = $(MAINBOARD_BLOBS_DIR)/APCB_mandolin.bin
PHONY+=add_mchp_fw
INTERMEDIATE+=add_mchp_fw
diff --git a/src/mainboard/google/zork/spd/Makefile.inc b/src/mainboard/google/zork/spd/Makefile.inc
index 66957d82c294..1042d9101d9f 100644
--- a/src/mainboard/google/zork/spd/Makefile.inc
+++ b/src/mainboard/google/zork/spd/Makefile.inc
@@ -2,3 +2,23 @@
# This directory
SPD_SOURCES_DIR := src/mainboard/$(MAINBOARDDIR)/spd
+
+APCB_SOURCES=$(foreach f, $(basename $(SPD_SOURCES)), $(obj)/APCB_$(f).gen)
+
+# APCB binary with magic numbers to be replaced by apcb_edit tool
+APCB_MAGIC_BLOB:=$(FIRMWARE_LOCATE)/APCB_magic.bin
+
+$(obj)/APCB_%.gen: $(SPD_SOURCES_DIR)/%.hex \
+ $(APCB_EDIT_TOOL) \
+ $(APCB_MAGIC_BLOB)
+ $(APCB_EDIT_TOOL) \
+ $(APCB_MAGIC_BLOB) \
+ $@ \
+ --hex \
+ --strip_manufacturer_information \
+ --spd_0_0 $< \
+ $(if $(APCB_POPULATE_2ND_CHANNEL), --spd_1_0 $<, ) \
+ --board_id_gpio0 $(APCB_BOARD_ID_GPIO0) \
+ --board_id_gpio1 $(APCB_BOARD_ID_GPIO1) \
+ --board_id_gpio2 $(APCB_BOARD_ID_GPIO2) \
+ --board_id_gpio3 $(APCB_BOARD_ID_GPIO3)
diff --git a/src/soc/amd/picasso/Makefile.inc b/src/soc/amd/picasso/Makefile.inc
index f4ec6c990d78..eb2be5040fd2 100644
--- a/src/soc/amd/picasso/Makefile.inc
+++ b/src/soc/amd/picasso/Makefile.inc
@@ -198,7 +198,7 @@ endif
#
# type = 0x60
-PSP_APCB_FILES=$(foreach f, $(basename $(SPD_SOURCES)), $(obj)/APCB_$(f).bin)
+PSP_APCB_FILES=$(APCB_SOURCES)
# type = 0x61
PSP_APOB_BASE=$(CONFIG_PSP_APOB_DRAM_ADDRESS)
@@ -383,28 +383,6 @@ AMDFW_COMMON_ARGS=$(OPT_AMD_PUBKEY_FILE) \
--soc-name "Picasso" \
--flashsize $(CONFIG_ROM_SIZE)
-# Copy prebuild APCBs if they exist
-$(obj)/APCB_%.bin: $(MAINBOARD_BLOBS_DIR)/APCB_%.bin
- cp $< $@
-
-# APCB binary with magic numbers to be replaced by apcb_edit tool
-APCB_MAGIC_BLOB:=$(FIRMWARE_LOCATE)/APCB_magic.bin
-
-$(obj)/APCB_%.bin: $$(SPD_SOURCES_DIR)/%.hex \
- $(APCB_EDIT_TOOL) \
- $(APCB_MAGIC_BLOB)
- $(APCB_EDIT_TOOL) \
- $(APCB_MAGIC_BLOB) \
- $@ \
- --hex \
- --strip_manufacturer_information \
- --spd_0_0 $< \
- $(if $(APCB_POPULATE_2ND_CHANNEL), --spd_1_0 $<, ) \
- --board_id_gpio0 $(APCB_BOARD_ID_GPIO0) \
- --board_id_gpio1 $(APCB_BOARD_ID_GPIO1) \
- --board_id_gpio2 $(APCB_BOARD_ID_GPIO2) \
- --board_id_gpio3 $(APCB_BOARD_ID_GPIO3)
-
$(obj)/amdfw.rom: $(call strip_quotes, $(CONFIG_AMD_PUBKEY_FILE)) \
$(call strip_quotes, $(PSPBTLDR_FILE)) \
$(call strip_quotes, $(PSPSCUREOS_FILE)) \
@@ -443,6 +421,7 @@ $(obj)/amdfw.rom: $(call strip_quotes, $(CONFIG_AMD_PUBKEY_FILE)) \
$$(PSP_APCB_FILES) \
$(AMDFWTOOL) \
$(obj)/fmap.fmd
+ $(if $(PSP_APCB_FILES), ,$(error APCB_SOURCES is not set))
rm -f $@
@printf " AMDFWTOOL $(subst $(obj)/,,$(@))\n"
$(AMDFWTOOL) \