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 32INTERFACE 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] size The capacity of @p buf. On success, will be set 50 * to the actual size of the requested value. 51 * 52 * @retval 0 success 53 * @retval ENOENT The requested variable was not found. 54 * @retval ENOMEM If @p buf is non-NULL and a buffer of @p size is too 55 * small to hold the requested value. 56 * @retval non-zero If reading @p name otherwise fails, a regular unix 57 * error code will be returned. 58 */ 59METHOD int getvar { 60 device_t dev; 61 const char *name; 62 void *buf; 63 size_t *size; 64};