[U-Boot] [PATCH v2 00/10] x86: Prepare for adding FSP2 code

At present the x86 FSP (Firmware Support Package) code assumes that FSP version 1 is used. Since this code was added to U-Boot a new version (FSP2) has been produced by Intel.
In preparation for adding support for FSP2, move the existing code into a directory that indicates it is used for FSP1.
Changes in v2: - Correct Intel FSP web link - Rewrite to make azalia a common file for FSP1 and FSP2
Simon Glass (10): x86: Rename existing FSP code to fsp1 x86: Move fsp_azalia.h to the generic fsp directory x86: Create a new fsp_arch.h header x86: Move fsp_api.h inclusion out of fsp_support.h x86: Move fsp_types.h to the generic fsp directory x86: Move fsp_fv.h to the generic fsp directory x86: Move fsp_hob.h to the generic fsp directory x86: Move fsp_infoheader.h to the generic fsp directory x86: Move fsp_bootmode.h to the generic fsp directory x86: Move fsp_ffs.h include to fsp_arch.h
arch/x86/Kconfig | 25 ++++++++++++++++++- arch/x86/cpu/baytrail/acpi.c | 2 +- arch/x86/cpu/baytrail/fsp_configs.c | 2 +- arch/x86/cpu/braswell/fsp_configs.c | 2 +- arch/x86/cpu/ivybridge/fsp_configs.c | 2 +- arch/x86/cpu/queensbay/fsp_configs.c | 2 +- arch/x86/cpu/queensbay/tnc.c | 2 +- arch/x86/include/asm/{fsp => fsp1}/fsp_api.h | 0 arch/x86/include/asm/{fsp => fsp1}/fsp_ffs.h | 0 .../include/asm/{fsp => fsp1}/fsp_support.h | 19 +++++++------- arch/x86/include/asm/fsp_arch.h | 22 ++++++++++++++++ arch/x86/include/asm/u-boot-x86.h | 2 +- arch/x86/lib/Makefile | 3 ++- arch/x86/lib/{fsp => fsp1}/Makefile | 0 arch/x86/lib/{fsp => fsp1}/fsp_car.S | 0 arch/x86/lib/{fsp => fsp1}/fsp_common.c | 2 +- arch/x86/lib/{fsp => fsp1}/fsp_dram.c | 2 +- arch/x86/lib/{fsp => fsp1}/fsp_graphics.c | 2 +- arch/x86/lib/{fsp => fsp1}/fsp_support.c | 2 +- .../som-db5800-som-6867/som-db5800-som-6867.c | 2 +- board/intel/cherryhill/cherryhill.c | 2 +- cmd/x86/fsp.c | 2 +- drivers/pci/pci-uclass.c | 2 +- 23 files changed, 73 insertions(+), 26 deletions(-) rename arch/x86/include/asm/{fsp => fsp1}/fsp_api.h (100%) rename arch/x86/include/asm/{fsp => fsp1}/fsp_ffs.h (100%) rename arch/x86/include/asm/{fsp => fsp1}/fsp_support.h (94%) create mode 100644 arch/x86/include/asm/fsp_arch.h rename arch/x86/lib/{fsp => fsp1}/Makefile (100%) rename arch/x86/lib/{fsp => fsp1}/fsp_car.S (100%) rename arch/x86/lib/{fsp => fsp1}/fsp_common.c (99%) rename arch/x86/lib/{fsp => fsp1}/fsp_dram.c (98%) rename arch/x86/lib/{fsp => fsp1}/fsp_graphics.c (98%) rename arch/x86/lib/{fsp => fsp1}/fsp_support.c (99%)

Since there is now a new version of the FSP and it is incompatible with the existing version, move the code into an fsp1 directory. This will allow us to put FSP v2 code into an fsp2 directory.
Add a Kconfig which defines which version is in use.
Some of the code in this new fsp1/ directory is generic across both FSPv1 and FSPv2. Future patches will address this.
Signed-off-by: Simon Glass sjg@chromium.org Reviewed-by: Bin Meng bmeng.cn@gmail.com ---
Changes in v2: - Correct Intel FSP web link
arch/x86/Kconfig | 25 ++++++++++++++++++- arch/x86/cpu/baytrail/acpi.c | 2 +- arch/x86/cpu/baytrail/fsp_configs.c | 2 +- arch/x86/cpu/braswell/fsp_configs.c | 2 +- arch/x86/cpu/ivybridge/fsp_configs.c | 2 +- arch/x86/cpu/queensbay/fsp_configs.c | 2 +- arch/x86/cpu/queensbay/tnc.c | 2 +- arch/x86/include/asm/{fsp => fsp1}/fsp_api.h | 0 .../include/asm/{fsp => fsp1}/fsp_azalia.h | 0 .../include/asm/{fsp => fsp1}/fsp_bootmode.h | 0 arch/x86/include/asm/{fsp => fsp1}/fsp_ffs.h | 0 arch/x86/include/asm/{fsp => fsp1}/fsp_fv.h | 0 arch/x86/include/asm/{fsp => fsp1}/fsp_hob.h | 0 .../asm/{fsp => fsp1}/fsp_infoheader.h | 0 .../include/asm/{fsp => fsp1}/fsp_support.h | 0 .../x86/include/asm/{fsp => fsp1}/fsp_types.h | 0 arch/x86/include/asm/u-boot-x86.h | 2 +- arch/x86/lib/Makefile | 3 ++- arch/x86/lib/{fsp => fsp1}/Makefile | 0 arch/x86/lib/{fsp => fsp1}/fsp_car.S | 0 arch/x86/lib/{fsp => fsp1}/fsp_common.c | 2 +- arch/x86/lib/{fsp => fsp1}/fsp_dram.c | 2 +- arch/x86/lib/{fsp => fsp1}/fsp_graphics.c | 2 +- arch/x86/lib/{fsp => fsp1}/fsp_support.c | 2 +- .../som-db5800-som-6867/som-db5800-som-6867.c | 2 +- board/intel/cherryhill/cherryhill.c | 2 +- cmd/x86/fsp.c | 2 +- drivers/pci/pci-uclass.c | 2 +- 28 files changed, 41 insertions(+), 17 deletions(-) rename arch/x86/include/asm/{fsp => fsp1}/fsp_api.h (100%) rename arch/x86/include/asm/{fsp => fsp1}/fsp_azalia.h (100%) rename arch/x86/include/asm/{fsp => fsp1}/fsp_bootmode.h (100%) rename arch/x86/include/asm/{fsp => fsp1}/fsp_ffs.h (100%) rename arch/x86/include/asm/{fsp => fsp1}/fsp_fv.h (100%) rename arch/x86/include/asm/{fsp => fsp1}/fsp_hob.h (100%) rename arch/x86/include/asm/{fsp => fsp1}/fsp_infoheader.h (100%) rename arch/x86/include/asm/{fsp => fsp1}/fsp_support.h (100%) rename arch/x86/include/asm/{fsp => fsp1}/fsp_types.h (100%) rename arch/x86/lib/{fsp => fsp1}/Makefile (100%) rename arch/x86/lib/{fsp => fsp1}/fsp_car.S (100%) rename arch/x86/lib/{fsp => fsp1}/fsp_common.c (99%) rename arch/x86/lib/{fsp => fsp1}/fsp_dram.c (98%) rename arch/x86/lib/{fsp => fsp1}/fsp_graphics.c (98%) rename arch/x86/lib/{fsp => fsp1}/fsp_support.c (99%)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 218e817cf3..314f8def7a 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -364,6 +364,29 @@ config HAVE_FSP Note: Without this binary U-Boot will not be able to set up its SDRAM so will not boot.
+choice + prompt "FSP version" + depends on HAVE_FSP + default FSP_VERSION1 + help + Selects the FSP version to use. Intel has published several versions + of the FSP External Architecture Specification and this allows + selection of the version number used by a particular SoC. + +config FSP_VERSION1 + bool "FSP version 1.x" + help + This covers versions 1.0 and 1.1a. See here for details: + https://github.com/IntelFsp/fsp/wiki + +config FSP_VERSION2 + bool "FSP version 2.x" + help + This covers versions 2.0 and 2.1. See here for details: + https://github.com/IntelFsp/fsp/wiki + +endchoice + config FSP_FILE string "Firmware Support Package binary filename" depends on HAVE_FSP @@ -429,7 +452,7 @@ config ENABLE_MRC_CACHE
For platforms that use Intel FSP for the memory initialization, please check FSP output HOB via U-Boot command 'fsp hob' to see - if there is FSP_NON_VOLATILE_STORAGE_HOB_GUID (asm/fsp/fsp_hob.h). + if there is FSP_NON_VOLATILE_STORAGE_HOB_GUID (asm/fsp1/fsp_hob.h). If such GUID does not exist, MRC cache is not available on such platform (eg: Intel Queensbay), which means selecting this option here does not make any difference. diff --git a/arch/x86/cpu/baytrail/acpi.c b/arch/x86/cpu/baytrail/acpi.c index 445e4ba2d7..1e3829a433 100644 --- a/arch/x86/cpu/baytrail/acpi.c +++ b/arch/x86/cpu/baytrail/acpi.c @@ -167,7 +167,7 @@ void acpi_create_gnvs(struct acpi_global_nvs *gnvs) * and PMC_BASE_ADDRESS are accessed, so we need make sure the base addresses * of these two blocks are programmed by either U-Boot or FSP. * - * It has been verified that 1st phase API (see arch/x86/lib/fsp/fsp_car.S) + * It has been verified that 1st phase API (see arch/x86/lib/fsp1/fsp_car.S) * on Intel BayTrail SoC already initializes these two base addresses so * we are safe to access these registers here. */ diff --git a/arch/x86/cpu/baytrail/fsp_configs.c b/arch/x86/cpu/baytrail/fsp_configs.c index cefd26299a..5b5d66aa5e 100644 --- a/arch/x86/cpu/baytrail/fsp_configs.c +++ b/arch/x86/cpu/baytrail/fsp_configs.c @@ -7,7 +7,7 @@
#include <common.h> #include <fdtdec.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h>
DECLARE_GLOBAL_DATA_PTR;
diff --git a/arch/x86/cpu/braswell/fsp_configs.c b/arch/x86/cpu/braswell/fsp_configs.c index 7fe6fa7995..607e333f21 100644 --- a/arch/x86/cpu/braswell/fsp_configs.c +++ b/arch/x86/cpu/braswell/fsp_configs.c @@ -5,7 +5,7 @@
#include <common.h> #include <fdtdec.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h>
DECLARE_GLOBAL_DATA_PTR;
diff --git a/arch/x86/cpu/ivybridge/fsp_configs.c b/arch/x86/cpu/ivybridge/fsp_configs.c index 2fd06b3bed..773c2b2a0a 100644 --- a/arch/x86/cpu/ivybridge/fsp_configs.c +++ b/arch/x86/cpu/ivybridge/fsp_configs.c @@ -5,7 +5,7 @@
#include <common.h> #include <fdtdec.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h>
DECLARE_GLOBAL_DATA_PTR;
diff --git a/arch/x86/cpu/queensbay/fsp_configs.c b/arch/x86/cpu/queensbay/fsp_configs.c index c4d117783c..0dd1901e07 100644 --- a/arch/x86/cpu/queensbay/fsp_configs.c +++ b/arch/x86/cpu/queensbay/fsp_configs.c @@ -5,7 +5,7 @@ */
#include <common.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h>
void update_fsp_configs(struct fsp_config_data *config, struct fspinit_rtbuf *rt_buf) diff --git a/arch/x86/cpu/queensbay/tnc.c b/arch/x86/cpu/queensbay/tnc.c index 76556fc7f7..66737e655b 100644 --- a/arch/x86/cpu/queensbay/tnc.c +++ b/arch/x86/cpu/queensbay/tnc.c @@ -12,7 +12,7 @@ #include <asm/post.h> #include <asm/arch/device.h> #include <asm/arch/tnc.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h> #include <asm/processor.h>
static int __maybe_unused disable_igd(void) diff --git a/arch/x86/include/asm/fsp/fsp_api.h b/arch/x86/include/asm/fsp1/fsp_api.h similarity index 100% rename from arch/x86/include/asm/fsp/fsp_api.h rename to arch/x86/include/asm/fsp1/fsp_api.h diff --git a/arch/x86/include/asm/fsp/fsp_azalia.h b/arch/x86/include/asm/fsp1/fsp_azalia.h similarity index 100% rename from arch/x86/include/asm/fsp/fsp_azalia.h rename to arch/x86/include/asm/fsp1/fsp_azalia.h diff --git a/arch/x86/include/asm/fsp/fsp_bootmode.h b/arch/x86/include/asm/fsp1/fsp_bootmode.h similarity index 100% rename from arch/x86/include/asm/fsp/fsp_bootmode.h rename to arch/x86/include/asm/fsp1/fsp_bootmode.h diff --git a/arch/x86/include/asm/fsp/fsp_ffs.h b/arch/x86/include/asm/fsp1/fsp_ffs.h similarity index 100% rename from arch/x86/include/asm/fsp/fsp_ffs.h rename to arch/x86/include/asm/fsp1/fsp_ffs.h diff --git a/arch/x86/include/asm/fsp/fsp_fv.h b/arch/x86/include/asm/fsp1/fsp_fv.h similarity index 100% rename from arch/x86/include/asm/fsp/fsp_fv.h rename to arch/x86/include/asm/fsp1/fsp_fv.h diff --git a/arch/x86/include/asm/fsp/fsp_hob.h b/arch/x86/include/asm/fsp1/fsp_hob.h similarity index 100% rename from arch/x86/include/asm/fsp/fsp_hob.h rename to arch/x86/include/asm/fsp1/fsp_hob.h diff --git a/arch/x86/include/asm/fsp/fsp_infoheader.h b/arch/x86/include/asm/fsp1/fsp_infoheader.h similarity index 100% rename from arch/x86/include/asm/fsp/fsp_infoheader.h rename to arch/x86/include/asm/fsp1/fsp_infoheader.h diff --git a/arch/x86/include/asm/fsp/fsp_support.h b/arch/x86/include/asm/fsp1/fsp_support.h similarity index 100% rename from arch/x86/include/asm/fsp/fsp_support.h rename to arch/x86/include/asm/fsp1/fsp_support.h diff --git a/arch/x86/include/asm/fsp/fsp_types.h b/arch/x86/include/asm/fsp1/fsp_types.h similarity index 100% rename from arch/x86/include/asm/fsp/fsp_types.h rename to arch/x86/include/asm/fsp1/fsp_types.h diff --git a/arch/x86/include/asm/u-boot-x86.h b/arch/x86/include/asm/u-boot-x86.h index c252192bf4..2466ad2ad3 100644 --- a/arch/x86/include/asm/u-boot-x86.h +++ b/arch/x86/include/asm/u-boot-x86.h @@ -74,7 +74,7 @@ u32 isa_map_rom(u32 bus_addr, int size); /* arch/x86/lib/... */ int video_bios_init(void);
-/* arch/x86/lib/fsp/... */ +/* arch/x86/lib/fsp1,2/... */
/** * fsp_save_s3_stack() - save stack address to CMOS for next S3 boot diff --git a/arch/x86/lib/Makefile b/arch/x86/lib/Makefile index 906be5eab9..a8c7448ee4 100644 --- a/arch/x86/lib/Makefile +++ b/arch/x86/lib/Makefile @@ -43,7 +43,8 @@ ifndef CONFIG_SPL_BUILD obj-$(CONFIG_CMD_ZBOOT) += zimage.o endif obj-$(CONFIG_USE_HOB) += hob.o -obj-$(CONFIG_HAVE_FSP) += fsp/ +obj-$(CONFIG_FSP_VERSION1) += fsp1/ +obj-$(CONFIG_FSP_VERSION2) += fsp2/
ifdef CONFIG_SPL_BUILD ifdef CONFIG_TPL_BUILD diff --git a/arch/x86/lib/fsp/Makefile b/arch/x86/lib/fsp1/Makefile similarity index 100% rename from arch/x86/lib/fsp/Makefile rename to arch/x86/lib/fsp1/Makefile diff --git a/arch/x86/lib/fsp/fsp_car.S b/arch/x86/lib/fsp1/fsp_car.S similarity index 100% rename from arch/x86/lib/fsp/fsp_car.S rename to arch/x86/lib/fsp1/fsp_car.S diff --git a/arch/x86/lib/fsp/fsp_common.c b/arch/x86/lib/fsp1/fsp_common.c similarity index 99% rename from arch/x86/lib/fsp/fsp_common.c rename to arch/x86/lib/fsp1/fsp_common.c index ed0827c6e9..591eef7b81 100644 --- a/arch/x86/lib/fsp/fsp_common.c +++ b/arch/x86/lib/fsp1/fsp_common.c @@ -14,7 +14,7 @@ #include <asm/mrccache.h> #include <asm/post.h> #include <asm/processor.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h>
DECLARE_GLOBAL_DATA_PTR;
diff --git a/arch/x86/lib/fsp/fsp_dram.c b/arch/x86/lib/fsp1/fsp_dram.c similarity index 98% rename from arch/x86/lib/fsp/fsp_dram.c rename to arch/x86/lib/fsp1/fsp_dram.c index 3a23b70410..3bf65b495c 100644 --- a/arch/x86/lib/fsp/fsp_dram.c +++ b/arch/x86/lib/fsp1/fsp_dram.c @@ -4,7 +4,7 @@ */
#include <common.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h> #include <asm/e820.h> #include <asm/mrccache.h> #include <asm/post.h> diff --git a/arch/x86/lib/fsp/fsp_graphics.c b/arch/x86/lib/fsp1/fsp_graphics.c similarity index 98% rename from arch/x86/lib/fsp/fsp_graphics.c rename to arch/x86/lib/fsp1/fsp_graphics.c index 91d2d08557..52e71334f9 100644 --- a/arch/x86/lib/fsp/fsp_graphics.c +++ b/arch/x86/lib/fsp1/fsp_graphics.c @@ -7,7 +7,7 @@ #include <dm.h> #include <vbe.h> #include <video.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h>
DECLARE_GLOBAL_DATA_PTR;
diff --git a/arch/x86/lib/fsp/fsp_support.c b/arch/x86/lib/fsp1/fsp_support.c similarity index 99% rename from arch/x86/lib/fsp/fsp_support.c rename to arch/x86/lib/fsp1/fsp_support.c index 0eaa9b232b..019a42f53f 100644 --- a/arch/x86/lib/fsp/fsp_support.c +++ b/arch/x86/lib/fsp1/fsp_support.c @@ -5,7 +5,7 @@ */
#include <common.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h> #include <asm/post.h>
struct fsp_header *__attribute__((optimize("O0"))) find_fsp_header(void) diff --git a/board/advantech/som-db5800-som-6867/som-db5800-som-6867.c b/board/advantech/som-db5800-som-6867/som-db5800-som-6867.c index ac12f303a3..8f4c587371 100644 --- a/board/advantech/som-db5800-som-6867/som-db5800-som-6867.c +++ b/board/advantech/som-db5800-som-6867/som-db5800-som-6867.c @@ -5,7 +5,7 @@ */
#include <common.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h>
/* ALC262 Verb Table - 10EC0262 */ static const u32 verb_table_data13[] = { diff --git a/board/intel/cherryhill/cherryhill.c b/board/intel/cherryhill/cherryhill.c index 695af6bb7e..c037d5b14c 100644 --- a/board/intel/cherryhill/cherryhill.c +++ b/board/intel/cherryhill/cherryhill.c @@ -5,7 +5,7 @@
#include <common.h> #include <asm/arch/gpio.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h>
static const struct gpio_family gpio_family[] = { GPIO_FAMILY_CONF("SOUTHEAST_2_hshvfamily_2x3_rcomp_7_0", NA, 0, diff --git a/cmd/x86/fsp.c b/cmd/x86/fsp.c index efa183854b..fb27624422 100644 --- a/cmd/x86/fsp.c +++ b/cmd/x86/fsp.c @@ -5,7 +5,7 @@
#include <common.h> #include <command.h> -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h>
DECLARE_GLOBAL_DATA_PTR;
diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index ab3e1310eb..b73d0cd70a 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -12,7 +12,7 @@ #include <dm/device-internal.h> #include <dm/lists.h> #if defined(CONFIG_X86) && defined(CONFIG_HAVE_FSP) -#include <asm/fsp/fsp_support.h> +#include <asm/fsp1/fsp_support.h> #endif #include "pci_internal.h"

This header file is the same for FSP v1 and v2. Move it into the general fsp directory.
Signed-off-by: Simon Glass sjg@chromium.org ---
Changes in v2: - Rewrite to make azalia a common file for FSP1 and FSP2
arch/x86/include/asm/{fsp1 => fsp}/fsp_azalia.h | 0 arch/x86/include/asm/fsp1/fsp_support.h | 5 ++++- 2 files changed, 4 insertions(+), 1 deletion(-) rename arch/x86/include/asm/{fsp1 => fsp}/fsp_azalia.h (100%)
diff --git a/arch/x86/include/asm/fsp1/fsp_azalia.h b/arch/x86/include/asm/fsp/fsp_azalia.h similarity index 100% rename from arch/x86/include/asm/fsp1/fsp_azalia.h rename to arch/x86/include/asm/fsp/fsp_azalia.h diff --git a/arch/x86/include/asm/fsp1/fsp_support.h b/arch/x86/include/asm/fsp1/fsp_support.h index 7b92392a27..487c751fcf 100644 --- a/arch/x86/include/asm/fsp1/fsp_support.h +++ b/arch/x86/include/asm/fsp1/fsp_support.h @@ -14,7 +14,7 @@ #include "fsp_api.h" #include "fsp_infoheader.h" #include "fsp_bootmode.h" -#include "fsp_azalia.h" +#include <asm/fsp/fsp_azalia.h> #include <asm/arch/fsp/fsp_vpd.h> #include <asm/arch/fsp/fsp_configs.h>
@@ -22,6 +22,9 @@ #define FSP_HIGHMEM_BASE 0x100000000ULL #define UPD_TERMINATOR 0x55AA
+struct efi_guid; +struct fspinit_rtbuf; +struct fsp_config_data;
/** * FSP Continuation assembly helper routine

Hi Simon,
On Sat, Aug 24, 2019 at 10:44 PM Simon Glass sjg@chromium.org wrote:
This header file is the same for FSP v1 and v2. Move it into the general fsp directory.
Signed-off-by: Simon Glass sjg@chromium.org
Changes in v2:
- Rewrite to make azalia a common file for FSP1 and FSP2
arch/x86/include/asm/{fsp1 => fsp}/fsp_azalia.h | 0 arch/x86/include/asm/fsp1/fsp_support.h | 5 ++++- 2 files changed, 4 insertions(+), 1 deletion(-) rename arch/x86/include/asm/{fsp1 => fsp}/fsp_azalia.h (100%)
diff --git a/arch/x86/include/asm/fsp1/fsp_azalia.h b/arch/x86/include/asm/fsp/fsp_azalia.h similarity index 100% rename from arch/x86/include/asm/fsp1/fsp_azalia.h rename to arch/x86/include/asm/fsp/fsp_azalia.h diff --git a/arch/x86/include/asm/fsp1/fsp_support.h b/arch/x86/include/asm/fsp1/fsp_support.h index 7b92392a27..487c751fcf 100644 --- a/arch/x86/include/asm/fsp1/fsp_support.h +++ b/arch/x86/include/asm/fsp1/fsp_support.h @@ -14,7 +14,7 @@ #include "fsp_api.h" #include "fsp_infoheader.h" #include "fsp_bootmode.h" -#include "fsp_azalia.h" +#include <asm/fsp/fsp_azalia.h> #include <asm/arch/fsp/fsp_vpd.h> #include <asm/arch/fsp/fsp_configs.h>
@@ -22,6 +22,9 @@ #define FSP_HIGHMEM_BASE 0x100000000ULL #define UPD_TERMINATOR 0x55AA
+struct efi_guid; +struct fspinit_rtbuf; +struct fsp_config_data;
Why are these 3 needed? I thought they are from "fsp_azalia.h", but they are not.
/**
- FSP Continuation assembly helper routine
--
Regards, Bin

At present fsp_support.h includes fsp_vpd.h which is an FPSv1 concept (VPD means Vital Product Data). For FSPv2 only UPD (Updatable Product Data) is used.
To avoid mangling header files, put these two includes in a separate header which we can adjust as necessary for FSPv2.
Signed-off-by: Simon Glass sjg@chromium.org Reviewed-by: Bin Meng bmeng.cn@gmail.com ---
Changes in v2: None
arch/x86/include/asm/fsp1/fsp_support.h | 3 +-- arch/x86/include/asm/fsp_arch.h | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 arch/x86/include/asm/fsp_arch.h
diff --git a/arch/x86/include/asm/fsp1/fsp_support.h b/arch/x86/include/asm/fsp1/fsp_support.h index 487c751fcf..a50a21ca8b 100644 --- a/arch/x86/include/asm/fsp1/fsp_support.h +++ b/arch/x86/include/asm/fsp1/fsp_support.h @@ -14,9 +14,8 @@ #include "fsp_api.h" #include "fsp_infoheader.h" #include "fsp_bootmode.h" +#include <asm/fsp_arch.h> #include <asm/fsp/fsp_azalia.h> -#include <asm/arch/fsp/fsp_vpd.h> -#include <asm/arch/fsp/fsp_configs.h>
#define FSP_LOWMEM_BASE 0x100000UL #define FSP_HIGHMEM_BASE 0x100000000ULL diff --git a/arch/x86/include/asm/fsp_arch.h b/arch/x86/include/asm/fsp_arch.h new file mode 100644 index 0000000000..fb7f9109f7 --- /dev/null +++ b/arch/x86/include/asm/fsp_arch.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Google LLC + * Written by Simon Glass sjg@chromium.org + * + * Architecture-specific definitions (FSP config and VPD/UPD) + */ + +#ifndef __FSP_ARCH_H__ +#define __FSP_ARCH_H__ + +/* + * Note: use #ifndef __ASSEMBLY__ around any struct definitions or other C code + * since this file can be included from assembly. + */ + +#include <asm/arch/fsp/fsp_vpd.h> +#include <asm/arch/fsp/fsp_configs.h> + +#endif

This header file is different for each version of FSP. Move it into the fsp_arch.h header file.
Signed-off-by: Simon Glass sjg@chromium.org Reviewed-by: Bin Meng bmeng.cn@gmail.com ---
Changes in v2: None
arch/x86/include/asm/fsp1/fsp_support.h | 1 - arch/x86/include/asm/fsp_arch.h | 1 + 2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/include/asm/fsp1/fsp_support.h b/arch/x86/include/asm/fsp1/fsp_support.h index a50a21ca8b..f2ac8acdc9 100644 --- a/arch/x86/include/asm/fsp1/fsp_support.h +++ b/arch/x86/include/asm/fsp1/fsp_support.h @@ -11,7 +11,6 @@ #include "fsp_hob.h" #include "fsp_fv.h" #include "fsp_ffs.h" -#include "fsp_api.h" #include "fsp_infoheader.h" #include "fsp_bootmode.h" #include <asm/fsp_arch.h> diff --git a/arch/x86/include/asm/fsp_arch.h b/arch/x86/include/asm/fsp_arch.h index fb7f9109f7..b223141c44 100644 --- a/arch/x86/include/asm/fsp_arch.h +++ b/arch/x86/include/asm/fsp_arch.h @@ -14,6 +14,7 @@ * since this file can be included from assembly. */
+#include <asm/fsp1/fsp_api.h> #include <asm/arch/fsp/fsp_vpd.h> #include <asm/arch/fsp/fsp_configs.h>

This header file is the same for FSP v1 and v2. Move it into the general fsp directory.
Signed-off-by: Simon Glass sjg@chromium.org Reviewed-by: Bin Meng bmeng.cn@gmail.com ---
Changes in v2: None
arch/x86/include/asm/{fsp1 => fsp}/fsp_types.h | 0 arch/x86/include/asm/fsp1/fsp_support.h | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename arch/x86/include/asm/{fsp1 => fsp}/fsp_types.h (100%)
diff --git a/arch/x86/include/asm/fsp1/fsp_types.h b/arch/x86/include/asm/fsp/fsp_types.h similarity index 100% rename from arch/x86/include/asm/fsp1/fsp_types.h rename to arch/x86/include/asm/fsp/fsp_types.h diff --git a/arch/x86/include/asm/fsp1/fsp_support.h b/arch/x86/include/asm/fsp1/fsp_support.h index f2ac8acdc9..c55119448b 100644 --- a/arch/x86/include/asm/fsp1/fsp_support.h +++ b/arch/x86/include/asm/fsp1/fsp_support.h @@ -7,7 +7,7 @@ #ifndef __FSP_SUPPORT_H__ #define __FSP_SUPPORT_H__
-#include "fsp_types.h" +#include <asm/fsp/fsp_types.h> #include "fsp_hob.h" #include "fsp_fv.h" #include "fsp_ffs.h"

This header file is the same for FSP v1 and v2. Move it into the general fsp directory.
Signed-off-by: Simon Glass sjg@chromium.org Reviewed-by: Bin Meng bmeng.cn@gmail.com ---
Changes in v2: None
arch/x86/include/asm/{fsp1 => fsp}/fsp_fv.h | 0 arch/x86/include/asm/fsp1/fsp_support.h | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename arch/x86/include/asm/{fsp1 => fsp}/fsp_fv.h (100%)
diff --git a/arch/x86/include/asm/fsp1/fsp_fv.h b/arch/x86/include/asm/fsp/fsp_fv.h similarity index 100% rename from arch/x86/include/asm/fsp1/fsp_fv.h rename to arch/x86/include/asm/fsp/fsp_fv.h diff --git a/arch/x86/include/asm/fsp1/fsp_support.h b/arch/x86/include/asm/fsp1/fsp_support.h index c55119448b..f0f1cea599 100644 --- a/arch/x86/include/asm/fsp1/fsp_support.h +++ b/arch/x86/include/asm/fsp1/fsp_support.h @@ -7,9 +7,9 @@ #ifndef __FSP_SUPPORT_H__ #define __FSP_SUPPORT_H__
+#include <asm/fsp/fsp_fv.h> #include <asm/fsp/fsp_types.h> #include "fsp_hob.h" -#include "fsp_fv.h" #include "fsp_ffs.h" #include "fsp_infoheader.h" #include "fsp_bootmode.h"

This header file is the same for FSP v1 and v2. Move it into the general fsp directory.
Signed-off-by: Simon Glass sjg@chromium.org Reviewed-by: Bin Meng bmeng.cn@gmail.com ---
Changes in v2: None
arch/x86/include/asm/{fsp1 => fsp}/fsp_hob.h | 0 arch/x86/include/asm/{fsp1 => fsp}/fsp_infoheader.h | 0 arch/x86/include/asm/fsp1/fsp_support.h | 1 + 3 files changed, 1 insertion(+) rename arch/x86/include/asm/{fsp1 => fsp}/fsp_hob.h (100%) rename arch/x86/include/asm/{fsp1 => fsp}/fsp_infoheader.h (100%)
diff --git a/arch/x86/include/asm/fsp1/fsp_hob.h b/arch/x86/include/asm/fsp/fsp_hob.h similarity index 100% rename from arch/x86/include/asm/fsp1/fsp_hob.h rename to arch/x86/include/asm/fsp/fsp_hob.h diff --git a/arch/x86/include/asm/fsp1/fsp_infoheader.h b/arch/x86/include/asm/fsp/fsp_infoheader.h similarity index 100% rename from arch/x86/include/asm/fsp1/fsp_infoheader.h rename to arch/x86/include/asm/fsp/fsp_infoheader.h diff --git a/arch/x86/include/asm/fsp1/fsp_support.h b/arch/x86/include/asm/fsp1/fsp_support.h index f0f1cea599..91ba48f94a 100644 --- a/arch/x86/include/asm/fsp1/fsp_support.h +++ b/arch/x86/include/asm/fsp1/fsp_support.h @@ -8,6 +8,7 @@ #define __FSP_SUPPORT_H__
#include <asm/fsp/fsp_fv.h> +#include <asm/fsp/fsp_hob.h> #include <asm/fsp/fsp_types.h> #include "fsp_hob.h" #include "fsp_ffs.h"

This header file is the same for FSP v1 and v2. Move it into the general fsp directory.
Signed-off-by: Simon Glass sjg@chromium.org Reviewed-by: Bin Meng bmeng.cn@gmail.com ---
Changes in v2: None
arch/x86/include/asm/fsp1/fsp_support.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/include/asm/fsp1/fsp_support.h b/arch/x86/include/asm/fsp1/fsp_support.h index 91ba48f94a..9543b8b563 100644 --- a/arch/x86/include/asm/fsp1/fsp_support.h +++ b/arch/x86/include/asm/fsp1/fsp_support.h @@ -9,10 +9,10 @@
#include <asm/fsp/fsp_fv.h> #include <asm/fsp/fsp_hob.h> +#include <asm/fsp/fsp_infoheader.h> #include <asm/fsp/fsp_types.h> #include "fsp_hob.h" #include "fsp_ffs.h" -#include "fsp_infoheader.h" #include "fsp_bootmode.h" #include <asm/fsp_arch.h> #include <asm/fsp/fsp_azalia.h>

This header file is the same for FSP v1 and v2, although there may be some additions to come. Move it into the generic fsp directory.
Signed-off-by: Simon Glass sjg@chromium.org Reviewed-by: Bin Meng bmeng.cn@gmail.com ---
Changes in v2: None
arch/x86/include/asm/{fsp1 => fsp}/fsp_bootmode.h | 0 arch/x86/include/asm/fsp1/fsp_support.h | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) rename arch/x86/include/asm/{fsp1 => fsp}/fsp_bootmode.h (100%)
diff --git a/arch/x86/include/asm/fsp1/fsp_bootmode.h b/arch/x86/include/asm/fsp/fsp_bootmode.h similarity index 100% rename from arch/x86/include/asm/fsp1/fsp_bootmode.h rename to arch/x86/include/asm/fsp/fsp_bootmode.h diff --git a/arch/x86/include/asm/fsp1/fsp_support.h b/arch/x86/include/asm/fsp1/fsp_support.h index 9543b8b563..d0f053fea4 100644 --- a/arch/x86/include/asm/fsp1/fsp_support.h +++ b/arch/x86/include/asm/fsp1/fsp_support.h @@ -7,13 +7,12 @@ #ifndef __FSP_SUPPORT_H__ #define __FSP_SUPPORT_H__
+#include <asm/fsp/fsp_bootmode.h> #include <asm/fsp/fsp_fv.h> #include <asm/fsp/fsp_hob.h> #include <asm/fsp/fsp_infoheader.h> #include <asm/fsp/fsp_types.h> -#include "fsp_hob.h" #include "fsp_ffs.h" -#include "fsp_bootmode.h" #include <asm/fsp_arch.h> #include <asm/fsp/fsp_azalia.h>

This include file is only used for FSP v1. Avoid including it from fdt_support.h so we can use the latter with FSP v2.
Signed-off-by: Simon Glass sjg@chromium.org Reviewed-by: Bin Meng bmeng.cn@gmail.com ---
Changes in v2: None
arch/x86/include/asm/fsp_arch.h | 1 + 1 file changed, 1 insertion(+)
diff --git a/arch/x86/include/asm/fsp_arch.h b/arch/x86/include/asm/fsp_arch.h index b223141c44..3b2077b392 100644 --- a/arch/x86/include/asm/fsp_arch.h +++ b/arch/x86/include/asm/fsp_arch.h @@ -15,6 +15,7 @@ */
#include <asm/fsp1/fsp_api.h> +#include <asm/fsp1/fsp_ffs.h> #include <asm/arch/fsp/fsp_vpd.h> #include <asm/arch/fsp/fsp_configs.h>
participants (2)
-
Bin Meng
-
Simon Glass