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>
This commit is contained in:
committed by
Patrick Georgi
parent
6681f05373
commit
c345570acc
68
src/drivers/vpd/vpd_decode.h
Normal file
68
src/drivers/vpd/vpd_decode.h
Normal file
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright 2019 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.
|
||||
*
|
||||
* This is a copy from upstream:
|
||||
* https://chromium.googlesource.com/chromiumos/platform/vpd/+/master/include/lib/vpd_decode.h
|
||||
*/
|
||||
|
||||
#ifndef __VPD_DECODE_H
|
||||
#define __VPD_DECODE_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
enum {
|
||||
VPD_DECODE_OK = 0,
|
||||
VPD_DECODE_FAIL = 1,
|
||||
};
|
||||
|
||||
enum {
|
||||
VPD_TYPE_TERMINATOR = 0,
|
||||
VPD_TYPE_STRING,
|
||||
VPD_TYPE_INFO = 0xfe,
|
||||
VPD_TYPE_IMPLICIT_TERMINATOR = 0xff,
|
||||
};
|
||||
|
||||
/* Callback for vpd_decode_string to invoke. */
|
||||
typedef int vpd_decode_callback(
|
||||
const u8 *key, u32 key_len, const u8 *value, u32 value_len,
|
||||
void *arg);
|
||||
|
||||
/*
|
||||
* vpd_decode_len
|
||||
*
|
||||
* Given an encoded string, this function extracts the length of content
|
||||
* (either key or value). The *consumed will contain the number of bytes
|
||||
* consumed.
|
||||
*
|
||||
* The input_buf points to the first byte of the input buffer.
|
||||
*
|
||||
* The *consumed starts from 0, which is actually the next byte to be decoded.
|
||||
* It can be non-zero to be used in multiple calls.
|
||||
*
|
||||
* Returns VPD_DECODE_OK on success, otherwise VPD_DECODE_FAIL.
|
||||
*/
|
||||
int vpd_decode_len(
|
||||
const u32 max_len, const u8 *in, u32 *length, u32 *decoded_len);
|
||||
|
||||
/*
|
||||
* vpd_decode_string
|
||||
*
|
||||
* Given the encoded string, this function invokes callback with extracted
|
||||
* (key, value). The *consumed will be plused the number of bytes consumed in
|
||||
* this function.
|
||||
*
|
||||
* The input_buf points to the first byte of the input buffer.
|
||||
*
|
||||
* The *consumed starts from 0, which is actually the next byte to be decoded.
|
||||
* It can be non-zero to be used in multiple calls.
|
||||
*
|
||||
* If one entry is successfully decoded, sends it to callback and returns the
|
||||
* result.
|
||||
*/
|
||||
int vpd_decode_string(
|
||||
const u32 max_len, const u8 *input_buf, u32 *consumed,
|
||||
vpd_decode_callback callback, void *callback_arg);
|
||||
|
||||
#endif /* __VPD_DECODE_H */
|
Reference in New Issue
Block a user