summaryrefslogtreecommitdiff
path: root/src/drivers/vpd/vpd.c
diff options
context:
space:
mode:
authorHung-Te Lin <hungte@chromium.org>2019-05-27 11:02:00 +0800
committerPatrick Georgi <pgeorgi@google.com>2019-06-03 13:22:01 +0000
commitc345570acce55a2cb13a65bf06c4e1d8069f7b36 (patch)
treec75a2e8bf0421b2554515d4c866965b14e588eb6 /src/drivers/vpd/vpd.c
parent6681f05373c2ec07168e279026962d7a63539e93 (diff)
src/driver/vpd: Update lib_vpd from upstream
Update lib_vpd.c (only containing vpd_decode.c) to latest version from https://chromium.googlesource.com/chromiumos/platform/vpd The called module (vpd.c) has been also corrected for new lib_vpd types and constants. BUG=chromium:967209 TEST=select VPD config on kukui; make; boots on at least kukui boards. Change-Id: I3928e9c43cb87caf93fb44ee10434ce80f0a188a Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/33016 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Joel Kitching <kitching@google.com>
Diffstat (limited to 'src/drivers/vpd/vpd.c')
-rw-r--r--src/drivers/vpd/vpd.c41
1 files changed, 22 insertions, 19 deletions
diff --git a/src/drivers/vpd/vpd.c b/src/drivers/vpd/vpd.c
index e620b58b31..c6dd339f61 100644
--- a/src/drivers/vpd/vpd.c
+++ b/src/drivers/vpd/vpd.c
@@ -12,7 +12,7 @@
#include <timestamp.h>
#include "vpd.h"
-#include "lib_vpd.h"
+#include "vpd_decode.h"
#include "vpd_tables.h"
/* Currently we only support Google VPD 2.0, which has a fixed offset. */
@@ -160,27 +160,27 @@ static void cbmem_add_cros_vpd(int is_recovery)
}
}
-static int vpd_gets_callback(const uint8_t *key, int32_t key_len,
- const uint8_t *value, int32_t value_len,
- void *arg)
+static int vpd_gets_callback(const uint8_t *key, uint32_t key_len,
+ const uint8_t *value, uint32_t value_len,
+ void *arg)
{
struct vpd_gets_arg *result = (struct vpd_gets_arg *)arg;
if (key_len != result->key_len ||
memcmp(key, result->key, key_len) != 0)
- /* Returns VPD_OK to continue parsing. */
- return VPD_OK;
+ /* Returns VPD_DECODE_OK to continue parsing. */
+ return VPD_DECODE_OK;
result->matched = 1;
result->value = value;
result->value_len = value_len;
- /* Returns VPD_FAIL to stop parsing. */
- return VPD_FAIL;
+ /* Returns VPD_DECODE_FAIL to stop parsing. */
+ return VPD_DECODE_FAIL;
}
const void *vpd_find(const char *key, int *size, enum vpd_region region)
{
struct vpd_gets_arg arg = {0};
- int consumed = 0;
+ uint32_t consumed = 0;
const struct vpd_cbmem *vpd;
vpd = cbmem_find(CBMEM_ID_VPD);
@@ -190,18 +190,21 @@ const void *vpd_find(const char *key, int *size, enum vpd_region region)
arg.key = (const uint8_t *)key;
arg.key_len = strlen(key);
- if (region == VPD_ANY || region == VPD_RO)
- while (VPD_OK == decodeVpdString(vpd->ro_size, vpd->blob,
- &consumed, vpd_gets_callback, &arg)) {
- /* Iterate until found or no more entries. */
+ if (region == VPD_ANY || region == VPD_RO) {
+ while (vpd_decode_string(
+ vpd->ro_size, vpd->blob, &consumed,
+ vpd_gets_callback, &arg) == VPD_DECODE_OK) {
+ /* Iterate until found or no more entries. */
}
-
- if (!arg.matched && region != VPD_RO)
- while (VPD_OK == decodeVpdString(vpd->rw_size,
- vpd->blob + vpd->ro_size, &consumed,
- vpd_gets_callback, &arg)) {
- /* Iterate until found or no more entries. */
+ }
+ if (!arg.matched && region != VPD_RO) {
+ while (vpd_decode_string(
+ vpd->rw_size, vpd->blob + vpd->ro_size,
+ &consumed, vpd_gets_callback,
+ &arg) == VPD_DECODE_OK) {
+ /* Iterate until found or no more entries. */
}
+ }
if (!arg.matched)
return NULL;