diff options
author | Namyoon Woo <namyoon@chromium.org> | 2018-10-10 10:59:33 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-10-11 13:25:51 -0700 |
commit | 873e7cd05bd379c4a082a2a99ad8690fa415e172 (patch) | |
tree | 272698869385ee554c964844519b0690eedc2167 | |
parent | 125ca6432b09156967bdfa62aa5af6f91ab2cc6c (diff) | |
download | chrome-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.c | 16 | ||||
-rw-r--r-- | extra/usb_updater/gsctool.c | 10 | ||||
-rw-r--r-- | include/ccd_config.h | 5 |
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. |