aboutsummaryrefslogtreecommitdiff
path: root/src/cpu
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu')
-rw-r--r--src/cpu/allwinner/a10/bootblock_media.c8
-rw-r--r--src/cpu/amd/microcode/microcode.c4
-rw-r--r--src/cpu/intel/microcode/microcode.c18
-rw-r--r--src/cpu/ti/am335x/bootblock_media.c71
-rw-r--r--src/cpu/ti/am335x/nand.c8
-rw-r--r--src/cpu/via/nano/update_ucode.c5
6 files changed, 19 insertions, 95 deletions
diff --git a/src/cpu/allwinner/a10/bootblock_media.c b/src/cpu/allwinner/a10/bootblock_media.c
index a585bcaaa8..17c6039bb6 100644
--- a/src/cpu/allwinner/a10/bootblock_media.c
+++ b/src/cpu/allwinner/a10/bootblock_media.c
@@ -5,16 +5,10 @@
* Subject to the GNU GPL v2, or (at your option) any later version.
*/
#include <boot_device.h>
-#include <cbfs.h>
#include <console/console.h>
const struct region_device *boot_device_ro(void)
{
- return NULL;
-}
-
-int init_default_cbfs_media(struct cbfs_media *media)
-{
printk(BIOS_ERR, "Oh my! I don't know how to access CBFS yet.");
- return -1;
+ return NULL;
}
diff --git a/src/cpu/amd/microcode/microcode.c b/src/cpu/amd/microcode/microcode.c
index 8e3f4de3e3..45e4bf0a52 100644
--- a/src/cpu/amd/microcode/microcode.c
+++ b/src/cpu/amd/microcode/microcode.c
@@ -105,8 +105,8 @@ void amd_update_microcode_from_cbfs(u32 equivalent_processor_rev_id)
return;
}
- ucode = cbfs_get_file_content(CBFS_DEFAULT_MEDIA, MICROCODE_CBFS_FILE,
- CBFS_TYPE_MICROCODE, &ucode_len);
+ ucode = cbfs_boot_map_with_leak(MICROCODE_CBFS_FILE,
+ CBFS_TYPE_MICROCODE, &ucode_len);
if (!ucode) {
UCODE_DEBUG("microcode file not found. Skipping updates.\n");
return;
diff --git a/src/cpu/intel/microcode/microcode.c b/src/cpu/intel/microcode/microcode.c
index 88435cc9b5..3492bfd6c9 100644
--- a/src/cpu/intel/microcode/microcode.c
+++ b/src/cpu/intel/microcode/microcode.c
@@ -109,25 +109,29 @@ void intel_microcode_load_unlocked(const void *microcode_patch)
const void *intel_microcode_find(void)
{
- struct cbfs_file *microcode_file;
const struct microcode *ucode_updates;
- u32 eax, microcode_len;
+ size_t microcode_len;
+ u32 eax;
u32 pf, rev, sig, update_size;
unsigned int x86_model, x86_family;
msr_t msr;
#ifdef __PRE_RAM__
- microcode_file = walkcbfs_head((char *) MICROCODE_CBFS_FILE);
-#else
- microcode_file = cbfs_get_file(CBFS_DEFAULT_MEDIA,
- MICROCODE_CBFS_FILE);
-#endif
+ struct cbfs_file *microcode_file;
+ microcode_file = walkcbfs_head((char *) MICROCODE_CBFS_FILE);
if (!microcode_file)
return NULL;
ucode_updates = CBFS_SUBHEADER(microcode_file);
microcode_len = ntohl(microcode_file->len);
+#else
+ ucode_updates = cbfs_boot_map_with_leak(MICROCODE_CBFS_FILE,
+ CBFS_TYPE_MICROCODE,
+ &microcode_len);
+ if (ucode_updates == NULL)
+ return NULL;
+#endif
/* CPUID sets MSR 0x8B iff a microcode update has been loaded. */
msr.lo = 0;
diff --git a/src/cpu/ti/am335x/bootblock_media.c b/src/cpu/ti/am335x/bootblock_media.c
index 79724eea5d..0a8ccb696c 100644
--- a/src/cpu/ti/am335x/bootblock_media.c
+++ b/src/cpu/ti/am335x/bootblock_media.c
@@ -18,80 +18,13 @@
*/
#include <boot_device.h>
-#include <cbfs.h>
-#include <console/console.h>
-#include <string.h>
#include <symbols.h>
/* FIXME: No idea how big the internal SRAM actually is. */
-static const struct mem_region_device gboot_dev =
+static const struct mem_region_device boot_dev =
MEM_REGION_DEV_INIT(_dram, CONFIG_ROM_SIZE);
const struct region_device *boot_device_ro(void)
{
- return &gboot_dev.rdev;
-}
-
-static int dummy_open(struct cbfs_media *media)
-{
- return 0;
-}
-
-static int dummy_close(struct cbfs_media *media)
-{
- return 0;
-}
-
-static void * on_chip_memory_map(struct cbfs_media *media, size_t offset,
- size_t count)
-{
- const struct region_device *boot_dev;
- void *ptr;
-
- boot_dev = media->context;
-
- ptr = rdev_mmap(boot_dev, offset, count);
-
- if (ptr == NULL)
- return (void *)-1;
-
- return ptr;
-}
-
-static void * dummy_unmap(struct cbfs_media *media, const void *address)
-{
- const struct region_device *boot_dev;
-
- boot_dev = media->context;
-
- rdev_munmap(boot_dev, (void *)address);
-
- return NULL;
-}
-
-static size_t on_chip_memory_read(struct cbfs_media *media, void *dest,
- size_t offset, size_t count)
-{
- const struct region_device *boot_dev;
-
- boot_dev = media->context;
-
- if (rdev_readat(boot_dev, dest, offset, count) < 0)
- return 0;
-
- return count;
-}
-
-int init_default_cbfs_media(struct cbfs_media *media)
-{
- boot_device_init();
-
- media->context = (void *)boot_device_ro();
- media->open = dummy_open;
- media->close = dummy_close;
- media->map = on_chip_memory_map;
- media->unmap = dummy_unmap;
- media->read = on_chip_memory_read;
-
- return 0;
+ return &boot_dev.rdev;
}
diff --git a/src/cpu/ti/am335x/nand.c b/src/cpu/ti/am335x/nand.c
index dd05fb6dee..4ac359da59 100644
--- a/src/cpu/ti/am335x/nand.c
+++ b/src/cpu/ti/am335x/nand.c
@@ -18,15 +18,9 @@
*/
#include <boot_device.h>
-#include <cbfs.h>
const struct region_device *boot_device_ro(void)
{
- return NULL;
-}
-
-int init_default_cbfs_media(struct cbfs_media *media)
-{
/* FIXME: add support for reading coreboot from NAND */
- return -1;
+ return NULL;
}
diff --git a/src/cpu/via/nano/update_ucode.c b/src/cpu/via/nano/update_ucode.c
index aa0adeb8dc..a69a29107b 100644
--- a/src/cpu/via/nano/update_ucode.c
+++ b/src/cpu/via/nano/update_ucode.c
@@ -110,9 +110,8 @@ unsigned int nano_update_ucode(void)
u32 *ucode_data;
size_t ucode_len;
- ucode_data = cbfs_get_file_content(CBFS_DEFAULT_MEDIA,
- "cpu_microcode_blob.bin",
- CBFS_TYPE_MICROCODE, &ucode_len);
+ ucode_data = cbfs_boot_map_with_leak("cpu_microcode_blob.bin",
+ CBFS_TYPE_MICROCODE, &ucode_len);
/* Oops, did you forget to include the microcode ? */
if(ucode_data == NULL) {
printk(BIOS_ALERT, "WARNING: No microcode file found in CBFS. "