summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2017-09-07 14:44:55 -0700
committerchrome-bot <chrome-bot@chromium.org>2017-09-09 02:26:16 -0700
commit5da63f4ea2c93e6b059d8c50ff01dbe53a13dec2 (patch)
treeae2417b2411abe87ef47d8b994ddc23ff288bccb /common
parent103108ec216e67a4937d9a51f7134d4923dd31f5 (diff)
downloadchrome-ec-5da63f4ea2c93e6b059d8c50ff01dbe53a13dec2.tar.gz
Treat SYSTEM_IMAGE_RW_B also as RW copy
SYSTEM_IMAGE_RW_B hasn't been globally treated as a RW copy. This change makes EC treat it also as a RW copy. BUG=none BRANCH=none TEST=make buildall Change-Id: Iae5a9090cdf30f980014daca44cdf8f2a65ea1f2 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/656337 Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/flash.c2
-rw-r--r--common/system.c14
-rw-r--r--common/usb_pd_protocol.c2
3 files changed, 14 insertions, 4 deletions
diff --git a/common/flash.c b/common/flash.c
index 3101a766bd..36c4701264 100644
--- a/common/flash.c
+++ b/common/flash.c
@@ -368,7 +368,7 @@ static const uintptr_t get_pstate_addr(void)
uintptr_t addr = (uintptr_t)&pstate_data;
/* Always use the pstate data in RO, even if we're RW */
- if (system_get_image_copy() == SYSTEM_IMAGE_RW)
+ if (system_is_in_rw())
addr += CONFIG_RO_MEM_OFF - CONFIG_RW_MEM_OFF;
return addr;
diff --git a/common/system.c b/common/system.c
index 716053a870..db6ab782f6 100644
--- a/common/system.c
+++ b/common/system.c
@@ -497,6 +497,16 @@ static void jump_to_image(uintptr_t init_addr)
resetvec();
}
+static int is_rw_image(enum system_image_copy_t copy)
+{
+ return copy == SYSTEM_IMAGE_RW || copy == SYSTEM_IMAGE_RW_B;
+}
+
+int system_is_in_rw(void)
+{
+ return is_rw_image(system_get_image_copy());
+}
+
int system_run_image_copy(enum system_image_copy_t copy)
{
uintptr_t base;
@@ -515,7 +525,7 @@ int system_run_image_copy(enum system_image_copy_t copy)
return EC_ERROR_ACCESS_DENIED;
/* Target image must be RW image */
- if (copy != SYSTEM_IMAGE_RW)
+ if (!is_rw_image(copy))
return EC_ERROR_ACCESS_DENIED;
/* Jumping must still be enabled */
@@ -588,7 +598,7 @@ static const struct image_data *system_get_image_data(
* Read the version information from the proper location
* on storage.
*/
- addr += (copy == SYSTEM_IMAGE_RW) ?
+ addr += (is_rw_image(copy)) ?
CONFIG_EC_WRITABLE_STORAGE_OFF + CONFIG_RW_STORAGE_OFF :
CONFIG_EC_PROTECTED_STORAGE_OFF + CONFIG_RO_STORAGE_OFF;
diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c
index 021839d68c..675d069472 100644
--- a/common/usb_pd_protocol.c
+++ b/common/usb_pd_protocol.c
@@ -1629,7 +1629,7 @@ static void pd_init_tasks(void)
enable = 0;
#elif defined(CONFIG_USB_PD_COMM_LOCKED)
/* Disable PD communication at init if we're in RO and locked. */
- if (system_get_image_copy() != SYSTEM_IMAGE_RW && system_is_locked())
+ if (!system_is_in_rw() && system_is_locked())
enable = 0;
#endif
for (i = 0; i < CONFIG_USB_PD_PORT_COUNT; i++)