1/* SPDX-License-Identifier: GPL-2.0+ */ 2/* 3 * (C) Copyright 2012 4 * Joe Hershberger, National Instruments, joe.hershberger@ni.com 5 */ 6 7#ifndef __ENV_CALLBACK_H__ 8#define __ENV_CALLBACK_H__ 9 10#include <env_flags.h> 11#include <linker_lists.h> 12#include <search.h> 13 14#define ENV_CALLBACK_VAR ".callbacks" 15 16/* Board configs can define additional static callback bindings */ 17#ifndef CFG_ENV_CALLBACK_LIST_STATIC 18#define CFG_ENV_CALLBACK_LIST_STATIC 19#endif 20 21#ifdef CONFIG_SILENT_CONSOLE 22#define SILENT_CALLBACK "silent:silent," 23#else 24#define SILENT_CALLBACK 25#endif 26 27#ifdef CONFIG_REGEX 28#define ENV_DOT_ESCAPE "\\" 29#else 30#define ENV_DOT_ESCAPE 31#endif 32 33#ifdef CONFIG_CMD_DNS 34#define DNS_CALLBACK "dnsip:dnsip," 35#else 36#define DNS_CALLBACK 37#endif 38 39#ifdef CONFIG_NET 40#define NET_CALLBACKS \ 41 "bootfile:bootfile," \ 42 "ipaddr:ipaddr," \ 43 "gatewayip:gatewayip," \ 44 "netmask:netmask," \ 45 "serverip:serverip," \ 46 "nvlan:nvlan," \ 47 "vlan:vlan," \ 48 DNS_CALLBACK \ 49 "eth" ETHADDR_WILDCARD "addr:ethaddr," 50#else 51#define NET_CALLBACKS 52#endif 53 54#ifdef CONFIG_IPV6 55#define NET6_CALLBACKS \ 56 "ip6addr:ip6addr," \ 57 "serverip6:serverip6," \ 58 "gatewayip6:gatewayip6," 59#else 60#define NET6_CALLBACKS 61#endif 62 63#ifdef CONFIG_BOOTSTD_FULL 64#define BOOTSTD_CALLBACK \ 65 "bootmeths:bootmeths," \ 66 "bootargs:bootargs," 67#else 68#define BOOTSTD_CALLBACK 69#endif 70 71/* 72 * This list of callback bindings is static, but may be overridden by defining 73 * a new association in the ".callbacks" environment variable. 74 */ 75#define ENV_CALLBACK_LIST_STATIC ENV_DOT_ESCAPE ENV_CALLBACK_VAR ":callbacks," \ 76 ENV_DOT_ESCAPE ENV_FLAGS_VAR ":flags," \ 77 "baudrate:baudrate," \ 78 NET_CALLBACKS \ 79 NET6_CALLBACKS \ 80 BOOTSTD_CALLBACK \ 81 "loadaddr:loadaddr," \ 82 SILENT_CALLBACK \ 83 "stdin:console,stdout:console,stderr:console," \ 84 "serial#:serialno," \ 85 CFG_ENV_CALLBACK_LIST_STATIC 86 87#ifndef CONFIG_SPL_BUILD 88void env_callback_init(struct env_entry *var_entry); 89#else 90static inline void env_callback_init(struct env_entry *var_entry) 91{ 92} 93#endif 94 95#endif /* __ENV_CALLBACK_H__ */ 96