summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNamyoon Woo <namyoon@chromium.org>2018-10-10 10:59:33 -0700
committerchrome-bot <chrome-bot@chromium.org>2018-10-11 13:25:51 -0700
commit873e7cd05bd379c4a082a2a99ad8690fa415e172 (patch)
tree272698869385ee554c964844519b0690eedc2167
parent125ca6432b09156967bdfa62aa5af6f91ab2cc6c (diff)
downloadchrome-ec-873e7cd05bd379c4a082a2a99ad8690fa415e172.tar.gz
cr50: minor code revision with macros regarding CCD capabilities.
Defined "Number of bits in CCD cap expression", "Bitmask for a CCD cap expression", and "Number of CCD cap expressions in a Byte," and replaced constant uses with macros in CR50 and gsctool codes. No binary size changes in either CR50 or gsctool. BRANCH=cr50_ccd BUG=none TEST=manually tested with gsctool -I and CR50 console command 'ccd'. Signed-off-by: Namyoon Woo <namyoon@chromium.org> Change-Id: If91305090444395b6a938f920f4e47e2acbba886 Reviewed-on: https://chromium-review.googlesource.com/1274007 Commit-Ready: Namyoon Woo <namyoon@chromium.org> Tested-by: Namyoon Woo <namyoon@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
-rw-r--r--common/ccd_config.c16
-rw-r--r--extra/usb_updater/gsctool.c10
-rw-r--r--include/ccd_config.h5
3 files changed, 22 insertions, 9 deletions
diff --git a/common/ccd_config.c b/common/ccd_config.c
index 98bcae48d2..fa7c1cb133 100644
--- a/common/ccd_config.c
+++ b/common/ccd_config.c
@@ -162,7 +162,10 @@ static void raw_set_flag(enum ccd_flag flag, int value)
static enum ccd_capability_state raw_get_cap(enum ccd_capability cap,
int translate_default)
{
- int c = (config.capabilities[cap / 4] >> (2 * (cap % 4))) & 3;
+ const uint32_t index = cap / CCD_CAPS_PER_BYTE;
+ const uint32_t shift = (cap % CCD_CAPS_PER_BYTE) * CCD_CAP_BITS;
+
+ int c = (config.capabilities[index] >> shift) & CCD_CAP_BITMASK;
if (c == CCD_CAP_STATE_DEFAULT && translate_default)
c = cap_info[cap].default_state;
@@ -182,8 +185,11 @@ static enum ccd_capability_state raw_get_cap(enum ccd_capability cap,
static void raw_set_cap(enum ccd_capability cap,
enum ccd_capability_state state)
{
- config.capabilities[cap / 4] &= ~(3 << (2 * (cap % 4)));
- config.capabilities[cap / 4] |= (state & 3) << (2 * (cap % 4));
+ const uint32_t index = cap / CCD_CAPS_PER_BYTE;
+ const uint32_t shift = (cap % CCD_CAPS_PER_BYTE) * CCD_CAP_BITS;
+
+ config.capabilities[index] &= ~(CCD_CAP_BITMASK << shift);
+ config.capabilities[index] |= (state & CCD_CAP_BITMASK) << shift;
}
/**
@@ -1312,8 +1318,8 @@ static enum vendor_cmd_rc ccd_get_info(struct vendor_cmd_params *p)
int shift;
/* Each capability takes 2 bits. */
- index = i / (32/2);
- shift = (i % (32/2)) * 2;
+ index = i / (32 / CCD_CAP_BITS);
+ shift = (i % (32 / CCD_CAP_BITS)) * CCD_CAP_BITS;
response.ccd_caps_current[index] |= raw_get_cap(i, 1) << shift;
response.ccd_caps_defaults[index] |=
cap_info[i].default_state << shift;
diff --git a/extra/usb_updater/gsctool.c b/extra/usb_updater/gsctool.c
index 1f53adde16..66b859f675 100644
--- a/extra/usb_updater/gsctool.c
+++ b/extra/usb_updater/gsctool.c
@@ -1532,11 +1532,13 @@ static void print_ccd_info(void *response, size_t response_size)
int cap_current;
int cap_default;
- index = i / (32/2);
- shift = (i % (32/2)) * 2;
+ index = i / (32 / CCD_CAP_BITS);
+ shift = (i % (32 / CCD_CAP_BITS)) * CCD_CAP_BITS;
- cap_current = (ccd_info.ccd_caps_current[index] >> shift) & 3;
- cap_default = (ccd_info.ccd_caps_defaults[index] >> shift) & 3;
+ cap_current = (ccd_info.ccd_caps_current[index] >> shift)
+ & CCD_CAP_BITMASK;
+ cap_default = (ccd_info.ccd_caps_defaults[index] >> shift)
+ & CCD_CAP_BITMASK;
if (ccd_info.ccd_force_disabled) {
is_enabled = 0;
diff --git a/include/ccd_config.h b/include/ccd_config.h
index 7c377f394f..4cc84ae770 100644
--- a/include/ccd_config.h
+++ b/include/ccd_config.h
@@ -172,6 +172,11 @@ struct ccd_capability_info {
#define CCD_STATE_NAMES { "Locked", "Unlocked", "Opened" }
#define CCD_CAP_STATE_NAMES { "Default", "Always", "UnlessLocked", "IfOpened" }
+/* Macros regarding ccd_capabilities */
+#define CCD_CAP_BITS 2
+#define CCD_CAP_BITMASK ((1 << CCD_CAP_BITS) - 1)
+#define CCD_CAPS_PER_BYTE (8 / CCD_CAP_BITS)
+
/*
* Subcommand code, used to pass different CCD commands using the same TPM
* vendor command.