xref: /rk3399_rockchip-uboot/include/env_flags.h (revision 2598090b7e17f8bdca95b22e7f27217054730e02)
1*2598090bSJoe Hershberger /*
2*2598090bSJoe Hershberger  * (C) Copyright 2012
3*2598090bSJoe Hershberger  * Joe Hershberger, National Instruments, joe.hershberger@ni.com
4*2598090bSJoe Hershberger  *
5*2598090bSJoe Hershberger  * See file CREDITS for list of people who contributed to this
6*2598090bSJoe Hershberger  * project.
7*2598090bSJoe Hershberger  *
8*2598090bSJoe Hershberger  * This program is free software; you can redistribute it and/or
9*2598090bSJoe Hershberger  * modify it under the terms of the GNU General Public License as
10*2598090bSJoe Hershberger  * published by the Free Software Foundation; either version 2 of
11*2598090bSJoe Hershberger  * the License, or (at your option) any later version.
12*2598090bSJoe Hershberger  *
13*2598090bSJoe Hershberger  * This program is distributed in the hope that it will be useful,
14*2598090bSJoe Hershberger  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15*2598090bSJoe Hershberger  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16*2598090bSJoe Hershberger  * GNU General Public License for more details.
17*2598090bSJoe Hershberger  *
18*2598090bSJoe Hershberger  * You should have received a copy of the GNU General Public License
19*2598090bSJoe Hershberger  * along with this program; if not, write to the Free Software
20*2598090bSJoe Hershberger  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21*2598090bSJoe Hershberger  * MA 02111-1307 USA
22*2598090bSJoe Hershberger  */
23*2598090bSJoe Hershberger 
24*2598090bSJoe Hershberger #ifndef __ENV_FLAGS_H__
25*2598090bSJoe Hershberger #define __ENV_FLAGS_H__
26*2598090bSJoe Hershberger 
27*2598090bSJoe Hershberger enum env_flags_vartype {
28*2598090bSJoe Hershberger 	env_flags_vartype_string,
29*2598090bSJoe Hershberger 	env_flags_vartype_decimal,
30*2598090bSJoe Hershberger 	env_flags_vartype_hex,
31*2598090bSJoe Hershberger 	env_flags_vartype_bool,
32*2598090bSJoe Hershberger #ifdef CONFIG_CMD_NET
33*2598090bSJoe Hershberger 	env_flags_vartype_ipaddr,
34*2598090bSJoe Hershberger 	env_flags_vartype_macaddr,
35*2598090bSJoe Hershberger #endif
36*2598090bSJoe Hershberger 	env_flags_vartype_end
37*2598090bSJoe Hershberger };
38*2598090bSJoe Hershberger 
39*2598090bSJoe Hershberger #define ENV_FLAGS_VAR ".flags"
40*2598090bSJoe Hershberger #define ENV_FLAGS_ATTR_MAX_LEN 2
41*2598090bSJoe Hershberger #define ENV_FLAGS_VARTYPE_LOC 0
42*2598090bSJoe Hershberger 
43*2598090bSJoe Hershberger #ifndef CONFIG_ENV_FLAGS_LIST_STATIC
44*2598090bSJoe Hershberger #define CONFIG_ENV_FLAGS_LIST_STATIC ""
45*2598090bSJoe Hershberger #endif
46*2598090bSJoe Hershberger 
47*2598090bSJoe Hershberger #define ENV_FLAGS_LIST_STATIC \
48*2598090bSJoe Hershberger 	CONFIG_ENV_FLAGS_LIST_STATIC
49*2598090bSJoe Hershberger 
50*2598090bSJoe Hershberger /*
51*2598090bSJoe Hershberger  * Parse the flags string from a .flags attribute list into the vartype enum.
52*2598090bSJoe Hershberger  */
53*2598090bSJoe Hershberger enum env_flags_vartype env_flags_parse_vartype(const char *flags);
54*2598090bSJoe Hershberger 
55*2598090bSJoe Hershberger #include <search.h>
56*2598090bSJoe Hershberger 
57*2598090bSJoe Hershberger /*
58*2598090bSJoe Hershberger  * When adding a variable to the environment, initialize the flags for that
59*2598090bSJoe Hershberger  * variable.
60*2598090bSJoe Hershberger  */
61*2598090bSJoe Hershberger void env_flags_init(ENTRY *var_entry);
62*2598090bSJoe Hershberger 
63*2598090bSJoe Hershberger /*
64*2598090bSJoe Hershberger  * Validate the newval for to conform with the requirements defined by its flags
65*2598090bSJoe Hershberger  */
66*2598090bSJoe Hershberger int env_flags_validate(const ENTRY *item, const char *newval, enum env_op op,
67*2598090bSJoe Hershberger 	int flag);
68*2598090bSJoe Hershberger 
69*2598090bSJoe Hershberger /*
70*2598090bSJoe Hershberger  * These are the binary flags used in the environment entry->flags variable to
71*2598090bSJoe Hershberger  * decribe properties of veriables in the table
72*2598090bSJoe Hershberger  */
73*2598090bSJoe Hershberger #define ENV_FLAGS_VARTYPE_BIN_MASK	0x00000007
74*2598090bSJoe Hershberger /* The actual variable type values use the enum value (within the mask) */
75*2598090bSJoe Hershberger 
76*2598090bSJoe Hershberger #endif /* __ENV_FLAGS_H__ */
77