Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/dev/bhnd/nvram/bhnd_nvram_if.m
39536 views
1
#-
2
# Copyright (c) 2016 Landon Fuller <[email protected]>
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
26
#include <sys/types.h>
27
#include <sys/bus.h>
28
29
#include <dev/bhnd/bhnd.h>
30
31
INTERFACE bhnd_nvram;
32
33
#
34
# bhnd(4) NVRAM device interface.
35
#
36
# Provides a shared interface to HND NVRAM, OTP, and SPROM devices that provide
37
# access to a common set of hardware/device configuration variables.
38
#
39
40
/**
41
* Read an NVRAM variable.
42
*
43
* @param dev The NVRAM device.
44
* @param name The NVRAM variable name.
45
* @param[out] buf On success, the requested value will be written
46
* to this buffer. This argment may be NULL if
47
* the value is not desired.
48
* @param[in,out] len The maximum capacity of @p buf. On success,
49
* will be set to the actual size of the requested
50
* value.
51
* @param type The data type to be written to @p buf.
52
*
53
* @retval 0 success
54
* @retval ENOENT The requested variable was not found.
55
* @retval ENOMEM If @p buf is non-NULL and a buffer of @p len is too
56
* small to hold the requested value.
57
* @retval ENODEV If no supported NVRAM hardware is accessible via this
58
* device.
59
* @retval EOPNOTSUPP If any coercion to @p type is unsupported.
60
* @retval EFTYPE If the @p name's data type cannot be coerced to @p type.
61
* @retval ERANGE If value coercion would overflow @p type.
62
* @retval non-zero If reading @p name otherwise fails, a regular unix
63
* error code will be returned.
64
*/
65
METHOD int getvar {
66
device_t dev;
67
const char *name;
68
void *buf;
69
size_t *len;
70
bhnd_nvram_type type;
71
};
72
73
/**
74
* Set an NVRAM variable's value.
75
*
76
* No changes will be written to non-volatile storage until explicitly
77
* committed.
78
*
79
* @param dev The NVRAM device.
80
* @param name The NVRAM variable name.
81
* @param value The new value.
82
* @param len The size of @p value.
83
* @param type The data type of @p value.
84
*
85
* @retval 0 success
86
* @retval ENOENT The specified variable name is not recognized.
87
* @retval ENODEV If no supported NVRAM hardware is accessible via this
88
* device.
89
* @retval EOPNOTSUPP If any coercion to @p type is unsupported.
90
* @retval EFTYPE If the @p name's data type cannot be coerced to @p type.
91
* @retval ERANGE If value coercion from @p type would overflow.
92
* @retval non-zero If reading @p name otherwise fails, a regular unix
93
* error code will be returned.
94
*/
95
METHOD int setvar {
96
device_t dev;
97
const char *name;
98
const void *value;
99
size_t len;
100
bhnd_nvram_type type;
101
};
102
103