summaryrefslogtreecommitdiff
path: root/include/chromeos
diff options
context:
space:
mode:
authorGabe Black <gabeblack@chromium.org>2011-09-02 20:54:01 -0700
committerGabe Black <gabeblack@chromium.org>2011-09-14 18:42:04 -0700
commit8e93aec313c2807704b14fbd21123a9ffc86a087 (patch)
tree1d3dc2cc288015ff0f0cb1e282faa1f7ed3caffd /include/chromeos
parent7e8332ca253ff564aa2975461ee4a5a53312d558 (diff)
Add support for a bios-base device tree/flashmap setting
This setting specifies where the bios image described by the "flash" section starts in the ROM. When the device tree is consumed by u-boot, this value is added to the given offset of accesses to the flash so that it ends up in the right place in the ROM. The binary fmap will reflect that address directly so that tools like flashrom can use it without modification. By not modifying the locations of the sections in the "flash" node of the device tree directly, we can continue to share definitions between boards that have the same layout for the BIOS image itself but who may be offset differently in the ROM. If not present, a default value of 0 is used. Unmodified device trees will continue to behave like they always have. The name bios-base isn't perfect since on ARM there is no bios. Another alternative firmware-base is also flawed because there are multiple firmwares in the ROM on x86. Yet another option, flashmap-base, doesn't quite work either because flashmap already has a very similarly named field which describes where the image described by the flashmap appears in the physical address space. Because bios-base fits the best on x86 and x86 is currently the only place it's used, that's the name I went with. BUG=chrome-os-partner:5844 TEST=Used this and other changes to compensate for the image offset and vboot on stumpy. Vbooted on x86-alex. Built with vboot_test and vbexport_test built in to verify that they still compile. Change-Id: Ie727fc2db27f7d0db8ebf7ed2b98bc97052b4923 Signed-off-by: Gabe Black <gabeblack@google.com> Reviewed-on: http://gerrit.chromium.org/gerrit/7239 Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Gabe Black <gabeblack@chromium.org>
Diffstat (limited to 'include/chromeos')
-rw-r--r--include/chromeos/firmware_storage.h5
-rw-r--r--include/chromeos/fmap.h2
2 files changed, 6 insertions, 1 deletions
diff --git a/include/chromeos/firmware_storage.h b/include/chromeos/firmware_storage.h
index 2ef6e2b034..5f13bb36bd 100644
--- a/include/chromeos/firmware_storage.h
+++ b/include/chromeos/firmware_storage.h
@@ -26,6 +26,8 @@
* @return 0 if it succeeds, non-zero if it fails
*/
typedef struct firmware_storage_t {
+ /* The offset of the firmware image inside the ROM. */
+ uint32_t firmware_base;
int (*read)(struct firmware_storage_t *file,
uint32_t offset, uint32_t count, void *buf);
int (*write)(struct firmware_storage_t *file,
@@ -39,9 +41,10 @@ typedef struct firmware_storage_t {
* This opens SPI flash device
*
* @param file - the opened SPI flash device
+ * @param firmware_base - the offset of the firmware in the ROM
* @return 0 if it succeeds, non-zero if it fails
*/
-int firmware_storage_open_spi(firmware_storage_t *file);
+int firmware_storage_open_spi(firmware_storage_t *file, uint64_t firmware_base);
int firmware_storage_open_twostop(firmware_storage_t *file,
struct twostop_fmap *fmap);
diff --git a/include/chromeos/fmap.h b/include/chromeos/fmap.h
index 13eb3d80bb..3c9db3e604 100644
--- a/include/chromeos/fmap.h
+++ b/include/chromeos/fmap.h
@@ -40,6 +40,8 @@ struct twostop_fmap {
struct fmap_firmware_entry readwrite_a;
struct fmap_firmware_entry readwrite_b;
+
+ uint64_t firmware_base;
};
void dump_fmap(struct twostop_fmap *config);