diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/southbridge/amd/pi/avalon/Makefile.inc | 227 |
1 files changed, 118 insertions, 109 deletions
diff --git a/src/southbridge/amd/pi/avalon/Makefile.inc b/src/southbridge/amd/pi/avalon/Makefile.inc index 3a3a52716f..6c22f063a9 100644 --- a/src/southbridge/amd/pi/avalon/Makefile.inc +++ b/src/southbridge/amd/pi/avalon/Makefile.inc @@ -60,15 +60,13 @@ ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smi.c smi_util.c # # EC ROM should be 64K aligned. -# HVB(Hardware Validated Boot) or Bypass -CONFIG_HVB=Bypass - HUDSON_FWM_POSITION=$(shell printf %u $(CONFIG_HUDSON_FWM_POSITION)) +CBFS_HEADER_SIZE=0x40 -#assume the cbfs header is less than 128 bytes. -ROMSIG_SIZE=16 +#assume the cbfs header is less than $(CBFS_HEADER_SIZE) bytes. +ROMSIG_SIZE=4096 ifeq ($(CONFIG_HUDSON_XHCI_FWM), y) -HUDSON_XHCI_POSITION=$(call int-add,$(HUDSON_FWM_POSITION) $(ROMSIG_SIZE) 128) +HUDSON_XHCI_POSITION=$(call int-add,$(HUDSON_FWM_POSITION) $(ROMSIG_SIZE) $(CBFS_HEADER_SIZE)) XHCI_FWM_SIZE=$(call file-size,$(CONFIG_HUDSON_XHCI_FWM_FILE)) else HUDSON_XHCI_POSITION=0 @@ -76,8 +74,8 @@ XHCI_FWM_SIZE=0 endif ifeq ($(CONFIG_HUDSON_GEC_FWM), y) -HUDSON_GEC_POSITION=$(call int-add,$(HUDSON_FWM_POSITION) $(ROMSIG_SIZE) 128 \ - $(XHCI_FWM_SIZE) 128) +HUDSON_GEC_POSITION=$(call int-add,$(HUDSON_FWM_POSITION) $(ROMSIG_SIZE) $(CBFS_HEADER_SIZE) \ + $(XHCI_FWM_SIZE) $(CBFS_HEADER_SIZE)) GEC_FWM_SIZE=$(call file-size,$(CONFIG_HUDSON_GEC_FWM_FILE)) else HUDSON_GEC_POSITION=0 @@ -87,16 +85,25 @@ endif ifeq ($(CONFIG_HUDSON_IMC_FWM), y) HUDSON_IMC_POSITION=$(call int-align,\ $(call int-add,\ - $(HUDSON_FWM_POSITION) $(ROMSIG_SIZE) 128 $(XHCI_FWM_SIZE)\ - 128 $(GEC_FWM_SIZE) 128),\ + $(HUDSON_FWM_POSITION) $(ROMSIG_SIZE) $(CBFS_HEADER_SIZE) $(XHCI_FWM_SIZE)\ + $(CBFS_HEADER_SIZE) $(GEC_FWM_SIZE) $(CBFS_HEADER_SIZE)),\ 65536) +IMC_FWM_SIZE=$(call file-size,$(CONFIG_HUDSON_IMC_FWM_FILE)) else HUDSON_IMC_POSITION=0 +IMC_FWM_SIZE=0 endif -HUDSON_PSP_DIRECTORY_POSITION=0 ifeq ($(CONFIG_CPU_AMD_PI_00730F01), y) -HUDSON_PSP_DIRECTORY_POSITION=$(call int-add,$(HUDSON_FWM_POSITION) 262144) +HUDSON_PSP_DIRECTORY_POSITION=$(call int-align,\ + $(call int-add,\ + $(HUDSON_FWM_POSITION) $(ROMSIG_SIZE) $(CBFS_HEADER_SIZE) $(XHCI_FWM_SIZE)\ + $(CBFS_HEADER_SIZE) $(GEC_FWM_SIZE) $(CBFS_HEADER_SIZE) $(IMC_FWM_SIZE) $(CBFS_HEADER_SIZE)),\ + 65536) +HUDSON_PSP_DIRECTORY_SIZE=256 +else +HUDSON_PSP_DIRECTORY_POSITION=0 +HUDSON_PSP_DIRECTORY_SIZE=0 endif $(obj)/coreboot_hudson_romsig.bin: $(call strip_quotes, $(CONFIG_HUDSON_XHCI_FWM_FILE)) \ @@ -104,43 +111,47 @@ $(obj)/coreboot_hudson_romsig.bin: $(call strip_quotes, $(CONFIG_HUDSON_XHCI_FWM $(call strip_quotes, $(CONFIG_HUDSON_GEC_FWM_FILE)) \ $(obj)/config.h echo " Hudson FW $@" + dd if=/dev/zero of=$@ count=$(ROMSIG_SIZE) ibs=1 status=noxfer 2>/dev/null; \ for fwm in 1437226410 \ $(HUDSON_IMC_POSITION) \ $(HUDSON_GEC_POSITION) \ $(HUDSON_XHCI_POSITION) \ $(HUDSON_PSP_DIRECTORY_POSITION); do \ echo $$fwm | LC_ALL=C awk '{printf ("%c%c%c%c", $$1 % 256, int($$1/256) % 256, int($$1/65536) % 256, int($$1/16777216));}'; \ - done > $@ + done > $@.tmp; \ + dd if=$@.tmp of=$@ conv=notrunc status=noxfer 2>/dev/null; \ + rm $@.tmp ifeq ($(CONFIG_HUDSON_FWM), y) -cbfs-files-y += hudson/fwm -hudson/fwm-file := $(obj)/coreboot_hudson_romsig.bin -hudson/fwm-position := $(HUDSON_FWM_POSITION) -hudson/fwm-type := raw +cbfs-files-y += fch/fwm +fch/fwm-file := $(obj)/coreboot_hudson_romsig.bin +fch/fwm-position := $(HUDSON_FWM_POSITION) +fch/fwm-size := $(ROMSIZE_SIG) +fch/fwm-type := raw endif ifeq ($(CONFIG_HUDSON_XHCI_FWM), y) -cbfs-files-y += hudson/xhci -hudson/xhci-file := $(call strip_quotes, $(CONFIG_HUDSON_XHCI_FWM_FILE)) -hudson/xhci-position := $(HUDSON_XHCI_POSITION) -hudson/xhci-type := raw -hudson/xhci-required := Hudson XHCI firmware (available in coreboot/3rdparty if enabled) +cbfs-files-y += fch/xhci +fch/xhci-file := $(call strip_quotes, $(CONFIG_HUDSON_XHCI_FWM_FILE)) +fch/xhci-position := $(HUDSON_XHCI_POSITION) +fch/xhci-type := raw +fch/xhci-required := Hudson XHCI firmware (available in coreboot/3rdparty if enabled) endif ifeq ($(CONFIG_HUDSON_IMC_FWM), y) -cbfs-files-y += hudson/imc -hudson/imc-file := $(call strip_quotes, $(CONFIG_HUDSON_IMC_FWM_FILE)) -hudson/imc-position := $(HUDSON_IMC_POSITION) -hudson/imc-type := raw -hudson/imc-required := Hudson IMC Firmware (available in coreboot/3rdparty if enabled) +cbfs-files-y += fch/imc +fch/imc-file := $(call strip_quotes, $(CONFIG_HUDSON_IMC_FWM_FILE)) +fch/imc-position := $(HUDSON_IMC_POSITION) +fch/imc-type := raw +fch/imc-required := Hudson IMC Firmware (available in coreboot/3rdparty if enabled) endif ifeq ($(CONFIG_HUDSON_GEC_FWM), y) -cbfs-files-y += hudson/gec -hudson/gec-file := $(call strip_quotes, $(CONFIG_HUDSON_GEC_FWM_FILE)) -hudson/gec-position := $(HUDSON_GEC_POSITION) -hudson/gec-type := raw -hudson/gec-required := Hudson Gigabit Ethernet Controller Firmware (Contact your AMD representative) +cbfs-files-y += fch/gec +fch/gec-file := $(call strip_quotes, $(CONFIG_HUDSON_GEC_FWM_FILE)) +fch/gec-position := $(HUDSON_GEC_POSITION) +fch/gec-type := raw +fch/gec-required := Hudson Gigabit Ethernet Controller Firmware (Contact your AMD representative) endif ifdef CONFIG_HUDSON_AHCI_ROM @@ -155,90 +166,55 @@ ifeq ($(CONFIG_HUDSON_PSP), y) # 0 # catenate the pubkey and pspdir together to save some space. -AMDPUBKEY_POS=$(call int-add,$(HUDSON_PSP_DIRECTORY_POSITION) 0x100) #$(shell printf %u 0xFFb00100) +AMDPUBKEY_POS=$(call int-add,$(HUDSON_PSP_DIRECTORY_POSITION) $(HUDSON_PSP_DIRECTORY_SIZE)) AMDPUBKEY_SIZE=$(call file-size,$(CONFIG_AMD_PUBKEY_FILE)) ifeq ($(CONFIG_CPU_AMD_PI_00730F01), y) FIRMWARE_LOCATE=$(dir $(call strip_quotes, $(CONFIG_AMD_PUBKEY_FILE))) FIRMWARE_TYPE= endif -# 1 -CONFIG_PSPBTLDR_FILE=$(top)/$(FIRMWARE_LOCATE)/PspBootLoader$(FIRMWARE_TYPE).$(CONFIG_HVB).sbin -PSPBTLDR_POS=$(call int-add,$(HUDSON_PSP_DIRECTORY_POSITION) 0x1000) #$(shell printf %u 0xFFb10000) -PSPBTLDR_SIZE=$(call file-size,$(CONFIG_PSPBTLDR_FILE)) -cbfs-files-y += hudson/pspbtldr -hudson/pspbtldr-file := $(CONFIG_PSPBTLDR_FILE) -hudson/pspbtldr-position := $(PSPBTLDR_POS) -hudson/pspbtldr-type := raw -#8 -CONFIG_SMUFWM_FILE=$(top)/$(FIRMWARE_LOCATE)/SmuFirmware$(FIRMWARE_TYPE).sbin -SMUFWM_POS=$(call int-add,$(HUDSON_PSP_DIRECTORY_POSITION) 0xb000) #$(shell printf %u 0xFFb20000) -SMUFWM_SIZE=$(call file-size,$(CONFIG_SMUFWM_FILE)) -cbfs-files-y += hudson/smufwm -hudson/smufwm-file := $(CONFIG_SMUFWM_FILE) -hudson/smufwm-position := $(SMUFWM_POS) -hudson/smufwm-type := raw +CONFIG_PUBSIGNEDKEY_FILE=$(top)/$(FIRMWARE_LOCATE)/RtmPubSigned$(FIRMWARE_TYPE).key +PUBSIGNEDKEY_POS=$(call int-align, \ + $(call int-add,$(AMDPUBKEY_POS) $(AMDPUBKEY_SIZE) $(CBFS_HEADER_SIZE)), \ + $(CBFS_HEADER_SIZE)) +PUBSIGNEDKEY_SIZE=$(call file-size,$(CONFIG_PUBSIGNEDKEY_FILE)) + +CONFIG_PSPBTLDR_FILE=$(top)/$(FIRMWARE_LOCATE)/PspBootLoader$(FIRMWARE_TYPE).Bypass.sbin +PSPBTLDR_POS=$(call int-align, \ + $(call int-add,$(PUBSIGNEDKEY_POS) $(PUBSIGNEDKEY_SIZE) $(CBFS_HEADER_SIZE)), \ + $(CBFS_HEADER_SIZE)) +PSPBTLDR_SIZE=$(call file-size,$(CONFIG_PSPBTLDR_FILE)) -#3 CONFIG_PSPRCVR_FILE=$(top)/$(FIRMWARE_LOCATE)/PspRecovery$(FIRMWARE_TYPE).sbin -PSPRCVR_POS=$(call int-add,$(HUDSON_PSP_DIRECTORY_POSITION) 0x30000) #$(shell printf %u 0xFFBb0000) +PSPRCVR_POS=$(call int-align, \ + $(call int-add,$(PSPBTLDR_POS) $(PSPBTLDR_SIZE) $(CBFS_HEADER_SIZE)), \ + $(CBFS_HEADER_SIZE)) PSPRCVR_SIZE=$(call file-size,$(CONFIG_PSPRCVR_FILE)) -cbfs-files-y += hudson/psprcvr -hudson/psprcvr-file := $(CONFIG_PSPRCVR_FILE) -hudson/psprcvr-position := $(PSPRCVR_POS) -hudson/psprcvr-type := raw -# 5 -CONFIG_PUBSIGNEDKEY_FILE=$(top)/$(FIRMWARE_LOCATE)/RtmPubSigned$(FIRMWARE_TYPE).key -PUBSIGNEDKEY_POS=$(call int-add,$(HUDSON_PSP_DIRECTORY_POSITION) 0x400) #$(shell printf %u 0xFFb00400) -PUBSIGNEDKEY_SIZE=$(call file-size,$(CONFIG_PUBSIGNEDKEY_FILE)) -cbfs-files-y += hudson/pubsignedkey -hudson/pubsignedkey-file := $(CONFIG_PUBSIGNEDKEY_FILE) -hudson/pubsignedkey-position := $(PUBSIGNEDKEY_POS) -hudson/pubsignedkey-type := raw - -# 2 CONFIG_PSPSCUREOS_FILE=$(top)/$(FIRMWARE_LOCATE)/PspSecureOs$(FIRMWARE_TYPE).sbin -PSPSECUREOS_POS=$(call int-add,$(HUDSON_PSP_DIRECTORY_POSITION) 0x3A000) #$(shell printf %u 0xFFbc0000) +PSPSECUREOS_POS=$(call int-align, \ + $(call int-add,$(PSPRCVR_POS) $(PSPRCVR_SIZE) $(CBFS_HEADER_SIZE)), \ + $(CBFS_HEADER_SIZE)) PSPSECUREOS_SIZE=$(call file-size,$(CONFIG_PSPSCUREOS_FILE)) -cbfs-files-y += hudson/pspsecureos -hudson/pspsecureos-file := $(CONFIG_PSPSCUREOS_FILE) -hudson/pspsecureos-position := $(PSPSECUREOS_POS) -hudson/pspsecureos-type := raw -# 4 CONFIG_PSPNVRAM_FILE=$(top)/$(FIRMWARE_LOCATE)/PspNvram$(FIRMWARE_TYPE).bin -PSPNVRAM_POS=$(call int-add,$(HUDSON_PSP_DIRECTORY_POSITION) 0x64000) #$(shell printf %u 0xFFbf0000) +PSPNVRAM_POS=$(call int-align, \ + $(call int-add,$(PSPSECUREOS_POS) $(PSPSECUREOS_SIZE) $(CBFS_HEADER_SIZE)), \ + $(CBFS_HEADER_SIZE)) PSPNVRAM_SIZE=$(call file-size,$(CONFIG_PSPNVRAM_FILE)) -cbfs-files-y += hudson/pspnvram -hudson/pspnvram-file := $(CONFIG_PSPNVRAM_FILE) -hudson/pspnvram-position := $(PSPNVRAM_POS) -hudson/pspnvram-type := raw - -ifeq ($(CONFIG_HVB), HVB) -# 6 -RTM_FILE=$(objcbfs)/bootblock.bin #The file size need to be 256 bytes aligned. -RTM_SIZE=$(call file-size,$(RTM_FILE)) -RTM_POS=$(call int-add,4294967296 -$(RTM_SIZE)) - -# 7 -RTMSIGN_FILE=$(obj)/bootblock_sig.bin -RTMSIGN_POS=$(call int-add,$(HUDSON_PSP_DIRECTORY_POSITION) 0x800) #$(shell printf %u 0xFFb00800) -RTMSIGN_SIZE=256 #it should be hardcoded to 256, otherwise circular dependency comes up.$(call file-size,$(RTMSIGN_FILE)) -cbfs-files-y += hudson/rtmsign -hudson/rtmsign-file := $(RTMSIGN_FILE) -hudson/rtmsign-position := $(RTMSIGN_POS) -hudson/rtmsign-type := raw -endif + +CONFIG_SMUFWM_FILE=$(top)/$(FIRMWARE_LOCATE)/SmuFirmware$(FIRMWARE_TYPE).sbin +SMUFWM_POS=$(call int-align, \ + $(call int-add,$(PSPNVRAM_POS) $(PSPNVRAM_SIZE) $(CBFS_HEADER_SIZE)), \ + $(CBFS_HEADER_SIZE)) +SMUFWM_SIZE=$(call file-size,$(CONFIG_SMUFWM_FILE)) CONFIG_SMUSCS_FILE=$(top)/$(FIRMWARE_LOCATE)/SmuScs$(FIRMWARE_TYPE).bin -SMUSCS_POS=$(call int-add,$(HUDSON_PSP_DIRECTORY_POSITION) 0x6d000) #$(shell printf %u 0xFFC00000) +SMUSCS_POS=$(call int-align, \ + $(call int-add,$(SMUFWM_POS) $(SMUFWM_SIZE) $(CBFS_HEADER_SIZE)), \ + $(CBFS_HEADER_SIZE)) SMUSCS_SIZE=$(call file-size,$(CONFIG_SMUSCS_FILE)) -cbfs-files-y += hudson/smuscs -hudson/smuscs-file := $(CONFIG_SMUSCS_FILE) -hudson/smuscs-position := $(SMUSCS_POS) -hudson/smuscs-type := raw define output_hex echo $(1) | LC_ALL=C awk '{printf ("%c%c%c%c", $$1 % 256, int($$1/256) % 256, int($$1/65536) % 256, int($$1/16777216));}' @@ -261,14 +237,6 @@ $(obj)/coreboot_psp_directory.bin: $(obj)/config.h $(FLETCHER) $(RTM_FILE) for fwm in 5 $(PUBSIGNEDKEY_SIZE) $(PUBSIGNEDKEY_POS) 0; do \ echo $$fwm | LC_ALL=C awk '{printf ("%c%c%c%c", $$1 % 256, int($$1/256) % 256, int($$1/65536) % 256, int($$1/16777216));}'; \ done >> $@_tail.tmp -ifeq ($(CONFIG_HVB), HVB) - for fwm in 6 $(RTM_SIZE) $(RTM_POS) 0; do \ - echo $$fwm | LC_ALL=C awk '{printf ("%c%c%c%c", $$1 % 256, int($$1/256) % 256, int($$1/65536) % 256, int($$1/16777216));}'; \ - done >> $@_tail.tmp - for fwm in 7 $(RTMSIGN_SIZE) $(RTMSIGN_POS) 0; do \ - echo $$fwm | LC_ALL=C awk '{printf ("%c%c%c%c", $$1 % 256, int($$1/256) % 256, int($$1/65536) % 256, int($$1/16777216));}'; \ - done >> $@_tail.tmp -endif for fwm in 2 $(PSPSECUREOS_SIZE) $(PSPSECUREOS_POS) 0; do \ echo $$fwm | LC_ALL=C awk '{printf ("%c%c%c%c", $$1 % 256, int($$1/256) % 256, int($$1/65536) % 256, int($$1/16777216));}'; \ done >> $@_tail.tmp @@ -293,9 +261,50 @@ $(obj)/coreboot_psp_directory_combine_pubkey.bin: $(obj)/coreboot_psp_directory. ls -l $(obj)/coreboot_psp_directory.bin | LC_ALL=C awk '{for (i=0; i<256-$$5; i++) {printf "%c", 255}}' >> $@ cat $(top)/$(FIRMWARE_LOCATE)/AmdPubKey$(FIRMWARE_TYPE).bin >> $@ -cbfs-files-y += hudson/pspdir -hudson/pspdir-file := $(obj)/coreboot_psp_directory_combine_pubkey.bin -hudson/pspdir-position := $(HUDSON_PSP_DIRECTORY_POSITION) -hudson/pspdir-type := raw +cbfs-files-y += apu/pspdir +apu/pspdir-file := $(obj)/coreboot_psp_directory_combine_pubkey.bin +apu/pspdir-position := $(HUDSON_PSP_DIRECTORY_POSITION) +apu/pspdir-type := raw + +# 5 +cbfs-files-y += apu/pubsignedkey +apu/pubsignedkey-file := $(CONFIG_PUBSIGNEDKEY_FILE) +apu/pubsignedkey-position := $(PUBSIGNEDKEY_POS) +apu/pubsignedkey-type := raw + +# 1 +cbfs-files-y += apu/pspbtldr +apu/pspbtldr-file := $(CONFIG_PSPBTLDR_FILE) +apu/pspbtldr-position := $(PSPBTLDR_POS) +apu/pspbtldr-type := raw + +#3 +cbfs-files-y += apu/psprcvr +apu/psprcvr-file := $(CONFIG_PSPRCVR_FILE) +apu/psprcvr-position := $(PSPRCVR_POS) +apu/psprcvr-type := raw + +# 2 +cbfs-files-y += apu/pspsecureos +apu/pspsecureos-file := $(CONFIG_PSPSCUREOS_FILE) +apu/pspsecureos-position := $(PSPSECUREOS_POS) +apu/pspsecureos-type := raw + +# 4 +cbfs-files-y += apu/pspnvram +apu/pspnvram-file := $(CONFIG_PSPNVRAM_FILE) +apu/pspnvram-position := $(PSPNVRAM_POS) +apu/pspnvram-type := raw + +#8 +cbfs-files-y += apu/smufwm +apu/smufwm-file := $(CONFIG_SMUFWM_FILE) +apu/smufwm-position := $(SMUFWM_POS) +apu/smufwm-type := raw + +cbfs-files-y += apu/smuscs +apu/smuscs-file := $(CONFIG_SMUSCS_FILE) +apu/smuscs-position := $(SMUSCS_POS) +apu/smuscs-type := raw endif |