summaryrefslogtreecommitdiff
path: root/src/soc
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc')
-rw-r--r--src/soc/intel/apollolake/mmap_boot.c12
-rw-r--r--src/soc/intel/common/block/fast_spi/mmap_boot.c24
2 files changed, 36 insertions, 0 deletions
diff --git a/src/soc/intel/apollolake/mmap_boot.c b/src/soc/intel/apollolake/mmap_boot.c
index 79c2a0716b..23c819e3a0 100644
--- a/src/soc/intel/apollolake/mmap_boot.c
+++ b/src/soc/intel/apollolake/mmap_boot.c
@@ -5,6 +5,7 @@
#include <console/console.h>
#include <fmap.h>
#include <intelblocks/fast_spi.h>
+#include <spi_flash.h>
/*
* BIOS region on the flash is mapped right below 4GiB in the address
@@ -91,3 +92,14 @@ const struct region_device *boot_device_ro(void)
return &real_dev.rdev;
}
+
+uint32_t spi_flash_get_mmap_windows(struct flash_mmap_window *table)
+{
+ bios_mmap_init();
+
+ table->flash_base = region_offset(&real_dev_window.sub_region);
+ table->host_base = (uintptr_t)rdev_mmap_full(&shadow_dev.rdev);
+ table->size = region_sz(&real_dev_window.sub_region);
+
+ return 1;
+}
diff --git a/src/soc/intel/common/block/fast_spi/mmap_boot.c b/src/soc/intel/common/block/fast_spi/mmap_boot.c
index 8435a855f5..fa163d7e49 100644
--- a/src/soc/intel/common/block/fast_spi/mmap_boot.c
+++ b/src/soc/intel/common/block/fast_spi/mmap_boot.c
@@ -11,6 +11,7 @@
#include <console/console.h>
#include <fmap.h>
#include <intelblocks/fast_spi.h>
+#include <spi_flash.h>
enum window_type {
/* Fixed decode window of max 16MiB size just below 4G boundary */
@@ -160,3 +161,26 @@ void fast_spi_get_ext_bios_window(uintptr_t *base, size_t *size)
*base = (uintptr_t)rdev_mmap_full(rd);
}
}
+
+uint32_t spi_flash_get_mmap_windows(struct flash_mmap_window *table)
+{
+ int i;
+ uint32_t count = 0;
+
+ bios_mmap_init();
+
+ for (i = 0; i < TOTAL_DECODE_WINDOWS; i++) {
+
+ if (region_sz(&real_dev_windows[i].sub_region) == 0)
+ continue;
+
+ count++;
+ table->flash_base = region_offset(&real_dev_windows[i].sub_region);
+ table->host_base = (uintptr_t)rdev_mmap_full(&shadow_devs[i].rdev);
+ table->size = region_sz(&real_dev_windows[i].sub_region);
+
+ table++;
+ }
+
+ return count;
+}