root/drivers/firmware/google/vpd_decode.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * vpd_decode.h
   4  *
   5  * Google VPD decoding routines.
   6  *
   7  * Copyright 2017 Google Inc.
   8  */
   9 
  10 #ifndef __VPD_DECODE_H
  11 #define __VPD_DECODE_H
  12 
  13 #include <linux/types.h>
  14 
  15 enum {
  16         VPD_OK = 0,
  17         VPD_FAIL,
  18 };
  19 
  20 enum {
  21         VPD_TYPE_TERMINATOR = 0,
  22         VPD_TYPE_STRING,
  23         VPD_TYPE_INFO                = 0xfe,
  24         VPD_TYPE_IMPLICIT_TERMINATOR = 0xff,
  25 };
  26 
  27 /* Callback for vpd_decode_string to invoke. */
  28 typedef int vpd_decode_callback(const u8 *key, u32 key_len,
  29                                 const u8 *value, u32 value_len,
  30                                 void *arg);
  31 
  32 /*
  33  * vpd_decode_string
  34  *
  35  * Given the encoded string, this function invokes callback with extracted
  36  * (key, value). The *consumed will be plused the number of bytes consumed in
  37  * this function.
  38  *
  39  * The input_buf points to the first byte of the input buffer.
  40  *
  41  * The *consumed starts from 0, which is actually the next byte to be decoded.
  42  * It can be non-zero to be used in multiple calls.
  43  *
  44  * If one entry is successfully decoded, sends it to callback and returns the
  45  * result.
  46  */
  47 int vpd_decode_string(const u32 max_len, const u8 *input_buf, u32 *consumed,
  48                       vpd_decode_callback callback, void *callback_arg);
  49 
  50 #endif  /* __VPD_DECODE_H */

/* [<][>][^][v][top][bottom][index][help] */