1 ## SPDX-License-Identifier: GPL-2.0-only
2 bootblock-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi.c
3 bootblock-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi_flash.c
5 verstage-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi.c
6 verstage-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi_flash.c
8 romstage-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi.c
9 romstage-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi_flash.c
11 ramstage-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi.c
12 ramstage-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi_flash.c
14 postcar-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi.c
15 postcar-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi_flash.c
17 smm-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi.c
18 ifeq ($(CONFIG_SPI_FLASH_SMM
),y
)
19 smm-
$(CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI
) += fast_spi_flash.c
22 CPPFLAGS_common
+= -I
$(src
)/soc
/intel
/common
/block
/fast_spi
24 ifeq ($(CONFIG_FAST_SPI_SUPPORTS_EXT_BIOS_WINDOW
),y
)
26 # mmap_boot.c provides a custom boot media device for the platforms that support
27 # additional window for BIOS regions greater than 16MiB. This is used instead of
28 # the default boot media device in arch/x86/mmap_boot.c
29 bootblock-y
+= mmap_boot.c
30 verstage-y
+= mmap_boot.c
31 romstage-y
+= mmap_boot.c
32 postcar-y
+= mmap_boot.c
33 ramstage-y
+= mmap_boot.c
36 # When using extended BIOS window, no sub-region within the BIOS region must
37 # cross 16MiB boundary from the end of the BIOS region. This is because the
38 # top 16MiB of the BIOS region are decoded by the standard window from
39 # (4G - 16M) to 4G. There is no standard section name that identifies the BIOS
40 # region in flashmap. This check assumes that BIOS region is placed at the top
41 # of SPI flash and hence calculates the boundary as flash_size - 16M. If any
42 # region within the SPI flash crosses this boundary, then the check complains
45 $(call add_intermediate
, check-fmap-16mib-crossing
, $(obj
)/fmap_config.h
)
46 fmap_get
() { awk
"/$$1/ { print \$$NF }" < $<; }; \
48 flash_offset
=$$(fmap_get FMAP_SECTION_FLASH_START
); \
49 flash_size
=$$(fmap_get FMAP_SECTION_FLASH_SIZE
); \
50 if
[ $$((flash_size
)) -le
$$((0x1000000)) ]; then \
53 bios_16M_boundary
=$$((flash_size-0x1000000
)); \
54 for x in
$$(grep
"FMAP_TERMINAL_SECTIONS" < $< | cut
-d
\" -f2
); \
56 start
=$$(fmap_get
"FMAP_SECTION_$${x}_START"); \
57 size
=$$(fmap_get
"FMAP_SECTION_$${x}_SIZE"); \
58 start
=$$((start-flash_offset
)); \
59 end
=$$((start
+size-1
)); \
60 if
[ $$((start
)) -lt
$$((bios_16M_boundary
)) ] && \
61 [ $$((end
)) -ge
$$((bios_16M_boundary
)) ]; \
63 echo
"ERROR: $$x crosses 16MiB boundary"; \
70 # If the platform supports extended window and the SPI flash size is greater
71 # than 16MiB, then create a mapping for the extended window as well.
72 # The assumptions here are:
73 # 1. Top 16MiB is still decoded in the fixed decode window just below 4G
75 # 2. Rest of the SPI flash below the top 16MiB is mapped at the top of extended
76 # window. Even though the platform might support a larger extended window, the
77 # SPI flash part used by the mainboard might not be large enough to be mapped
78 # in the entire window. In such cases, the mapping is assumed to be in the top
79 # part of the extended window with the bottom part remaining unused.
82 # ext_win_base = 0xF8000000
83 # ext_win_size = 32 # MiB
84 # ext_win_limit = ext_win_base + ext_win_size - 1 = 0xF9FFFFFF
86 # If SPI flash is 32MiB, then top 16MiB is mapped from 0xFF000000 - 0xFFFFFFFF
87 # whereas the bottom 16MiB is mapped from 0xF9000000 - 0xF9FFFFFF. The extended
88 # window 0xF8000000 - 0xF8FFFFFF remains unused.
91 ifeq ($(call int-gt
, $(CONFIG_ROM_SIZE
) 0x1000000), 1)
92 DEFAULT_WINDOW_SIZE
=0x1000000
93 DEFAULT_WINDOW_FLASH_BASE
=$(call int-subtract
, $(CONFIG_ROM_SIZE
) $(DEFAULT_WINDOW_SIZE
))
94 DEFAULT_WINDOW_MMIO_BASE
=0xff000000
95 EXT_WINDOW_FLASH_BASE
=0
96 EXT_WINDOW_SIZE
=$(DEFAULT_WINDOW_FLASH_BASE
)
97 EXT_WINDOW_MMIO_BASE
=$(call int-subtract
, $(call int-add
, $(CONFIG_EXT_BIOS_WIN_BASE
) $(CONFIG_EXT_BIOS_WIN_SIZE
)) \
99 CBFSTOOL_ADD_CMD_OPTIONS
+= --mmap
$(DEFAULT_WINDOW_FLASH_BASE
):$(DEFAULT_WINDOW_MMIO_BASE
):$(DEFAULT_WINDOW_SIZE
)
100 CBFSTOOL_ADD_CMD_OPTIONS
+= --mmap
$(EXT_WINDOW_FLASH_BASE
):$(EXT_WINDOW_MMIO_BASE
):$(EXT_WINDOW_SIZE
)
104 endif # CONFIG_FAST_SPI_SUPPORTS_EXT_BIOS_WINDOW