The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/bhnd/nvram/bhnd_nvram_if.m

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #-
    2 # Copyright (c) 2016 Landon Fuller <landon@landonf.org>
    3 # All rights reserved.
    4 #
    5 # Redistribution and use in source and binary forms, with or without
    6 # modification, are permitted provided that the following conditions
    7 # are met:
    8 # 1. Redistributions of source code must retain the above copyright
    9 #    notice, this list of conditions and the following disclaimer.
   10 # 2. Redistributions in binary form must reproduce the above copyright
   11 #    notice, this list of conditions and the following disclaimer in the
   12 #    documentation and/or other materials provided with the distribution.
   13 #
   14 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   15 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   16 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   17 # IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   18 # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   19 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   20 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   21 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   22 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
   23 # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   24 #
   25 # $FreeBSD$
   26 
   27 #include <sys/types.h>
   28 #include <sys/bus.h>
   29 
   30 #include <dev/bhnd/bhnd.h>
   31 
   32 INTERFACE bhnd_nvram;
   33 
   34 #
   35 # bhnd(4) NVRAM device interface.
   36 #
   37 # Provides a shared interface to HND NVRAM, OTP, and SPROM devices that provide
   38 # access to a common set of hardware/device configuration variables.
   39 #
   40 
   41 /**
   42  * Read an NVRAM variable.
   43  *
   44  * @param               dev     The NVRAM device.
   45  * @param               name    The NVRAM variable name.
   46  * @param[out]          buf     On success, the requested value will be written
   47  *                              to this buffer. This argment may be NULL if
   48  *                              the value is not desired.
   49  * @param[in,out]       len     The maximum capacity of @p buf. On success,
   50  *                              will be set to the actual size of the requested
   51  *                              value.
   52  * @param               type    The data type to be written to @p buf.
   53  *
   54  * @retval 0            success
   55  * @retval ENOENT       The requested variable was not found.
   56  * @retval ENOMEM       If @p buf is non-NULL and a buffer of @p len is too
   57  *                      small to hold the requested value.
   58  * @retval ENODEV       If no supported NVRAM hardware is accessible via this
   59  *                      device.
   60  * @retval EOPNOTSUPP   If any coercion to @p type is unsupported.
   61  * @retval EFTYPE       If the @p name's data type cannot be coerced to @p type.
   62  * @retval ERANGE       If value coercion would overflow @p type.
   63  * @retval non-zero     If reading @p name otherwise fails, a regular unix
   64  *                      error code will be returned.
   65  */
   66 METHOD int getvar {
   67         device_t         dev;
   68         const char      *name;
   69         void            *buf;
   70         size_t          *len;
   71         bhnd_nvram_type  type;
   72 };
   73 
   74 /**
   75  * Set an NVRAM variable's value.
   76  *
   77  * No changes will be written to non-volatile storage until explicitly
   78  * committed.
   79  *
   80  * @param       dev     The NVRAM device.
   81  * @param       name    The NVRAM variable name.
   82  * @param       value   The new value.
   83  * @param       len     The size of @p value.
   84  * @param       type    The data type of @p value.
   85  *
   86  * @retval 0            success
   87  * @retval ENOENT       The specified variable name is not recognized.
   88  * @retval ENODEV       If no supported NVRAM hardware is accessible via this
   89  *                      device.
   90  * @retval EOPNOTSUPP   If any coercion to @p type is unsupported.
   91  * @retval EFTYPE       If the @p name's data type cannot be coerced to @p type.
   92  * @retval ERANGE       If value coercion from  @p type would overflow.
   93  * @retval non-zero     If reading @p name otherwise fails, a regular unix
   94  *                      error code will be returned.
   95  */
   96 METHOD int setvar {
   97         device_t         dev;
   98         const char      *name;
   99         const void      *value;
  100         size_t           len;
  101         bhnd_nvram_type  type;
  102 };

Cache object: 183bdf280ca91af492de786278e88531


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.