Files
OpenCellular/include/config_std_internal_flash.h
Shawn Nematbakhsh d58e54730c cleanup: Rename geometry constants
Rename and add geometry constants to match spec doc -
https://goo.gl/fnzTvr.

CONFIG_FLASH_BASE becomes CONFIG_PROGRAM_MEMORY_BASE
CONFIG_FLASH_MAPPED becomes CONFIG_MAPPED_STORAGE

Add CONFIG_INTERNAL_STORAGE, CONFIG_EXTERNAL_STORAGE and
CONFIG_MAPPED_STORAGE_BASE where appropriate.

This CL leaves chip/npcx in a broken state -- it's fixed in a follow-up
CL.

BRANCH=None
BUG=chrome-os-partner:23796
TEST=With entire patch series, on both Samus and Glados:
- Verify 'version' EC console command is correct
- Verify 'flashrom -p ec -r read.bin' reads back EC image
- Verify software sync correctly flashes both EC and PD RW images

Change-Id: Idb3c4ed9f7f6edd0a6d49ad11753eba713e67a80
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/297484
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2015-09-16 14:49:31 -07:00

78 lines
2.8 KiB
C

/* Copyright 2015 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef __CROS_EC_CONFIG_STD_INTERNAL_FLASH_H
#define __CROS_EC_CONFIG_STD_INTERNAL_FLASH_H
/*
* Standard memory-mapped flash layout:
* - RO image starts at the beginning of flash.
* - PSTATE immediately follows the RO image.
* - RW image starts at the second half of flash.
* - Protected region consists of the first half of flash (RO image + PSTATE).
* - Unprotected region consists of second half of flash (RW image).
*
* PSTATE
* |
* v
* |<-----Protected Region------>|<------Unprotected Region----->|
* |<--------RO image--------->| |<----------RW image----------->|
* 0 N/2 N
*
* This layout is used by several supported chips. Chips which do not use
* this layout MUST NOT include this header file, and must instead define
* the configs below in a chip-level header file (config_flash_layout.h).
*
* See the following page for additional image geometry discussion:
*
* https://www.chromium.org/chromium-os/ec-development/ec-image-geometry-spec
*
* TODO(crosbug.com/p/23796): Finish implementing the spec.
*/
/* Memory-mapped internal flash w/ PSTATE */
#define CONFIG_INTERNAL_STORAGE
#define CONFIG_MAPPED_STORAGE
#define CONFIG_FLASH_PSTATE
/* Program is run directly from storage */
#define CONFIG_MAPPED_STORAGE_BASE CONFIG_PROGRAM_MEMORY_BASE
/*
* The EC uses the one bank of flash to emulate a SPI-like write protect
* register with persistent state.
*/
#define CONFIG_FW_PSTATE_SIZE CONFIG_FLASH_BANK_SIZE
#define CONFIG_FW_PSTATE_OFF (CONFIG_FW_IMAGE_SIZE - CONFIG_FW_PSTATE_SIZE)
/* Size of one firmware image in flash */
#define CONFIG_FW_IMAGE_SIZE ((CONFIG_FLASH_PHYSICAL_SIZE - \
CONFIG_SHAREDLIB_SIZE) / 2)
#define CONFIG_FLASH_SIZE CONFIG_FLASH_PHYSICAL_SIZE
/*
* By default, there is no shared objects library. However, if configured, the
* shared objects library will be placed after the RO image.
*/
#define CONFIG_SHAREDLIB_MEM_OFF (CONFIG_RO_MEM_OFF + \
CONFIG_FW_IMAGE_SIZE)
#define CONFIG_SHAREDLIB_STORAGE_OFF (CONFIG_RO_STORAGE_OFF + \
CONFIG_FW_IMAGE_SIZE)
#define CONFIG_SHAREDLIB_SIZE 0
#define CONFIG_RO_MEM_OFF 0
#define CONFIG_RO_STORAGE_OFF 0
#define CONFIG_RO_SIZE (CONFIG_FW_IMAGE_SIZE - CONFIG_FW_PSTATE_SIZE)
#define CONFIG_RW_MEM_OFF (CONFIG_SHAREDLIB_MEM_OFF + \
CONFIG_SHAREDLIB_SIZE)
#define CONFIG_RW_STORAGE_OFF (CONFIG_SHAREDLIB_STORAGE_OFF + \
CONFIG_SHAREDLIB_SIZE)
#define CONFIG_RW_SIZE CONFIG_FW_IMAGE_SIZE
#define CONFIG_WP_OFF CONFIG_RO_STORAGE_OFF
#define CONFIG_WP_SIZE CONFIG_FW_IMAGE_SIZE
#endif /* __CROS_EC_CONFIG_STD_INTERNAL_FLASH_H */